diff --git a/.chronus/changes/allow-override-verb-2024-6-1-19-54-42.md b/.chronus/changes/allow-override-verb-2024-6-1-19-54-42.md new file mode 100644 index 0000000000..eb379ae989 --- /dev/null +++ b/.chronus/changes/allow-override-verb-2024-6-1-19-54-42.md @@ -0,0 +1,8 @@ +--- +# Change versionKind to one of: internal, fix, dependencies, feature, deprecation, breaking +changeKind: feature +packages: + - "@typespec/http" +--- + +Allow overriding base operation verb diff --git a/.chronus/changes/deprecate-get-asset-emitter-2024-5-4-16-18-29.md b/.chronus/changes/deprecate-get-asset-emitter-2024-5-4-16-18-29.md new file mode 100644 index 0000000000..e782b01262 --- /dev/null +++ b/.chronus/changes/deprecate-get-asset-emitter-2024-5-4-16-18-29.md @@ -0,0 +1,8 @@ +--- +# Change versionKind to one of: internal, fix, dependencies, feature, deprecation, breaking +changeKind: fix +packages: + - "@typespec/compiler" +--- + +Deprecate getAssetEmitter and recommend calling `createAssetEmitter` directly diff --git a/.chronus/changes/deprecate-get-asset-emitter-2024-5-4-16-38-47.md b/.chronus/changes/deprecate-get-asset-emitter-2024-5-4-16-38-47.md new file mode 100644 index 0000000000..1ac7a664c0 --- /dev/null +++ b/.chronus/changes/deprecate-get-asset-emitter-2024-5-4-16-38-47.md @@ -0,0 +1,9 @@ +--- +# Change versionKind to one of: internal, fix, dependencies, feature, deprecation, breaking +changeKind: fix +packages: + - "@typespec/json-schema" + - "@typespec/openapi3" +--- + +Fix issue that could result in invalid document generation when running `tsp compile` from another directory diff --git a/.chronus/changes/upgrade-deps-july-2024-2024-6-1-20-41-3.md b/.chronus/changes/upgrade-deps-july-2024-2024-6-1-20-41-3.md new file mode 100644 index 0000000000..650629904a --- /dev/null +++ b/.chronus/changes/upgrade-deps-july-2024-2024-6-1-20-41-3.md @@ -0,0 +1,25 @@ +--- +# Change versionKind to one of: internal, fix, dependencies, feature, deprecation, breaking +changeKind: dependencies +packages: + - "@typespec/bundler" + - "@typespec/compiler" + - "@typespec/eslint-plugin" + - "@typespec/html-program-viewer" + - "@typespec/http" + - "@typespec/internal-build-utils" + - "@typespec/json-schema" + - "@typespec/library-linter" + - "@typespec/openapi" + - "@typespec/openapi3" + - "@typespec/playground" + - "@typespec/prettier-plugin-typespec" + - "@typespec/protobuf" + - "@typespec/rest" + - tmlanguage-generator + - typespec-vscode + - "@typespec/versioning" + - "@typespec/xml" +--- + +Dependency updates July 2024 diff --git a/docs/extending-typespec/create-decorators.md b/docs/extending-typespec/create-decorators.md index c4d5275e01..199d218203 100644 --- a/docs/extending-typespec/create-decorators.md +++ b/docs/extending-typespec/create-decorators.md @@ -81,7 +81,7 @@ Decorators can be implemented in JavaScript by prefixing the function name with // model.ts import type { DecoratorContext, Type } from "@typespec/compiler"; -export function $logType(context: DecoratorContext, target: Type, name: valueof string) { +export function $logType(context: DecoratorContext, target: Type, name: string) { console.log(name + ": " + targetType.kind); } ``` diff --git a/package.json b/package.json index 043e84aab0..980d67d19d 100644 --- a/package.json +++ b/package.json @@ -44,26 +44,26 @@ "@octokit/plugin-rest-endpoint-methods": "^13.2.1", "@pnpm/find-workspace-packages": "^6.0.9", "@types/node": "~18.11.19", - "@typescript-eslint/parser": "^7.9.0", - "@typescript-eslint/utils": "^7.9.0", + "@typescript-eslint/parser": "^7.15.0", + "@typescript-eslint/utils": "^7.15.0", "@vitest/coverage-v8": "^1.6.0", - "c8": "^9.1.0", - "cspell": "^8.8.1", + "c8": "^10.1.2", + "cspell": "^8.9.1", "eslint": "^8.57.0", - "eslint-plugin-deprecation": "^2.0.0", + "eslint-plugin-deprecation": "^3.0.0", "eslint-plugin-import": "^2.29.1", - "eslint-plugin-unicorn": "^53.0.0", + "eslint-plugin-unicorn": "^54.0.0", "eslint-plugin-vitest": "^0.5.4", "picocolors": "~1.0.1", - "prettier": "~3.2.5", - "prettier-plugin-organize-imports": "~3.2.4", + "prettier": "~3.3.2", + "prettier-plugin-organize-imports": "~4.0.0", "rimraf": "~5.0.7", - "syncpack": "^12.3.2", - "tsx": "^4.10.5", - "typescript": "~5.4.5", - "typescript-eslint": "^7.9.0", + "syncpack": "^12.3.3", + "tsx": "^4.16.0", + "typescript": "~5.5.3", + "typescript-eslint": "^7.15.0", "vitest": "^1.6.0", - "yaml": "~2.4.2" + "yaml": "~2.4.5" }, "syncpack": { "dependencyTypes": [ diff --git a/packages/best-practices/package.json b/packages/best-practices/package.json index c7d2786c78..7f271b5d0f 100644 --- a/packages/best-practices/package.json +++ b/packages/best-practices/package.json @@ -48,9 +48,9 @@ "@typespec/compiler": "workspace:~", "@vitest/coverage-v8": "^1.6.0", "@vitest/ui": "^1.6.0", - "c8": "^9.1.0", + "c8": "^10.1.2", "rimraf": "~5.0.7", - "typescript": "~5.4.5", + "typescript": "~5.5.3", "vitest": "^1.6.0" } } diff --git a/packages/bundle-uploader/package.json b/packages/bundle-uploader/package.json index 3afa5fc1de..86091772fe 100644 --- a/packages/bundle-uploader/package.json +++ b/packages/bundle-uploader/package.json @@ -37,8 +37,8 @@ "!dist/test/**" ], "dependencies": { - "@azure/identity": "~4.2.1", - "@azure/storage-blob": "~12.18.0", + "@azure/identity": "~4.3.0", + "@azure/storage-blob": "~12.23.0", "@pnpm/find-workspace-packages": "^6.0.9", "@typespec/bundler": "workspace:~", "json5": "^2.2.3", @@ -50,9 +50,9 @@ "@types/semver": "^7.5.8", "@vitest/coverage-v8": "^1.6.0", "@vitest/ui": "^1.6.0", - "c8": "^9.1.0", + "c8": "^10.1.2", "rimraf": "~5.0.7", - "typescript": "~5.4.5", + "typescript": "~5.5.3", "vitest": "^1.6.0" } } diff --git a/packages/bundler/package.json b/packages/bundler/package.json index 2882199a11..ab67fdf033 100644 --- a/packages/bundler/package.json +++ b/packages/bundler/package.json @@ -43,14 +43,14 @@ ], "dependencies": { "@rollup/plugin-alias": "~5.1.0", - "@rollup/plugin-commonjs": "~25.0.7", + "@rollup/plugin-commonjs": "~26.0.1", "@rollup/plugin-json": "~6.1.0", "@rollup/plugin-multi-entry": "~6.0.1", "@rollup/plugin-node-resolve": "~15.2.3", "@rollup/plugin-virtual": "~3.0.2", "@typespec/compiler": "workspace:~", "picocolors": "~1.0.1", - "rollup": "~4.17.2", + "rollup": "~4.18.0", "yargs": "~17.7.2" }, "devDependencies": { @@ -58,10 +58,10 @@ "@types/yargs": "~17.0.32", "@vitest/coverage-v8": "^1.6.0", "@vitest/ui": "^1.6.0", - "c8": "^9.1.0", + "c8": "^10.1.2", "rimraf": "~5.0.7", - "typescript": "~5.4.5", - "vite": "^5.2.11", + "typescript": "~5.5.3", + "vite": "^5.3.2", "vitest": "^1.6.0" } } diff --git a/packages/bundler/src/vite/vite-plugin.ts b/packages/bundler/src/vite/vite-plugin.ts index 5ae0506010..fae1357595 100644 --- a/packages/bundler/src/vite/vite-plugin.ts +++ b/packages/bundler/src/vite/vite-plugin.ts @@ -40,7 +40,7 @@ export function typespecBundlePlugin(options: TypeSpecBundlePluginOptions): Plug await watchBundleLibrary(config.root, library, (bundle) => { bundles[library] = bundle; definitions[library] = bundle.definition; - server.hot.send({ type: "full-reload" }); + server.ws.send({ type: "full-reload" }); }); } diff --git a/packages/compiler/package.json b/packages/compiler/package.json index 06d7bf203a..da292ee733 100644 --- a/packages/compiler/package.json +++ b/packages/compiler/package.json @@ -82,18 +82,18 @@ "lint:fix": "eslint . --fix" }, "dependencies": { - "@babel/code-frame": "~7.24.2", - "ajv": "~8.13.0", + "@babel/code-frame": "~7.24.7", + "ajv": "~8.16.0", "change-case": "~5.4.4", - "globby": "~14.0.1", + "globby": "~14.0.2", "mustache": "~4.2.0", "picocolors": "~1.0.1", - "prettier": "~3.2.5", + "prettier": "~3.3.2", "prompts": "~2.4.2", "semver": "^7.6.2", "vscode-languageserver": "~9.0.1", "vscode-languageserver-textdocument": "~1.0.11", - "yaml": "~2.4.2", + "yaml": "~2.4.5", "yargs": "~17.7.2" }, "devDependencies": { @@ -106,13 +106,13 @@ "@typespec/internal-build-utils": "workspace:~", "@vitest/coverage-v8": "^1.6.0", "@vitest/ui": "^1.6.0", - "c8": "^9.1.0", + "c8": "^10.1.2", "grammarkdown": "~3.3.2", "rimraf": "~5.0.7", "source-map-support": "~0.5.21", "tmlanguage-generator": "workspace:~", "ts-node": "~10.9.2", - "typescript": "~5.4.5", + "typescript": "~5.5.3", "vitest": "^1.6.0", "vscode-oniguruma": "~2.0.1", "vscode-textmate": "~9.0.0" diff --git a/packages/compiler/src/core/scanner.ts b/packages/compiler/src/core/scanner.ts index 6e96a5afc1..e327ec5980 100644 --- a/packages/compiler/src/core/scanner.ts +++ b/packages/compiler/src/core/scanner.ts @@ -40,7 +40,7 @@ export enum Token { /////////////////////////////////////////////////////////////// // Trivia - /**@internal */ __StartTrivia, + /** @internal */ __StartTrivia, SingleLineComment = __StartTrivia, MultiLineComment, @@ -383,7 +383,7 @@ export function isTrivia(token: Token) { return token >= Token.__StartTrivia && token < Token.__EndTrivia; } -export function isComment(token: Token) { +export function isComment(token: Token): boolean { return token === Token.SingleLineComment || token === Token.MultiLineComment; } diff --git a/packages/compiler/src/core/types.ts b/packages/compiler/src/core/types.ts index 52f6876abb..193ce64e58 100644 --- a/packages/compiler/src/core/types.ts +++ b/packages/compiler/src/core/types.ts @@ -2639,6 +2639,8 @@ export interface EmitContext> { /** * Get an asset emitter to write emitted output to disk using a TypeEmitter * + * @deprecated call {@link createAssetEmitter} directly instead. + * * @param TypeEmitterClass The TypeEmitter to construct your emitted output */ getAssetEmitter(TypeEmitterClass: typeof TypeEmitter): AssetEmitter; diff --git a/packages/eslint-plugin-typespec/package.json b/packages/eslint-plugin-typespec/package.json index 9c7b55a964..d2c02ae6b0 100644 --- a/packages/eslint-plugin-typespec/package.json +++ b/packages/eslint-plugin-typespec/package.json @@ -41,18 +41,18 @@ }, "devDependencies": { "@types/node": "~18.11.19", - "@typescript-eslint/parser": "^7.9.0", - "@typescript-eslint/rule-tester": "^7.9.0", - "@typescript-eslint/types": "^7.9.0", + "@typescript-eslint/parser": "^7.15.0", + "@typescript-eslint/rule-tester": "^7.15.0", + "@typescript-eslint/types": "^7.15.0", "@vitest/coverage-v8": "^1.6.0", "@vitest/ui": "^1.6.0", - "c8": "^9.1.0", + "c8": "^10.1.2", "eslint": "^8.57.0", "rimraf": "~5.0.7", - "typescript": "~5.4.5", + "typescript": "~5.5.3", "vitest": "^1.6.0" }, "dependencies": { - "@typescript-eslint/utils": "^7.9.0" + "@typescript-eslint/utils": "^7.15.0" } } diff --git a/packages/html-program-viewer/package.json b/packages/html-program-viewer/package.json index 6d17c44920..65d6415ea8 100644 --- a/packages/html-program-viewer/package.json +++ b/packages/html-program-viewer/package.json @@ -52,22 +52,22 @@ }, "dependencies": { "@emotion/react": "^11.11.4", - "prettier": "~3.2.5", + "prettier": "~3.3.2", "react": "~18.3.1", "react-dom": "~18.3.1", "react-is": "~18.3.1" }, "devDependencies": { - "@babel/core": "^7.24.5", + "@babel/core": "^7.24.7", "@types/node": "~18.11.19", - "@types/react": "~18.3.2", + "@types/react": "~18.3.3", "@types/react-dom": "~18.3.0", "@typespec/compiler": "workspace:~", "@vitest/coverage-v8": "^1.6.0", "@vitest/ui": "^1.6.0", - "c8": "^9.1.0", + "c8": "^10.1.2", "rimraf": "~5.0.7", - "typescript": "~5.4.5", + "typescript": "~5.5.3", "vitest": "^1.6.0" } } diff --git a/packages/http-client-csharp/emitter/src/lib/converter.ts b/packages/http-client-csharp/emitter/src/lib/converter.ts index df3a7a72ec..17679e81c0 100644 --- a/packages/http-client-csharp/emitter/src/lib/converter.ts +++ b/packages/http-client-csharp/emitter/src/lib/converter.ts @@ -38,7 +38,6 @@ import { } from "../type/input-type.js"; import { LiteralTypeContext } from "../type/literal-type-context.js"; import { Usage } from "../type/usage.js"; -import { getFullNamespaceString } from "./utils.js"; export function fromSdkType( sdkType: SdkType, @@ -87,7 +86,7 @@ export function fromSdkModelType( inputModelType = { Kind: "model", Name: modelTypeName, - Namespace: getFullNamespaceString((modelType.__raw as Model).namespace), // TODO -- use the value from TCGC when this is included in TCGC + CrossLanguageDefinitionId: modelType.crossLanguageDefinitionId, Access: getAccessOverride( context, modelType.__raw as Model @@ -113,7 +112,6 @@ export function fromSdkModelType( property, { ModelName: modelTypeName, - Namespace: inputModelType.Namespace, } as LiteralTypeContext, [] ); @@ -203,12 +201,9 @@ export function fromSdkEnumType( const newInputEnumType: InputEnumType = { Kind: "enum", Name: enumName, + CrossLanguageDefinitionId: enumType.crossLanguageDefinitionId, ValueType: fromSdkBuiltInType(enumType.valueType), Values: enumType.values.map((v) => fromSdkEnumValueType(v)), - Namespace: getFullNamespaceString( - // Enum and Union have optional namespace property - (enumType.__raw! as any).namespace - ), Accessibility: getAccessOverride( context, enumType.__raw as any @@ -312,7 +307,7 @@ function fromSdkConstantType( Name: enumName, ValueType: fromSdkBuiltInType(constantType.valueType), Values: allowValues, - Namespace: literalTypeContext.Namespace, + CrossLanguageDefinitionId: "", Accessibility: undefined, Deprecated: undefined, Description: `The ${enumName}`, // TODO -- what should we put here? diff --git a/packages/http-client-csharp/emitter/src/lib/utils.ts b/packages/http-client-csharp/emitter/src/lib/utils.ts index eab4d42dec..87e00225ff 100644 --- a/packages/http-client-csharp/emitter/src/lib/utils.ts +++ b/packages/http-client-csharp/emitter/src/lib/utils.ts @@ -3,15 +3,7 @@ import { getLibraryName, getSdkModel, } from "@azure-tools/typespec-client-generator-core"; -import { - Enum, - EnumMember, - Model, - ModelProperty, - Namespace, - Operation, - Scalar, -} from "@typespec/compiler"; +import { Enum, EnumMember, Model, ModelProperty, Operation, Scalar } from "@typespec/compiler"; import { InputConstant } from "../type/input-constant.js"; import { InputOperationParameterKind } from "../type/input-operation-parameter-kind.js"; import { InputParameter } from "../type/input-parameter.js"; @@ -47,20 +39,6 @@ export function getTypeName( return name; } -export function getFullNamespaceString(namespace: Namespace | undefined): string { - if (!namespace || !namespace.name) { - return ""; - } - - let namespaceString: string = namespace.name; - let current: Namespace | undefined = namespace.namespace; - while (current && current.name) { - namespaceString = `${current.name}.${namespaceString}`; - current = current.namespace; - } - return namespaceString; -} - export function createContentTypeOrAcceptParameter( mediaTypes: string[], name: string, diff --git a/packages/http-client-csharp/emitter/src/type/input-type.ts b/packages/http-client-csharp/emitter/src/type/input-type.ts index 2740c37687..81368cfd32 100644 --- a/packages/http-client-csharp/emitter/src/type/input-type.ts +++ b/packages/http-client-csharp/emitter/src/type/input-type.ts @@ -74,7 +74,7 @@ export interface InputModelType extends InputTypeBase { Kind: "model"; Properties: InputModelProperty[]; Name: string; - Namespace?: string; + CrossLanguageDefinitionId: string; Access?: AccessFlags; Usage: string; // TODO -- replace this with UsageFlags in TCGC AdditionalProperties?: InputType; @@ -91,9 +91,9 @@ export function isInputModelType(type: InputType): type is InputModelType { export interface InputEnumType extends InputTypeBase { Kind: "enum"; Name: string; + CrossLanguageDefinitionId: string; ValueType: InputPrimitiveType; Values: InputEnumTypeValue[]; - Namespace?: string; Accessibility?: string; Deprecated?: string; IsExtensible: boolean; diff --git a/packages/http-client-csharp/emitter/src/type/literal-type-context.ts b/packages/http-client-csharp/emitter/src/type/literal-type-context.ts index b4e09a0954..a34e9b2710 100644 --- a/packages/http-client-csharp/emitter/src/type/literal-type-context.ts +++ b/packages/http-client-csharp/emitter/src/type/literal-type-context.ts @@ -4,5 +4,4 @@ export interface LiteralTypeContext { ModelName: string; PropertyName: string; - Namespace?: string; } diff --git a/packages/http-client-csharp/emitter/test/Unit/model-type.test.ts b/packages/http-client-csharp/emitter/test/Unit/model-type.test.ts index 7ccc8e5cd2..394a6a7cfd 100644 --- a/packages/http-client-csharp/emitter/test/Unit/model-type.test.ts +++ b/packages/http-client-csharp/emitter/test/Unit/model-type.test.ts @@ -158,7 +158,7 @@ op test(@body input: Pet): Pet; Type: { Kind: "enum", Name: "PetKind", - Namespace: "Azure.Csharp.Testing", + CrossLanguageDefinitionId: "Azure.Csharp.Testing.PetKind", Description: "The pet kind", Accessibility: undefined, Deprecated: undefined, @@ -279,7 +279,7 @@ op test(@body input: Pet): Pet; Type: { Kind: "enum", Name: "PetKind", - Namespace: "Azure.Csharp.Testing", + CrossLanguageDefinitionId: "Azure.Csharp.Testing.PetKind", Accessibility: undefined, Deprecated: undefined, Description: "The pet kind", diff --git a/packages/http-client-csharp/emitter/test/Unit/property-type.test.ts b/packages/http-client-csharp/emitter/test/Unit/property-type.test.ts index f302202cbb..ee3c3fc6c3 100644 --- a/packages/http-client-csharp/emitter/test/Unit/property-type.test.ts +++ b/packages/http-client-csharp/emitter/test/Unit/property-type.test.ts @@ -2,7 +2,7 @@ import { TestHost } from "@typespec/compiler/testing"; import assert, { deepStrictEqual } from "assert"; import { beforeEach, describe, it } from "vitest"; import { createModel } from "../../src/lib/client-model-builder.js"; -import { InputEnumType } from "../../src/type/input-type.js"; +import { InputArrayType, InputEnumType } from "../../src/type/input-type.js"; import { createEmitterContext, createEmitterTestHost, @@ -36,7 +36,7 @@ describe("Test GetInputType for array", () => { Kind: "string", Encode: undefined, }, - }, + } as InputArrayType, root.Clients[0].Operations[0].Parameters[0].Type ); }); @@ -59,7 +59,7 @@ describe("Test GetInputType for array", () => { Kind: "string", Encode: undefined, }, - }, + } as InputArrayType, root.Clients[0].Operations[0].Responses[0].BodyType ); }); @@ -100,7 +100,7 @@ describe("Test GetInputType for enum", () => { { Kind: "enum", Name: "SimpleEnum", - Namespace: "Azure.Csharp.Testing", + CrossLanguageDefinitionId: "Azure.Csharp.Testing.SimpleEnum", Accessibility: undefined, Deprecated: undefined, Description: "fixed string enum", @@ -166,7 +166,7 @@ describe("Test GetInputType for enum", () => { { Kind: "enum", Name: "FixedIntEnum", - Namespace: "Azure.Csharp.Testing", + CrossLanguageDefinitionId: "Azure.Csharp.Testing.FixedIntEnum", Accessibility: undefined, Deprecated: undefined, Description: "Fixed int enum", @@ -225,7 +225,7 @@ describe("Test GetInputType for enum", () => { { Kind: "enum", Name: "FixedEnum", - Namespace: "Azure.Csharp.Testing", + CrossLanguageDefinitionId: "Azure.Csharp.Testing.FixedEnum", Accessibility: undefined, Deprecated: undefined, Description: "Fixed enum", diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/ClientModelPlugin.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/ClientModelPlugin.cs index a5b90bad8e..619867fd89 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/ClientModelPlugin.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/ClientModelPlugin.cs @@ -7,10 +7,9 @@ using System.ComponentModel.Composition; using Microsoft.CodeAnalysis; using Microsoft.Generator.CSharp.ClientModel.Providers; -using Microsoft.Generator.CSharp.ClientModel.Snippets; using Microsoft.Generator.CSharp.Input; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Providers; -using Microsoft.Generator.CSharp.Snippets; namespace Microsoft.Generator.CSharp.ClientModel { diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Microsoft.Generator.CSharp.ClientModel.csproj b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Microsoft.Generator.CSharp.ClientModel.csproj index 5b0cc0511c..be8e9343e6 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Microsoft.Generator.CSharp.ClientModel.csproj +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Microsoft.Generator.CSharp.ClientModel.csproj @@ -2,8 +2,9 @@ Microsoft.Generator.CSharp.ClientModel - Exe 1.0.0-beta.1 + + true diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/OutputTypes/ScmKnownParameters.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/OutputTypes/ScmKnownParameters.cs index fd69bab995..b3b9f58e47 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/OutputTypes/ScmKnownParameters.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/OutputTypes/ScmKnownParameters.cs @@ -2,12 +2,13 @@ // Licensed under the MIT License. using System; +using System.ClientModel; using System.ClientModel.Primitives; using System.Text.Json; using System.Xml; using System.Xml.Linq; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Providers; -using Microsoft.Generator.CSharp.Snippets; using static Microsoft.Generator.CSharp.Snippets.Snippet; namespace Microsoft.Generator.CSharp.ClientModel @@ -17,25 +18,19 @@ internal static class ScmKnownParameters private static readonly CSharpType modelReaderWriterOptionsType = typeof(ModelReaderWriterOptions); private static readonly CSharpType nullableModelReaderWriterOptionsType = new CSharpType(typeof(ModelReaderWriterOptions), isNullable: true); - public static readonly ParameterProvider XmlWriter = new ParameterProvider("writer", FormattableStringHelpers.Empty, typeof(XmlWriter)); - public static readonly ParameterProvider NameHint = new ParameterProvider("nameHint", FormattableStringHelpers.Empty, typeof(string)); - public static readonly ParameterProvider XElement = new ParameterProvider("element", FormattableStringHelpers.Empty, typeof(XElement)); - - public static readonly ParameterProvider Utf8JsonWriter = new ParameterProvider("writer", FormattableStringHelpers.Empty, typeof(Utf8JsonWriter)); - public static readonly ParameterProvider Utf8JsonReader = new ParameterProvider("reader", FormattableStringHelpers.Empty, typeof(Utf8JsonReader), isRef: true); - public static readonly ParameterProvider JsonOptions = new ParameterProvider("options", FormattableStringHelpers.Empty, typeof(JsonSerializerOptions)); - public static readonly ParameterProvider Options = new ParameterProvider("options", FormattableStringHelpers.Empty, modelReaderWriterOptionsType); - public static readonly ParameterProvider OptionalOptions = new ParameterProvider("options", FormattableStringHelpers.Empty, nullableModelReaderWriterOptionsType, DefaultOf(nullableModelReaderWriterOptionsType)); - public static readonly ParameterProvider JsonElement = new ParameterProvider("element", FormattableStringHelpers.Empty, typeof(JsonElement)); - public static readonly ParameterProvider Data = new ParameterProvider("data", FormattableStringHelpers.Empty, typeof(BinaryData)); - - private static ParameterProvider? _tokenAuth; - public static ParameterProvider TokenAuth => _tokenAuth ??= new("tokenCredential", $"The token credential to copy", ClientModelPlugin.Instance.TypeFactory.TokenCredentialType()); - - private static ParameterProvider? _matchConditionsParameter; - public static ParameterProvider MatchConditionsParameter => _matchConditionsParameter ??= new("matchConditions", $"The content to send as the request conditions of the request.", ClientModelPlugin.Instance.TypeFactory.MatchConditionsType(), Snippet.DefaultOf(ClientModelPlugin.Instance.TypeFactory.RequestConditionsType())); - - private static ParameterProvider? _requestConditionsParameter; - public static ParameterProvider RequestConditionsParameter => _requestConditionsParameter ??= new("requestConditions", $"The content to send as the request conditions of the request.", ClientModelPlugin.Instance.TypeFactory.RequestConditionsType(), Snippet.DefaultOf(ClientModelPlugin.Instance.TypeFactory.RequestConditionsType())); + public static readonly ParameterProvider XmlWriter = new("writer", FormattableStringHelpers.Empty, typeof(XmlWriter)); + public static readonly ParameterProvider NameHint = new("nameHint", FormattableStringHelpers.Empty, typeof(string)); + public static readonly ParameterProvider XElement = new("element", FormattableStringHelpers.Empty, typeof(XElement)); + public static readonly ParameterProvider Utf8JsonWriter = new("writer", FormattableStringHelpers.Empty, typeof(Utf8JsonWriter)); + public static readonly ParameterProvider Utf8JsonReader = new("reader", FormattableStringHelpers.Empty, typeof(Utf8JsonReader), isRef: true); + public static readonly ParameterProvider JsonOptions = new("options", FormattableStringHelpers.Empty, typeof(JsonSerializerOptions)); + public static readonly ParameterProvider Options = new("options", FormattableStringHelpers.Empty, modelReaderWriterOptionsType); + public static readonly ParameterProvider OptionalOptions = new("options", FormattableStringHelpers.Empty, nullableModelReaderWriterOptionsType, DefaultOf(nullableModelReaderWriterOptionsType)); + public static readonly ParameterProvider JsonElement = new("element", FormattableStringHelpers.Empty, typeof(JsonElement)); + public static readonly ParameterProvider Data = new("data", FormattableStringHelpers.Empty, typeof(BinaryData)); + public static readonly ParameterProvider TokenAuth = new("tokenCredential", $"The token credential to copy", ClientModelPlugin.Instance.TypeFactory.TokenCredentialType()); + public static readonly ParameterProvider MatchConditionsParameter = new("matchConditions", $"The content to send as the request conditions of the request.", ClientModelPlugin.Instance.TypeFactory.MatchConditionsType(), DefaultOf(ClientModelPlugin.Instance.TypeFactory.MatchConditionsType())); + public static readonly ParameterProvider RequestOptions = new("options", $"The request options, which can override default behaviors of the client pipeline on a per-call basis.", typeof(RequestOptions)); + public static readonly ParameterProvider BinaryContent = new("content", $"The content to send as the body of the request.", typeof(BinaryContent)); } } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/OutputTypes/ScmOutputLibrary.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/OutputTypes/ScmOutputLibrary.cs index dfa7ec4af5..c9d21cec04 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/OutputTypes/ScmOutputLibrary.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/OutputTypes/ScmOutputLibrary.cs @@ -37,7 +37,10 @@ protected override TypeProvider[] BuildTypeProviders() ..baseTypes, ..BuildClients(), new ModelSerializationExtensionsProvider(), - new TypeFormattersProvider() + new TypeFormattersProvider(), + new ClientPipelineExtensionsProvider(), + new ErrorResultProvider(), + new ClientUriBuilderProvider(), ]; } } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/OutputTypes/ScmTypeFactory.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/OutputTypes/ScmTypeFactory.cs index 87f0123df1..270d89eaa2 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/OutputTypes/ScmTypeFactory.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/OutputTypes/ScmTypeFactory.cs @@ -1,9 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -using System; +using System.ClientModel; +using System.ClientModel.Primitives; using System.Collections.Generic; +using Microsoft.Generator.CSharp.ClientModel.Providers; using Microsoft.Generator.CSharp.Input; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Providers; namespace Microsoft.Generator.CSharp.ClientModel @@ -18,59 +21,10 @@ public class ScmTypeFactory : TypeFactory /// /// The input operation to create methods for. /// The enclosing type of the operation. - public override MethodProviderCollection? CreateMethodProviders(InputOperation operation, TypeProvider enclosingType) - { - if (_operations.TryGetValue(operation, out var methods)) - { - return methods; - } + public override MethodProviderCollection CreateMethodProviders(InputOperation operation, TypeProvider enclosingType) => new ScmMethodProviderCollection(operation, enclosingType); - methods = GetOperationKind(operation).ToString() switch - { - "Default" => MethodProviderCollection.DefaultCSharpMethodCollection(operation, enclosingType), - _ => null, - }; + public virtual CSharpType MatchConditionsType() => typeof(PipelineMessageClassifier); - _operations.Add(operation, methods); - return methods; - } - - /// - /// Returns the of the given operation. - /// By default, the operation kind is . - /// - private static InputOperationKinds GetOperationKind(InputOperation operation) - { - return operation switch - { - { LongRunning: { } } => InputOperationKinds.LongRunning, - { Paging: { } } => InputOperationKinds.Paging, - _ => InputOperationKinds.Default, - }; - } - - public virtual CSharpType MatchConditionsType() - { - // TO-DO: Determine what the correct type is for MatchConditions: https://github.com/Azure/autorest.csharp/issues/4166 - throw new NotImplementedException(); - } - - public virtual CSharpType RequestConditionsType() - { - // TO-DO: Determine what the correct type is for RequestConditions: https://github.com/Azure/autorest.csharp/issues/4166 - throw new NotImplementedException(); - } - - public virtual CSharpType TokenCredentialType() - { - // TO-DO: Determine what the correct type is for TokenCredential: https://github.com/Azure/autorest.csharp/issues/4166 - throw new NotImplementedException(); - } - - public virtual CSharpType PageResponseType() - { - // TO-DO: Determine what the correct type is for Page: https://github.com/Azure/autorest.csharp/issues/4166 - throw new NotImplementedException(); - } + public virtual CSharpType TokenCredentialType() => typeof(ApiKeyCredential); } } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Program.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Program.cs deleted file mode 100644 index bc9fb6dddc..0000000000 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Program.cs +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -namespace Microsoft.Generator.CSharp.ClientModel -{ - internal static class Program - { - public static int Main(string[] args) - { - return 0; - } - } -} diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/ClientPipelineExtensionsProvider.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/ClientPipelineExtensionsProvider.cs index 04f3a5448e..e85d069dac 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/ClientPipelineExtensionsProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/ClientPipelineExtensionsProvider.cs @@ -1,20 +1,22 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +using System; +using System.ClientModel; using System.ClientModel.Primitives; -using System.Collections.Generic; using System.IO; +using System.Threading.Tasks; using Microsoft.Generator.CSharp.ClientModel.Snippets; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Providers; +using Microsoft.Generator.CSharp.Statements; +using static Microsoft.Generator.CSharp.Snippets.Snippet; namespace Microsoft.Generator.CSharp.ClientModel.Providers { internal class ClientPipelineExtensionsProvider : TypeProvider { - public override string RelativeFilePath => Path.Combine("src", "Generated", "Internal", $"{Name}.cs"); - public override string Name { get; } - private const string _processMessageAsync = "ProcessMessageAsync"; private const string _processMessage = "ProcessMessage"; private const string _processHeadAsBoolMessageAsync = "ProcessHeadAsBoolMessageAsync"; @@ -22,16 +24,19 @@ internal class ClientPipelineExtensionsProvider : TypeProvider private ParameterProvider _pipelineParam; private ParameterProvider _messageParam; - private ParameterProvider _requestContextParam; - private MemberExpression _messageResponse; + private ParameterProvider _requestOptionsParam; + private ClientPipelineSnippet _pipeline; + private PipelineMessageSnippet _message; + private RequestOptionsSnippet _options; - internal ClientPipelineExtensionsProvider() + public ClientPipelineExtensionsProvider() { - Name = "ClientPipelineExtensions"; - _pipelineParam = new ParameterProvider("pipeline", $"The pipeline.", typeof(ClientPipeline)); - _messageParam = new ParameterProvider("message", $"The message.", typeof(PipelineMessage)); - _requestContextParam = new ParameterProvider("requestContext", $"The request context.", typeof(RequestOptions)); - _messageResponse = new MemberExpression(_messageParam, "Response"); + _pipelineParam = new ParameterProvider("pipeline", FormattableStringHelpers.Empty, typeof(ClientPipeline)); + _messageParam = new ParameterProvider("message", FormattableStringHelpers.Empty, typeof(PipelineMessage)); + _requestOptionsParam = new ParameterProvider("options", FormattableStringHelpers.Empty, typeof(RequestOptions)); + _pipeline = new ClientPipelineSnippet(_pipelineParam); + _message = new PipelineMessageSnippet(_messageParam); + _options = new RequestOptionsSnippet(_requestOptionsParam); } protected override TypeSignatureModifiers GetDeclarationModifiers() @@ -39,14 +44,135 @@ protected override TypeSignatureModifiers GetDeclarationModifiers() return TypeSignatureModifiers.Internal | TypeSignatureModifiers.Static; } - internal PipelineResponseSnippet ProcessMessage(IReadOnlyList arguments, bool isAsync) + public override string Name => "ClientPipelineExtensions"; + + public override string RelativeFilePath => Path.Combine("src", "Generated", "Internal", $"{Name}.cs"); + + protected override MethodProvider[] BuildMethods() { - return new(new InvokeStaticMethodExpression(Type, isAsync ? _processMessageAsync : _processMessage, arguments, CallAsExtension: true, CallAsAsync: isAsync)); + return + [ + BuildProcessMessageAsync(), + BuildProcessMessage(), + ProcessHeadAsBoolMessageAsync(), + ProcessHeadAsBoolMessage() + ]; } - internal ClientResultSnippet ProcessHeadAsBoolMessage(IReadOnlyList arguments, bool isAsync) + private MethodProvider ProcessHeadAsBoolMessage() { - return new(new InvokeStaticMethodExpression(Type, isAsync ? _processHeadAsBoolMessageAsync : _processHeadAsBoolMessage, arguments, CallAsExtension: true, CallAsAsync: isAsync)); + MethodSignature signature = GetProcessHeadAsBoolMessageSignature(false); + var responseVariable = new VariableExpression(typeof(PipelineResponse), "response"); + var response = new PipelineResponseSnippet(responseVariable); + return new MethodProvider(signature, new MethodBodyStatement[] + { + new DeclarationExpression(responseVariable, false).Assign(_pipeline.ProcessMessage(_message, _options, false)).Terminate(), + GetProcessHeadAsBoolMessageBody(response) + }, this); + } + + private MethodProvider ProcessHeadAsBoolMessageAsync() + { + MethodSignature signature = GetProcessHeadAsBoolMessageSignature(true); + var responseVariable = new VariableExpression(typeof(PipelineResponse), "response"); + var response = new PipelineResponseSnippet(responseVariable); + return new MethodProvider(signature, new MethodBodyStatement[] + { + new DeclarationExpression(responseVariable, false).Assign(_pipeline.ProcessMessage(_message, _options, true)).Terminate(), + GetProcessHeadAsBoolMessageBody(response) + }, this); + } + + private MethodBodyStatement GetProcessHeadAsBoolMessageBody(PipelineResponseSnippet response) + { + return new MethodBodyStatement[] + { + new SwitchStatement(new MemberExpression(response, "Status"), new SwitchCaseStatement[] + { + new SwitchCaseStatement(ValueExpression.Empty.GreaterThanOrEqual(Literal(200)).AndExpr(ValueExpression.Empty.LessThan(Literal(300))), new MethodBodyStatement[] + { + Return(ClientResultSnippet.FromValue(typeof(bool), True, response)) + }), + new SwitchCaseStatement(ValueExpression.Empty.GreaterThanOrEqual(Literal(400)).AndExpr(ValueExpression.Empty.LessThan(Literal(500))), new MethodBodyStatement[] + { + Return(ClientResultSnippet.FromValue(typeof(bool), False, response)) + }), + new SwitchCaseStatement(Array.Empty(), new MethodBodyStatement[] + { + Return(new NewInstanceExpression(ErrorResultSnippet.ErrorResultType.MakeGenericType([typeof(bool)]), [response, new NewInstanceExpression(typeof(ClientResultException), [response])])) + }) + }), + }; + } + + private MethodSignature GetProcessHeadAsBoolMessageSignature(bool isAsync) + { + var modifiers = MethodSignatureModifiers.Public | MethodSignatureModifiers.Static | MethodSignatureModifiers.Extension; + if (isAsync) + { + modifiers |= MethodSignatureModifiers.Async; + } + return new MethodSignature( + isAsync ? "ProcessHeadAsBoolMessageAsync" : "ProcessHeadAsBoolMessage", + null, + modifiers, + isAsync ? typeof(ValueTask>) : typeof(ClientResult), + null, + [_pipelineParam, _messageParam, _requestOptionsParam]); + } + + private MethodProvider BuildProcessMessage() + { + MethodSignature signature = GetProcessMessageSignature(false); + + var clientErrorNoThrow = FrameworkEnumValue(ClientErrorBehaviors.NoThrow); + return new MethodProvider(signature, new MethodBodyStatement[] + { + _pipeline.Invoke(nameof(ClientPipeline.Send), [_message]).Terminate(), + MethodBodyStatement.EmptyLine, + new IfStatement(_message.Response.IsError.And(new BinaryOperatorExpression("&", _options.Property("ErrorOptions", true), clientErrorNoThrow).NotEqual(clientErrorNoThrow))) + { + Throw(New.Instance(typeof(ClientResultException), _message.Response)) + }, + MethodBodyStatement.EmptyLine, + Declare("response", typeof(PipelineResponse), new TernaryConditionalExpression(_message.BufferResponse, _message.Response, _message.ExtractResponse()), out var response), + Return(response) + }, this); + } + + private MethodSignature GetProcessMessageSignature(bool isAsync) + { + var modifiers = MethodSignatureModifiers.Public | MethodSignatureModifiers.Static | MethodSignatureModifiers.Extension; + if (isAsync) + { + modifiers |= MethodSignatureModifiers.Async; + } + return new MethodSignature( + isAsync ? "ProcessMessageAsync" : "ProcessMessage", + null, + modifiers, + isAsync ? typeof(ValueTask) : typeof(PipelineResponse), + null, + [_pipelineParam, _messageParam, _requestOptionsParam]); + } + + private MethodProvider BuildProcessMessageAsync() + { + MethodSignature signature = GetProcessMessageSignature(true); + + var clientErrorNoThrow = FrameworkEnumValue(ClientErrorBehaviors.NoThrow); + return new MethodProvider(signature, new MethodBodyStatement[] + { + _pipeline.Expression.Invoke(nameof(ClientPipeline.SendAsync), [_message], true).Terminate(), + MethodBodyStatement.EmptyLine, + new IfStatement(_message.Response.IsError.And(new BinaryOperatorExpression("&", _options.Property("ErrorOptions", true), clientErrorNoThrow).NotEqual(clientErrorNoThrow))) + { + Throw(new InvokeStaticMethodExpression(typeof(ClientResultException), nameof(ClientResultException.CreateAsync), [_message.Response], CallAsAsync: true)) + }, + MethodBodyStatement.EmptyLine, + Declare("response", typeof(PipelineResponse), new TernaryConditionalExpression(_message.BufferResponse, _message.Response, _message.ExtractResponse()), out var response), + Return(response) + }, this); } } } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/ClientProvider.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/ClientProvider.cs index e742878f13..950bbc67ce 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/ClientProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/ClientProvider.cs @@ -1,14 +1,19 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +using System.ClientModel.Primitives; using System.Collections.Generic; using System.IO; +using Microsoft.Generator.CSharp.ClientModel.Snippets; using Microsoft.Generator.CSharp.Input; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Providers; +using Microsoft.Generator.CSharp.Snippets; +using Microsoft.Generator.CSharp.Statements; namespace Microsoft.Generator.CSharp.ClientModel.Providers { - public sealed class ClientProvider : TypeProvider + public class ClientProvider : TypeProvider { private readonly InputClient _inputClient; @@ -20,6 +25,25 @@ public ClientProvider(InputClient inputClient) { _inputClient = inputClient; Name = inputClient.Name.ToCleanName(); + PipelineField = new FieldProvider(FieldModifiers.Private, typeof(ClientPipeline), "_pipeline"); + } + + public FieldProvider PipelineField { get; } + + protected override FieldProvider[] BuildFields() + { + return [PipelineField]; + } + + protected override MethodProvider[] BuildConstructors() + { + return + [ + new MethodProvider( + new ConstructorSignature(Type, $"{_inputClient.Description}", MethodSignatureModifiers.Public, []), + new MethodBodyStatement[] { PipelineField.Assign(ClientPipelineSnippet.Create()).Terminate() }, + this) + ]; } protected override MethodProvider[] BuildMethods() diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/ClientUriBuilderProvider.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/ClientUriBuilderProvider.cs new file mode 100644 index 0000000000..c11ba66ba6 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/ClientUriBuilderProvider.cs @@ -0,0 +1,336 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; +using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Providers; +using Microsoft.Generator.CSharp.Statements; +using Microsoft.Generator.CSharp.Snippets; +using static Microsoft.Generator.CSharp.Snippets.Snippet; +using static Microsoft.Generator.CSharp.ClientModel.Snippets.TypeFormattersSnippet; +using Microsoft.Generator.CSharp.Primitives; + +namespace Microsoft.Generator.CSharp.ClientModel.Providers +{ + internal sealed class ClientUriBuilderProvider : TypeProvider + { + protected override TypeSignatureModifiers GetDeclarationModifiers() + { + return TypeSignatureModifiers.Internal; + } + + public override string RelativeFilePath => Path.Combine("src", "Generated", "Internal", $"{Name}.cs"); + + public override string Name => "ClientUriBuilder"; + + private readonly FieldProvider _uriBuilderField = new(FieldModifiers.Private, typeof(UriBuilder), "_uriBuilder"); + private readonly FieldProvider _pathBuilderField = new(FieldModifiers.Private, typeof(StringBuilder), "_pathBuilder"); + private readonly FieldProvider _queryBuilderField = new(FieldModifiers.Private, typeof(StringBuilder), "_queryBuilder"); + + protected override FieldProvider[] BuildFields() + { + return [_uriBuilderField, _pathBuilderField, _queryBuilderField]; + } + + private PropertyProvider? _uriBuilderProperty; + private PropertyProvider UriBuilderProperty => _uriBuilderProperty ??= new( + modifiers: MethodSignatureModifiers.Private, + name: "UriBuilder", + type: typeof(UriBuilder), + body: new ExpressionPropertyBody(new BinaryOperatorExpression(" ??= ", _uriBuilderField, New.Instance(typeof(UriBuilder)))), + description: null); + + internal ValueExpression UriBuilderPath => new MemberExpression(UriBuilderProperty, "Path"); + internal ValueExpression UriBuilderQuery => new MemberExpression(UriBuilderProperty, "Query"); + + private PropertyProvider? _pathBuilderProperty; + private PropertyProvider PathBuilderProperty => _pathBuilderProperty ??= new( + modifiers: MethodSignatureModifiers.Private, + name: "PathBuilder", + type: typeof(StringBuilder), + body: new ExpressionPropertyBody(new BinaryOperatorExpression(" ??= ", _pathBuilderField, New.Instance(typeof(StringBuilder), UriBuilderPath))), + description: null); + + private PropertyProvider? _queryBuilderProperty; + private PropertyProvider QueryBuilderProperty => _queryBuilderProperty ??= new( + modifiers: MethodSignatureModifiers.Private, + name: "QueryBuilder", + type: typeof(StringBuilder), + body: new ExpressionPropertyBody(new BinaryOperatorExpression(" ??= ", _queryBuilderField, New.Instance(typeof(StringBuilder), UriBuilderQuery))), + description: null); + + protected override PropertyProvider[] BuildProperties() + { + return [UriBuilderProperty, PathBuilderProperty, QueryBuilderProperty]; + } + + protected override MethodProvider[] BuildConstructors() + { + var signature = new ConstructorSignature( + Type: Type, + Modifiers: MethodSignatureModifiers.Public, + Parameters: Array.Empty(), + Description: null); + return [new MethodProvider(signature, MethodBodyStatement.Empty, this)]; + } + + protected override MethodProvider[] BuildMethods() + { + var methods = new List(); + + methods.Add(BuildResetMethod()); + + methods.AddRange(BuildAppendPathMethods()); + methods.AddRange(BuildAppendQueryMethods()); + methods.AddRange(BuildAppendQueryDelimitedMethods()); + + methods.Add(BuildToUriMethod()); + + return methods.ToArray(); + } + + private const string _resetMethodName = "Reset"; + private MethodProvider BuildResetMethod() + { + var uriParameter = new ParameterProvider("uri", $"The uri.", typeof(Uri)); + var signature = new MethodSignature( + Name: _resetMethodName, + Modifiers: MethodSignatureModifiers.Public, + Parameters: new[] + { + uriParameter + }, + ReturnType: null, + Description: null, ReturnDescription: null); + + var body = new MethodBodyStatement[] + { + _uriBuilderField.Assign(New.Instance(_uriBuilderField.Type, uriParameter)).Terminate(), + _pathBuilderField.Assign(New.Instance(_pathBuilderField.Type, UriBuilderPath)).Terminate(), + _queryBuilderField.Assign(New.Instance(_queryBuilderField.Type, UriBuilderQuery)).Terminate() + }; + + return new(signature, body, this); + } + + private const string _appendPathMethodName = "AppendPath"; + private MethodProvider[] BuildAppendPathMethods() + { + var valueParameter = new ParameterProvider("value", $"The value.", typeof(string)); + var escapeParameter = new ParameterProvider("escape", $"The escape", typeof(bool)); + var signature = new MethodSignature( + Name: _appendPathMethodName, + Modifiers: MethodSignatureModifiers.Public, + Parameters: [valueParameter, escapeParameter], + ReturnType: null, + Description: null, ReturnDescription: null); + + var value = new StringSnippet(valueParameter); + var escape = new BoolSnippet(escapeParameter); + var pathBuilder = new StringBuilderSnippet(PathBuilderProperty); + MethodBodyStatement body = new MethodBodyStatement[] + { + MethodBodyStatement.Empty, + new IfStatement(escape) + { + value.Assign(new InvokeStaticMethodExpression(typeof(Uri), nameof(Uri.EscapeDataString), new[]{ value.Expression })).Terminate() + }, + MethodBodyStatement.Empty, + new IfStatement(pathBuilder.Length.Expression.GreaterThan(Int(0)).And(new IndexerExpression(pathBuilder, pathBuilder.Length - Int(1)).Equal(Literal('/'))).And(new IndexerExpression(value, Int(0)).Equal(Literal('/')))) + { + pathBuilder.Remove(pathBuilder.Length - Int(1), Int(1)).Terminate() + }, + MethodBodyStatement.Empty, + pathBuilder.Append(value).Terminate(), + UriBuilderPath.Assign(pathBuilder.Expression.InvokeToString()).Terminate() + }; + + return + [ + new(signature, body, this), + BuildAppendPathMethod(typeof(bool), false, false), + BuildAppendPathMethod(typeof(float), true, false), + BuildAppendPathMethod(typeof(double), true, false), + BuildAppendPathMethod(typeof(int), true, false), + BuildAppendPathMethod(typeof(byte[]), true, true), + BuildAppendPathMethod(typeof(IEnumerable), true, false), + BuildAppendPathMethod(typeof(DateTimeOffset), true, true), + BuildAppendPathMethod(typeof(TimeSpan), true, true), + BuildAppendPathMethod(typeof(Guid), true, false), + BuildAppendPathMethod(typeof(long), true, false) + ]; + } + + private MethodProvider BuildAppendPathMethod(CSharpType valueType, bool escapeDefaultValue, bool hasFormat) + { + var valueParameter = new ParameterProvider("value", $"The value.", valueType); + var escapeParameter = new ParameterProvider("escape", $"The escape.", typeof(bool), Bool(escapeDefaultValue)); + var formatParameter = new ParameterProvider("format", $"The format", typeof(string)); + var parameters = hasFormat + ? new[] { valueParameter, formatParameter, escapeParameter } + : new[] { valueParameter, escapeParameter }; + + var signature = new MethodSignature( + Name: _appendPathMethodName, + Modifiers: MethodSignatureModifiers.Public, + Parameters: parameters, + ReturnType: null, + Description: null, ReturnDescription: null); + var convertToStringExpression = ConvertToString(valueParameter, hasFormat ? (ValueExpression)formatParameter : null); + var body = new InvokeInstanceMethodExpression(null, _appendPathMethodName, new[] { convertToStringExpression.Expression, escapeParameter }, null, false); + + return new(signature, body, this); + } + + private const string _appendQueryMethodName = "AppendQuery"; + private MethodProvider[] BuildAppendQueryMethods() + { + var nameParameter = new ParameterProvider("name", $"The name.", typeof(string)); + var valueParameter = new ParameterProvider("value", $"The value.", typeof(string)); + var escapeParameter = new ParameterProvider("escape", $"The escape.", typeof(bool)); + + var signature = new MethodSignature( + Name: _appendQueryMethodName, + Modifiers: MethodSignatureModifiers.Public, + Parameters: new[] { nameParameter, valueParameter, escapeParameter }, + ReturnType: null, + Description: null, ReturnDescription: null); + + var name = new StringSnippet(nameParameter); + var value = new StringSnippet(valueParameter); + var escape = new BoolSnippet(escapeParameter); + var queryBuilder = new StringBuilderSnippet(QueryBuilderProperty); + var body = new MethodBodyStatement[] + { + MethodBodyStatement.Empty, + new IfStatement(queryBuilder.Length.Expression.GreaterThan(Int(0))) + { + queryBuilder.Append(Literal('&')).Terminate() + }, + MethodBodyStatement.Empty, + new IfStatement(escape) + { + value.Assign(new InvokeStaticMethodExpression(typeof(Uri), nameof(Uri.EscapeDataString), new[] { value.Expression })).Terminate() + }, + MethodBodyStatement.Empty, + queryBuilder.Append(name).Terminate(), + queryBuilder.Append(Literal('=')).Terminate(), + queryBuilder.Append(value).Terminate() + }; + + return + [ + new MethodProvider(signature, body, this), + BuildAppendQueryMethod(typeof(bool), false, false), + BuildAppendQueryMethod(typeof(float), true, false), + BuildAppendQueryMethod(typeof(DateTimeOffset), true, true), + BuildAppendQueryMethod(typeof(TimeSpan), true, true), + BuildAppendQueryMethod(typeof(double), true, false), + BuildAppendQueryMethod(typeof(decimal), true, false), + BuildAppendQueryMethod(typeof(int), true, false), + BuildAppendQueryMethod(typeof(long), true, false), + BuildAppendQueryMethod(typeof(TimeSpan), true, false), + BuildAppendQueryMethod(typeof(byte[]), true, true), + BuildAppendQueryMethod(typeof(Guid), true, false) + ]; + } + + private MethodProvider BuildAppendQueryMethod(CSharpType valueType, bool escapeDefaultValue, bool hasFormat) + { + var nameParameter = new ParameterProvider("name", $"The name.", typeof(string)); + var valueParameter = new ParameterProvider("value", $"The value.", valueType); + var escapeParameter = new ParameterProvider("escape", $"The escape.", typeof(bool), Bool(escapeDefaultValue)); + var formatParameter = new ParameterProvider("format", $"The format.", typeof(string)); + var parameters = hasFormat + ? new[] { nameParameter, valueParameter, formatParameter, escapeParameter } + : new[] { nameParameter, valueParameter, escapeParameter }; + + var signature = new MethodSignature( + Name: _appendQueryMethodName, + Modifiers: MethodSignatureModifiers.Public, + Parameters: parameters, + ReturnType: null, + Description: null, ReturnDescription: null); + var convertToStringExpression = ConvertToString(valueParameter, hasFormat ? (ValueExpression)formatParameter : null); + var body = new InvokeInstanceMethodExpression(null, _appendQueryMethodName, new[] { nameParameter, convertToStringExpression.Expression, escapeParameter }, null, false); + + return new(signature, body, this); + } + + private MethodProvider[] BuildAppendQueryDelimitedMethods() + { + return [ BuildAppendQueryDelimitedMethod(false), BuildAppendQueryDelimitedMethod(true)]; + } + + private readonly CSharpType _t = typeof(IEnumerable<>).GetGenericArguments()[0]; + + private const string _appendQueryDelimitedMethodName = "AppendQueryDelimited"; + private MethodProvider BuildAppendQueryDelimitedMethod(bool hasFormat) + { + var nameParameter = new ParameterProvider("name", $"The name.", typeof(string)); + var valueParameter = new ParameterProvider("value", $"The value.", new CSharpType(typeof(IEnumerable<>), _t)); + var delimiterParameter = new ParameterProvider("delimiter", $"The delimiter.", typeof(string)); + var formatParameter = new ParameterProvider("format", $"The format.", typeof(string)); + var escapeParameter = new ParameterProvider("escape", $"The escape.", typeof(bool), Bool(true)); + + var parameters = hasFormat + ? new[] { nameParameter, valueParameter, delimiterParameter, formatParameter, escapeParameter } + : new[] { nameParameter, valueParameter, delimiterParameter, escapeParameter }; + var signature = new MethodSignature( + Name: _appendQueryDelimitedMethodName, + Modifiers: MethodSignatureModifiers.Public, + Parameters: parameters, + ReturnType: null, + GenericArguments: new[] { _t }, + Description: null, ReturnDescription: null); + + var name = new StringSnippet(nameParameter); + var value = new EnumerableSnippet(_t, valueParameter); + var delimiter = new StringSnippet(delimiterParameter); + var escape = new BoolSnippet(escapeParameter); + + var v = new VariableExpression(_t, "v"); + var convertToStringExpression = ConvertToString(v, hasFormat ? new StringSnippet(formatParameter).Expression : null); + var body = new[] + { + Declare("stringValues", value.Select(new StringSnippet(new FuncExpression(new[] {v.Declaration}, convertToStringExpression))), out var stringValues), + new InvokeInstanceMethodExpression(null, _appendQueryMethodName, new[] { name.Expression, StringSnippet.Join(delimiter, stringValues), escape }, null, false).Terminate() + }; + + return new(signature, body, this); + } + + private const string _toUriMethodName = "ToUri"; + private MethodProvider BuildToUriMethod() + { + var signature = new MethodSignature( + Name: _toUriMethodName, + Modifiers: MethodSignatureModifiers.Public, + Parameters: Array.Empty(), + ReturnType: typeof(Uri), + Description: null, ReturnDescription: null); + + var pathBuilder = (ValueExpression)_pathBuilderField; + var queryBuilder = (ValueExpression)_queryBuilderField; + var body = new MethodBodyStatement[] + { + new IfStatement(pathBuilder.NotEqual(Null)) + { + UriBuilderPath.Assign(pathBuilder.InvokeToString()).Terminate() + }, + MethodBodyStatement.Empty, + new IfStatement(queryBuilder.NotEqual(Null)) + { + UriBuilderQuery.Assign(queryBuilder.InvokeToString()).Terminate() + }, + MethodBodyStatement.Empty, + Return(new MemberExpression(UriBuilderProperty, nameof(UriBuilder.Uri))) + }; + + return new(signature, body, this); + } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/ErrorResultProvider.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/ErrorResultProvider.cs new file mode 100644 index 0000000000..ef6868be06 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/ErrorResultProvider.cs @@ -0,0 +1,88 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Collections.Generic; +using System.IO; +using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; +using Microsoft.Generator.CSharp.Providers; +using Microsoft.Generator.CSharp.Statements; +using static Microsoft.Generator.CSharp.Snippets.Snippet; + +namespace Microsoft.Generator.CSharp.ClientModel.Providers +{ + internal class ErrorResultProvider : TypeProvider + { + private class ErrorResultTemplate { } + + private CSharpType _t = typeof(ErrorResultTemplate<>).GetGenericArguments()[0]; + private FieldProvider _responseField; + private FieldProvider _exceptionField; + private VariableExpression _response; + private VariableExpression _exception; + + public ErrorResultProvider() + { + _responseField = new FieldProvider(FieldModifiers.Private | FieldModifiers.ReadOnly, typeof(PipelineResponse), "_response"); + _exceptionField = new FieldProvider(FieldModifiers.Private | FieldModifiers.ReadOnly, typeof(ClientResultException), "_exception"); + _response = new VariableExpression(_responseField.Type, _responseField.Declaration); + _exception = new VariableExpression(_exceptionField.Type, _exceptionField.Declaration); + } + + protected override TypeSignatureModifiers GetDeclarationModifiers() + { + return TypeSignatureModifiers.Internal; + } + + public override string Name => "ErrorResult"; + + public override string RelativeFilePath => Path.Combine("src", "Generated", "Internal", $"{Name}.cs"); + + protected override CSharpType[] BuildTypeArguments() + { + return [_t]; + } + + protected override CSharpType[] BuildImplements() + { + return [new CSharpType(typeof(ClientResult<>), _t)]; + } + + protected override FieldProvider[] BuildFields() + { + return [_responseField, _exceptionField]; + } + + protected override MethodProvider[] BuildConstructors() + { + return [BuildCtor()]; + } + + private MethodProvider BuildCtor() + { + var response = new ParameterProvider("response", FormattableStringHelpers.Empty, typeof(PipelineResponse)); + var exception = new ParameterProvider("exception", FormattableStringHelpers.Empty, typeof(ClientResultException)); + var baseInitializer = new ConstructorInitializer(true, new List { Default, response }); + var signature = new ConstructorSignature(Type, null, MethodSignatureModifiers.Public, [response, exception], Initializer: baseInitializer); + return new MethodProvider(signature, new MethodBodyStatement[] + { + _response.Assign(response).Terminate(), + _exception.Assign(exception).Terminate(), + }, this); + } + + protected override PropertyProvider[] BuildProperties() + { + return [BuildValue()]; + } + + private PropertyProvider BuildValue() + { + return new PropertyProvider(null, MethodSignatureModifiers.Public | MethodSignatureModifiers.Override, _t, "Value", new ExpressionPropertyBody( + ThrowExpression(_exception) + )); + } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/ModelSerializationExtensionsProvider.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/ModelSerializationExtensionsProvider.cs index 5a8aa988f2..18eb44d6fd 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/ModelSerializationExtensionsProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/ModelSerializationExtensionsProvider.cs @@ -10,13 +10,13 @@ using System.Text.Json; using Microsoft.Generator.CSharp.ClientModel.Snippets; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Providers; using Microsoft.Generator.CSharp.Snippets; using Microsoft.Generator.CSharp.Statements; -using Microsoft.Generator.CSharp.TypedSnippets; -using static Microsoft.Generator.CSharp.Snippets.Snippet; -using static Microsoft.Generator.CSharp.ClientModel.Snippets.TypeFormattersSnippet; using static Microsoft.Generator.CSharp.ClientModel.Snippets.ModelSerializationExtensionsSnippet; +using static Microsoft.Generator.CSharp.ClientModel.Snippets.TypeFormattersSnippet; +using static Microsoft.Generator.CSharp.Snippets.Snippet; namespace Microsoft.Generator.CSharp.ClientModel.Providers { @@ -173,7 +173,7 @@ private MethodProvider BuildGetObjectMethodProvider() Declare("dictionary", New.Dictionary(typeof(string), typeof(object)), out var dictionary), new ForeachStatement("jsonProperty", element.EnumerateObject(), out var jsonProperty) { - dictionary.Add(jsonProperty.Property(nameof(JsonProperty.Name)), new JsonElementSnippet(jsonProperty.Property(nameof(JsonProperty.Value))).Untyped.Invoke("GetObject")) + dictionary.Add(jsonProperty.Property(nameof(JsonProperty.Name)), new JsonElementSnippet(jsonProperty.Property(nameof(JsonProperty.Value))).Invoke("GetObject")) }, Return(dictionary) }), @@ -182,7 +182,7 @@ private MethodProvider BuildGetObjectMethodProvider() Declare("list", New.List(typeof(object)), out var list), new ForeachStatement("item", element.EnumerateArray(), out var item) { - list.Add(new JsonElementSnippet(item).Untyped.Invoke("GetObject")) + list.Add(item.Invoke("GetObject")) }, Return(list.ToArray()) }), @@ -207,7 +207,7 @@ private MethodProvider BuildGetBytesFromBase64() { Return(Null) }, - EmptyLineStatement, + MethodBodyStatement.EmptyLine, Return(new SwitchExpression(format, new SwitchCaseExpression(Literal("U"), FromBase64UrlString(GetRequiredString(element))), new SwitchCaseExpression(Literal("D"), element.GetBytesFromBase64()), @@ -229,7 +229,7 @@ private MethodProvider BuildGetDateTimeOffsetMethodProvider() var element = new JsonElementSnippet(ScmKnownParameters.JsonElement); var format = new StringSnippet(_formatParameter); var body = new SwitchExpression(format, - SwitchCaseExpression.When(Literal("U"), Equal(element.ValueKind, JsonValueKindSnippet.Number), DateTimeOffsetSnippet.FromUnixTimeSeconds(element.GetInt64())), + SwitchCaseExpression.When(Literal("U"), element.ValueKind.Equal(JsonValueKindSnippet.Number), DateTimeOffsetSnippet.FromUnixTimeSeconds(element.GetInt64())), // relying on the param check of the inner call to throw ArgumentNullException if GetString() returns null SwitchCaseExpression.Default(ParseDateTimeOffset(element.GetString(), format)) ); @@ -266,11 +266,11 @@ private MethodProvider BuildGetCharMethodProvider() new MethodBodyStatement[] { Declare("text", element.GetString(), out var text), - new IfStatement(Equal(text, Null).Or(NotEqual(text.Length, Literal(1)))) + new IfStatement(text.Equal(Null).Or(text.Length.NotEqual(Literal(1)))) { Throw(New.NotSupportedException(new FormattableStringExpression("Cannot convert \\\"{0}\\\" to a char", [text]))) }, - Return(text.Index(0)) + Return(text[0]) }, Throw(New.NotSupportedException(new FormattableStringExpression("Cannot convert {0} to a char", [element.ValueKind]))) ); @@ -308,7 +308,7 @@ private MethodProvider BuildGetRequiredStringMethodProvider() var body = new MethodBodyStatement[] { Declare("value", element.GetString(), out var value), - new IfStatement(Equal(value, Null)) + new IfStatement(value.Equal(Null)) { Throw(New.InvalidOperationException(new FormattableStringExpression("The requested operation requires an element of type 'String', but the target element has type '{0}'.", [element.ValueKind]))) }, @@ -336,7 +336,7 @@ private MethodProvider BuildWriteBase64StringValueMethodProvider() var format = new StringSnippet(_formatParameter); var body = new MethodBodyStatement[] { - new IfStatement(Equal(value, Null)) + new IfStatement(value.Equal(Null)) { writer.WriteNullValue(), Return() @@ -374,7 +374,7 @@ private MethodProvider BuildWriteNumberValueMethodProvider() var format = new StringSnippet(_formatParameter); var body = new MethodBodyStatement[] { - new IfStatement(NotEqual(format, Literal("U"))) + new IfStatement(format.NotEqual(Literal("U"))) { Throw(New.ArgumentOutOfRangeException(format, "Only 'U' format is supported when writing a DateTimeOffset as a Number.")), }, diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/MrwSerializationTypeProvider.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/MrwSerializationTypeProvider.cs index 831ffc4be4..2751c6a7c0 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/MrwSerializationTypeProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/MrwSerializationTypeProvider.cs @@ -2,6 +2,7 @@ // Licensed under the MIT License. using System; +using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; using System.IO; @@ -12,6 +13,7 @@ using Microsoft.Generator.CSharp.ClientModel.Snippets; using Microsoft.Generator.CSharp.Expressions; using Microsoft.Generator.CSharp.Input; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Providers; using Microsoft.Generator.CSharp.Snippets; using Microsoft.Generator.CSharp.Statements; @@ -27,6 +29,7 @@ internal sealed class MrwSerializationTypeProvider : TypeProvider private const string PrivateAdditionalPropertiesPropertyDescription = "Keeps track of any properties unknown to the library."; private const string PrivateAdditionalPropertiesPropertyName = "_serializedAdditionalRawData"; private const string JsonModelWriteCoreMethodName = "JsonModelWriteCore"; + private const string PersistableModelWriteCoreMethodName = "PersistableModelWriteCore"; private const string WriteAction = "writing"; private const string ReadAction = "reading"; private readonly ParameterProvider _utf8JsonWriterParameter = new("writer", $"The JSON writer.", typeof(Utf8JsonWriter)); @@ -61,7 +64,7 @@ public MrwSerializationTypeProvider(TypeProvider provider, InputModelType inputM _shouldOverrideMethods = _model.Inherits != null && _model.Inherits is { IsFrameworkType: false, Implementation: TypeProvider }; _utf8JsonWriterSnippet = new Utf8JsonWriterSnippet(_utf8JsonWriterParameter); _mrwOptionsParameterSnippet = new ModelReaderWriterOptionsSnippet(_serializationOptionsParameter); - _isNotEqualToWireConditionSnippet = NotEqual(_mrwOptionsParameterSnippet.Format, ModelReaderWriterOptionsSnippet.WireFormat); + _isNotEqualToWireConditionSnippet = _mrwOptionsParameterSnippet.Format.NotEqual(ModelReaderWriterOptionsSnippet.WireFormat); Name = provider.Name; Namespace = provider.Namespace; @@ -158,18 +161,44 @@ protected override MethodProvider[] BuildMethods() BuildJsonModelCreateMethod(), // Add PersistableModel serialization methods BuildPersistableModelWriteMethod(), + BuildPersistableModelWriteCoreMethod(), BuildPersistableModelCreateMethod(), - BuildPersistableModelGetFormatFromOptionsMethod() + BuildPersistableModelGetFormatFromOptionsMethod(), + //cast operators + BuildImplicitToBinaryContent(), + BuildExplicitFromClientResult() }; if (_isStruct) { methods.Add(BuildJsonModelWriteMethodObjectDeclaration()); + methods.Add(BuildPersistableModelWriteMethodObjectDeclaration()); + methods.Add(BuildPersistableModelGetFormatFromOptionsObjectDeclaration()); } return [.. methods]; } + private MethodProvider BuildExplicitFromClientResult() + { + var result = new ParameterProvider("result", $"The {typeof(ClientResult):C} to deserialize the {Type:C} from.", typeof(ClientResult)); + var modifiers = MethodSignatureModifiers.Public | MethodSignatureModifiers.Static | MethodSignatureModifiers.Explicit | MethodSignatureModifiers.Operator; + return new MethodProvider( + new MethodSignature(Type.Name, null, modifiers, null, null, [result]), + Throw(New.NotImplementedException(Literal("Not implemented"))), //TODO https://github.com/microsoft/typespec/issues/3696 + this); + } + + private MethodProvider BuildImplicitToBinaryContent() + { + var model = new ParameterProvider(Type.Name.ToVariableName(), $"The {Type:C} to serialize into {typeof(BinaryContent):C}", Type); + var modifiers = MethodSignatureModifiers.Public | MethodSignatureModifiers.Static | MethodSignatureModifiers.Implicit | MethodSignatureModifiers.Operator; + return new MethodProvider( + new MethodSignature(nameof(BinaryContent), null, modifiers, null, null, [model]), + Throw(New.NotImplementedException(Literal("Not implemented"))), //TODO https://github.com/microsoft/typespec/issues/3696 + this); + } + /// /// Builds the types that the model type serialization implements. /// @@ -217,6 +246,22 @@ internal MethodProvider BuildJsonModelWriteMethodObjectDeclaration() ); } + /// + /// Builds the write method for the model object. + /// + internal MethodProvider BuildPersistableModelWriteMethodObjectDeclaration() + { + // BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) => ((IPersistableModel)this).Write(options); + var castToT = This.CastTo(_persistableModelTInterface); + var returnType = typeof(BinaryData); + return new MethodProvider + ( + new MethodSignature(nameof(IPersistableModel.Write), null, MethodSignatureModifiers.None, returnType, null, [_serializationOptionsParameter], ExplicitInterface: _persistableModelObjectInterface), + castToT.Invoke(nameof(IPersistableModel.Write), [_serializationOptionsParameter]), + this + ); + } + /// /// Builds the write core method for the model. /// @@ -236,6 +281,27 @@ internal MethodProvider BuildJsonModelWriteCoreMethod() ); } + /// + /// Builds the write core method for the model. + /// + internal MethodProvider BuildPersistableModelWriteCoreMethod() + { + MethodSignatureModifiers modifiers = MethodSignatureModifiers.Protected | MethodSignatureModifiers.Virtual; + if (_shouldOverrideMethods) + { + modifiers = MethodSignatureModifiers.Protected | MethodSignatureModifiers.Override; + } + + var returnType = typeof(BinaryData); + // BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options) + return new MethodProvider + ( + new MethodSignature(PersistableModelWriteCoreMethodName, null, modifiers, returnType, null, [ _serializationOptionsParameter]), + BuildPersistableModelWriteCoreMethodBody(), + this + ); + } + /// /// Builds the create method for the model. /// @@ -258,13 +324,12 @@ internal MethodProvider BuildJsonModelCreateMethod() /// internal MethodProvider BuildPersistableModelWriteMethod() { - // BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) + // BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) => PersistableModelWriteCore(options); var returnType = typeof(BinaryData); return new MethodProvider ( - new MethodSignature(nameof(IPersistableModel.Write), null, MethodSignatureModifiers.None, returnType, null, new[] { _serializationOptionsParameter }, ExplicitInterface: _persistableModelTInterface), - // Throw a not implemented exception until this method body is implemented https://github.com/microsoft/typespec/issues/3330 - Throw(New.NotImplementedException(Literal("Not implemented"))), + new MethodSignature(nameof(IPersistableModel.Write), null, MethodSignatureModifiers.None, returnType, null, [_serializationOptionsParameter], ExplicitInterface: _persistableModelTInterface), + This.Invoke(PersistableModelWriteCoreMethodName, _serializationOptionsParameter), this ); } @@ -292,15 +357,32 @@ internal MethodProvider BuildPersistableModelCreateMethod() internal MethodProvider BuildPersistableModelGetFormatFromOptionsMethod() { ValueExpression jsonWireFormat = SystemSnippet.JsonFormatSerialization; - // ModelReaderWriterFormat IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) + // string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) return new MethodProvider ( - new MethodSignature(nameof(IPersistableModel.GetFormatFromOptions), null, MethodSignatureModifiers.None, typeof(string), null, new[] { _serializationOptionsParameter }, ExplicitInterface: _persistableModelTInterface), + new MethodSignature(nameof(IPersistableModel.GetFormatFromOptions), null, MethodSignatureModifiers.None, typeof(string), null, [_serializationOptionsParameter], ExplicitInterface: _persistableModelTInterface), jsonWireFormat, this ); } + /// + /// Builds the GetFormatFromOptions method for the model object. + /// + internal MethodProvider BuildPersistableModelGetFormatFromOptionsObjectDeclaration() + { + ValueExpression jsonWireFormat = SystemSnippet.JsonFormatSerialization; + var castToT = This.CastTo(_persistableModelTInterface); + + // string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => ((IPersistableModel)this).GetFormatFromOptions(options); + return new MethodProvider + ( + new MethodSignature(nameof(IPersistableModel.GetFormatFromOptions), null, MethodSignatureModifiers.None, typeof(string), null, [_serializationOptionsParameter], ExplicitInterface: _persistableModelObjectInterface), + castToT.Invoke(nameof(IPersistableModel.GetFormatFromOptions), [_serializationOptionsParameter]), + this + ); + } + /// /// Builds the serialization constructor for the model. /// @@ -345,12 +427,27 @@ private MethodBodyStatement[] BuildJsonModelWriteCoreMethodBody() ]; } + private MethodBodyStatement[] BuildPersistableModelWriteCoreMethodBody() + { + var switchCase = new SwitchCaseStatement( + ModelReaderWriterOptionsSnippet.JsonFormat, + Return(new InvokeStaticMethodExpression(typeof(ModelReaderWriter), nameof(ModelReaderWriter.Write), [This, _mrwOptionsParameterSnippet]))); + var typeOfT = _persistableModelTInterface.Arguments[0]; + var defaultCase = SwitchCaseStatement.Default( + ThrowValidationFailException(_mrwOptionsParameterSnippet.Format, typeOfT, WriteAction)); + + return + [ + GetConcreteFormat(_mrwOptionsParameterSnippet, _persistableModelTInterface, out VariableExpression format), + new SwitchStatement(format, [switchCase, defaultCase]) + ]; + } private MethodBodyStatement CallBaseJsonModelWriteCore() { // base.() return _shouldOverrideMethods ? Base.Invoke(JsonModelWriteCoreMethodName, [_utf8JsonWriterParameter, _serializationOptionsParameter]).Terminate() - : EmptyStatement; + : MethodBodyStatement.Empty; } private MethodBodyStatement GetPropertyInitializers(IReadOnlyList parameters) @@ -433,7 +530,7 @@ private MethodBodyStatement CreateValidateJsonFormat(CSharpType modelInterface, MethodBodyStatement[] statements = [ GetConcreteFormat(_mrwOptionsParameterSnippet, modelInterface, out VariableExpression format), - new IfStatement(NotEqual(format, ModelReaderWriterOptionsSnippet.JsonFormat)) + new IfStatement(format.NotEqual(ModelReaderWriterOptionsSnippet.JsonFormat)) { ThrowValidationFailException(format, modelInterface.Arguments[0], action) }, @@ -447,7 +544,7 @@ private MethodBodyStatement GetConcreteFormat(ModelReaderWriterOptionsSnippet op var cast = This.CastTo(iModelTInterface); var invokeGetFormatFromOptions = cast.Invoke(nameof(IPersistableModel.GetFormatFromOptions), options); var condition = new TernaryConditionalExpression( - Equal(options.Format, ModelReaderWriterOptionsSnippet.WireFormat), + options.Format.Equal(ModelReaderWriterOptionsSnippet.WireFormat), invokeGetFormatFromOptions, options.Format); var reference = new VariableExpression(typeof(string), "format"); @@ -552,12 +649,12 @@ private IfElseStatement CheckPropertyIsInitialized( if (propertyType.IsCollection && !propertyType.IsReadOnlyMemory && isPropRequired) { - propertyIsInitialized = And(NotEqual(propertyMemberExpression, Null), - OptionalSnippet.IsCollectionDefined(new StringSnippet(propertyMemberExpression))); + propertyIsInitialized = propertyMemberExpression.NotEqual(Null) + .And(OptionalSnippet.IsCollectionDefined(new StringSnippet(propertyMemberExpression))); } else { - propertyIsInitialized = NotEqual(propertyMemberExpression, Null); + propertyIsInitialized = propertyMemberExpression.NotEqual(Null); } return new IfElseStatement( @@ -601,7 +698,7 @@ private MethodBodyStatement CreateDictionarySerializationStatement( { _utf8JsonWriterSnippet.WritePropertyName(keyValuePair.Key), TypeRequiresNullCheckInSerialization(keyValuePair.ValueType) ? - new IfStatement(Equal(keyValuePair.Value, Null)) { _utf8JsonWriterSnippet.WriteNullValue(), Continue }: EmptyStatement, + new IfStatement(keyValuePair.Value.Equal(Null)) { _utf8JsonWriterSnippet.WriteNullValue(), Continue }: MethodBodyStatement.Empty, CreateSerializationStatement(keyValuePair.ValueType, keyValuePair.Value, serializationFormat) }, _utf8JsonWriterSnippet.WriteEndObject() @@ -618,7 +715,7 @@ private MethodBodyStatement CreateListSerializationStatement( new ForeachStatement("item", array, out VariableExpression item) { TypeRequiresNullCheckInSerialization(item.Type) ? - new IfStatement(Equal(item, Null)) { _utf8JsonWriterSnippet.WriteNullValue(), Continue } : EmptyStatement, + new IfStatement(item.Equal(Null)) { _utf8JsonWriterSnippet.WriteNullValue(), Continue } : MethodBodyStatement.Empty, CreateSerializationStatement(item.Type, item, serializationFormat) }, _utf8JsonWriterSnippet.WriteEndArray() @@ -750,7 +847,7 @@ private IfStatement CreateConditionalSerializationStatement( var isDefinedCondition = propertyType.IsCollection && !propertyType.IsReadOnlyMemory ? OptionalSnippet.IsCollectionDefined(new StringSnippet(propertyMemberExpression)) : OptionalSnippet.IsDefined(new StringSnippet(propertyMemberExpression)); - var condition = isReadOnly ? And(_isNotEqualToWireConditionSnippet, isDefinedCondition) : isDefinedCondition; + var condition = isReadOnly ? _isNotEqualToWireConditionSnippet.And(isDefinedCondition) : isDefinedCondition; return new IfStatement(condition) { writePropertySerializationStatement }; } @@ -763,7 +860,7 @@ private MethodBodyStatement CreateWriteAdditionalRawDataStatement() { if (_rawDataField == null) { - return EmptyStatement; + return MethodBodyStatement.Empty; } var rawDataMemberExp = new MemberExpression(null, _rawDataField.Name); @@ -774,7 +871,7 @@ private MethodBodyStatement CreateWriteAdditionalRawDataStatement() CreateSerializationStatement(_rawDataField.Type.Arguments[1], item.Value, SerializationFormat.Default), }; - return new IfStatement(And(_isNotEqualToWireConditionSnippet, NotEqual(rawDataDictionaryExp, Null))) + return new IfStatement(_isNotEqualToWireConditionSnippet.And(rawDataDictionaryExp.NotEqual(Null))) { forEachStatement, }; diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/ScmMethodProviderCollection.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/ScmMethodProviderCollection.cs new file mode 100644 index 0000000000..d95bc5ea80 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/ScmMethodProviderCollection.cs @@ -0,0 +1,178 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Input; +using Microsoft.Generator.CSharp.Primitives; +using Microsoft.Generator.CSharp.Providers; +using Microsoft.Generator.CSharp.Statements; +using static Microsoft.Generator.CSharp.Snippets.Snippet; + +namespace Microsoft.Generator.CSharp.ClientModel.Providers +{ + internal class ScmMethodProviderCollection : MethodProviderCollection + { + private string _cleanOperationName; + private string _createRequestMethodName; + private ParameterProvider? _bodyParameter; + + public ScmMethodProviderCollection(InputOperation operation, TypeProvider enclosingType) + : base(operation, enclosingType) + { + _cleanOperationName = operation.Name.ToCleanName(); + _createRequestMethodName = "Create" + _cleanOperationName + "Request"; + } + + protected override IReadOnlyList BuildMethods() + { + return + [ + // TO-DO: Add Protocol and Convenience methods https://github.com/Azure/autorest.csharp/issues/4585, https://github.com/Azure/autorest.csharp/issues/4586 + BuildCreateMessageMethod(), + BuildProtocolMethod(false), + BuildProtocolMethod(true), + BuildConvenienceMethod(false), + BuildConvenienceMethod(true), + ]; + } + + private MethodProvider BuildConvenienceMethod(bool isAsync) + { + ClientProvider? client = _enclosingType as ClientProvider; + if (client is null) + { + throw new InvalidOperationException("Protocol methods can only be built for client types."); + } + + var methodModifier = MethodSignatureModifiers.Public | MethodSignatureModifiers.Virtual; + if (isAsync) + { + methodModifier |= MethodSignatureModifiers.Async; + } + var methodSignature = new MethodSignature( + isAsync ? _cleanOperationName + "Async" : _cleanOperationName, + FormattableStringHelpers.FromString(_operation.Description), + methodModifier, + GetResponseType(_operation.Responses, true, isAsync), + null, + Parameters: ConvenienceMethodParameters); + var processMessageName = isAsync ? "ProcessMessageAsync" : "ProcessMessage"; + MethodBodyStatement[] methodBody = _bodyParameter is null + ? [Return(This.Invoke(methodSignature.Name, [.. ConvenienceMethodParameters, Null], null, isAsync, isAsync))] + : [ + Declare("result", typeof(ClientResult), This.Invoke(methodSignature.Name, [.. ConvenienceMethodParameters, Null], null, isAsync, isAsync), out var result), + Return(new InvokeStaticMethodExpression( + typeof(ClientResult), + nameof(ClientResult.FromValue), + [result.CastTo(_bodyParameter.Type), result.Invoke("GetRawResponse")])), + ]; + + var convenienceMethod = new MethodProvider(methodSignature, methodBody, _enclosingType); + convenienceMethod.XmlDocs!.Exceptions.Add(new(typeof(ClientResultException), "Service returned a non-success status code.", [])); + return convenienceMethod; + } + + private List? _methodParameters; + private List MethodParameters => _methodParameters ??= GetMethodParameters(false); + + private List? _convenienceMethodParameters; + private List ConvenienceMethodParameters => _convenienceMethodParameters ??= GetMethodParameters(true); + + private List GetMethodParameters(bool isConvenience) + { + List methodParameters = new(); + foreach (InputParameter inputParam in _operation.Parameters) + { + if (inputParam.Kind != InputOperationParameterKind.Method) + continue; + if (inputParam.Location == RequestLocation.Body) + { + var parameter = isConvenience ? ClientModelPlugin.Instance.TypeFactory.CreateCSharpParam(inputParam) : ScmKnownParameters.BinaryContent; + _bodyParameter = parameter; + methodParameters.Add(parameter); + } + else + { + methodParameters.Add(ClientModelPlugin.Instance.TypeFactory.CreateCSharpParam(inputParam)); + } + } + return methodParameters; + } + + private MethodProvider BuildProtocolMethod(bool isAsync) + { + ClientProvider? client = _enclosingType as ClientProvider; + if (client is null) + { + throw new InvalidOperationException("Protocol methods can only be built for client types."); + } + + var methodModifier = MethodSignatureModifiers.Public | MethodSignatureModifiers.Virtual; + if (isAsync) + { + methodModifier |= MethodSignatureModifiers.Async; + } + var methodSignature = new MethodSignature( + isAsync ? _cleanOperationName + "Async" : _cleanOperationName, + FormattableStringHelpers.FromString(_operation.Description), + methodModifier, + GetResponseType(_operation.Responses, false, isAsync), + $"The response returned from the service.", + Parameters: [.. MethodParameters, ScmKnownParameters.RequestOptions]); + var processMessageName = isAsync ? "ProcessMessageAsync" : "ProcessMessage"; + MethodBodyStatement[] methodBody = + [ + UsingDeclare("message", typeof(PipelineMessage), This.Invoke(_createRequestMethodName, [.. MethodParameters, ScmKnownParameters.RequestOptions]), out var message), + Return(new InvokeStaticMethodExpression( + typeof(ClientResult), + nameof(ClientResult.FromResponse), + client.PipelineField.Invoke(processMessageName, [message, ScmKnownParameters.RequestOptions], isAsync, true))), + ]; + + var protocolMethod = new MethodProvider(methodSignature, methodBody, _enclosingType); + protocolMethod.XmlDocs!.Exceptions.Add(new(typeof(ClientResultException), "Service returned a non-success status code.", [])); + List listItems = new List(); + listItems.Add(new XmlDocStatement("item", [], new XmlDocStatement("description", [$"This protocol method allows explicit creation of the request and processing of the response for advanced scenarios."]))); + XmlDocStatement listXmlDoc = new XmlDocStatement("", "", [], innerStatements: [.. listItems]); + protocolMethod.XmlDocs.Summary = new XmlDocSummaryStatement([$"[Protocol Method] {_operation.Description}"], listXmlDoc); + return protocolMethod; + } + + private static CSharpType? GetResponseType(IReadOnlyList responses, bool isConvenience, bool isAsync) + { + var returnType = isConvenience ? GetConvenienceReturnType(responses) : typeof(ClientResult); + return isAsync ? new CSharpType(typeof(Task<>), returnType) : returnType; + } + + private static CSharpType GetConvenienceReturnType(IReadOnlyList responses) + { + var response = responses.FirstOrDefault(r => !r.IsErrorResponse); + return response is null || response.BodyType is null + ? typeof(ClientResult) + : new CSharpType(typeof(ClientResult<>), ClientModelPlugin.Instance.TypeFactory.CreateCSharpType(response.BodyType)); + } + + private MethodProvider BuildCreateMessageMethod() + { + // TO-DO: properly build method https://github.com/Azure/autorest.csharp/issues/4583 + + var methodModifier = MethodSignatureModifiers.Internal; + var methodSignature = new MethodSignature( + _createRequestMethodName, + FormattableStringHelpers.FromString(_operation.Description), + methodModifier, + typeof(PipelineMessage), + null, + Parameters: [.. MethodParameters, ScmKnownParameters.RequestOptions]); + var methodBody = Throw(New.NotImplementedException(Literal("Method not implemented."))); + + return new MethodProvider(methodSignature, methodBody, _enclosingType); + } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/SystemOptionalProvider.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/SystemOptionalProvider.cs index a697a4e561..df23cf5633 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/SystemOptionalProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/SystemOptionalProvider.cs @@ -5,6 +5,7 @@ using System.Text.Json; using Microsoft.Generator.CSharp.ClientModel.Snippets; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Providers; using Microsoft.Generator.CSharp.Snippets; using Microsoft.Generator.CSharp.Statements; diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/TypeFormattersProvider.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/TypeFormattersProvider.cs index b292edaa29..1099ee8225 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/TypeFormattersProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/TypeFormattersProvider.cs @@ -8,11 +8,12 @@ using System.Xml; using Microsoft.Generator.CSharp.ClientModel.Snippets; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Providers; using Microsoft.Generator.CSharp.Snippets; using Microsoft.Generator.CSharp.Statements; -using static Microsoft.Generator.CSharp.Snippets.Snippet; using static Microsoft.Generator.CSharp.ClientModel.Snippets.TypeFormattersSnippet; +using static Microsoft.Generator.CSharp.Snippets.Snippet; namespace Microsoft.Generator.CSharp.ClientModel.Providers { @@ -165,29 +166,30 @@ private MethodProvider BuildToBase64UrlStringMethodProvider() Declare("numWholeOrPartialInputBlocks", new IntSnippet(new BinaryOperatorExpression("/", new KeywordExpression("checked", new BinaryOperatorExpression("+", valueLength, Int(2))), Int(3))), out var numWholeOrPartialInputBlocks), Declare("size", new IntSnippet(new KeywordExpression("checked", new BinaryOperatorExpression("*", numWholeOrPartialInputBlocks, Int(4)))), out var size), }; - var output = new VariableExpression(typeof(char[]), "output"); + var outputVar = new VariableExpression(typeof(char[]), "output"); + var output = new IndexableExpression(outputVar); body.Add(new MethodBodyStatement[] { - Declare(output, New.Array(typeof(char), size)), - EmptyLineStatement, + Declare(outputVar, New.Array(typeof(char), size)), + MethodBodyStatement.EmptyLine, Declare("numBase64Chars", new IntSnippet(new InvokeStaticMethodExpression(typeof(Convert), nameof(Convert.ToBase64CharArray), [value, Int(0), valueLength, output, Int(0)])), out var numBase64Chars), - EmptyLineStatement, + MethodBodyStatement.EmptyLine, Declare("i", Int(0), out var i), - new ForStatement(null, LessThan(i, numBase64Chars), new UnaryOperatorExpression("++", i, true)) + new ForStatement(null, i.LessThan(numBase64Chars), new UnaryOperatorExpression("++", i, true)) { - Declare("ch", new CharSnippet(new IndexerExpression(output, i)), out var ch), - new IfElseStatement(new IfStatement(Equal(ch, Literal('+'))) + Declare("ch", new CharSnippet(output[i]), out var ch), + new IfElseStatement(new IfStatement(ch.Equal(Literal('+'))) { - new IndexerExpression(output, i).Assign(Literal('-')).Terminate() - }, new IfElseStatement(new IfStatement(Equal(ch, Literal('/'))) + output[i].Assign(Literal('-')).Terminate() + }, new IfElseStatement(new IfStatement(ch.Equal(Literal('/'))) { - new IndexerExpression(output, i).Assign(Literal('_')).Terminate() - }, new IfStatement(Equal(ch, Literal('='))) + output[i].Assign(Literal('_')).Terminate() + }, new IfStatement(ch.Equal(Literal('='))) { Break })) }, - EmptyLineStatement, + MethodBodyStatement.EmptyLine, Return(New.Instance(typeof(string), output, Int(0), i)) }); @@ -215,29 +217,30 @@ private MethodProvider BuildFromBase64UrlString() SwitchCaseExpression.Default(ThrowExpression(New.InvalidOperationException(Literal("Malformed input")))) })), out var paddingCharsToAdd) }; - var output = new VariableExpression(typeof(char[]), "output"); + var outputVar = new VariableExpression(typeof(char[]), "output"); + var output = new IndexableExpression(outputVar); var outputLength = output.Property("Length"); body.Add(new MethodBodyStatement[] { - Declare(output, New.Array(typeof(char), new BinaryOperatorExpression("+", value.Length, paddingCharsToAdd))), + Declare(outputVar, New.Array(typeof(char), new BinaryOperatorExpression("+", value.Length, paddingCharsToAdd))), Declare("i", Int(0), out var i), - new ForStatement(null, LessThan(i, value.Length), new UnaryOperatorExpression("++", i, true)) + new ForStatement(null, i.LessThan(value.Length), new UnaryOperatorExpression("++", i, true)) { - Declare("ch", value.Index(i), out var ch), - new IfElseStatement(new IfStatement(Equal(ch, Literal('-'))) + Declare("ch", value[i], out var ch), + new IfElseStatement(new IfStatement(ch.Equal(Literal('-'))) { - new IndexerExpression(output, i).Assign(Literal('+')).Terminate() - }, new IfElseStatement(new IfStatement(Equal(ch, Literal('_'))) + output[i].Assign(Literal('+')).Terminate() + }, new IfElseStatement(new IfStatement(ch.Equal(Literal('_'))) { - new IndexerExpression(output, i).Assign(Literal('/')).Terminate() - }, new IndexerExpression(output, i).Assign(ch).Terminate())) + output[i].Assign(Literal('/')).Terminate() + }, output[i].Assign(ch).Terminate())) }, - EmptyLineStatement, - new ForStatement(null, LessThan(i, outputLength), new UnaryOperatorExpression("++", i, true)) + MethodBodyStatement.EmptyLine, + new ForStatement(null, i.LessThan(outputLength), new UnaryOperatorExpression("++", i, true)) { - new IndexerExpression(output, i).Assign(Literal('=')).Terminate() + output[i].Assign(Literal('=')).Terminate() }, - EmptyLineStatement, + MethodBodyStatement.EmptyLine, Return(new InvokeStaticMethodExpression(typeof(Convert), nameof(Convert.FromBase64CharArray), new[] { output, Int(0), outputLength })) }); @@ -312,10 +315,10 @@ private MethodProvider BuildConvertToStringMethodProvider() new SwitchCaseExpression(new DeclarationExpression(typeof(bool), "b", out var b), TypeFormattersSnippet.ToString(b)), new SwitchCaseExpression(GetTypePattern(new CSharpType[] {typeof(int),typeof(float), typeof(double), typeof(long), typeof(decimal)}), value.CastTo(typeof(IFormattable)).Invoke(nameof(IFormattable.ToString), _defaultNumberFormatField, _invariantCultureExpression)), // TODO -- figure out how to write this line - SwitchCaseExpression.When(new DeclarationExpression(typeof(byte[]), "b", out var bytes), NotEqual(format, Null), TypeFormattersSnippet.ToString(bytes, format)), + SwitchCaseExpression.When(new DeclarationExpression(typeof(byte[]), "b", out var bytes), format.NotEqual(Null), TypeFormattersSnippet.ToString(bytes, format)), new SwitchCaseExpression(new DeclarationExpression(typeof(IEnumerable), "s", out var enumerable), StringSnippet.Join(Literal(","), enumerable)), - SwitchCaseExpression.When(new DeclarationExpression(typeof(DateTimeOffset), "dateTime", out var dateTime), NotEqual(format, Null), TypeFormattersSnippet.ToString(dateTime, format)), - SwitchCaseExpression.When(new DeclarationExpression(typeof(TimeSpan), "timeSpan", out var timeSpan), NotEqual(format, Null), TypeFormattersSnippet.ToString(timeSpan, format)), + SwitchCaseExpression.When(new DeclarationExpression(typeof(DateTimeOffset), "dateTime", out var dateTime), format.NotEqual(Null), TypeFormattersSnippet.ToString(dateTime, format)), + SwitchCaseExpression.When(new DeclarationExpression(typeof(TimeSpan), "timeSpan", out var timeSpan), format.NotEqual(Null), TypeFormattersSnippet.ToString(timeSpan, format)), new SwitchCaseExpression(new DeclarationExpression(typeof(TimeSpan), "timeSpan", out var timeSpanNoFormat), new InvokeStaticMethodExpression(typeof(XmlConvert), nameof(XmlConvert.ToString), [timeSpanNoFormat])), new SwitchCaseExpression(new DeclarationExpression(typeof(Guid), "guid", out var guid), guid.Invoke("ToString")), new SwitchCaseExpression(new DeclarationExpression(typeof(BinaryData), "binaryData", out var binaryData), ConvertToString(new BinaryDataSnippet(binaryData).ToArray(), format)), diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Snippets/SystemSnippet.DeclarationStatements.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Snippets/SystemSnippet.DeclarationStatements.cs index 10e13093a2..e8ddf8e01d 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Snippets/SystemSnippet.DeclarationStatements.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Snippets/SystemSnippet.DeclarationStatements.cs @@ -3,6 +3,7 @@ using System; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Snippets; using Microsoft.Generator.CSharp.Statements; diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/BinaryContentSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/BinaryContentSnippet.cs index 9db829daaa..fae5f8c857 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/BinaryContentSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/BinaryContentSnippet.cs @@ -3,11 +3,12 @@ using System.ClientModel; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Snippets; namespace Microsoft.Generator.CSharp.ClientModel.Snippets { - internal sealed record BinaryContentSnippet(ValueExpression Untyped) : TypedSnippet(Untyped) + internal sealed record BinaryContentSnippet(ValueExpression Expression) : TypedSnippet(Expression) { public static BinaryContentSnippet Create(ValueExpression serializable) => new(InvokeStatic(nameof(BinaryContent.Create), serializable)); diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/ClientPipelineSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/ClientPipelineSnippet.cs new file mode 100644 index 0000000000..8a732c062c --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/ClientPipelineSnippet.cs @@ -0,0 +1,48 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System.ClientModel.Primitives; +using System.Collections.Generic; +using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Snippets; +using static Microsoft.Generator.CSharp.Snippets.Snippet; + +namespace Microsoft.Generator.CSharp.ClientModel.Snippets +{ + internal sealed record ClientPipelineSnippet(ValueExpression Expression) : TypedSnippet(Expression) + { + private const string _processMessageAsync = "ProcessMessageAsync"; + private const string _processMessage = "ProcessMessage"; + private const string _processHeadAsBoolMessageAsync = "ProcessHeadAsBoolMessageAsync"; + private const string _processHeadAsBoolMessage = "ProcessHeadAsBoolMessage"; + + public PipelineMessageSnippet CreateMessage(RequestOptionsSnippet requestOptions, ValueExpression responseClassifier) + => new(Expression.Invoke(nameof(ClientPipeline.CreateMessage), requestOptions, responseClassifier)); + + public PipelineResponseSnippet ProcessMessage(ValueExpression message, RequestOptionsSnippet? requestOptions, bool isAsync) + { + var arguments = new List + { + Expression, + message, + requestOptions ?? Null + }; + + return new(new InvokeStaticMethodExpression(Type, isAsync ? _processMessageAsync : _processMessage, arguments, CallAsExtension: true, CallAsAsync: isAsync)); + } + + public ClientResultSnippet ProcessHeadAsBoolMessage(ValueExpression message, RequestOptionsSnippet? requestContext, bool isAsync) + { + var arguments = new List + { + Expression, + message, + requestContext ?? Null + }; + + return new(new InvokeStaticMethodExpression(Type, isAsync ? _processHeadAsBoolMessageAsync : _processHeadAsBoolMessage, arguments, CallAsExtension: true, CallAsAsync: isAsync)); + } + + public static ClientPipelineSnippet Create() => new(InvokeStatic(nameof(ClientPipeline.Create))); + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/ClientResultSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/ClientResultSnippet.cs index 8596cec667..874e145e3f 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/ClientResultSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/ClientResultSnippet.cs @@ -4,11 +4,12 @@ using System; using System.ClientModel; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Snippets; namespace Microsoft.Generator.CSharp.ClientModel.Snippets { - internal sealed record ClientResultSnippet(ValueExpression Untyped) : TypedSnippet(Untyped) + internal sealed record ClientResultSnippet(ValueExpression Expression) : TypedSnippet(Expression) { public ValueExpression Value => Property(nameof(ClientResult.Value)); public BinaryDataSnippet Content => throw new InvalidOperationException("Result does not have a Content property"); @@ -29,6 +30,6 @@ public ClientResultSnippet FromValue(ValueExpression value) public ClientResultSnippet FromValue(CSharpType explicitValueType, ValueExpression value) => new(new InvokeStaticMethodExpression(typeof(ClientResult), nameof(ClientResult.FromValue), new[] { value, this }, new[] { explicitValueType })); - public PipelineResponseSnippet GetRawResponse() => new(Untyped.Invoke(nameof(ClientResult.GetRawResponse))); + public PipelineResponseSnippet GetRawResponse() => new(Expression.Invoke(nameof(ClientResult.GetRawResponse))); } } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/ErrorResultSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/ErrorResultSnippet.cs new file mode 100644 index 0000000000..c2b00a6a7d --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/ErrorResultSnippet.cs @@ -0,0 +1,17 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using Microsoft.Generator.CSharp.ClientModel.Providers; +using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; +using Microsoft.Generator.CSharp.Snippets; + +namespace Microsoft.Generator.CSharp.ClientModel.Snippets +{ + internal sealed record ErrorResultSnippet(ValueExpression Expression) : TypedSnippet(Expression) + { + private static readonly ErrorResultProvider _errorResultProvider = new(); + + public static CSharpType ErrorResultType => _errorResultProvider.Type; + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/JsonDocumentSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/JsonDocumentSnippet.cs index b90159fba7..c3a1bb5dd0 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/JsonDocumentSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/JsonDocumentSnippet.cs @@ -7,7 +7,7 @@ namespace Microsoft.Generator.CSharp.ClientModel.Snippets { - internal sealed record JsonDocumentSnippet(ValueExpression Untyped) : TypedSnippet(Untyped) + internal sealed record JsonDocumentSnippet(ValueExpression Expression) : TypedSnippet(Expression) { public JsonElementSnippet RootElement => new(Property(nameof(JsonDocument.RootElement))); diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/JsonElementSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/JsonElementSnippet.cs index 8e595d788d..f03c180ba9 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/JsonElementSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/JsonElementSnippet.cs @@ -9,30 +9,30 @@ namespace Microsoft.Generator.CSharp.ClientModel.Snippets { - internal sealed record JsonElementSnippet(ValueExpression Untyped) : TypedSnippet(Untyped) + internal sealed record JsonElementSnippet(ValueExpression Expression) : TypedSnippet(Expression) { public JsonValueKindSnippet ValueKind => new(Property(nameof(JsonElement.ValueKind))); - public EnumerableSnippet EnumerateArray() => new(typeof(JsonElement), Untyped.Invoke(nameof(JsonElement.EnumerateArray))); - public EnumerableSnippet EnumerateObject() => new(typeof(JsonProperty), Untyped.Invoke(nameof(JsonElement.EnumerateObject))); - public JsonElementSnippet this[int index] => new(new IndexerExpression(Untyped, Int(index))); - public JsonElementSnippet GetProperty(string propertyName) => new(Untyped.Invoke(nameof(JsonElement.GetProperty), Literal(propertyName))); + public EnumerableSnippet EnumerateArray() => new(typeof(JsonElement), Expression.Invoke(nameof(JsonElement.EnumerateArray))); + public EnumerableSnippet EnumerateObject() => new(typeof(JsonProperty), Expression.Invoke(nameof(JsonElement.EnumerateObject))); + public JsonElementSnippet this[int index] => new(new IndexerExpression(Expression, Int(index))); + public JsonElementSnippet GetProperty(string propertyName) => new(Expression.Invoke(nameof(JsonElement.GetProperty), Literal(propertyName))); - public ValueExpression InvokeClone() => Untyped.Invoke(nameof(JsonElement.Clone)); - public ValueExpression GetArrayLength() => Untyped.Invoke(nameof(JsonElement.GetArrayLength)); - public ValueExpression GetBoolean() => Untyped.Invoke(nameof(JsonElement.GetBoolean)); - public ValueExpression GetBytesFromBase64() => Untyped.Invoke(nameof(JsonElement.GetBytesFromBase64)); - public ValueExpression GetDateTime() => Untyped.Invoke(nameof(JsonElement.GetDateTime)); - public ValueExpression GetDecimal() => Untyped.Invoke(nameof(JsonElement.GetDecimal)); - public ValueExpression GetDouble() => Untyped.Invoke(nameof(JsonElement.GetDouble)); - public ValueExpression GetGuid() => Untyped.Invoke(nameof(JsonElement.GetGuid)); - public ValueExpression GetSByte() => Untyped.Invoke(nameof(JsonElement.GetSByte)); - public ValueExpression GetByte() => Untyped.Invoke(nameof(JsonElement.GetByte)); - public ValueExpression GetInt16() => Untyped.Invoke(nameof(JsonElement.GetInt16)); - public ValueExpression GetInt32() => Untyped.Invoke(nameof(JsonElement.GetInt32)); - public ValueExpression GetInt64() => Untyped.Invoke(nameof(JsonElement.GetInt64)); - public StringSnippet GetRawText() => new(Untyped.Invoke(nameof(JsonElement.GetRawText))); - public ValueExpression GetSingle() => Untyped.Invoke(nameof(JsonElement.GetSingle)); - public StringSnippet GetString() => new(Untyped.Invoke(nameof(JsonElement.GetString))); + public ValueExpression InvokeClone() => Expression.Invoke(nameof(JsonElement.Clone)); + public ValueExpression GetArrayLength() => Expression.Invoke(nameof(JsonElement.GetArrayLength)); + public ValueExpression GetBoolean() => Expression.Invoke(nameof(JsonElement.GetBoolean)); + public ValueExpression GetBytesFromBase64() => Expression.Invoke(nameof(JsonElement.GetBytesFromBase64)); + public ValueExpression GetDateTime() => Expression.Invoke(nameof(JsonElement.GetDateTime)); + public ValueExpression GetDecimal() => Expression.Invoke(nameof(JsonElement.GetDecimal)); + public ValueExpression GetDouble() => Expression.Invoke(nameof(JsonElement.GetDouble)); + public ValueExpression GetGuid() => Expression.Invoke(nameof(JsonElement.GetGuid)); + public ValueExpression GetSByte() => Expression.Invoke(nameof(JsonElement.GetSByte)); + public ValueExpression GetByte() => Expression.Invoke(nameof(JsonElement.GetByte)); + public ValueExpression GetInt16() => Expression.Invoke(nameof(JsonElement.GetInt16)); + public ValueExpression GetInt32() => Expression.Invoke(nameof(JsonElement.GetInt32)); + public ValueExpression GetInt64() => Expression.Invoke(nameof(JsonElement.GetInt64)); + public StringSnippet GetRawText() => new(Expression.Invoke(nameof(JsonElement.GetRawText))); + public ValueExpression GetSingle() => Expression.Invoke(nameof(JsonElement.GetSingle)); + public StringSnippet GetString() => new(Expression.Invoke(nameof(JsonElement.GetString))); public BoolSnippet ValueKindEqualsNull() => new(new BinaryOperatorExpression("==", Property(nameof(JsonElement.ValueKind)), FrameworkEnumValue(JsonValueKind.Null))); @@ -43,7 +43,7 @@ public BoolSnippet ValueKindNotEqualsUndefined() public BoolSnippet ValueKindEqualsString() => new(new BinaryOperatorExpression("==", Property(nameof(JsonElement.ValueKind)), FrameworkEnumValue(JsonValueKind.String))); - public MethodBodyStatement WriteTo(ValueExpression writer) => Untyped.Invoke(nameof(JsonElement.WriteTo), [writer], false).Terminate(); + public MethodBodyStatement WriteTo(ValueExpression writer) => Expression.Invoke(nameof(JsonElement.WriteTo), [writer], false).Terminate(); public ValueExpression GetBytesFromBase64(string? format) => ModelSerializationExtensionsSnippet.GetBytesFromBase64(this, format); diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/JsonPropertySnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/JsonPropertySnippet.cs index a5b64adfae..b465eec1fc 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/JsonPropertySnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/JsonPropertySnippet.cs @@ -8,11 +8,11 @@ namespace Microsoft.Generator.CSharp.ClientModel.Snippets { - internal sealed record JsonPropertySnippet(ValueExpression Untyped) : TypedSnippet(Untyped) + internal sealed record JsonPropertySnippet(ValueExpression Expression) : TypedSnippet(Expression) { public StringSnippet Name => new(Property(nameof(JsonProperty.Name))); public JsonElementSnippet Value => new(Property(nameof(JsonProperty.Value))); - public BoolSnippet NameEquals(string value) => new(Untyped.Invoke(nameof(JsonProperty.NameEquals), LiteralU8(value))); + public BoolSnippet NameEquals(string value) => new(Expression.Invoke(nameof(JsonProperty.NameEquals), LiteralU8(value))); } } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/JsonSerializerSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/JsonSerializerSnippet.cs index 439bc779e6..decf934e2d 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/JsonSerializerSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/JsonSerializerSnippet.cs @@ -3,11 +3,12 @@ using System.Text.Json; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Snippets; namespace Microsoft.Generator.CSharp.ClientModel.Snippets { - internal sealed record JsonSerializerSnippet(ValueExpression Untyped) : TypedSnippet(typeof(JsonSerializer), Untyped) + internal sealed record JsonSerializerSnippet(ValueExpression Expression) : TypedSnippet(typeof(JsonSerializer), Expression) { public static InvokeStaticMethodExpression Serialize(ValueExpression writer, ValueExpression value, ValueExpression? options = null) { diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/ModelReaderWriterOptionsSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/ModelReaderWriterOptionsSnippet.cs index cb7a23c37b..f9a5a18af5 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/ModelReaderWriterOptionsSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/ModelReaderWriterOptionsSnippet.cs @@ -9,7 +9,7 @@ namespace Microsoft.Generator.CSharp.ClientModel.Snippets { - internal sealed record ModelReaderWriterOptionsSnippet(ValueExpression Untyped) : TypedSnippet(Untyped) + internal sealed record ModelReaderWriterOptionsSnippet(ValueExpression Expression) : TypedSnippet(Expression) { public ValueExpression Format => new MemberExpression(this, nameof(ModelReaderWriterOptions.Format)); internal static StringSnippet WireFormat => Literal("W"); diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/ModelSerializationExtensionsSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/ModelSerializationExtensionsSnippet.cs index 381ec48dc3..c276b0dbf0 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/ModelSerializationExtensionsSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/ModelSerializationExtensionsSnippet.cs @@ -9,7 +9,7 @@ namespace Microsoft.Generator.CSharp.ClientModel.Snippets { - internal sealed record ModelSerializationExtensionsSnippet(ValueExpression Untyped) : TypedSnippet(Untyped) + internal sealed record ModelSerializationExtensionsSnippet(ValueExpression Expression) : TypedSnippet(Expression) { private const string WriteStringValueMethodName = "WriteStringValue"; private const string WriteBase64StringValueMethodName = "WriteBase64StringValue"; @@ -33,17 +33,17 @@ public static MethodBodyStatement WriteObjectValue(Utf8JsonWriterSnippet snippet var parameters = options is null ? new ValueExpression[] { value } : new ValueExpression[] { value, options }; - return snippet.Untyped.Invoke(WriteObjectValueMethodName, parameters, [value.Type], false).Terminate(); + return snippet.Expression.Invoke(WriteObjectValueMethodName, parameters, [value.Type], false).Terminate(); } public static MethodBodyStatement WriteStringValue(Utf8JsonWriterSnippet snippet, ValueExpression value, string? format) - => snippet.Untyped.Invoke(WriteStringValueMethodName, [value, Literal(format)]).Terminate(); + => snippet.Invoke(WriteStringValueMethodName, [value, Literal(format)]).Terminate(); public static MethodBodyStatement WriteNumberValue(Utf8JsonWriterSnippet snippet, ValueExpression value, string? format) - => snippet.Untyped.Invoke(WriteNumberValueMethodName, [value, Literal(format)]).Terminate(); + => snippet.Invoke(WriteNumberValueMethodName, [value, Literal(format)]).Terminate(); public static MethodBodyStatement WriteBase64StringValue(Utf8JsonWriterSnippet snippet, ValueExpression value, string? format) - => snippet.Untyped.Invoke(WriteBase64StringValueMethodName, [value, Literal(format)]).Terminate(); + => snippet.Invoke(WriteBase64StringValueMethodName, [value, Literal(format)]).Terminate(); public static ValueExpression GetObject(JsonElementSnippet element) => new InvokeStaticMethodExpression(Provider.Type, GetObjectMethodName, [element], CallAsExtension: true); @@ -61,7 +61,7 @@ public static ValueExpression GetChar(JsonElementSnippet element) => new InvokeStaticMethodExpression(Provider.Type, GetCharMethodName, [element], CallAsExtension: true); public static MethodBodyStatement ThrowNonNullablePropertyIsNull(JsonPropertySnippet property) - => property.Untyped.Invoke(ThrowNonNullablePropertyIsNullMethodName).Terminate(); + => property.Invoke(ThrowNonNullablePropertyIsNullMethodName).Terminate(); public static ValueExpression GetRequiredString(JsonElementSnippet element) => new InvokeStaticMethodExpression(Provider.Type, GetRequiredStringMethodName, [element], CallAsExtension: true); diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/OptionalSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/OptionalSnippet.cs index 3a49ed2608..4d3ee59501 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/OptionalSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/OptionalSnippet.cs @@ -3,12 +3,13 @@ using Microsoft.Generator.CSharp.ClientModel.Providers; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Snippets; using static Microsoft.Generator.CSharp.Snippets.Snippet; namespace Microsoft.Generator.CSharp.ClientModel.Snippets { - internal sealed record OptionalSnippet(ValueExpression Untyped) : TypedSnippet(Untyped) + internal sealed record OptionalSnippet(ValueExpression Expression) : TypedSnippet(Expression) { private const string IsDefinedMethodName = "IsDefined"; private const string IsCollectionDefinedMethodName = "IsCollectionDefined"; diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/PipelineMessageSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/PipelineMessageSnippet.cs index 86f26130a0..48b02bdc7c 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/PipelineMessageSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/PipelineMessageSnippet.cs @@ -7,12 +7,14 @@ namespace Microsoft.Generator.CSharp.ClientModel.Snippets { - internal sealed record PipelineMessageSnippet(ValueExpression Untyped) : TypedSnippet(Untyped) + internal sealed record PipelineMessageSnippet(ValueExpression Expression) : TypedSnippet(Expression) { public PipelineRequestSnippet Request => new(Property(nameof(PipelineMessage.Request))); public PipelineResponseSnippet Response => new(Property(nameof(PipelineMessage.Response))); public BoolSnippet BufferResponse => new(Property(nameof(PipelineMessage.BufferResponse))); + + public PipelineResponseSnippet ExtractResponse() => new(Invoke(nameof(PipelineMessage.ExtractResponse), [])); } } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/PipelineRequestSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/PipelineRequestSnippet.cs index d8f8d30b7a..f6603eb1e1 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/PipelineRequestSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/PipelineRequestSnippet.cs @@ -10,11 +10,11 @@ namespace Microsoft.Generator.CSharp.ClientModel.Snippets { - internal sealed record PipelineRequestSnippet(ValueExpression Untyped) : TypedSnippet(Untyped) + internal sealed record PipelineRequestSnippet(ValueExpression Expression) : TypedSnippet(Expression) { public TypedSnippet Uri => new FrameworkTypeSnippet(typeof(Uri), Property(nameof(PipelineRequest.Uri))); - public MethodBodyStatement SetMethod(string method) => Untyped.Property("Method").Assign(Literal(method)).Terminate(); + public MethodBodyStatement SetMethod(string method) => Expression.Property("Method").Assign(Literal(method)).Terminate(); public MethodBodyStatement SetHeaderValue(string name, StringSnippet value) - => Untyped.Property(nameof(PipelineRequest.Headers)).Invoke(nameof(PipelineRequestHeaders.Set), Literal(name), value).Terminate(); + => Expression.Property(nameof(PipelineRequest.Headers)).Invoke(nameof(PipelineRequestHeaders.Set), Literal(name), value).Terminate(); } } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/PipelineResponseSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/PipelineResponseSnippet.cs index 35a4ac8980..9710a1520e 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/PipelineResponseSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/PipelineResponseSnippet.cs @@ -7,10 +7,12 @@ namespace Microsoft.Generator.CSharp.ClientModel.Snippets { - internal sealed record PipelineResponseSnippet(ValueExpression Untyped) : TypedSnippet(Untyped) + internal sealed record PipelineResponseSnippet(ValueExpression Expression) : TypedSnippet(Expression) { public BinaryDataSnippet Content => new(Property(nameof(PipelineResponse.Content))); public StreamSnippet ContentStream => new(Property(nameof(PipelineResponse.ContentStream))); + + public BoolSnippet IsError => new(Property(nameof(PipelineResponse.IsError))); } } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/RequestOptionsSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/RequestOptionsSnippet.cs index c1c01e53ed..bc733f5a9f 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/RequestOptionsSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/RequestOptionsSnippet.cs @@ -3,11 +3,12 @@ using System.ClientModel.Primitives; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Snippets; namespace Microsoft.Generator.CSharp.ClientModel.Snippets { - internal sealed record RequestOptionsSnippet(ValueExpression Untyped) : TypedSnippet(Untyped) + internal sealed record RequestOptionsSnippet(ValueExpression Expression) : TypedSnippet(Expression) { public static RequestOptionsSnippet FromCancellationToken() => new(new InvokeStaticMethodExpression(null, "FromCancellationToken", new ValueExpression[] { KnownParameters.CancellationTokenParameter })); diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/TypeFormattersSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/TypeFormattersSnippet.cs index f597e3c27a..ebebb164e6 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/TypeFormattersSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/TypeFormattersSnippet.cs @@ -7,7 +7,7 @@ namespace Microsoft.Generator.CSharp.ClientModel.Snippets { - internal sealed record TypeFormattersSnippet(ValueExpression Untyped) : TypedSnippet(Untyped) + internal sealed record TypeFormattersSnippet(ValueExpression Expression) : TypedSnippet(Expression) { private const string ToStringMethodName = "ToString"; private const string ToBase64UrlStringMethodName = "ToBase64UrlString"; diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/Utf8JsonWriterSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/Utf8JsonWriterSnippet.cs index 312b469472..ce7bb84f76 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/Utf8JsonWriterSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/TypedSnippets/Utf8JsonWriterSnippet.cs @@ -10,36 +10,36 @@ namespace Microsoft.Generator.CSharp.ClientModel.Snippets { - internal sealed record Utf8JsonWriterSnippet(ValueExpression Untyped) : TypedSnippet(Untyped) + internal sealed record Utf8JsonWriterSnippet(ValueExpression Expression) : TypedSnippet(Expression) { public LongSnippet BytesCommitted => new(Property(nameof(Utf8JsonWriter.BytesCommitted))); public LongSnippet BytesPending => new(Property(nameof(Utf8JsonWriter.BytesPending))); - public MethodBodyStatement WriteStartObject() => Untyped.Invoke(nameof(Utf8JsonWriter.WriteStartObject)).Terminate(); - public MethodBodyStatement WriteEndObject() => Untyped.Invoke(nameof(Utf8JsonWriter.WriteEndObject)).Terminate(); - public MethodBodyStatement WriteStartArray(ValueExpression name) => Untyped.Invoke(nameof(Utf8JsonWriter.WriteStartArray), name).Terminate(); - public MethodBodyStatement WriteStartArray() => Untyped.Invoke(nameof(Utf8JsonWriter.WriteStartArray)).Terminate(); - public MethodBodyStatement WriteEndArray() => Untyped.Invoke(nameof(Utf8JsonWriter.WriteEndArray)).Terminate(); + public MethodBodyStatement WriteStartObject() => Invoke(nameof(Utf8JsonWriter.WriteStartObject)).Terminate(); + public MethodBodyStatement WriteEndObject() => Invoke(nameof(Utf8JsonWriter.WriteEndObject)).Terminate(); + public MethodBodyStatement WriteStartArray(ValueExpression name) => Invoke(nameof(Utf8JsonWriter.WriteStartArray), name).Terminate(); + public MethodBodyStatement WriteStartArray() => Invoke(nameof(Utf8JsonWriter.WriteStartArray)).Terminate(); + public MethodBodyStatement WriteEndArray() => Invoke(nameof(Utf8JsonWriter.WriteEndArray)).Terminate(); public MethodBodyStatement WritePropertyName(string propertyName) => WritePropertyName(LiteralU8(propertyName)); - public MethodBodyStatement WritePropertyName(ValueExpression propertyName) => Untyped.Invoke(nameof(Utf8JsonWriter.WritePropertyName), propertyName).Terminate(); + public MethodBodyStatement WritePropertyName(ValueExpression propertyName) => Invoke(nameof(Utf8JsonWriter.WritePropertyName), propertyName).Terminate(); public MethodBodyStatement WriteNull(string propertyName) => WriteNull(LiteralU8(propertyName)); - public MethodBodyStatement WriteNull(ValueExpression propertyName) => Untyped.Invoke(nameof(Utf8JsonWriter.WriteNull), propertyName).Terminate(); - public MethodBodyStatement WriteNullValue() => Untyped.Invoke(nameof(Utf8JsonWriter.WriteNullValue)).Terminate(); + public MethodBodyStatement WriteNull(ValueExpression propertyName) => Invoke(nameof(Utf8JsonWriter.WriteNull), propertyName).Terminate(); + public MethodBodyStatement WriteNullValue() => Invoke(nameof(Utf8JsonWriter.WriteNullValue)).Terminate(); public MethodBodyStatement WriteNumberValue(ValueExpression value) - => Untyped.Invoke(nameof(Utf8JsonWriter.WriteNumberValue), value).Terminate(); + => Invoke(nameof(Utf8JsonWriter.WriteNumberValue), value).Terminate(); public MethodBodyStatement WriteStringValue(ValueExpression value) - => Untyped.Invoke(nameof(Utf8JsonWriter.WriteStringValue), value).Terminate(); + => Invoke(nameof(Utf8JsonWriter.WriteStringValue), value).Terminate(); public MethodBodyStatement WriteBooleanValue(ValueExpression value) - => Untyped.Invoke(nameof(Utf8JsonWriter.WriteBooleanValue), value).Terminate(); + => Invoke(nameof(Utf8JsonWriter.WriteBooleanValue), value).Terminate(); public MethodBodyStatement WriteRawValue(ValueExpression value) - => Untyped.Invoke(nameof(Utf8JsonWriter.WriteRawValue), value).Terminate(); + => Invoke(nameof(Utf8JsonWriter.WriteRawValue), value).Terminate(); public MethodBodyStatement WriteBase64StringValue(ValueExpression value) - => Untyped.Invoke(nameof(Utf8JsonWriter.WriteBase64StringValue), value).Terminate(); + => Invoke(nameof(Utf8JsonWriter.WriteBase64StringValue), value).Terminate(); public MethodBodyStatement WriteBinaryData(ValueExpression value) => new IfElsePreprocessorStatement @@ -53,14 +53,14 @@ public MethodBodyStatement WriteBinaryData(ValueExpression value) ); public MethodBodyStatement Flush() - => Untyped.Invoke(nameof(Utf8JsonWriter.Flush), Array.Empty(), false).Terminate(); + => Invoke(nameof(Utf8JsonWriter.Flush), Array.Empty()).Terminate(); public ValueExpression FlushAsync(ValueExpression? cancellationToken = null) { var arguments = cancellationToken is null ? Array.Empty() : [cancellationToken]; - return Untyped.Invoke(nameof(Utf8JsonWriter.FlushAsync), arguments, true); + return Expression.Invoke(nameof(Utf8JsonWriter.FlushAsync), arguments, true); } internal MethodBodyStatement WriteObjectValue(TypedSnippet value, ValueExpression? options = null) diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/test/Mocks/MockClientTypeProvider.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/test/Mocks/MockClientTypeProvider.cs new file mode 100644 index 0000000000..908a644a22 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/test/Mocks/MockClientTypeProvider.cs @@ -0,0 +1,15 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using Microsoft.Generator.CSharp.ClientModel.Providers; +using Microsoft.Generator.CSharp.Input; + +namespace Microsoft.Generator.CSharp.ClientModel.Tests +{ + internal class MockClientTypeProvider : ClientProvider + { + public MockClientTypeProvider() : base(new InputClient("TestClient", "TestClient description", [], true, [], null)) + { + } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/test/Mocks/MockTypeFactory.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/test/Mocks/MockTypeFactory.cs index 3c94e672eb..97c48117fb 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/test/Mocks/MockTypeFactory.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/test/Mocks/MockTypeFactory.cs @@ -4,13 +4,14 @@ using System; using System.Collections.Generic; using Microsoft.Generator.CSharp.Input; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Providers; namespace Microsoft.Generator.CSharp.ClientModel.Tests { internal class MockTypeFactory : ScmTypeFactory { - public override MethodProviderCollection? CreateMethodProviders(InputOperation operation, TypeProvider enclosingType) + public override MethodProviderCollection CreateMethodProviders(InputOperation operation, TypeProvider enclosingType) { throw new NotImplementedException(); } @@ -27,10 +28,6 @@ protected override CSharpType CreateCSharpTypeCore(InputType input) public override CSharpType MatchConditionsType() => typeof(int); - public override CSharpType PageResponseType() => typeof(int); - - public override CSharpType RequestConditionsType() => typeof(int); - public override CSharpType TokenCredentialType() => typeof(int); public override CSharpType ListInitializationType => new CSharpType(typeof(List<>), arguments: typeof(int)); public override CSharpType DictionaryInitializationType => new CSharpType(typeof(Dictionary<,>), arguments: [typeof(string), typeof(int)]); diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/test/Mocks/MockTypeProvider.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/test/Mocks/MockTypeProvider.cs new file mode 100644 index 0000000000..93fdd332fa --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/test/Mocks/MockTypeProvider.cs @@ -0,0 +1,14 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using Microsoft.Generator.CSharp.Providers; + +namespace Microsoft.Generator.CSharp.ClientModel.Tests +{ + internal class MockTypeProvider : TypeProvider + { + public override string RelativeFilePath => throw new NotImplementedException(); + public override string Name => throw new NotImplementedException(); + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/test/OutputTypes/ScmKnownParametersTests.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/test/OutputTypes/ScmKnownParametersTests.cs index 584d64e737..6de5f8874b 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/test/OutputTypes/ScmKnownParametersTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/test/OutputTypes/ScmKnownParametersTests.cs @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +using Microsoft.Generator.CSharp.Primitives; using Moq; using NUnit.Framework; @@ -34,14 +35,5 @@ public void TestMatchConditionsParameter() Assert.IsNotNull(result.Type); Assert.IsTrue(result.Type.Equals(new CSharpType(typeof(int)))); } - - [TestCase] - public void TestRequestConditionsParameter() - { - var result = ScmKnownParameters.RequestConditionsParameter; - Assert.IsNotNull(result); - Assert.IsNotNull(result.Type); - Assert.IsTrue(result.Type.Equals(new CSharpType(typeof(int)))); - } } } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/test/Providers/ClientUriBuilderTests.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/test/Providers/ClientUriBuilderTests.cs new file mode 100644 index 0000000000..b3ca5b3daf --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/test/Providers/ClientUriBuilderTests.cs @@ -0,0 +1,461 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using NUnit.Framework; +using UnbrandedTypeSpec; + +namespace Microsoft.Generator.CSharp.ClientModel.Tests.Providers +{ + public class ClientUriBuilderTests + { + [TestCase("http://localhost", null, "http://localhost/")] + [TestCase("http://localhost/", null, "http://localhost/")] + [TestCase("http://localhost:12345", null, "http://localhost:12345/")] + [TestCase("http://localhost:12345/", null, "http://localhost:12345/")] + [TestCase("http://localhost/with", null, "http://localhost/with")] + [TestCase("http://localhost/with/", null, "http://localhost/with/")] + [TestCase("http://localhost:12345/with", null, "http://localhost:12345/with")] + [TestCase("http://localhost:12345/with/", null, "http://localhost:12345/with/")] + [TestCase("http://localhost", "path", "http://localhost/path")] + [TestCase("http://localhost/", "path", "http://localhost/path")] + [TestCase("http://localhost:12345", "path", "http://localhost:12345/path")] + [TestCase("http://localhost:12345/", "path", "http://localhost:12345/path")] + [TestCase("http://localhost/with", "path", "http://localhost/withpath")] + [TestCase("http://localhost/with/", "path", "http://localhost/with/path")] + [TestCase("http://localhost:12345/with", "path", "http://localhost:12345/withpath")] + [TestCase("http://localhost:12345/with/", "path", "http://localhost:12345/with/path")] + [TestCase("http://localhost", "/path", "http://localhost/path")] + [TestCase("http://localhost/", "/path", "http://localhost/path")] + [TestCase("http://localhost:12345", "/path", "http://localhost:12345/path")] + [TestCase("http://localhost:12345/", "/path", "http://localhost:12345/path")] + [TestCase("http://localhost/with", "/path", "http://localhost/with/path")] + [TestCase("http://localhost/with/", "/path", "http://localhost/with/path")] + [TestCase("http://localhost:12345/with", "/path", "http://localhost:12345/with/path")] + [TestCase("http://localhost:12345/with/", "/path", "http://localhost:12345/with/path")] + [TestCase("http://localhost", "/path/", "http://localhost/path/")] + [TestCase("http://localhost/", "/path/", "http://localhost/path/")] + [TestCase("http://localhost:12345", "/path/", "http://localhost:12345/path/")] + [TestCase("http://localhost:12345/", "/path/", "http://localhost:12345/path/")] + [TestCase("http://localhost/with", "/path/", "http://localhost/with/path/")] + [TestCase("http://localhost/with/", "/path/", "http://localhost/with/path/")] + [TestCase("http://localhost:12345/with", "/path/", "http://localhost:12345/with/path/")] + [TestCase("http://localhost:12345/with/", "/path/", "http://localhost:12345/with/path/")] + public void ResetThenAppendPath(string endpoint, string pathPart, string expected) + { + var builder = new ClientUriBuilder(); + builder.Reset(new Uri(endpoint)); + + if (pathPart != null) + { + builder.AppendPath(pathPart, false); + } + + Assert.AreEqual(expected, builder.ToUri().ToString()); + } + + [TestCase("http://localhost", "one|1", "http://localhost/?one=1")] + [TestCase("http://localhost:12345", "one|1", "http://localhost:12345/?one=1")] + [TestCase("http://localhost/some", "one|1", "http://localhost/some?one=1")] + [TestCase("http://localhost:12345/some", "one|1", "http://localhost:12345/some?one=1")] + [TestCase("http://localhost/", "one|1", "http://localhost/?one=1")] + [TestCase("http://localhost:12345/", "one|1", "http://localhost:12345/?one=1")] + [TestCase("http://localhost/some/", "one|1", "http://localhost/some/?one=1")] + [TestCase("http://localhost:12345/some/", "one|1", "http://localhost:12345/some/?one=1")] + [TestCase("http://localhost", "one|1|two|2", "http://localhost/?one=1&two=2")] + [TestCase("http://localhost:12345", "one|1|two|2", "http://localhost:12345/?one=1&two=2")] + [TestCase("http://localhost/some", "one|1|two|2", "http://localhost/some?one=1&two=2")] + [TestCase("http://localhost:12345/some", "one|1|two|2", "http://localhost:12345/some?one=1&two=2")] + [TestCase("http://localhost/", "one|1|two|2", "http://localhost/?one=1&two=2")] + [TestCase("http://localhost:12345/", "one|1|two|2", "http://localhost:12345/?one=1&two=2")] + [TestCase("http://localhost/some/", "one|1|two|2", "http://localhost/some/?one=1&two=2")] + [TestCase("http://localhost:12345/some/", "one|1|two|2", "http://localhost:12345/some/?one=1&two=2")] + public void ResetThenAppendQuery(string endpoint, string queryPart, string expected) + { + var builder = new ClientUriBuilder(); + builder.Reset(new Uri(endpoint)); + + if (queryPart != null) + { + var parts = queryPart.Split('|'); + for (int i = 0; i < parts.Length; i += 2) + { + builder.AppendQuery(parts[i], parts[i + 1], false); + } + } + + Assert.AreEqual(expected, builder.ToUri().ToString()); + } + + [TestCase("http://localhost", "some", "one|1", "http://localhost/some?one=1")] + [TestCase("http://localhost:12345", "some", "one|1", "http://localhost:12345/some?one=1")] + [TestCase("http://localhost/", "some/", "one|1", "http://localhost/some/?one=1")] + [TestCase("http://localhost:12345", "some/", "one|1", "http://localhost:12345/some/?one=1")] + [TestCase("http://localhost/", "/some", "one|1", "http://localhost/some?one=1")] + [TestCase("http://localhost:12345", "/some", "one|1", "http://localhost:12345/some?one=1")] + [TestCase("http://localhost/", "/some/", "one|1", "http://localhost/some/?one=1")] + [TestCase("http://localhost:12345", "/some/", "one|1", "http://localhost:12345/some/?one=1")] + [TestCase("http://localhost", "/some", "one|1|two|2", "http://localhost/some?one=1&two=2")] + [TestCase("http://localhost:12345", "/some", "one|1|two|2", "http://localhost:12345/some?one=1&two=2")] + [TestCase("http://localhost", "some/", "one|1|two|2", "http://localhost/some/?one=1&two=2")] + [TestCase("http://localhost:12345", "some/", "one|1|two|2", "http://localhost:12345/some/?one=1&two=2")] + [TestCase("http://localhost", "/some/", "one|1|two|2", "http://localhost/some/?one=1&two=2")] + [TestCase("http://localhost:12345", "/some/", "one|1|two|2", "http://localhost:12345/some/?one=1&two=2")] + public void ResetThenAppendPathThenAppendQuery(string endpoint, string pathPart, string queryPart, string expected) + { + var builder = new ClientUriBuilder(); + builder.Reset(new Uri(endpoint)); + + if (pathPart != null) + { + builder.AppendPath(pathPart, false); + } + + if (queryPart != null) + { + var parts = queryPart.Split('|'); + for (int i = 0; i < parts.Length; i += 2) + { + builder.AppendQuery(parts[i], parts[i + 1], false); + } + } + + Assert.AreEqual(expected, builder.ToUri().ToString()); + } + + [TestCase("http://localhost", "some", "one|1", "http://localhost/some?one=1")] + [TestCase("http://localhost:12345", "some", "one|1", "http://localhost:12345/some?one=1")] + [TestCase("http://localhost/", "some/", "one|1", "http://localhost/some/?one=1")] + [TestCase("http://localhost:12345", "some/", "one|1", "http://localhost:12345/some/?one=1")] + [TestCase("http://localhost/", "/some", "one|1", "http://localhost/some?one=1")] + [TestCase("http://localhost:12345", "/some", "one|1", "http://localhost:12345/some?one=1")] + [TestCase("http://localhost/", "/some/", "one|1", "http://localhost/some/?one=1")] + [TestCase("http://localhost:12345", "/some/", "one|1", "http://localhost:12345/some/?one=1")] + [TestCase("http://localhost", "/some", "one|1|two|2", "http://localhost/some?one=1&two=2")] + [TestCase("http://localhost:12345", "/some", "one|1|two|2", "http://localhost:12345/some?one=1&two=2")] + [TestCase("http://localhost", "some/", "one|1|two|2", "http://localhost/some/?one=1&two=2")] + [TestCase("http://localhost:12345", "some/", "one|1|two|2", "http://localhost:12345/some/?one=1&two=2")] + [TestCase("http://localhost", "/some/", "one|1|two|2", "http://localhost/some/?one=1&two=2")] + [TestCase("http://localhost:12345", "/some/", "one|1|two|2", "http://localhost:12345/some/?one=1&two=2")] + public void ResetThenAppendQueryThenAppendPath(string endpoint, string pathPart, string queryPart, string expected) + { + var builder = new ClientUriBuilder(); + builder.Reset(new Uri(endpoint)); + + if (queryPart != null) + { + var parts = queryPart.Split('|'); + for (int i = 0; i < parts.Length; i += 2) + { + builder.AppendQuery(parts[i], parts[i + 1], false); + } + } + + if (pathPart != null) + { + builder.AppendPath(pathPart, false); + } + + Assert.AreEqual(expected, builder.ToUri().ToString()); + } + + [TestCase("http://localhost", true, true, "http://localhost/true")] + [TestCase("http://localhost", true, false, "http://localhost/true")] + [TestCase("http://localhost", false, true, "http://localhost/false")] + [TestCase("http://localhost", false, false, "http://localhost/false")] + public void AppendPath_Bool(string endpoint, bool value, bool escape, string expected) + { + var builder = new ClientUriBuilder(); + builder.Reset(new Uri(endpoint)); + + builder.AppendPath(value, escape); + + Assert.AreEqual(expected, builder.ToUri().ToString()); + } + + [TestCase("http://localhost", 3.14f, true, "http://localhost/3.14")] + [TestCase("http://localhost", 3.14f, false, "http://localhost/3.14")] + [TestCase("http://localhost", -3.14f, true, "http://localhost/-3.14")] + [TestCase("http://localhost", -3.14f, false, "http://localhost/-3.14")] + public void AppendPath_Float(string endpoint, float value, bool escape, string expected) + { + var builder = new ClientUriBuilder(); + builder.Reset(new Uri(endpoint)); + + builder.AppendPath(value, escape); + + Assert.AreEqual(expected, builder.ToUri().ToString()); + } + + [TestCase("http://localhost", 3.14, true, "http://localhost/3.14")] + [TestCase("http://localhost", 3.14, false, "http://localhost/3.14")] + [TestCase("http://localhost", -3.14, true, "http://localhost/-3.14")] + [TestCase("http://localhost", -3.14, false, "http://localhost/-3.14")] + public void AppendPath_Double(string endpoint, double value, bool escape, string expected) + { + var builder = new ClientUriBuilder(); + builder.Reset(new Uri(endpoint)); + + builder.AppendPath(value, escape); + + Assert.AreEqual(expected, builder.ToUri().ToString()); + } + + [TestCase("http://localhost", 299792458, true, "http://localhost/299792458")] + [TestCase("http://localhost", 299792458, false, "http://localhost/299792458")] + [TestCase("http://localhost", -299792458, true, "http://localhost/-299792458")] + [TestCase("http://localhost", -299792458, false, "http://localhost/-299792458")] + public void AppendPath_Int(string endpoint, int value, bool escape, string expected) + { + var builder = new ClientUriBuilder(); + builder.Reset(new Uri(endpoint)); + + builder.AppendPath(value, escape); + + Assert.AreEqual(expected, builder.ToUri().ToString()); + } + + [TestCase("http://localhost", 299792458000000, true, "http://localhost/299792458000000")] + [TestCase("http://localhost", 299792458000000, false, "http://localhost/299792458000000")] + [TestCase("http://localhost", -299792458000000, true, "http://localhost/-299792458000000")] + [TestCase("http://localhost", -299792458000000, false, "http://localhost/-299792458000000")] + public void AppendPath_Long(string endpoint, long value, bool escape, string expected) + { + var builder = new ClientUriBuilder(); + builder.Reset(new Uri(endpoint)); + + builder.AppendPath(value, escape); + + Assert.AreEqual(expected, builder.ToUri().ToString()); + } + + [TestCase("http://localhost", new byte[] { 104, 101, 108, 108, 111 }, "U", true, "http://localhost/aGVsbG8")] + [TestCase("http://localhost", new byte[] { 104, 101, 108, 108, 111 }, "D", true, "http://localhost/aGVsbG8%3D")] + [TestCase("http://localhost", new byte[] { 104, 101, 108, 108, 111 }, "U", false, "http://localhost/aGVsbG8")] + [TestCase("http://localhost", new byte[] { 104, 101, 108, 108, 111 }, "D", false, "http://localhost/aGVsbG8=")] + public void AppendPath_ByteArray(string endpoint, byte[] value, string format, bool escape, string expected) + { + var builder = new ClientUriBuilder(); + builder.Reset(new Uri(endpoint)); + + builder.AppendPath(value, format, escape); + + Assert.AreEqual(expected, builder.ToUri().ToString()); + } + + [TestCase("http://localhost", new[] { "hello", "world" }, true, "http://localhost/hello%2Cworld")] + [TestCase("http://localhost", new[] { "hello", "world" }, false, "http://localhost/hello,world")] + public void AppendPath_StringArray(string endpoint, IEnumerable value, bool escape, string expected) + { + var builder = new ClientUriBuilder(); + builder.Reset(new Uri(endpoint)); + + builder.AppendPath(value, escape); + + Assert.AreEqual(expected, builder.ToUri().ToString()); + } + + [TestCase("http://localhost", "6/30/1905 1:14:00 PM +00:00", "D", true, "http://localhost/1905-06-30")] + [TestCase("http://localhost", "6/30/1905 1:14:00 PM +00:00", "U", true, "http://localhost/-2035622760")] + [TestCase("http://localhost", "6/30/1905 1:14:00 PM +00:00", "O", true, "http://localhost/1905-06-30T13%3A14%3A00.0000000Z")] + [TestCase("http://localhost", "6/30/1905 1:14:00 PM +00:00", "o", true, "http://localhost/1905-06-30T13%3A14%3A00.0000000Z")] + [TestCase("http://localhost", "6/30/1905 1:14:00 PM +00:00", "R", true, "http://localhost/Fri%2C 30 Jun 1905 13%3A14%3A00 GMT")] // TODO -- why spaces are not escaped? + [TestCase("http://localhost", "6/30/1905 1:14:00 PM +00:00", "D", false, "http://localhost/1905-06-30")] + [TestCase("http://localhost", "6/30/1905 1:14:00 PM +00:00", "U", false, "http://localhost/-2035622760")] + [TestCase("http://localhost", "6/30/1905 1:14:00 PM +00:00", "O", false, "http://localhost/1905-06-30T13:14:00.0000000Z")] + [TestCase("http://localhost", "6/30/1905 1:14:00 PM +00:00", "o", false, "http://localhost/1905-06-30T13:14:00.0000000Z")] + [TestCase("http://localhost", "6/30/1905 1:14:00 PM +00:00", "R", false, "http://localhost/Fri, 30 Jun 1905 13:14:00 GMT")] + public void AppendPath_DateTimeOffset(string endpoint, string value, string format, bool escape, string expected) + { + var builder = new ClientUriBuilder(); + builder.Reset(new Uri(endpoint)); + + var dateTimeOffset = DateTimeOffset.Parse(value); + builder.AppendPath(dateTimeOffset, format, escape); + + Assert.AreEqual(expected, builder.ToUri().ToString()); + } + + [TestCase("http://localhost", "02:15:00", "P", true, "http://localhost/PT2H15M")] + [TestCase("http://localhost", "02:15:00", "", true, "http://localhost/02%3A15%3A00")] + [TestCase("http://localhost", "02:15:00", null, true, "http://localhost/PT2H15M")] + [TestCase("http://localhost", "02:15:00", "P", false, "http://localhost/PT2H15M")] + [TestCase("http://localhost", "02:15:00", "", false, "http://localhost/02:15:00")] + [TestCase("http://localhost", "02:15:00", null, false, "http://localhost/PT2H15M")] + public void AppendPath_TimeSpan(string endpoint, string value, string format, bool escape, string expected) + { + var builder = new ClientUriBuilder(); + builder.Reset(new Uri(endpoint)); + + var timeSpan = TimeSpan.Parse(value); + builder.AppendPath(timeSpan, format, escape); + + Assert.AreEqual(expected, builder.ToUri().ToString()); + } + + [TestCase("http://localhost", "3f2504e0-4f89-11d3-9a0c-0305e82c3301", true, "http://localhost/3f2504e0-4f89-11d3-9a0c-0305e82c3301")] + [TestCase("http://localhost", "3f2504e0-4f89-11d3-9a0c-0305e82c3301", false, "http://localhost/3f2504e0-4f89-11d3-9a0c-0305e82c3301")] + public void AppendPath_Guid(string endpoint, string value, bool escape, string expected) + { + var builder = new ClientUriBuilder(); + builder.Reset(new Uri(endpoint)); + + var guid = Guid.Parse(value); + builder.AppendPath(guid, escape); + + Assert.AreEqual(expected, builder.ToUri().ToString()); + } + + [TestCase("http://localhost", true, true, "http://localhost/?query=true")] + [TestCase("http://localhost", true, false, "http://localhost/?query=true")] + [TestCase("http://localhost", false, true, "http://localhost/?query=false")] + [TestCase("http://localhost", false, false, "http://localhost/?query=false")] + public void AppendQuery_Bool(string endpoint, bool value, bool escape, string expected) + { + var builder = new ClientUriBuilder(); + builder.Reset(new Uri(endpoint)); + + builder.AppendQuery("query", value, escape); + + Assert.AreEqual(expected, builder.ToUri().ToString()); + } + + [TestCase("http://localhost", 3.14f, true, "http://localhost/?query=3.14")] + [TestCase("http://localhost", 3.14f, false, "http://localhost/?query=3.14")] + [TestCase("http://localhost", -3.14f, true, "http://localhost/?query=-3.14")] + [TestCase("http://localhost", -3.14f, false, "http://localhost/?query=-3.14")] + public void AppendQuery_Float(string endpoint, float value, bool escape, string expected) + { + var builder = new ClientUriBuilder(); + builder.Reset(new Uri(endpoint)); + + builder.AppendQuery("query", value, escape); + + Assert.AreEqual(expected, builder.ToUri().ToString()); + } + + [TestCase("http://localhost", 3.14, true, "http://localhost/?query=3.14")] + [TestCase("http://localhost", 3.14, false, "http://localhost/?query=3.14")] + [TestCase("http://localhost", -3.14, true, "http://localhost/?query=-3.14")] + [TestCase("http://localhost", -3.14, false, "http://localhost/?query=-3.14")] + public void AppendQuery_Double(string endpoint, double value, bool escape, string expected) + { + var builder = new ClientUriBuilder(); + builder.Reset(new Uri(endpoint)); + + builder.AppendQuery("query", value, escape); + + Assert.AreEqual(expected, builder.ToUri().ToString()); + } + + [TestCase("http://localhost", 299792458, true, "http://localhost/?query=299792458")] + [TestCase("http://localhost", 299792458, false, "http://localhost/?query=299792458")] + [TestCase("http://localhost", -299792458, true, "http://localhost/?query=-299792458")] + [TestCase("http://localhost", -299792458, false, "http://localhost/?query=-299792458")] + public void AppendQuery_Int(string endpoint, int value, bool escape, string expected) + { + var builder = new ClientUriBuilder(); + builder.Reset(new Uri(endpoint)); + + builder.AppendQuery("query", value, escape); + + Assert.AreEqual(expected, builder.ToUri().ToString()); + } + + [TestCase("http://localhost", 299792458000000, true, "http://localhost/?query=299792458000000")] + [TestCase("http://localhost", 299792458000000, false, "http://localhost/?query=299792458000000")] + [TestCase("http://localhost", -299792458000000, true, "http://localhost/?query=-299792458000000")] + [TestCase("http://localhost", -299792458000000, false, "http://localhost/?query=-299792458000000")] + public void AppendQuery_Long(string endpoint, long value, bool escape, string expected) + { + var builder = new ClientUriBuilder(); + builder.Reset(new Uri(endpoint)); + + builder.AppendQuery("query", value, escape); + + Assert.AreEqual(expected, builder.ToUri().ToString()); + } + + [TestCase("http://localhost", new byte[] { 104, 101, 108, 108, 111 }, "U", true, "http://localhost/?query=aGVsbG8")] + [TestCase("http://localhost", new byte[] { 104, 101, 108, 108, 111 }, "D", true, "http://localhost/?query=aGVsbG8%3D")] + [TestCase("http://localhost", new byte[] { 104, 101, 108, 108, 111 }, "U", false, "http://localhost/?query=aGVsbG8")] + [TestCase("http://localhost", new byte[] { 104, 101, 108, 108, 111 }, "D", false, "http://localhost/?query=aGVsbG8=")] + public void AppendQuery_ByteArray(string endpoint, byte[] value, string format, bool escape, string expected) + { + var builder = new ClientUriBuilder(); + builder.Reset(new Uri(endpoint)); + + builder.AppendQuery("query", value, format, escape); + + Assert.AreEqual(expected, builder.ToUri().ToString()); + } + + [TestCase("http://localhost", "6/30/1905 1:14:00 PM +00:00", "D", true, "http://localhost/?query=1905-06-30")] + [TestCase("http://localhost", "6/30/1905 1:14:00 PM +00:00", "U", true, "http://localhost/?query=-2035622760")] + [TestCase("http://localhost", "6/30/1905 1:14:00 PM +00:00", "O", true, "http://localhost/?query=1905-06-30T13%3A14%3A00.0000000Z")] + [TestCase("http://localhost", "6/30/1905 1:14:00 PM +00:00", "o", true, "http://localhost/?query=1905-06-30T13%3A14%3A00.0000000Z")] + [TestCase("http://localhost", "6/30/1905 1:14:00 PM +00:00", "R", true, "http://localhost/?query=Fri%2C 30 Jun 1905 13%3A14%3A00 GMT")] // TODO -- why spaces are not escaped? + [TestCase("http://localhost", "6/30/1905 1:14:00 PM +00:00", "D", false, "http://localhost/?query=1905-06-30")] + [TestCase("http://localhost", "6/30/1905 1:14:00 PM +00:00", "U", false, "http://localhost/?query=-2035622760")] + [TestCase("http://localhost", "6/30/1905 1:14:00 PM +00:00", "O", false, "http://localhost/?query=1905-06-30T13:14:00.0000000Z")] + [TestCase("http://localhost", "6/30/1905 1:14:00 PM +00:00", "o", false, "http://localhost/?query=1905-06-30T13:14:00.0000000Z")] + [TestCase("http://localhost", "6/30/1905 1:14:00 PM +00:00", "R", false, "http://localhost/?query=Fri, 30 Jun 1905 13:14:00 GMT")] + public void AppendQuery_DateTimeOffset(string endpoint, string value, string format, bool escape, string expected) + { + var builder = new ClientUriBuilder(); + builder.Reset(new Uri(endpoint)); + + var dateTimeOffset = DateTimeOffset.Parse(value); + builder.AppendQuery("query", dateTimeOffset, format, escape); + + Assert.AreEqual(expected, builder.ToUri().ToString()); + } + + [TestCase("http://localhost", "02:15:00", "P", true, "http://localhost/?query=PT2H15M")] + [TestCase("http://localhost", "02:15:00", "", true, "http://localhost/?query=02%3A15%3A00")] + [TestCase("http://localhost", "02:15:00", null, true, "http://localhost/?query=PT2H15M")] + [TestCase("http://localhost", "02:15:00", "P", false, "http://localhost/?query=PT2H15M")] + [TestCase("http://localhost", "02:15:00", "", false, "http://localhost/?query=02:15:00")] + [TestCase("http://localhost", "02:15:00", null, false, "http://localhost/?query=PT2H15M")] + public void AppendQuery_TimeSpan(string endpoint, string value, string format, bool escape, string expected) + { + var builder = new ClientUriBuilder(); + builder.Reset(new Uri(endpoint)); + + var timeSpan = TimeSpan.Parse(value); + builder.AppendQuery("query", timeSpan, format, escape); + + Assert.AreEqual(expected, builder.ToUri().ToString()); + } + + [TestCase("http://localhost", "3f2504e0-4f89-11d3-9a0c-0305e82c3301", true, "http://localhost/?query=3f2504e0-4f89-11d3-9a0c-0305e82c3301")] + [TestCase("http://localhost", "3f2504e0-4f89-11d3-9a0c-0305e82c3301", false, "http://localhost/?query=3f2504e0-4f89-11d3-9a0c-0305e82c3301")] + public void AppendQuery_Guid(string endpoint, string value, bool escape, string expected) + { + var builder = new ClientUriBuilder(); + builder.Reset(new Uri(endpoint)); + + var guid = Guid.Parse(value); + builder.AppendQuery("query", guid, escape); + + Assert.AreEqual(expected, builder.ToUri().ToString()); + } + + [TestCase("http://localhost", new[] { "hello", "world" }, ",", true, "http://localhost/?query=hello%2Cworld")] + [TestCase("http://localhost", new[] { "hello", "world" }, ";", true, "http://localhost/?query=hello%3Bworld")] + [TestCase("http://localhost", new[] { "hello", "world" }, "|", true, "http://localhost/?query=hello|world")] + [TestCase("http://localhost", new[] { "hello", "world" }, ",", false, "http://localhost/?query=hello,world")] + [TestCase("http://localhost", new[] { "hello", "world" }, ";", false, "http://localhost/?query=hello;world")] + [TestCase("http://localhost", new[] { "hello", "world" }, "|", false, "http://localhost/?query=hello|world")] + public void AppendQueryDelimited(string endpoint, IEnumerable value, string delimiter, bool escape, string expected) + { + var builder = new ClientUriBuilder(); + builder.Reset(new Uri(endpoint)); + + builder.AppendQueryDelimited("query", value, delimiter, escape); + + Assert.AreEqual(expected, builder.ToUri().ToString()); + } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/test/Providers/MrwSerializationTypeProviderTests.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/test/Providers/MrwSerializationTypeProviderTests.cs index 59c95adfd1..a9e9d204dc 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/test/Providers/MrwSerializationTypeProviderTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/test/Providers/MrwSerializationTypeProviderTests.cs @@ -8,13 +8,14 @@ using System.Linq; using System.Reflection; using Microsoft.CodeAnalysis; +using Microsoft.Generator.CSharp.ClientModel.Providers; +using Microsoft.Generator.CSharp.Expressions; using Microsoft.Generator.CSharp.Input; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Providers; using Moq; using Moq.Protected; using NUnit.Framework; -using Microsoft.Generator.CSharp.ClientModel.Providers; -using Microsoft.Generator.CSharp.Expressions; namespace Microsoft.Generator.CSharp.ClientModel.Tests.Providers { @@ -103,7 +104,7 @@ public void TestBuildJsonModelWriteCoreMethod() // This test validates the json model serialization write method object declaration is built correctly [Test] - public void BuildJsonModelWriteMethodObjectDeclaration() + public void TestBuildJsonModelWriteMethodObjectDeclaration() { var inputModel = new InputModelType("mockInputModel", "mockNamespace", "public", null, null, InputModelTypeUsage.RoundTrip, Array.Empty(), null, new List(), null, null, new Dictionary(), null, true); var mockModelTypeProvider = new ModelProvider(inputModel); @@ -157,9 +158,9 @@ public void TestBuildJsonModelCreateMethod() Assert.AreEqual(expectedReturnType, methodSignature?.ReturnType); } - // This test validates the I model serialization write method is built correctly + // This test validates the PersistableModel serialization write method is built correctly [Test] - public void TestBuildPersistableModelWriteMethodMethod() + public void TestBuildPersistableModelWriteMethod() { var inputModel = new InputModelType("mockInputModel", "mockNamespace", "public", null, null, InputModelTypeUsage.RoundTrip, Array.Empty(), null, new List(), null, null, new Dictionary(), null, false); var mockModelTypeProvider = new ModelProvider(inputModel); @@ -178,6 +179,77 @@ public void TestBuildPersistableModelWriteMethodMethod() Assert.AreEqual(expectedReturnType, methodSignature?.ReturnType); } + // This test validates the persistable model serialization write core method is built correctly + [Test] + public void TestBuildPersistableModelWriteCoreMethod() + { + var inputModel = new InputModelType("mockInputModel", "mockNamespace", "public", null, null, InputModelTypeUsage.RoundTrip, Array.Empty(), null, new List(), null, null, new Dictionary(), null, false); + var mockModelTypeProvider = new ModelProvider(inputModel); + var jsonMrwSerializationTypeProvider = new MrwSerializationTypeProvider(mockModelTypeProvider, inputModel); + var method = jsonMrwSerializationTypeProvider.BuildPersistableModelWriteCoreMethod(); + + Assert.IsNotNull(method); + + var methodSignature = method?.Signature as MethodSignature; + Assert.IsNotNull(methodSignature); + Assert.AreEqual("PersistableModelWriteCore", methodSignature?.Name); + Assert.IsNull(methodSignature?.ExplicitInterface); + Assert.AreEqual(1, methodSignature?.Parameters.Count); + Assert.AreEqual(new CSharpType(typeof(BinaryData)), methodSignature?.ReturnType); + + // Check method modifiers + var expectedModifiers = MethodSignatureModifiers.Protected; + if (mockModelTypeProvider.Inherits != null) + { + expectedModifiers |= MethodSignatureModifiers.Override; + } + else + { + expectedModifiers |= MethodSignatureModifiers.Virtual; + } + Assert.AreEqual(expectedModifiers, methodSignature?.Modifiers, "Method modifiers do not match the expected value."); + + + // Validate body + var methodBody = method?.BodyStatements; + Assert.IsNotNull(methodBody); + } + + // This test validates the PersistableModel serialization write method object declaration is built correctly + [Test] + public void TestBuildPersistableModelWriteMethodObjectDeclaration() + { + var inputModel = new InputModelType("mockInputModel", "mockNamespace", "public", null, null, InputModelTypeUsage.RoundTrip, Array.Empty(), null, new List(), null, null, new Dictionary(), null, true); + var mockModelTypeProvider = new ModelProvider(inputModel); + var jsonMrwSerializationTypeProvider = new MrwSerializationTypeProvider(mockModelTypeProvider, inputModel); + var method = jsonMrwSerializationTypeProvider.BuildPersistableModelWriteMethodObjectDeclaration(); + + Assert.IsNotNull(method); + + var methodSignature = method?.Signature as MethodSignature; + Assert.IsNotNull(methodSignature); + Assert.AreEqual("Write", methodSignature?.Name); + + var explicitInterface = new CSharpType(typeof(IPersistableModel)); + Assert.AreEqual(explicitInterface, methodSignature?.ExplicitInterface); + Assert.AreEqual(1, methodSignature?.Parameters.Count); + Assert.AreEqual(new CSharpType(typeof(BinaryData)), methodSignature?.ReturnType); + + // Check method modifiers + var expectedModifiers = MethodSignatureModifiers.None; + Assert.AreEqual(expectedModifiers, methodSignature?.Modifiers, "Method modifiers do not match the expected value."); + + + // Validate body + var methodBody = method?.BodyStatements; + Assert.IsNull(methodBody); + var bodyExpression = method?.BodyExpression as InvokeInstanceMethodExpression; + Assert.IsNotNull(bodyExpression); + Assert.AreEqual("Write", bodyExpression?.MethodName); + Assert.IsNotNull(bodyExpression?.InstanceReference); + Assert.AreEqual(1, bodyExpression?.Arguments.Count); + } + // This test validates the I model deserialization create method is built correctly [Test] public void TestBuildPersistableModelDeserializationMethod() @@ -199,7 +271,7 @@ public void TestBuildPersistableModelDeserializationMethod() Assert.AreEqual(expectedReturnType, methodSignature?.ReturnType); } - // This test validates the I model get format method is built correctly + // This test validates the persistable model get format method is built correctly [Test] public void TestBuildPersistableModelGetFormatMethod() { @@ -223,6 +295,41 @@ public void TestBuildPersistableModelGetFormatMethod() Assert.IsNotNull(methodBody); } + // This test validates the persistable model get format method object declaration is built correctly + [Test] + public void TestBuildPersistableModelGetFormatMethodObjectDeclaration() + { + var inputModel = new InputModelType("mockInputModel", "mockNamespace", "public", null, null, InputModelTypeUsage.RoundTrip, Array.Empty(), null, new List(), null, null, new Dictionary(), null, true); + var mockModelTypeProvider = new ModelProvider(inputModel); + var jsonMrwSerializationTypeProvider = new MrwSerializationTypeProvider(mockModelTypeProvider, inputModel); + var method = jsonMrwSerializationTypeProvider.BuildPersistableModelGetFormatFromOptionsObjectDeclaration(); + + Assert.IsNotNull(method); + + var expectedInterface = new CSharpType(typeof(IPersistableModel)); + var methodSignature = method?.Signature as MethodSignature; + Assert.IsNotNull(methodSignature); + Assert.AreEqual("GetFormatFromOptions", methodSignature?.Name); + Assert.AreEqual(expectedInterface, methodSignature?.ExplicitInterface); + Assert.AreEqual(1, methodSignature?.Parameters.Count); + var expectedReturnType = new CSharpType(typeof(string)); + Assert.AreEqual(expectedReturnType, methodSignature?.ReturnType); + + // Check method modifiers + var expectedModifiers = MethodSignatureModifiers.None; + Assert.AreEqual(expectedModifiers, methodSignature?.Modifiers, "Method modifiers do not match the expected value."); + + + // Validate body + var methodBody = method?.BodyStatements; + Assert.IsNull(methodBody); + var bodyExpression = method?.BodyExpression as InvokeInstanceMethodExpression; + Assert.IsNotNull(bodyExpression); + Assert.AreEqual("GetFormatFromOptions", bodyExpression?.MethodName); + Assert.IsNotNull(bodyExpression?.InstanceReference); + Assert.AreEqual(1, bodyExpression?.Arguments.Count); + } + [Test] public void TestBuildSerializationConstructor() { diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Providers/MethodProviderCollectionTests.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/test/Providers/ScmMethodProviderCollectionTests.cs similarity index 80% rename from packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Providers/MethodProviderCollectionTests.cs rename to packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/test/Providers/ScmMethodProviderCollectionTests.cs index f9699a67e1..62d0973425 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Providers/MethodProviderCollectionTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/test/Providers/ScmMethodProviderCollectionTests.cs @@ -5,18 +5,20 @@ using System.Collections.Generic; using System.IO; using System.Reflection; +using Microsoft.Generator.CSharp.ClientModel.Providers; using Microsoft.Generator.CSharp.Input; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Providers; using Moq; using Moq.Protected; using NUnit.Framework; -namespace Microsoft.Generator.CSharp.Tests.Providers +namespace Microsoft.Generator.CSharp.ClientModel.Tests.Providers { - internal class MethodProviderCollectionTests + internal class ScmMethodProviderCollectionTests { #pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. - private TypeFactory _typeFactory; + private ScmTypeFactory _typeFactory; #pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. private readonly string _mocksFolder = "Mocks"; private FieldInfo? _mockPlugin; @@ -25,16 +27,17 @@ internal class MethodProviderCollectionTests public void Setup() { var mockParameter = new ParameterProvider("mockParam", $"mock description", typeof(bool), null); - var mockTypeFactory = new Mock() { }; + var mockTypeFactory = new Mock() { }; mockTypeFactory.Protected().Setup("CreateCSharpTypeCore", ItExpr.IsAny()).Returns(new CSharpType(typeof(bool))); mockTypeFactory.Setup(t => t.CreateCSharpParam(It.IsAny())).Returns(mockParameter); _typeFactory = mockTypeFactory.Object; var configFilePath = Path.Combine(AppContext.BaseDirectory, _mocksFolder); // initialize the mock singleton instance of the plugin - _mockPlugin = typeof(CodeModelPlugin).GetField("_instance", BindingFlags.Static | BindingFlags.NonPublic); - var mockGeneratorContext = new Mock(Configuration.Load(configFilePath)); - var mockPluginInstance = new Mock(mockGeneratorContext.Object) { }; + _mockPlugin = typeof(ClientModelPlugin).GetField("_instance", BindingFlags.Static | BindingFlags.NonPublic); + var mockConfiguration = new Mock() { }; + var mockGeneratorContext = new Mock(mockConfiguration.Object); + var mockPluginInstance = new Mock(mockGeneratorContext.Object) { }; mockPluginInstance.SetupGet(p => p.TypeFactory).Returns(_typeFactory); _mockPlugin?.SetValue(null, mockPluginInstance.Object); @@ -50,9 +53,9 @@ public void Teardown() [TestCaseSource(nameof(DefaultCSharpMethodCollectionTestCases))] public void TestDefaultCSharpMethodCollection(InputOperation inputOperation) { - var methodCollection = MethodProviderCollection.DefaultCSharpMethodCollection(inputOperation, new MockTypeProvider()); + var methodCollection = new ScmMethodProviderCollection(inputOperation, new MockClientTypeProvider()); Assert.IsNotNull(methodCollection); - Assert.AreEqual(1, methodCollection?.Count); + Assert.AreEqual(5, methodCollection.Count); var method = methodCollection![0]; var signature = method.Signature; @@ -61,7 +64,7 @@ public void TestDefaultCSharpMethodCollection(InputOperation inputOperation) var parameters = signature.Parameters; Assert.IsNotNull(parameters); - Assert.AreEqual(inputOperation.Parameters.Count, parameters.Count); + Assert.AreEqual(inputOperation.Parameters.Count + 1, parameters.Count); } public static IEnumerable DefaultCSharpMethodCollectionTestCases @@ -93,5 +96,4 @@ public static IEnumerable DefaultCSharpMethodCollectionTestCases } } } - } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/test/TypedSnippets/TypedSnippetsTests.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/test/TypedSnippets/TypedSnippetsTests.cs index ca2bc3585b..3814a58862 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/test/TypedSnippets/TypedSnippetsTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/test/TypedSnippets/TypedSnippetsTests.cs @@ -9,6 +9,7 @@ using System.Text.Json; using Microsoft.Generator.CSharp.ClientModel.Snippets; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Providers; using Microsoft.Generator.CSharp.Snippets; using Moq; @@ -91,7 +92,7 @@ public void BinaryContentSnippet_InvokeStatic(bool withOptions) result = options != null ? BinaryContentSnippet.Create(arg, options) : BinaryContentSnippet.Create(arg); Assert.IsNotNull(result); - var untyped = result.Untyped as InvokeStaticMethodExpression; + var untyped = result.Expression as InvokeStaticMethodExpression; Assert.IsNotNull(untyped); Assert.AreEqual(new CSharpType(typeof(BinaryContent)), untyped?.MethodType); Assert.AreEqual(nameof(BinaryContent.Create), untyped?.MethodName); @@ -116,9 +117,9 @@ public void OptionalSnippet_IsCollectionDefined() var result = OptionalSnippet.IsCollectionDefined(member); Assert.IsNotNull(result); - var untyped = result.Untyped; - Assert.IsNotNull(untyped); - var invoke = untyped as InvokeStaticMethodExpression; + var expression = result.Expression; + Assert.IsNotNull(expression); + var invoke = expression as InvokeStaticMethodExpression; Assert.IsNotNull(invoke); Assert.AreEqual("IsCollectionDefined", invoke?.MethodName); } @@ -131,9 +132,9 @@ public void OptionalSnippet_IsDefined() var result = OptionalSnippet.IsDefined(member); Assert.IsNotNull(result); - var untyped = result.Untyped; - Assert.IsNotNull(untyped); - var invoke = untyped as InvokeStaticMethodExpression; + var expression = result.Expression; + Assert.IsNotNull(expression); + var invoke = expression as InvokeStaticMethodExpression; Assert.IsNotNull(invoke); Assert.AreEqual("IsDefined", invoke?.MethodName); } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.Input/src/InputTypes/InputEnumType.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.Input/src/InputTypes/InputEnumType.cs index 12cf40fcb7..dde598de30 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.Input/src/InputTypes/InputEnumType.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.Input/src/InputTypes/InputEnumType.cs @@ -1,18 +1,16 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -using System; using System.Collections.Generic; -using System.Linq; namespace Microsoft.Generator.CSharp.Input { public class InputEnumType : InputType { - public InputEnumType(string name, string? enumNamespace, string? accessibility, string? deprecated, string description, InputModelTypeUsage usage, InputPrimitiveType valueType, IReadOnlyList values, bool isExtensible) + public InputEnumType(string name, string crossLanguageDefinitionId, string? accessibility, string? deprecated, string description, InputModelTypeUsage usage, InputPrimitiveType valueType, IReadOnlyList values, bool isExtensible) : base(name) { - Namespace = enumNamespace; + CrossLanguageDefinitionId = crossLanguageDefinitionId; Accessibility = accessibility; Deprecated = deprecated; Description = description; @@ -22,7 +20,7 @@ public InputEnumType(string name, string? enumNamespace, string? accessibility, IsExtensible = isExtensible; } - public string? Namespace { get; } + public string CrossLanguageDefinitionId { get; } public string? Accessibility { get; } public string? Deprecated { get; } public string Description { get; } @@ -30,48 +28,5 @@ public InputEnumType(string name, string? enumNamespace, string? accessibility, public InputPrimitiveType ValueType { get; } public IReadOnlyList Values { get; } public bool IsExtensible { get; } - - public static IEqualityComparer IgnoreNullabilityComparer { get; } = new IgnoreNullabilityComparerImplementation(); - - private struct IgnoreNullabilityComparerImplementation : IEqualityComparer - { - public bool Equals(InputEnumType? x, InputEnumType? y) - { - if (x is null || y is null) - { - return ReferenceEquals(x, y); - } - - if (x.GetType() != y.GetType()) - { - return false; - } - - return x.Name == y.Name - && x.Namespace == y.Namespace - && x.Accessibility == y.Accessibility - && x.Description == y.Description - && x.ValueType.Equals(y.ValueType) - && x.Values.SequenceEqual(y.Values) - && x.IsExtensible == y.IsExtensible; - } - - public int GetHashCode(InputEnumType obj) - { - var hashCode = new HashCode(); - hashCode.Add(obj.Name); - hashCode.Add(obj.Namespace); - hashCode.Add(obj.Accessibility); - hashCode.Add(obj.Description); - hashCode.Add(obj.ValueType); - hashCode.Add(obj.IsExtensible); - foreach (var item in obj.Values) - { - hashCode.Add(item); - } - - return hashCode.ToHashCode(); - } - } } } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.Input/src/InputTypes/InputModelType.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.Input/src/InputTypes/InputModelType.cs index c16f37266c..e099d3332e 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.Input/src/InputTypes/InputModelType.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.Input/src/InputTypes/InputModelType.cs @@ -10,10 +10,10 @@ namespace Microsoft.Generator.CSharp.Input public class InputModelType : InputType { // TODO: Follow up issue https://github.com/microsoft/typespec/issues/3619. After https://github.com/Azure/typespec-azure/pull/966 is completed, update this type and remove the "modelAsStruct" parameter. - public InputModelType(string name, string? modelNamespace, string? access, string? deprecation, string? description, InputModelTypeUsage usage, IReadOnlyList properties, InputModelType? baseModel, IReadOnlyList derivedModels, string? discriminatorValue, InputModelProperty? discriminatorProperty, IReadOnlyDictionary discriminatedSubtypes, InputType? additionalProperties, bool modelAsStruct) + public InputModelType(string name, string crossLanguageDefinitionId, string? access, string? deprecation, string? description, InputModelTypeUsage usage, IReadOnlyList properties, InputModelType? baseModel, IReadOnlyList derivedModels, string? discriminatorValue, InputModelProperty? discriminatorProperty, IReadOnlyDictionary discriminatedSubtypes, InputType? additionalProperties, bool modelAsStruct) : base(name) { - Namespace = modelNamespace; + CrossLanguageDefinitionId = crossLanguageDefinitionId; Access = access; Deprecation = deprecation; Description = description; @@ -30,7 +30,7 @@ public InputModelType(string name, string? modelNamespace, string? access, strin ModelAsStruct = modelAsStruct; } - public string? Namespace { get; internal set; } + public string CrossLanguageDefinitionId { get; internal set; } public string? Access { get; internal set; } public string? Deprecation { get; internal set; } public string? Description { get; internal set; } @@ -40,7 +40,7 @@ public InputModelType(string name, string? modelNamespace, string? access, strin public InputModelType? BaseModel { get; internal set; } public IReadOnlyList DerivedModels { get; internal set; } public string? DiscriminatorValue { get; internal set; } - public InputModelProperty? DiscriminatorProperty{ get; internal set; } + public InputModelProperty? DiscriminatorProperty { get; internal set; } public IReadOnlyDictionary DiscriminatedSubtypes { get; internal set; } public InputType? AdditionalProperties { get; internal set; } public bool IsUnknownDiscriminatorModel { get; init; } @@ -72,7 +72,7 @@ private static IEnumerable EnumerateBase(InputModelType? model) private string GetDebuggerDisplay() { - return $"Model (Name: {Name}, {Namespace})"; + return $"Model (Name: {Name})"; } } } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.Input/src/InputTypes/Serialization/TypeSpecInputEnumTypeConverter.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.Input/src/InputTypes/Serialization/TypeSpecInputEnumTypeConverter.cs index b8a4010a14..4896f91d5f 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.Input/src/InputTypes/Serialization/TypeSpecInputEnumTypeConverter.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.Input/src/InputTypes/Serialization/TypeSpecInputEnumTypeConverter.cs @@ -26,7 +26,7 @@ public override void Write(Utf8JsonWriter writer, InputEnumType value, JsonSeria public static InputEnumType CreateEnumType(ref Utf8JsonReader reader, string? id, string? name, JsonSerializerOptions options, ReferenceResolver resolver) { var isFirstProperty = id == null && name == null; - string? ns = null; + string? crossLanguageDefinitionId = null; string? accessibility = null; string? deprecated = null; string? description = null; @@ -39,7 +39,7 @@ public static InputEnumType CreateEnumType(ref Utf8JsonReader reader, string? id { var isKnownProperty = reader.TryReadReferenceId(ref isFirstProperty, ref id) || reader.TryReadString(nameof(InputEnumType.Name), ref name) - || reader.TryReadString(nameof(InputEnumType.Namespace), ref ns) + || reader.TryReadString(nameof(InputEnumType.CrossLanguageDefinitionId), ref crossLanguageDefinitionId) || reader.TryReadString(nameof(InputEnumType.Accessibility), ref accessibility) || reader.TryReadString(nameof(InputEnumType.Deprecated), ref deprecated) || reader.TryReadString(nameof(InputEnumType.Description), ref description) @@ -76,7 +76,7 @@ public static InputEnumType CreateEnumType(ref Utf8JsonReader reader, string? id throw new JsonException("The ValueType of an EnumType must be a primitive type."); } - var enumType = new InputEnumType(name, ns, accessibility, deprecated, description!, usage, inputValueType, NormalizeValues(values, inputValueType), isExtendable); + var enumType = new InputEnumType(name, crossLanguageDefinitionId ?? string.Empty, accessibility, deprecated, description!, usage, inputValueType, NormalizeValues(values, inputValueType), isExtendable); if (id != null) { resolver.AddReference(id, enumType); diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.Input/src/InputTypes/Serialization/TypeSpecInputModelTypeConverter.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.Input/src/InputTypes/Serialization/TypeSpecInputModelTypeConverter.cs index a190642ffa..c236936692 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.Input/src/InputTypes/Serialization/TypeSpecInputModelTypeConverter.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.Input/src/InputTypes/Serialization/TypeSpecInputModelTypeConverter.cs @@ -33,10 +33,10 @@ public static InputModelType CreateModelType(ref Utf8JsonReader reader, string? id = id ?? throw new JsonException(); // create an empty model to resolve circular references - var model = new InputModelType(name!, null, null, null, null, InputModelTypeUsage.None, null!, null, null!, null, null, null!, null, false); + var model = new InputModelType(name!, null!, null, null, null, InputModelTypeUsage.None, null!, null, null!, null, null, null!, null, false); resolver.AddReference(id, model); - string? ns = null; + string? crossLanguageDefinitionId = null; string? accessibility = null; string? deprecated = null; string? description = null; @@ -53,7 +53,7 @@ public static InputModelType CreateModelType(ref Utf8JsonReader reader, string? while (reader.TokenType != JsonTokenType.EndObject) { var isKnownProperty = reader.TryReadString(nameof(InputModelType.Name), ref name) - || reader.TryReadString(nameof(InputModelType.Namespace), ref ns) + || reader.TryReadString(nameof(InputModelType.CrossLanguageDefinitionId), ref crossLanguageDefinitionId) || reader.TryReadString(nameof(InputModelType.Access), ref accessibility) || reader.TryReadString(nameof(InputModelType.Deprecation), ref deprecated) || reader.TryReadString(nameof(InputModelType.Description), ref description) @@ -73,7 +73,7 @@ public static InputModelType CreateModelType(ref Utf8JsonReader reader, string? } model.Name = name ?? throw new JsonException("InputModelType must have name"); - model.Namespace = ns; + model.CrossLanguageDefinitionId = crossLanguageDefinitionId ?? string.Empty; model.Access = accessibility; model.Deprecation = deprecated; model.Description = description; diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/perf/CodeWriterBenchmark.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/perf/CodeWriterBenchmark.cs index 57adc82726..696e9d6a6e 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/perf/CodeWriterBenchmark.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/perf/CodeWriterBenchmark.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using BenchmarkDotNet.Attributes; using Microsoft.Generator.CSharp.Input; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Providers; namespace Microsoft.Generator.CSharp.Perf @@ -19,7 +20,7 @@ public CodeWriterBenchmark() { new InputModelProperty("MyProperty", "myProperty", "The property of mine", new InputPrimitiveType(InputPrimitiveTypeKind.Int32), true, false, false) }; - var inputModel = new InputModelType("MyModel", null, null, null, "Test model", InputModelTypeUsage.RoundTrip, properties, null, Array.Empty(), null, null, new Dictionary(), null, false); + var inputModel = new InputModelType("MyModel", string.Empty, null, null, "Test model", InputModelTypeUsage.RoundTrip, properties, null, Array.Empty(), null, null, new Dictionary(), null, false); var modelProvider = new ModelProvider(inputModel); _writer = new TypeProviderWriter(modelProvider); } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/perf/MethodProviderBenchmark.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/perf/MethodProviderBenchmark.cs index a5cc25b37e..2b277a5078 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/perf/MethodProviderBenchmark.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/perf/MethodProviderBenchmark.cs @@ -3,10 +3,10 @@ using System.Collections.Generic; using BenchmarkDotNet.Attributes; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Providers; using Microsoft.Generator.CSharp.Snippets; using Microsoft.Generator.CSharp.Statements; -using static Microsoft.Generator.CSharp.Snippets.Snippet; namespace Microsoft.Generator.CSharp.Perf { @@ -111,7 +111,7 @@ private MethodBodyStatement GetStatementsWithHash(MethodBodyStatement bodyStatem index++; } } - statements[index] = EmptyLineStatement; + statements[index] = MethodBodyStatement.EmptyLine; index++; statements[index] = bodyStatements; @@ -132,7 +132,7 @@ private MethodBodyStatement GetStatementsAsSingleList(MethodBodyStatement origin } } if (wroteValidation) - statements.Add(EmptyLineStatement); + statements.Add(MethodBodyStatement.EmptyLine); statements.Add(original); return statements; @@ -150,7 +150,7 @@ private IEnumerable GetValidationStatementsWithYield() } } if (wroteValidation) - yield return EmptyLineStatement; + yield return MethodBodyStatement.EmptyLine; } private IReadOnlyList GetValidationStatements() @@ -166,7 +166,7 @@ private IReadOnlyList GetValidationStatements() } } if (wroteValidation) - statements.Add(EmptyLineStatement); + statements.Add(MethodBodyStatement.EmptyLine); return statements; } } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/CodeModelPlugin.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/CodeModelPlugin.cs index 8129127700..9a0df09183 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/CodeModelPlugin.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/CodeModelPlugin.cs @@ -6,8 +6,8 @@ using System.ComponentModel.Composition; using Microsoft.CodeAnalysis; using Microsoft.Generator.CSharp.Input; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Providers; -using Microsoft.Generator.CSharp.Snippets; namespace Microsoft.Generator.CSharp { diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Configuration.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Configuration.cs index f37483a489..284c495a39 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Configuration.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Configuration.cs @@ -15,6 +15,15 @@ public class Configuration { private const string ConfigurationFileName = "Configuration.json"; + // for mocking + protected Configuration() + { + OutputDirectory = null!; + AdditionalConfigOptions = null!; + LibraryName = null!; + Namespace = null!; + } + private Configuration( string outputPath, Dictionary additionalConfigOptions, diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/ArrayElementExpression.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/ArrayElementExpression.cs deleted file mode 100644 index 22e1c3e409..0000000000 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/ArrayElementExpression.cs +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -namespace Microsoft.Generator.CSharp.Expressions -{ - /// - /// Represents an array element expression. - /// - /// The array. - /// The index of the element in the array. - public sealed record ArrayElementExpression(ValueExpression Array, ValueExpression Index) : ValueExpression - { - internal override void Write(CodeWriter writer) - { - Array.Write(writer); - writer.AppendRaw("["); - Index.Write(writer); - writer.AppendRaw("]"); - } - } -} diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/AsExpression.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/AsExpression.cs index 0f53136dcc..3dca466873 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/AsExpression.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/AsExpression.cs @@ -1,6 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +using Microsoft.Generator.CSharp.Primitives; + namespace Microsoft.Generator.CSharp.Expressions { public sealed record AsExpression(ValueExpression Inner, CSharpType Type) : ValueExpression diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/BinaryOperatorExpression.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/BinaryOperatorExpression.cs index 4fa063d56f..25f9794cd1 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/BinaryOperatorExpression.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/BinaryOperatorExpression.cs @@ -9,7 +9,9 @@ internal override void Write(CodeWriter writer) { writer.AppendRaw("("); Left.Write(writer); - writer.AppendRaw(" ").AppendRaw(Operator).AppendRaw(" "); + writer.AppendRawIf(" ", !ReferenceEquals(Left, Empty)); + writer.AppendRaw(Operator); + writer.AppendRawIf(" ", !ReferenceEquals(Right, Empty)); Right.Write(writer); writer.AppendRaw(")"); } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/CastExpression.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/CastExpression.cs index 04011c0b74..288441078e 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/CastExpression.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/CastExpression.cs @@ -1,6 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +using Microsoft.Generator.CSharp.Primitives; + namespace Microsoft.Generator.CSharp.Expressions { /// diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/CatchExpression.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/CatchExpression.cs index bd84fb8843..dda5d58341 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/CatchExpression.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/CatchExpression.cs @@ -14,11 +14,13 @@ internal override void Write(CodeWriter writer) { writer.AppendRaw(" ("); Exception.Write(writer); - writer.AppendRaw(")"); + writer.WriteRawLine(")"); + } + + using (writer.Scope()) + { + Body.Write(writer); } - writer.WriteRawLine("{"); - Body.Write(writer); - writer.WriteRawLine("}"); } } } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/DeclarationExpression.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/DeclarationExpression.cs index e430ac243e..9ebebaaf95 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/DeclarationExpression.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/DeclarationExpression.cs @@ -1,6 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +using Microsoft.Generator.CSharp.Primitives; + namespace Microsoft.Generator.CSharp.Expressions { public sealed record DeclarationExpression(VariableExpression Variable, bool IsOut = false, bool IsUsing = false) : ValueExpression diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/FuncExpression.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/FuncExpression.cs index 8302ccbc2e..8338572fb6 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/FuncExpression.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/FuncExpression.cs @@ -2,6 +2,7 @@ // Licensed under the MIT License. using System.Collections.Generic; +using Microsoft.Generator.CSharp.Primitives; namespace Microsoft.Generator.CSharp.Expressions { diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/IndexableExpression.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/IndexableExpression.cs new file mode 100644 index 0000000000..f6bab49bc0 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/IndexableExpression.cs @@ -0,0 +1,22 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; + +namespace Microsoft.Generator.CSharp.Snippets +{ + public record IndexableExpression(ValueExpression Inner) : ValueExpression + { + public IndexableExpression(CSharpType type, string name) : this(new VariableExpression(type, name)) + { + } + + public ValueExpression this[ValueExpression index] => new IndexerExpression(this, index); + + internal override void Write(CodeWriter writer) + { + Inner.Write(writer); + } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/InvokeInstanceMethodExpression.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/InvokeInstanceMethodExpression.cs index 8714320737..f968f11918 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/InvokeInstanceMethodExpression.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/InvokeInstanceMethodExpression.cs @@ -2,6 +2,7 @@ // Licensed under the MIT License. using System.Collections.Generic; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Statements; namespace Microsoft.Generator.CSharp.Expressions diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/InvokeStaticMethodExpression.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/InvokeStaticMethodExpression.cs index 28363f7732..ef5358e6e8 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/InvokeStaticMethodExpression.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/InvokeStaticMethodExpression.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Statements; namespace Microsoft.Generator.CSharp.Expressions diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/InvokeStaticPropertyExpression.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/InvokeStaticPropertyExpression.cs new file mode 100644 index 0000000000..422d88e72c --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/InvokeStaticPropertyExpression.cs @@ -0,0 +1,26 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using Microsoft.Generator.CSharp.Primitives; +using Microsoft.Generator.CSharp.Statements; + +namespace Microsoft.Generator.CSharp.Expressions +{ + public sealed record InvokeStaticPropertyExpression(CSharpType? ContainingType, string PropertyName, bool CallAsAsync = false) : ValueExpression + { + internal override void Write(CodeWriter writer) + { + writer.AppendRawIf("await ", CallAsAsync); + if (ContainingType != null) + { + writer.Append($"{ContainingType}."); + } + + writer.AppendRaw(PropertyName); + writer.AppendRawIf(".ConfigureAwait(false)", CallAsAsync); + } + + private MethodBodyStatement? _terminated; + public MethodBodyStatement Terminate() => _terminated ??= new ExpressionStatement(this); + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/NewArrayExpression.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/NewArrayExpression.cs index 1ed52d18b2..5ac4a11d02 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/NewArrayExpression.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/NewArrayExpression.cs @@ -1,6 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +using Microsoft.Generator.CSharp.Primitives; + namespace Microsoft.Generator.CSharp.Expressions { public sealed record NewArrayExpression(CSharpType? Type, ArrayInitializerExpression? Items = null, ValueExpression? Size = null) : ValueExpression diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/NewInstanceExpression.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/NewInstanceExpression.cs index 099722a0ba..c1034b613d 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/NewInstanceExpression.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/NewInstanceExpression.cs @@ -2,6 +2,7 @@ // Licensed under the MIT License. using System.Collections.Generic; +using Microsoft.Generator.CSharp.Primitives; namespace Microsoft.Generator.CSharp.Expressions { diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/TypeReferenceExpression.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/TypeReferenceExpression.cs index 8243da395d..3a8f75c8ce 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/TypeReferenceExpression.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/TypeReferenceExpression.cs @@ -1,6 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +using Microsoft.Generator.CSharp.Primitives; + namespace Microsoft.Generator.CSharp.Expressions { public sealed record TypeReferenceExpression(CSharpType Type) : ValueExpression diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/ValueExpression.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/ValueExpression.cs index 3f353271db..7e9e07d6df 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/ValueExpression.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/ValueExpression.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Diagnostics; using System.Linq; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Snippets; namespace Microsoft.Generator.CSharp.Expressions @@ -15,6 +16,10 @@ namespace Microsoft.Generator.CSharp.Expressions [DebuggerDisplay("{GetDebuggerDisplay(),nq}")] public record ValueExpression { + public static readonly ValueExpression Empty = new(); + + protected ValueExpression() { } + internal virtual void Write(CodeWriter writer) { } public static implicit operator ValueExpression(Type type) => new TypeReferenceExpression(type); @@ -59,6 +64,21 @@ public InvokeInstanceMethodExpression Invoke(string methodName, IReadOnlyList new CastExpression(this, to); + public BoolSnippet GreaterThan(ValueExpression other) => new(new BinaryOperatorExpression(">", this, other)); + public BoolSnippet GreaterThanOrEqual(ValueExpression other) => new(new BinaryOperatorExpression(">=", this, other)); + + public BoolSnippet LessThan(ValueExpression other) => new(new BinaryOperatorExpression("<", this, other)); + + public BoolSnippet Equal(ValueExpression other) => new(new BinaryOperatorExpression("==", this, other)); + + public BoolSnippet NotEqual(ValueExpression other) => new(new BinaryOperatorExpression("!=", this, other)); + + public BoolSnippet Is(ValueExpression other) => new(new BinaryOperatorExpression("is", this, other)); + + public ValueExpression Increment() => new UnaryOperatorExpression("++", this, true); + + public ValueExpression AndExpr(ValueExpression other) => new BinaryOperatorExpression("and", this, other); + private string GetDebuggerDisplay() { using CodeWriter writer = new CodeWriter(); diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/VariableExpression.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/VariableExpression.cs index 26ab40fbbb..659bb3e428 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/VariableExpression.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/VariableExpression.cs @@ -1,6 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +using Microsoft.Generator.CSharp.Primitives; + namespace Microsoft.Generator.CSharp.Expressions { public sealed record VariableExpression(CSharpType Type, CodeWriterDeclaration Declaration) : ValueExpression diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/WhereExpression.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/WhereExpression.cs index a64e69b13a..f5c16520f4 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/WhereExpression.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Expressions/WhereExpression.cs @@ -2,6 +2,7 @@ // Licensed under the MIT License. using System.Collections.Generic; +using Microsoft.Generator.CSharp.Primitives; namespace Microsoft.Generator.CSharp.Expressions { diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/OutputLibrary.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputLibrary.cs similarity index 100% rename from packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/OutputLibrary.cs rename to packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputLibrary.cs diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/PostProcessing/GeneratedCodeWorkspace.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/PostProcessing/GeneratedCodeWorkspace.cs index d69f69f01a..63feb7fbc0 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/PostProcessing/GeneratedCodeWorkspace.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/PostProcessing/GeneratedCodeWorkspace.cs @@ -13,6 +13,7 @@ using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.Formatting; using Microsoft.CodeAnalysis.Simplification; +using Microsoft.Generator.CSharp.Primitives; namespace Microsoft.Generator.CSharp { diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/AutoPropertyBody.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/AutoPropertyBody.cs similarity index 88% rename from packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/AutoPropertyBody.cs rename to packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/AutoPropertyBody.cs index 23c875dff3..de23108f00 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/AutoPropertyBody.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/AutoPropertyBody.cs @@ -3,7 +3,7 @@ using Microsoft.Generator.CSharp.Expressions; -namespace Microsoft.Generator.CSharp +namespace Microsoft.Generator.CSharp.Primitives { internal record AutoPropertyBody(bool HasSetter, MethodSignatureModifiers SetterModifiers = MethodSignatureModifiers.None, ValueExpression? InitializationExpression = null) : PropertyBody(HasSetter); } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/CSharpType.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/CSharpType.cs similarity index 99% rename from packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/CSharpType.cs rename to packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/CSharpType.cs index 532191f4a1..483f4e8a81 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/CSharpType.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/CSharpType.cs @@ -9,7 +9,7 @@ using System.Linq; using Microsoft.Generator.CSharp.Providers; -namespace Microsoft.Generator.CSharp +namespace Microsoft.Generator.CSharp.Primitives { /// /// CSharpType represents the C# type of an input type. diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/PostProcessing/CodeFile.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/CodeFile.cs similarity index 87% rename from packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/PostProcessing/CodeFile.cs rename to packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/CodeFile.cs index 7fe23b0fb1..5adf55bbdd 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/PostProcessing/CodeFile.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/CodeFile.cs @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -namespace Microsoft.Generator.CSharp +namespace Microsoft.Generator.CSharp.Primitives { public class CodeFile { diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Writers/CodeWriterDeclaration.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/CodeWriterDeclaration.cs similarity index 96% rename from packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Writers/CodeWriterDeclaration.cs rename to packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/CodeWriterDeclaration.cs index 7682052ade..b1dae5000e 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Writers/CodeWriterDeclaration.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/CodeWriterDeclaration.cs @@ -3,7 +3,7 @@ using System; -namespace Microsoft.Generator.CSharp +namespace Microsoft.Generator.CSharp.Primitives { public sealed class CodeWriterDeclaration { diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/ConstructorInitializer.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/ConstructorInitializer.cs similarity index 91% rename from packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/ConstructorInitializer.cs rename to packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/ConstructorInitializer.cs index 969053227f..0f4744b785 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/ConstructorInitializer.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/ConstructorInitializer.cs @@ -6,7 +6,7 @@ using Microsoft.Generator.CSharp.Expressions; using Microsoft.Generator.CSharp.Providers; -namespace Microsoft.Generator.CSharp +namespace Microsoft.Generator.CSharp.Primitives { public sealed record ConstructorInitializer(bool IsBase, IReadOnlyList Arguments) { diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/ConstructorSignature.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/ConstructorSignature.cs similarity index 96% rename from packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/ConstructorSignature.cs rename to packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/ConstructorSignature.cs index 9327f5e6c7..86409553d6 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/ConstructorSignature.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/ConstructorSignature.cs @@ -6,7 +6,7 @@ using Microsoft.Generator.CSharp.Providers; using Microsoft.Generator.CSharp.Statements; -namespace Microsoft.Generator.CSharp +namespace Microsoft.Generator.CSharp.Primitives { /// /// Represents the signature of a constructor in C#. diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/EnumTypeMember.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/EnumTypeMember.cs similarity index 91% rename from packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/EnumTypeMember.cs rename to packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/EnumTypeMember.cs index 0790e35bd5..132c7496a5 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/EnumTypeMember.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/EnumTypeMember.cs @@ -3,7 +3,7 @@ using Microsoft.Generator.CSharp.Providers; -namespace Microsoft.Generator.CSharp +namespace Microsoft.Generator.CSharp.Primitives { public class EnumTypeMember { diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/ExpressionPropertyBody.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/ExpressionPropertyBody.cs similarity index 52% rename from packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/ExpressionPropertyBody.cs rename to packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/ExpressionPropertyBody.cs index d39d03778c..6d9c5715ad 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/ExpressionPropertyBody.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/ExpressionPropertyBody.cs @@ -3,7 +3,7 @@ using Microsoft.Generator.CSharp.Expressions; -namespace Microsoft.Generator.CSharp +namespace Microsoft.Generator.CSharp.Primitives { - internal record ExpressionPropertyBody(ValueExpression Getter) : PropertyBody(false); + public record ExpressionPropertyBody(ValueExpression Getter) : PropertyBody(false); } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/FieldModifiers.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/FieldModifiers.cs similarity index 72% rename from packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/FieldModifiers.cs rename to packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/FieldModifiers.cs index b2949b9dc8..cc7cb9091a 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/FieldModifiers.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/FieldModifiers.cs @@ -1,9 +1,9 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. using System; -namespace Microsoft.Generator.CSharp +namespace Microsoft.Generator.CSharp.Primitives { [Flags] public enum FieldModifiers diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/KnownParameters.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/KnownParameters.cs similarity index 96% rename from packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/KnownParameters.cs rename to packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/KnownParameters.cs index 571e819fd3..11ca961d22 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/KnownParameters.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/KnownParameters.cs @@ -8,7 +8,7 @@ using Microsoft.Generator.CSharp.Snippets; using Microsoft.Generator.CSharp.Statements; -namespace Microsoft.Generator.CSharp +namespace Microsoft.Generator.CSharp.Primitives { public static partial class KnownParameters { diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/MethodPropertyBody.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/MethodPropertyBody.cs similarity index 88% rename from packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/MethodPropertyBody.cs rename to packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/MethodPropertyBody.cs index 851d75871d..5650cc8204 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/MethodPropertyBody.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/MethodPropertyBody.cs @@ -3,7 +3,7 @@ using Microsoft.Generator.CSharp.Statements; -namespace Microsoft.Generator.CSharp +namespace Microsoft.Generator.CSharp.Primitives { internal record MethodPropertyBody(MethodBodyStatement Getter, MethodBodyStatement? Setter = null, MethodSignatureModifiers SetterModifiers = MethodSignatureModifiers.None) : PropertyBody(HasSetter: Setter != null); } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/MethodSignature.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/MethodSignature.cs similarity index 98% rename from packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/MethodSignature.cs rename to packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/MethodSignature.cs index a301a629c2..6caf247e07 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/MethodSignature.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/MethodSignature.cs @@ -9,7 +9,7 @@ using Microsoft.Generator.CSharp.Providers; using Microsoft.Generator.CSharp.Statements; -namespace Microsoft.Generator.CSharp +namespace Microsoft.Generator.CSharp.Primitives { /// /// Represents a method signature. diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/MethodSignatureBase.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/MethodSignatureBase.cs similarity index 95% rename from packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/MethodSignatureBase.cs rename to packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/MethodSignatureBase.cs index 7c4c8ad245..9beaffbb2e 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/MethodSignatureBase.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/MethodSignatureBase.cs @@ -6,7 +6,7 @@ using Microsoft.Generator.CSharp.Providers; using Microsoft.Generator.CSharp.Statements; -namespace Microsoft.Generator.CSharp +namespace Microsoft.Generator.CSharp.Primitives { /// /// Represents the base class for a method signature. diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/MethodSignatureModifiers.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/MethodSignatureModifiers.cs similarity index 91% rename from packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/MethodSignatureModifiers.cs rename to packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/MethodSignatureModifiers.cs index d5d72d4644..8c14b6265e 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/MethodSignatureModifiers.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/MethodSignatureModifiers.cs @@ -3,7 +3,7 @@ using System; -namespace Microsoft.Generator.CSharp +namespace Microsoft.Generator.CSharp.Primitives { [Flags] public enum MethodSignatureModifiers diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/ParameterValidationType.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/ParameterValidationType.cs similarity index 86% rename from packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/ParameterValidationType.cs rename to packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/ParameterValidationType.cs index 3a6c291319..adada93187 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/ParameterValidationType.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/ParameterValidationType.cs @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -namespace Microsoft.Generator.CSharp +namespace Microsoft.Generator.CSharp.Primitives { /// /// The set of validation types to perform on a parameter. diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/PropertyBody.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/PropertyBody.cs similarity index 76% rename from packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/PropertyBody.cs rename to packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/PropertyBody.cs index 574fa29adf..76b00190de 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/PropertyBody.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/PropertyBody.cs @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -namespace Microsoft.Generator.CSharp +namespace Microsoft.Generator.CSharp.Primitives { public abstract record PropertyBody(bool HasSetter); } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/PropertyDescriptionBuilder.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/PropertyDescriptionBuilder.cs similarity index 99% rename from packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/PropertyDescriptionBuilder.cs rename to packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/PropertyDescriptionBuilder.cs index a9be70aec7..b1e409d20c 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/PropertyDescriptionBuilder.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/PropertyDescriptionBuilder.cs @@ -8,7 +8,7 @@ using Microsoft.Generator.CSharp.Input; using Microsoft.Generator.CSharp.Statements; -namespace Microsoft.Generator.CSharp +namespace Microsoft.Generator.CSharp.Primitives { internal static class PropertyDescriptionBuilder { diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/PropertyWireInformation.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/PropertyWireInformation.cs similarity index 96% rename from packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/PropertyWireInformation.cs rename to packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/PropertyWireInformation.cs index cfade23410..08d9c870e4 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/PropertyWireInformation.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/PropertyWireInformation.cs @@ -3,7 +3,7 @@ using Microsoft.Generator.CSharp.Input; -namespace Microsoft.Generator.CSharp +namespace Microsoft.Generator.CSharp.Primitives { public class PropertyWireInformation { diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Writers/TypeProviderWriter.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/TypeProviderWriter.cs similarity index 99% rename from packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Writers/TypeProviderWriter.cs rename to packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/TypeProviderWriter.cs index f132875e6c..55ebe3d910 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Writers/TypeProviderWriter.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/TypeProviderWriter.cs @@ -4,7 +4,7 @@ using System.Linq; using Microsoft.Generator.CSharp.Providers; -namespace Microsoft.Generator.CSharp +namespace Microsoft.Generator.CSharp.Primitives { public class TypeProviderWriter { diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/TypeSignatureModifiers.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/TypeSignatureModifiers.cs similarity index 92% rename from packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/TypeSignatureModifiers.cs rename to packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/TypeSignatureModifiers.cs index eb559105c5..95692498da 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/TypeSignatureModifiers.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Primitives/TypeSignatureModifiers.cs @@ -3,7 +3,7 @@ using System; -namespace Microsoft.Generator.CSharp +namespace Microsoft.Generator.CSharp.Primitives { [Flags] public enum TypeSignatureModifiers diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/ArgumentProvider.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/ArgumentProvider.cs index e19f9eab61..881027f505 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/ArgumentProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/ArgumentProvider.cs @@ -6,10 +6,11 @@ using System.Collections.Generic; using System.IO; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Snippets; using Microsoft.Generator.CSharp.Statements; -using static Microsoft.Generator.CSharp.Snippets.Snippet; using static Microsoft.Generator.CSharp.Snippets.ArgumentSnippet; +using static Microsoft.Generator.CSharp.Snippets.Snippet; namespace Microsoft.Generator.CSharp.Providers { @@ -82,7 +83,7 @@ private MethodProvider BuildAssertNull() var signature = GetSignature("AssertNull", [value, _nameParam, message], [_t]); return new MethodProvider(signature, new MethodBodyStatement[] { - new IfStatement(NotEqual(value, Null)) + new IfStatement(value.AsExpression.NotEqual(Null)) { ThrowArgumentException(NullCoalescing(message, Literal("Value must be null."))) } @@ -138,11 +139,11 @@ private MethodProvider BuildAssertInRange() var signature = GetSignature("AssertInRange", new[] { value, min, max, _nameParam }, new[] { _t }, whereExpressions); return new MethodProvider(signature, new MethodBodyStatement[] { - new IfStatement(GreaterThan(GetCompareToExpression(min, value), Literal(0))) + new IfStatement(GetCompareToExpression(min, value).GreaterThan(Literal(0))) { Throw(New.ArgumentOutOfRangeException(_nameParam, "Value is less than the minimum allowed.", false)) }, - new IfStatement(LessThan(GetCompareToExpression(max, value), Literal(0))) + new IfStatement(GetCompareToExpression(max, value).LessThan(Literal(0))) { Throw(New.ArgumentOutOfRangeException(_nameParam, "Value is greater than the maximum allowed.", false)) } @@ -195,7 +196,7 @@ private MethodProvider BuildAssertNotNullOrEmptyString() return new MethodProvider(signature, new MethodBodyStatement[] { AssertNotNullSnippet(valueParam), - new IfStatement(Equal(value.Length, Literal(0))) + new IfStatement(value.Length.Equal(Literal(0))) { ThrowArgumentException("Value cannot be an empty string.") } @@ -230,7 +231,7 @@ private MethodProvider BuildAssertNotNullOrEmptyCollection() private static BoolSnippet IsCollectionEmpty(ParameterProvider valueParam, VariableExpression collection) { - return BoolSnippet.Is(valueParam, new DeclarationExpression(collection)).And(Equal(new MemberExpression(collection, "Count"), Literal(0))); + return valueParam.AsExpression.Is(new DeclarationExpression(collection)).And(new MemberExpression(collection, "Count").Equal(Literal(0))); } private MethodBodyStatement ThrowArgumentException(ValueExpression expression) @@ -267,7 +268,7 @@ private MethodProvider BuildAssertNotNull() private IfStatement AssertNotNullSnippet(ParameterProvider value) { - return new IfStatement(Is(value, Null)) + return new IfStatement(value.AsExpression.Is(Null)) { Throw(New.ArgumentNullException(_nameParam, false)) }; diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/ChangeTrackingDictionaryProvider.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/ChangeTrackingDictionaryProvider.cs index 39d9c1ec00..57d75c8e0f 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/ChangeTrackingDictionaryProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/ChangeTrackingDictionaryProvider.cs @@ -6,6 +6,7 @@ using System.Collections.Generic; using System.IO; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Snippets; using Microsoft.Generator.CSharp.Statements; using static Microsoft.Generator.CSharp.Snippets.Snippet; @@ -28,7 +29,7 @@ private class ChangeTrackingDictionaryTemplate { } private readonly DictionarySnippet _innerDictionary; private readonly MethodSignature _ensureDictionarySignature; - private InvokeInstanceMethodExpression EnsureDictionary { get; init; } + private IndexableExpression EnsureDictionary { get; init; } private BoolSnippet IsUndefined { get; } = new BoolSnippet(new MemberExpression(This, "IsUndefined")); public ChangeTrackingDictionaryProvider() @@ -43,7 +44,7 @@ public ChangeTrackingDictionaryProvider() _innerDictionaryField = new FieldProvider(FieldModifiers.Private, new CSharpType(typeof(IDictionary<,>), _tKey, _tValue), "_innerDictionary"); _innerDictionary = new DictionarySnippet(_tKey, _tValue, new VariableExpression(_IDictionary, _innerDictionaryField.Declaration)); _ensureDictionarySignature = new MethodSignature("EnsureDictionary", null, MethodSignatureModifiers.Public, _IDictionary, null, Array.Empty()); - EnsureDictionary = This.Invoke(_ensureDictionarySignature); + EnsureDictionary = new(This.Invoke(_ensureDictionarySignature)); } protected override TypeSignatureModifiers GetDeclarationModifiers() @@ -83,11 +84,11 @@ protected override MethodProvider[] BuildConstructors() private MethodProvider ConstructorWithReadOnlyDictionary() { var dictionaryParam = new ParameterProvider("dictionary", $"The inner dictionary.", _IReadOnlyDictionary); - var dictionary = new DictionarySnippet(_tKey, _tValue, dictionaryParam); + DictionarySnippet dictionary = new DictionarySnippet(_tKey, _tValue, dictionaryParam); var signature = new ConstructorSignature(Type, null, MethodSignatureModifiers.Public, new[] { dictionaryParam }); return new MethodProvider(signature, new MethodBodyStatement[] { - new IfStatement(Equal(dictionary, Null)) + new IfStatement(dictionary.Equal(Null)) { Return() }, @@ -106,7 +107,7 @@ private MethodProvider ConstructorWithDictionary() var signature = new ConstructorSignature(Type, null, MethodSignatureModifiers.Public, [dictionary]); return new MethodProvider(signature, new MethodBodyStatement[] { - new IfStatement(Equal(dictionary, Null)) + new IfStatement(dictionary.AsExpression.Equal(Null)) { Return() }, @@ -160,11 +161,11 @@ private PropertyProvider BuildIndexer() { Throw(New.Instance(typeof(KeyNotFoundException), Nameof(_indexParam))) }, - Return(new ArrayElementExpression(EnsureDictionary, _indexParam)), + Return(EnsureDictionary[_indexParam]), }, new MethodBodyStatement[] { - new ArrayElementExpression(EnsureDictionary, _indexParam).Assign(new KeywordExpression("value", null)).Terminate() + EnsureDictionary[_indexParam].Assign(Value).Terminate() })); } @@ -206,7 +207,7 @@ private PropertyProvider BuildCount() private PropertyProvider BuildIsUndefined() { - return new PropertyProvider(null, MethodSignatureModifiers.Public, typeof(bool), "IsUndefined", new ExpressionPropertyBody(Equal(_innerDictionary, Null))); + return new PropertyProvider(null, MethodSignatureModifiers.Public, typeof(bool), "IsUndefined", new ExpressionPropertyBody(_innerDictionary.Equal(Null))); } private MethodSignature GetSignature( diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/ChangeTrackingListProvider.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/ChangeTrackingListProvider.cs index 034fe28867..eafa90764e 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/ChangeTrackingListProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/ChangeTrackingListProvider.cs @@ -6,6 +6,7 @@ using System.Collections.Generic; using System.IO; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Snippets; using Microsoft.Generator.CSharp.Statements; using static Microsoft.Generator.CSharp.Snippets.Snippet; @@ -28,7 +29,7 @@ private class ChangeTrackingListTemplate { } private readonly CSharpType _iReadOnlyListOfT; private BoolSnippet IsUndefined { get; } = new BoolSnippet(new MemberExpression(This, "IsUndefined")); - private InvokeInstanceMethodExpression EnsureList { get; init; } + private IndexableExpression EnsureList { get; init; } public ChangeTrackingListProvider() { @@ -42,7 +43,7 @@ public ChangeTrackingListProvider() _innerList = new VariableExpression(_iListOfT, _innerListField.Declaration); _tArray = typeof(ChangeTrackingListTemplate<>).GetGenericArguments()[0].MakeArrayType(); _tParam = new ParameterProvider("item", $"The item.", _t); - EnsureList = This.Invoke(_ensureListSignature); + EnsureList = new(This.Invoke(_ensureListSignature)); } protected override TypeSignatureModifiers GetDeclarationModifiers() @@ -60,7 +61,7 @@ protected override MethodProvider[] BuildConstructors() var iListSignature = new ConstructorSignature(Type, null, MethodSignatureModifiers.Public, [iList]); var iListBody = new MethodBodyStatement[] { - new IfStatement(NotEqual(iList, Null)) + new IfStatement(iList.AsExpression.NotEqual(Null)) { _innerList.Assign(iList).Terminate() } @@ -70,7 +71,7 @@ protected override MethodProvider[] BuildConstructors() var iReadOnlyListSignature = new ConstructorSignature(Type, null, MethodSignatureModifiers.Public, [iReadOnlyList]); var iReadOnlyListBody = new MethodBodyStatement[] { - new IfStatement(NotEqual(iReadOnlyList, Null)) + new IfStatement(iReadOnlyList.AsExpression.NotEqual(Null)) { _innerList.Assign(Linq.ToList(iReadOnlyList)).Terminate() } @@ -78,7 +79,7 @@ protected override MethodProvider[] BuildConstructors() return [ - new MethodProvider(new ConstructorSignature(Type, null, MethodSignatureModifiers.Public, Array.Empty()), EmptyStatement, this), + new MethodProvider(new ConstructorSignature(Type, null, MethodSignatureModifiers.Public, Array.Empty()), MethodBodyStatement.Empty, this), new MethodProvider(iListSignature, iListBody, this), new MethodProvider(iReadOnlyListSignature, iReadOnlyListBody, this) ]; @@ -102,7 +103,7 @@ protected override FieldProvider[] BuildFields() protected override PropertyProvider[] BuildProperties() => new[] { - new PropertyProvider(null, MethodSignatureModifiers.Public, typeof(bool), "IsUndefined", new ExpressionPropertyBody(Equal(_innerList, Null))), + new PropertyProvider(null, MethodSignatureModifiers.Public, typeof(bool), "IsUndefined", new ExpressionPropertyBody(_innerList.Equal(Null))), BuildCount(), BuildIsReadOnly(), BuildIndexer() @@ -136,7 +137,7 @@ private PropertyProvider BuildIndexer() { Throw(New.Instance(typeof(ArgumentOutOfRangeException), Nameof(_indexParam))) }, - Return(new ArrayElementExpression(EnsureList, _indexParam)), + Return(EnsureList[_indexParam]), }, new MethodBodyStatement[] { @@ -144,7 +145,7 @@ private PropertyProvider BuildIndexer() { Throw(New.Instance(typeof(ArgumentOutOfRangeException), Nameof(_indexParam))) }, - new ArrayElementExpression(EnsureList, _indexParam).Assign(new KeywordExpression("value", null)).Terminate() + EnsureList[_indexParam].Assign(Value).Terminate() })); } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/EnumProvider.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/EnumProvider.cs index d85295bf8d..bda2a79069 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/EnumProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/EnumProvider.cs @@ -6,6 +6,7 @@ using System.IO; using Microsoft.Generator.CSharp.Expressions; using Microsoft.Generator.CSharp.Input; +using Microsoft.Generator.CSharp.Primitives; namespace Microsoft.Generator.CSharp.Providers { diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/ExtensibleEnumProvider.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/ExtensibleEnumProvider.cs index 674533c7a3..606f400ac4 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/ExtensibleEnumProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/ExtensibleEnumProvider.cs @@ -8,6 +8,7 @@ using System.Linq; using Microsoft.Generator.CSharp.Expressions; using Microsoft.Generator.CSharp.Input; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Snippets; using Microsoft.Generator.CSharp.Statements; using static Microsoft.Generator.CSharp.Snippets.Snippet; @@ -161,7 +162,12 @@ protected override MethodProvider[] BuildMethods() // writes the method: // public override bool Equals(object obj) => obj is EnumType other && Equals(other); - methods.Add(new(equalsSignature, And(Is(objParameter, new DeclarationExpression(Type, "other", out var other)), new BoolSnippet(new InvokeInstanceMethodExpression(null, nameof(object.Equals), [other]))), this)); + methods.Add(new( + equalsSignature, + objParameter.AsExpression + .Is(new DeclarationExpression(Type, "other", out var other)) + .And(This.Invoke(nameof(Equals), [other])), + this)); var otherParameter = new ParameterProvider("other", $"The instance to compare.", Type); equalsSignature = equalsSignature with diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/FieldProvider.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/FieldProvider.cs index 3711cdcb92..d251ff9598 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/FieldProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/FieldProvider.cs @@ -2,8 +2,8 @@ // Licensed under the MIT License. using System; -using System.Collections.Generic; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Statements; namespace Microsoft.Generator.CSharp.Providers @@ -36,16 +36,7 @@ public FieldProvider( XmlDocs = Description is not null ? new XmlDocProvider() { Summary = new XmlDocSummaryStatement([Description]) } : null; } - private static readonly Dictionary _cache = new(); - public static implicit operator MemberExpression(FieldProvider field) - { - if (!_cache.TryGetValue(field, out var member)) - { - member = new MemberExpression(null, field.Name); - _cache[field] = member; - } - - return member; - } + private MemberExpression? _asMember; + public static implicit operator MemberExpression(FieldProvider field) => field._asMember ??= new MemberExpression(null, field.Name); } } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/FixedEnumProvider.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/FixedEnumProvider.cs index aa74d2496e..a0b4aa87b8 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/FixedEnumProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/FixedEnumProvider.cs @@ -6,6 +6,7 @@ using Microsoft.CodeAnalysis; using Microsoft.Generator.CSharp.Expressions; using Microsoft.Generator.CSharp.Input; +using Microsoft.Generator.CSharp.Primitives; using static Microsoft.Generator.CSharp.Snippets.Snippet; namespace Microsoft.Generator.CSharp.Providers diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/FixedEnumSerializationProvider.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/FixedEnumSerializationProvider.cs index 67dfcd0875..ef5bddc969 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/FixedEnumSerializationProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/FixedEnumSerializationProvider.cs @@ -7,6 +7,7 @@ using System.IO; using System.Linq; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Snippets; using Microsoft.Generator.CSharp.Statements; using static Microsoft.Generator.CSharp.Snippets.Snippet; @@ -112,7 +113,7 @@ protected override MethodProvider[] BuildMethods() else { // when the values are not strings (it should be numbers), we just compare them using `==` operator, like `value == ` - condition = Equal(value, Literal(enumValue.Value)); + condition = value.Equal(Literal(enumValue.Value)); } deserializationBody.Add(new IfStatement(condition) { diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/IndexerProvider.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/IndexerProvider.cs index f4f940ab5f..f3fa3760fc 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/IndexerProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/IndexerProvider.cs @@ -2,6 +2,7 @@ // Licensed under the MIT License. using System; +using Microsoft.Generator.CSharp.Primitives; namespace Microsoft.Generator.CSharp.Providers { diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/MethodProvider.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/MethodProvider.cs index b53284c650..c850161144 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/MethodProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/MethodProvider.cs @@ -3,9 +3,8 @@ using System.Collections.Generic; using Microsoft.Generator.CSharp.Expressions; -using Microsoft.Generator.CSharp.Snippets; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Statements; -using static Microsoft.Generator.CSharp.Snippets.Snippet; using static Microsoft.Generator.CSharp.Snippets.ArgumentSnippet; namespace Microsoft.Generator.CSharp.Providers @@ -106,7 +105,7 @@ private MethodBodyStatement GetBodyStatementWithValidation(MethodBodyStatement b index++; } } - statements[index] = EmptyLineStatement; + statements[index] = MethodBodyStatement.EmptyLine; index++; statements[index] = bodyStatements; diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/MethodProviderCollection.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/MethodProviderCollection.cs index f90faf97ad..21c6f9b43a 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/MethodProviderCollection.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/MethodProviderCollection.cs @@ -3,68 +3,41 @@ using System.Collections; using System.Collections.Generic; -using System.Linq; using Microsoft.Generator.CSharp.Input; -using Microsoft.Generator.CSharp.Snippets; namespace Microsoft.Generator.CSharp.Providers { /// /// Represents an immutable collection of methods that are associated with an operation . /// - public sealed class MethodProviderCollection : IReadOnlyList + public class MethodProviderCollection : IReadOnlyList { - private readonly IReadOnlyList _cSharpMethods; + private IReadOnlyList? _cSharpMethods; + protected readonly InputOperation _operation; + protected readonly TypeProvider _enclosingType; - private MethodProviderCollection(IEnumerable? methods) + public MethodProviderCollection(InputOperation operation, TypeProvider enclosingType) { - _cSharpMethods = methods?.ToList() ?? []; + _operation = operation; + _enclosingType = enclosingType; } - /// - /// Builds a default for the given - /// with a single method that creates a message. - /// - /// The to convert. - /// The that will contain the methods. - public static MethodProviderCollection DefaultCSharpMethodCollection(InputOperation operation, TypeProvider enclosingType) - { - var createMessageMethod = BuildCreateMessageMethod(operation, enclosingType); - var cSharpMethods = new List() { createMessageMethod }; - // TO-DO: Add Protocol and Convenience methods https://github.com/Azure/autorest.csharp/issues/4585, https://github.com/Azure/autorest.csharp/issues/4586 - return new MethodProviderCollection(cSharpMethods); - } + protected virtual IReadOnlyList BuildMethods() => []; + public IReadOnlyList MethodProviders => _cSharpMethods ??= BuildMethods(); public MethodProvider this[int index] { - get { return _cSharpMethods[index]; } + get { return MethodProviders[index]; } } public int Count { - get { return _cSharpMethods.Count; } - } - - private static MethodProvider BuildCreateMessageMethod(InputOperation operation, TypeProvider enclosingType) - { - // TO-DO: properly build method https://github.com/Azure/autorest.csharp/issues/4583 - List methodParameters = new(); - foreach (var inputParam in operation.Parameters) - { - methodParameters.Add(CodeModelPlugin.Instance.TypeFactory.CreateCSharpParam(inputParam)); - } - - var methodModifier = MethodSignatureModifiers.Internal; - var methodSignatureName = $"Create{operation.Name.ToCleanName()}Request"; - var methodSignature = new MethodSignature(methodSignatureName, FormattableStringHelpers.FromString(operation.Description), methodModifier, null, null, Parameters: methodParameters); - var methodBody = Snippet.Throw(Snippet.New.NotImplementedException(Snippet.Literal("Method not implemented."))); - - return new MethodProvider(methodSignature, methodBody, enclosingType); + get { return MethodProviders.Count; } } public IEnumerator GetEnumerator() { - return _cSharpMethods.GetEnumerator(); + return MethodProviders.GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/ModelProvider.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/ModelProvider.cs index bd66a3aba3..2e00bcff56 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/ModelProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/ModelProvider.cs @@ -7,6 +7,7 @@ using System.Linq; using Microsoft.Generator.CSharp.Expressions; using Microsoft.Generator.CSharp.Input; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Statements; using static Microsoft.Generator.CSharp.Snippets.Snippet; diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/OptionalProvider.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/OptionalProvider.cs index 816c40120e..c71a24bfcf 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/OptionalProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/OptionalProvider.cs @@ -4,7 +4,7 @@ using System.Collections.Generic; using System.IO; using Microsoft.Generator.CSharp.Expressions; -using Microsoft.Generator.CSharp.Snippets; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Statements; using static Microsoft.Generator.CSharp.Snippets.Snippet; @@ -75,7 +75,7 @@ private MethodProvider IsStringDefined() var signature = GetIsDefinedSignature(valueParam); return new MethodProvider(signature, new MethodBodyStatement[] { - Return(NotEqual(valueParam, Null)) + Return(valueParam.AsExpression.NotEqual(Null)) }, this); } @@ -86,7 +86,7 @@ private MethodProvider IsObjectDefined() var signature = GetIsDefinedSignature(valueParam); return new MethodProvider(signature, new MethodBodyStatement[] { - Return(NotEqual(valueParam, Null)) + Return(valueParam.AsExpression.NotEqual(Null)) }, this); } @@ -94,7 +94,7 @@ private MethodProvider IsObjectDefined() private MethodProvider IsStructDefined() { var valueParam = new ParameterProvider("value", $"The value.", _t.WithNullable(true)); - var signature = GetIsDefinedSignature(valueParam, new[] { _t }, new[] { Where.Struct(_t) }); + var signature = GetIsDefinedSignature(valueParam, [_t], [Where.Struct(_t)]); return new MethodProvider(signature, new MethodBodyStatement[] { Return(new MemberExpression(valueParam, "HasValue")) @@ -111,7 +111,7 @@ private MethodProvider BuildIsReadOnlyDictionaryDefined() return new MethodProvider(signature, new MethodBodyStatement[] { - Return(Not(BoolSnippet.Is(collectionParam, changeTrackingDeclarationExpression) + Return(Not(collectionParam.AsExpression.Is(changeTrackingDeclarationExpression) .And(new MemberExpression(changeTrackingReference, "IsUndefined")))) }, this); @@ -126,7 +126,7 @@ private MethodProvider BuildIsDictionaryDefined() return new MethodProvider(signature, new MethodBodyStatement[] { - Return(Not(BoolSnippet.Is(collectionParam, changeTrackingDeclarationExpression) + Return(Not(collectionParam.AsExpression.Is(changeTrackingDeclarationExpression) .And(new MemberExpression(changeTrackingReference, "IsUndefined")))) }, this); @@ -141,7 +141,7 @@ private MethodProvider BuildIsListDefined() return new MethodProvider(signature, new MethodBodyStatement[] { - Return(Not(BoolSnippet.Is(collectionParam, changeTrackingDeclarationExpression) + Return(Not(collectionParam.AsExpression.Is(changeTrackingDeclarationExpression) .And(new MemberExpression(changeTrackingReference, "IsUndefined")))) }, this); diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/ParameterProvider.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/ParameterProvider.cs index 8e5a4cce42..4f49bcbe8f 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/ParameterProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/ParameterProvider.cs @@ -8,6 +8,7 @@ using System.Linq; using Microsoft.Generator.CSharp.Expressions; using Microsoft.Generator.CSharp.Input; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Statements; namespace Microsoft.Generator.CSharp.Providers @@ -127,30 +128,23 @@ private string GetDebuggerDisplay() return $"Name: {Name}, Type: {Type}"; } - // TO-DO: Migrate code from autorest as part of output classes migration : https://github.com/Azure/autorest.csharp/issues/4198 - public InvokeInstanceMethodExpression Invoke(string methodName, ValueExpression arg) - => new InvokeInstanceMethodExpression(this, methodName, [arg], null, false); + public static implicit operator VariableExpression(ParameterProvider parameter) => GetVariableExpression(parameter); - public InvokeInstanceMethodExpression Invoke(string methodName) - => new InvokeInstanceMethodExpression(this, methodName, Array.Empty(), null, false); - - public ValueExpression Property(string propertyName, bool nullConditional = false) - => new MemberExpression(nullConditional ? new NullConditionalExpression(this) : this, propertyName); - - private static readonly Dictionary _cache = new(); - public static implicit operator VariableExpression(ParameterProvider parameter) + private static VariableExpression GetVariableExpression(ParameterProvider parameter) { - if (!_cache.TryGetValue(parameter, out var variable)) + if (parameter._asVariable == null) { var decl = new CodeWriterDeclaration(parameter.Name); decl.SetActualName(parameter.Name); - variable = new VariableExpression(parameter.Type, decl); - _cache.Add(parameter, variable); + parameter._asVariable = new VariableExpression(parameter.Type, decl); } - return variable; + return parameter._asVariable; } + private VariableExpression? _asVariable; + public VariableExpression AsExpression => _asVariable ??= this; + private MemberExpression? _asProperty; public MemberExpression AsPropertyExpression => _asProperty ??= new MemberExpression(null, Name.FirstCharToUpperCase()); } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/PropertyProvider.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/PropertyProvider.cs index 138a7c138e..9da77c5cc6 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/PropertyProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/PropertyProvider.cs @@ -2,10 +2,10 @@ // Licensed under the MIT License. using System; -using System.Collections.Generic; using System.Diagnostics; using Microsoft.Generator.CSharp.Expressions; using Microsoft.Generator.CSharp.Input; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Snippets; using Microsoft.Generator.CSharp.Statements; @@ -125,17 +125,8 @@ private string GetDebuggerDisplay() return $"Name: {Name}, Type: {Type}"; } - private static readonly Dictionary _cache = new(); - + private MemberExpression? _asMember; public static implicit operator MemberExpression(PropertyProvider property) - { - if (!_cache.TryGetValue(property, out var member)) - { - member = new MemberExpression(null, property.Name); - _cache[property] = member; - } - - return member; - } + => property._asMember ??= new MemberExpression(null, property.Name); } } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/TypeProvider.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/TypeProvider.cs index 2593d81d47..82d82cd850 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/TypeProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Providers/TypeProvider.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Statements; namespace Microsoft.Generator.CSharp.Providers diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Snippets/Snippet.DeclarationStatements.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Snippets/Snippet.DeclarationStatements.cs index d884efc4c4..d575cf1a50 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Snippets/Snippet.DeclarationStatements.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Snippets/Snippet.DeclarationStatements.cs @@ -3,6 +3,7 @@ using System; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Statements; namespace Microsoft.Generator.CSharp.Snippets @@ -22,7 +23,7 @@ public static MethodBodyStatement UsingDeclare(string name, StreamSnippet value, public static MethodBodyStatement UsingDeclare(VariableExpression variable, ValueExpression value) => new DeclarationExpression(variable, false, true).Assign(value).Terminate(); - public static MethodBodyStatement Declare(CSharpType variableType, string name, ValueExpression value, out VariableExpression variable) + public static MethodBodyStatement Declare(string name, CSharpType variableType, ValueExpression value, out VariableExpression variable) { var variableRef = new VariableExpression(variableType, name); variable = variableRef; diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Snippets/Snippet.Linq.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Snippets/Snippet.Linq.cs index b283a80f6f..8e853a6682 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Snippets/Snippet.Linq.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Snippets/Snippet.Linq.cs @@ -12,7 +12,7 @@ public static class Linq { public static ValueExpression ToList(ValueExpression expression) { - return new InvokeStaticMethodExpression(typeof(Enumerable), nameof(Enumerable.ToList), new[] { expression }, CallAsExtension: true); + return new InvokeStaticMethodExpression(typeof(Enumerable), nameof(Enumerable.ToList), [expression], CallAsExtension: true); } } } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Snippets/Snippet.New.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Snippets/Snippet.New.cs index 5a52fdace8..7cf7a5e832 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Snippets/Snippet.New.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Snippets/Snippet.New.cs @@ -7,6 +7,7 @@ using System.Linq; using System.Text.Json; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Providers; namespace Microsoft.Generator.CSharp.Snippets @@ -41,24 +42,21 @@ public static ValueExpression ArgumentException(ValueExpression parameter, Value public static ValueExpression JsonException(ValueExpression message) => Instance(typeof(JsonException), message); - public static EnumerableSnippet Array(CSharpType? elementType) => new(elementType ?? typeof(object), new NewArrayExpression(elementType)); - public static EnumerableSnippet Array(CSharpType? elementType, params ValueExpression[] items) => new(elementType ?? typeof(object), new NewArrayExpression(elementType, new ArrayInitializerExpression(items))); - public static EnumerableSnippet Array(CSharpType? elementType, bool isInline, params ValueExpression[] items) => new(elementType ?? typeof(object), new NewArrayExpression(elementType, new ArrayInitializerExpression(items, isInline))); - public static EnumerableSnippet Array(CSharpType? elementType, ValueExpression size) => new(elementType ?? typeof(object), new NewArrayExpression(elementType, Size: size)); + public static IndexableExpression Array(CSharpType? elementType) => new(new NewArrayExpression(elementType)); + public static IndexableExpression Array(CSharpType? elementType, params ValueExpression[] items) => new(new NewArrayExpression(elementType, new ArrayInitializerExpression(items))); + public static IndexableExpression Array(CSharpType? elementType, bool isInline, params ValueExpression[] items) => new(new NewArrayExpression(elementType, new ArrayInitializerExpression(items, isInline))); + public static IndexableExpression Array(CSharpType? elementType, ValueExpression size) => new(new NewArrayExpression(elementType, Size: size)); public static DictionarySnippet Dictionary(CSharpType keyType, CSharpType valueType) => new(keyType, valueType, new NewInstanceExpression(new CSharpType(typeof(Dictionary<,>), keyType, valueType), [])); public static DictionarySnippet Dictionary(CSharpType keyType, CSharpType valueType, IReadOnlyDictionary values) => new(keyType, valueType, new NewInstanceExpression(new CSharpType(typeof(Dictionary<,>), keyType, valueType), [], new DictionaryInitializerExpression(values))); - public static TypedSnippet JsonSerializerOptions() => new FrameworkTypeSnippet(typeof(JsonSerializerOptions), new ValueExpression()); - public static ListSnippet List(CSharpType elementType) => new(elementType, Instance(new CSharpType(typeof(List<>), elementType))); public static StreamReaderSnippet StreamReader(ValueExpression stream) => new(Instance(typeof(StreamReader), stream)); public static TimeSpanSnippet TimeSpan(int hours, int minutes, int seconds) => new(Instance(typeof(TimeSpan), Int(hours), Int(minutes), Int(seconds))); - public static TypedSnippet Uri(string uri) => Instance(typeof(Uri), Literal(uri)); public static ValueExpression Anonymous(ValueExpression key, ValueExpression value) => Anonymous(new Dictionary { [key] = value }); public static ValueExpression Anonymous(IReadOnlyDictionary properties) => new NewInstanceExpression(null, [], new ObjectInitializerExpression(properties)); diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Snippets/Snippet.Where.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Snippets/Snippet.Where.cs index 828f6ca77a..3396fe9c5a 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Snippets/Snippet.Where.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Snippets/Snippet.Where.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; namespace Microsoft.Generator.CSharp.Snippets { diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Snippets/Snippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Snippets/Snippet.cs index a15a684502..d7019495ee 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Snippets/Snippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Snippets/Snippet.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Linq; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Providers; using Microsoft.Generator.CSharp.Statements; @@ -12,17 +13,6 @@ namespace Microsoft.Generator.CSharp.Snippets { public static partial class Snippet { - private class PrivateEmptyLineStatement : MethodBodyStatement - { - internal override void Write(CodeWriter writer) - { - writer.WriteLine(); - } - } - - public static readonly MethodBodyStatement EmptyStatement = new(); - public static readonly MethodBodyStatement EmptyLineStatement = new PrivateEmptyLineStatement(); - public static ValueExpression Identifier(string name) => new MemberExpression(null, name); public static MethodBodyStatement AsStatement(this IEnumerable statements) => statements.ToArray(); @@ -30,6 +20,7 @@ internal override void Write(CodeWriter writer) public static ValueExpression DefaultOf(CSharpType type) => type is { IsValueType: true, IsNullable: false } ? Default.CastTo(type) : Null.CastTo(type); + public static ValueExpression Value { get; } = new KeywordExpression("value", null); public static ValueExpression Default { get; } = new KeywordExpression("default", null); public static ValueExpression Null { get; } = new KeywordExpression("null", null); public static ValueExpression This { get; } = new KeywordExpression("this", null); @@ -59,24 +50,14 @@ public static ValueExpression RemoveAllNullConditional(ValueExpression expressio _ => expression }; - public static TypedSnippet RemoveAllNullConditional(TypedSnippet expression) - => expression with { Untyped = RemoveAllNullConditional(expression.Untyped) }; + public static TypedSnippet RemoveAllNullConditional(TypedSnippet snippet) + => snippet with { Expression = RemoveAllNullConditional(snippet.Expression) }; public static ValueExpression Literal(object? value) => new LiteralExpression(value); public static StringSnippet Literal(string? value) => new(value is null ? Null : new LiteralExpression(value)); public static StringSnippet LiteralU8(string value) => new(new UnaryOperatorExpression("u8", new LiteralExpression(value), true)); - public static BoolSnippet GreaterThan(ValueExpression left, ValueExpression right) => new(new BinaryOperatorExpression(">", left, right)); - public static BoolSnippet LessThan(ValueExpression left, ValueExpression right) => new(new BinaryOperatorExpression("<", left, right)); - public static BoolSnippet Equal(ValueExpression left, ValueExpression right) => new(new BinaryOperatorExpression("==", left, right)); - public static BoolSnippet NotEqual(ValueExpression left, ValueExpression right) => new(new BinaryOperatorExpression("!=", left, right)); - - public static BoolSnippet Is(ValueExpression left, ValueExpression right) - => new(new BinaryOperatorExpression("is", left, right)); - - public static BoolSnippet Or(BoolSnippet left, BoolSnippet right) => new(new BinaryOperatorExpression("||", left.Untyped, right.Untyped)); - public static BoolSnippet And(BoolSnippet left, BoolSnippet right) => new(new BinaryOperatorExpression("&&", left.Untyped, right.Untyped)); public static BoolSnippet Not(BoolSnippet operand) => new(new UnaryOperatorExpression("!", operand, false)); public static MethodBodyStatement Continue => new KeywordExpression("continue", null).Terminate(); @@ -85,35 +66,29 @@ public static BoolSnippet Is(ValueExpression left, ValueExpression right) public static MethodBodyStatement Return() => new KeywordExpression("return", null).Terminate(); public static MethodBodyStatement Throw(ValueExpression expression) => new KeywordExpression("throw", expression).Terminate(); - public static EnumerableSnippet InvokeArrayEmpty(CSharpType arrayItemType) + public static EnumerableSnippet ArrayEmpty(CSharpType arrayItemType) => new(arrayItemType, new InvokeStaticMethodExpression(typeof(Array), nameof(Array.Empty), Array.Empty(), new[] { arrayItemType })); - public static StreamSnippet InvokeFileOpenRead(string filePath) - => new(new InvokeStaticMethodExpression(typeof(System.IO.File), nameof(System.IO.File.OpenRead), [Literal(filePath)])); - public static StreamSnippet InvokeFileOpenWrite(string filePath) - => new(new InvokeStaticMethodExpression(typeof(System.IO.File), nameof(System.IO.File.OpenWrite), [Literal(filePath)])); - public static AssignmentExpression Assign(this ValueExpression to, ValueExpression value, bool nullCoalesce = false) => new AssignmentExpression(to, value, nullCoalesce); public static AssignmentExpression Assign(this ParameterProvider to, ValueExpression value, bool nullCoalesce = false) => new AssignmentExpression(to, value, nullCoalesce); public static AssignmentExpression Assign(this FieldProvider to, ValueExpression value, bool nullCoalesce = false) => new AssignmentExpression(to, value, nullCoalesce); public static AssignmentExpression Assign(this TypedSnippet to, ValueExpression value, bool nullCoalesce = false) => new AssignmentExpression(to, value, nullCoalesce); public static AssignmentExpression Assign(this PropertyProvider to, ValueExpression value, bool nullCoalesce = false) => new AssignmentExpression(to, value, nullCoalesce); - public static MethodBodyStatement AssignOrReturn(ValueExpression? variable, ValueExpression expression) - => variable != null ? variable.Assign(expression).Terminate() : Return(expression); - public static MethodBodyStatement InvokeConsoleWriteLine(ValueExpression expression) => new InvokeStaticMethodExpression(typeof(Console), nameof(Console.WriteLine), expression).Terminate(); - public static MethodBodyStatement Increment(ValueExpression value) - => new UnaryOperatorExpression("++", value, true).Terminate(); + // TO-DO: Migrate code from autorest as part of output classes migration : https://github.com/Azure/autorest.csharp/issues/4198 + public static InvokeInstanceMethodExpression Invoke(this ParameterProvider parameter, string methodName, ValueExpression arg) + => new InvokeInstanceMethodExpression(parameter, methodName, [arg], null, false); + + public static InvokeInstanceMethodExpression Invoke(this ParameterProvider parameter, string methodName) + => new InvokeInstanceMethodExpression(parameter, methodName, Array.Empty(), null, false); + + public static ValueExpression Property(this ParameterProvider parameter, string propertyName, bool nullConditional = false) + => new MemberExpression(nullConditional ? new NullConditionalExpression(parameter) : parameter, propertyName); - private static BoolSnippet Is(T value, string name, Func factory, out T variable) where T : TypedSnippet - { - var declaration = new CodeWriterDeclaration(name); - var variableRef = new VariableExpression(value.Type, declaration); - variable = factory(variableRef); - return new(new BinaryOperatorExpression("is", value, new DeclarationExpression(variableRef))); - } + public static ValueExpression Invoke(this FieldProvider field, string methodName, IEnumerable parameters, bool isAsync, bool configureAwait) + => new InvokeInstanceMethodExpression(field, methodName, [.. parameters], null, isAsync, configureAwait); } } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/SourceInput/CompilationCustomCode.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/SourceInput/CompilationCustomCode.cs index 665af0c323..6933eb569a 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/SourceInput/CompilationCustomCode.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/SourceInput/CompilationCustomCode.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using Microsoft.CodeAnalysis; +using Microsoft.Generator.CSharp.Primitives; namespace Microsoft.Generator.CSharp.SourceInput { diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/SourceInput/SourceInputHelper.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/SourceInput/SourceInputHelper.cs index 102abb665a..1c57770cfd 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/SourceInput/SourceInputHelper.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/SourceInput/SourceInputHelper.cs @@ -1,11 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -using Microsoft.CodeAnalysis; -using Microsoft.Generator.CSharp.Providers; using System.Collections.Generic; using System.Collections.Immutable; using System.Diagnostics.CodeAnalysis; +using Microsoft.CodeAnalysis; +using Microsoft.Generator.CSharp.Primitives; +using Microsoft.Generator.CSharp.Providers; namespace Microsoft.Generator.CSharp.SourceInput { diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/SourceInput/SourceInputModel.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/SourceInput/SourceInputModel.cs index eeb4f81b36..ddc07cb96d 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/SourceInput/SourceInputModel.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/SourceInput/SourceInputModel.cs @@ -10,6 +10,7 @@ using Microsoft.Build.Construction; using Microsoft.CodeAnalysis; using Microsoft.Generator.CSharp.Customization; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Providers; using NuGet.Configuration; diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Statements/AttributeStatement.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Statements/AttributeStatement.cs index dce1f8924c..802cac0010 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Statements/AttributeStatement.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Statements/AttributeStatement.cs @@ -4,6 +4,7 @@ using System.Collections.Generic; using System.Linq; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; namespace Microsoft.Generator.CSharp.Statements { diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Statements/DeclareLocalFunctionStatement.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Statements/DeclareLocalFunctionStatement.cs index 22f429c3c3..a28afb6d7b 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Statements/DeclareLocalFunctionStatement.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Statements/DeclareLocalFunctionStatement.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Providers; namespace Microsoft.Generator.CSharp.Statements diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Statements/ForeachStatement.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Statements/ForeachStatement.cs index c5d4cc60be..ae2692f518 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Statements/ForeachStatement.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Statements/ForeachStatement.cs @@ -4,6 +4,7 @@ using System.Collections; using System.Collections.Generic; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Snippets; namespace Microsoft.Generator.CSharp.Statements diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Statements/MethodBodyStatement.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Statements/MethodBodyStatement.cs index 40e4ea4af1..341d50aab3 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Statements/MethodBodyStatement.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Statements/MethodBodyStatement.cs @@ -13,6 +13,17 @@ internal virtual void Write(CodeWriter writer) { } public static implicit operator MethodBodyStatement(MethodBodyStatement[] statements) => new MethodBodyStatements(statements); public static implicit operator MethodBodyStatement(List statements) => new MethodBodyStatements(statements); + private class PrivateEmptyLineStatement : MethodBodyStatement + { + internal override void Write(CodeWriter writer) + { + writer.WriteLine(); + } + } + + public static readonly MethodBodyStatement Empty = new(); + public static readonly MethodBodyStatement EmptyLine = new PrivateEmptyLineStatement(); + private string GetDebuggerDisplay() { using CodeWriter writer = new CodeWriter(); diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Statements/TryCatchFinallyStatement.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Statements/TryCatchFinallyStatement.cs index b63a044d1a..9dff345b96 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Statements/TryCatchFinallyStatement.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Statements/TryCatchFinallyStatement.cs @@ -31,9 +31,10 @@ public TryCatchFinallyStatement(MethodBodyStatement Try, CatchExpression Catch, internal override void Write(CodeWriter writer) { writer.WriteRawLine("try"); - writer.WriteRawLine("{"); - Try.Write(writer); - writer.WriteRawLine("}"); + using (writer.Scope()) + { + Try.Write(writer); + } foreach (var catchStatement in Catches) { @@ -43,9 +44,10 @@ internal override void Write(CodeWriter writer) if (Finally != null) { writer.WriteRawLine("finally"); - writer.WriteRawLine("{"); - Finally.Write(writer); - writer.WriteRawLine("}"); + using (writer.Scope()) + { + Finally.Write(writer); + } } } } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Statements/UsingScopeStatement.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Statements/UsingScopeStatement.cs index 587deb184f..2e73a90491 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Statements/UsingScopeStatement.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Statements/UsingScopeStatement.cs @@ -4,6 +4,7 @@ using System.Collections; using System.Collections.Generic; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; namespace Microsoft.Generator.CSharp.Statements { diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Statements/XmlDocExceptionStatement.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Statements/XmlDocExceptionStatement.cs index 5131babee0..b7cde5eb40 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Statements/XmlDocExceptionStatement.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Statements/XmlDocExceptionStatement.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Providers; namespace Microsoft.Generator.CSharp.Statements @@ -22,6 +23,13 @@ public XmlDocExceptionStatement(ParameterValidationType validationType, IReadOnl _reason = GetText(validationType); } + public XmlDocExceptionStatement(Type exceptionType, string reason, IReadOnlyList parameters) + { + ExceptionType = exceptionType; + Parameters = parameters; + _reason = reason; + } + private static Type GetExceptionType(ParameterValidationType validationType) => validationType switch { ParameterValidationType.AssertNotNull => typeof(ArgumentNullException), @@ -42,13 +50,16 @@ internal override void Write(CodeWriter writer) writer.Append($"/// "); - writer.Append($" "); - for (int i = 1; i < Parameters.Count - 1; i++) + if (Parameters.Count > 0) { - writer.Append($", "); + writer.Append($" "); + for (int i = 1; i < Parameters.Count - 1; i++) + { + writer.Append($", "); + } + if (Parameters.Count > 1) + writer.Append($" or "); } - if (Parameters.Count > 1) - writer.Append($" or "); writer.WriteLine($" {_reason} "); } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/TypeFactory.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypeFactory.cs similarity index 97% rename from packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/TypeFactory.cs rename to packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypeFactory.cs index d567e232a1..1ee2423dbe 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/OutputTypes/TypeFactory.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypeFactory.cs @@ -7,6 +7,7 @@ using System.Linq; using System.Net; using Microsoft.Generator.CSharp.Input; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Providers; namespace Microsoft.Generator.CSharp @@ -94,7 +95,7 @@ public CSharpType CreateCSharpType(InputType inputType) /// An instance of containing the chain of methods /// associated with the input operation, or null if no methods are constructed. /// - public abstract MethodProviderCollection? CreateMethodProviders(InputOperation operation, TypeProvider enclosingType); + public virtual MethodProviderCollection CreateMethodProviders(InputOperation operation, TypeProvider enclosingType) => new(operation, enclosingType); /// /// Factory method for retrieving the serialization format for a given input type. diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/ArgumentSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/ArgumentSnippet.cs index 59bf072109..a269d2c87a 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/ArgumentSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/ArgumentSnippet.cs @@ -2,12 +2,13 @@ // Licensed under the MIT License. using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Providers; using Microsoft.Generator.CSharp.Statements; namespace Microsoft.Generator.CSharp.Snippets { - internal sealed record ArgumentSnippet(ValueExpression Untyped) : TypedSnippet(Untyped) + internal sealed record ArgumentSnippet(ValueExpression Expression) : TypedSnippet(Expression) { private const string AssertNotNullMethodName = "AssertNotNull"; private const string AssertNotNullOrEmptyMethodName = "AssertNotNullOrEmpty"; @@ -35,7 +36,7 @@ public static MethodBodyStatement AssertNotNullOrWhiteSpace(ValueExpression vari { ParameterValidationType.AssertNotNullOrEmpty => AssertNotNullOrEmpty(parameter), ParameterValidationType.AssertNotNull => AssertNotNull(parameter), - _ => Snippet.EmptyStatement + _ => MethodBodyStatement.Empty }; } } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/BinaryDataSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/BinaryDataSnippet.cs index 875c00b7e2..46a8507704 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/BinaryDataSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/BinaryDataSnippet.cs @@ -3,15 +3,16 @@ using System; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; namespace Microsoft.Generator.CSharp.Snippets { - public sealed record BinaryDataSnippet(ValueExpression Untyped) : TypedSnippet(Untyped) + public sealed record BinaryDataSnippet(ValueExpression Expression) : TypedSnippet(Expression) { private static readonly CSharpType _binaryDataType = typeof(BinaryData); public FrameworkTypeSnippet ToObjectFromJson(Type responseType) - => new(responseType, new InvokeInstanceMethodExpression(Untyped, nameof(BinaryData.ToObjectFromJson), Array.Empty(), new[] { new CSharpType(responseType) }, false)); + => new(responseType, new InvokeInstanceMethodExpression(Expression, nameof(BinaryData.ToObjectFromJson), Array.Empty(), new[] { new CSharpType(responseType) }, false)); public static BinaryDataSnippet FromStream(StreamSnippet stream, bool async) { @@ -25,11 +26,11 @@ public static BinaryDataSnippet FromStream(ValueExpression stream, bool async) return new(new InvokeStaticMethodExpression(_binaryDataType, methodName, stream, callAsAsync: async)); } - public ValueExpression ToMemory() => Untyped.Invoke(nameof(BinaryData.ToMemory)); + public ValueExpression ToMemory() => Expression.Invoke(nameof(BinaryData.ToMemory)); - public StreamSnippet ToStream() => new(Untyped.Invoke(nameof(BinaryData.ToStream))); + public StreamSnippet ToStream() => new(Expression.Invoke(nameof(BinaryData.ToStream))); - public ListSnippet ToArray() => new(typeof(byte[]), Untyped.Invoke(nameof(BinaryData.ToArray))); + public ListSnippet ToArray() => new(typeof(byte[]), Expression.Invoke(nameof(BinaryData.ToArray))); public static BinaryDataSnippet FromBytes(ValueExpression data) => new(new InvokeStaticMethodExpression(_binaryDataType, nameof(BinaryData.FromBytes), data)); @@ -39,8 +40,5 @@ public static BinaryDataSnippet FromObjectAsJson(ValueExpression data) public static BinaryDataSnippet FromString(ValueExpression data) => new(new InvokeStaticMethodExpression(_binaryDataType, nameof(BinaryData.FromString), data)); - - //public static implicit operator ValueExpression(BinaryDataExpression binaryData) - // => binaryData.Untyped; } } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/BoolSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/BoolSnippet.cs index 8c49f79be2..758618ba11 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/BoolSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/BoolSnippet.cs @@ -5,18 +5,10 @@ namespace Microsoft.Generator.CSharp.Snippets { - public sealed record BoolSnippet(ValueExpression Untyped) : TypedSnippet(Untyped) + public sealed record BoolSnippet(ValueExpression Expression) : TypedSnippet(Expression) { public BoolSnippet Or(ValueExpression other) => new(new BinaryOperatorExpression("||", this, other)); public BoolSnippet And(ValueExpression other) => new(new BinaryOperatorExpression("&&", this, other)); - - public static BoolSnippet True { get; } = Snippet.True; - - public static BoolSnippet False { get; } = Snippet.False; - - public static BoolSnippet Is(ValueExpression untyped, CSharpType comparisonType) => new(new BinaryOperatorExpression("is", untyped, comparisonType)); - - public static BoolSnippet Is(ValueExpression untyped, DeclarationExpression declaration) => new(new BinaryOperatorExpression("is", untyped, declaration)); } } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/CancellationTokenSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/CancellationTokenSnippet.cs index 69e7dd7318..306e414e2f 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/CancellationTokenSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/CancellationTokenSnippet.cs @@ -6,7 +6,7 @@ namespace Microsoft.Generator.CSharp.Snippets { - public sealed record CancellationTokenSnippet(ValueExpression Untyped) : TypedSnippet(Untyped) + public sealed record CancellationTokenSnippet(ValueExpression Expression) : TypedSnippet(Expression) { public BoolSnippet CanBeCanceled => new(Property(nameof(CancellationToken.CanBeCanceled))); } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/CharSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/CharSnippet.cs index ed02ced9a8..b8eb9afaa4 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/CharSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/CharSnippet.cs @@ -5,8 +5,8 @@ namespace Microsoft.Generator.CSharp.Snippets { - public sealed record CharSnippet(ValueExpression Untyped) : TypedSnippet(Untyped) + public sealed record CharSnippet(ValueExpression Expression) : TypedSnippet(Expression) { - public StringSnippet InvokeToString(ValueExpression cultureInfo) => new(Untyped.Invoke(nameof(char.ToString), cultureInfo)); + public StringSnippet InvokeToString(ValueExpression cultureInfo) => new(Expression.Invoke(nameof(char.ToString), cultureInfo)); } } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/ConvertSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/ConvertSnippet.cs index 9f6a179417..0e887d2bac 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/ConvertSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/ConvertSnippet.cs @@ -5,7 +5,7 @@ namespace Microsoft.Generator.CSharp.Snippets { - public sealed record ConvertSnippet(ValueExpression Untyped) : TypedSnippet(typeof(Convert), Untyped) + public sealed record ConvertSnippet(ValueExpression Expression) : TypedSnippet(typeof(Convert), Expression) { public static InvokeStaticMethodExpression InvokeToDouble(ValueExpression arg) => new InvokeStaticMethodExpression(typeof(Convert), nameof(Convert.ToDouble), arg); diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/DateTimeOffsetSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/DateTimeOffsetSnippet.cs index 7ef4ab85fd..91c9c6f1d4 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/DateTimeOffsetSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/DateTimeOffsetSnippet.cs @@ -6,7 +6,7 @@ namespace Microsoft.Generator.CSharp.Snippets { - public sealed record DateTimeOffsetSnippet(ValueExpression Untyped) : TypedSnippet(Untyped) + public sealed record DateTimeOffsetSnippet(ValueExpression Expression) : TypedSnippet(Expression) { public static DateTimeOffsetSnippet Now => new(StaticProperty(nameof(DateTimeOffset.Now))); public static DateTimeOffsetSnippet UtcNow => new(StaticProperty(nameof(DateTimeOffset.UtcNow))); @@ -15,13 +15,13 @@ public static DateTimeOffsetSnippet FromUnixTimeSeconds(ValueExpression expressi => new(InvokeStatic(nameof(DateTimeOffset.FromUnixTimeSeconds), expression)); public StringSnippet InvokeToString(StringSnippet format, ValueExpression formatProvider) - => new(Untyped.Invoke(nameof(DateTimeOffset.ToString), new[] { format, formatProvider })); + => new(Expression.Invoke(nameof(DateTimeOffset.ToString), new[] { format, formatProvider })); public LongSnippet ToUnixTimeSeconds() - => new(Untyped.Invoke(nameof(DateTimeOffset.ToUnixTimeSeconds))); + => new(Expression.Invoke(nameof(DateTimeOffset.ToUnixTimeSeconds))); public DateTimeOffsetSnippet ToUniversalTime() - => new(Untyped.Invoke(nameof(DateTimeOffset.ToUniversalTime))); + => new(Expression.Invoke(nameof(DateTimeOffset.ToUniversalTime))); public static DateTimeOffsetSnippet Parse(string s) => Parse(Snippet.Literal(s)); diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/DictionarySnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/DictionarySnippet.cs index b6df1a3d0c..13f97a6cf6 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/DictionarySnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/DictionarySnippet.cs @@ -3,16 +3,19 @@ using System.Collections.Generic; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Statements; namespace Microsoft.Generator.CSharp.Snippets { - public sealed record DictionarySnippet(CSharpType KeyType, CSharpType ValueType, ValueExpression Untyped) : TypedSnippet(new CSharpType(typeof(Dictionary<,>), false, KeyType, ValueType), Untyped) + public sealed record DictionarySnippet(CSharpType KeyType, CSharpType ValueType, ValueExpression Expression) : TypedSnippet(new CSharpType(typeof(Dictionary<,>), false, KeyType, ValueType), Expression) { public MethodBodyStatement Add(ValueExpression key, ValueExpression value) - => Untyped.Invoke(nameof(Dictionary.Add), [key, value]).Terminate(); + => Expression.Invoke(nameof(Dictionary.Add), [key, value]).Terminate(); public MethodBodyStatement Add(KeyValuePairSnippet pair) - => Untyped.Invoke(nameof(Dictionary.Add), pair).Terminate(); + => Expression.Invoke(nameof(Dictionary.Add), pair).Terminate(); + + public ValueExpression this[ValueExpression key] => new IndexerExpression(Expression, key); } } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/DoubleSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/DoubleSnippet.cs index 9dcffeed5c..4377742cda 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/DoubleSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/DoubleSnippet.cs @@ -5,7 +5,7 @@ namespace Microsoft.Generator.CSharp.Snippets { - public sealed record DoubleSnippet(ValueExpression Untyped) : TypedSnippet(Untyped) + public sealed record DoubleSnippet(ValueExpression Expression) : TypedSnippet(Expression) { public static DoubleSnippet MaxValue => new(StaticProperty(nameof(double.MaxValue))); diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/EnumerableSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/EnumerableSnippet.cs index 0d465678df..ef9dad8e46 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/EnumerableSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/EnumerableSnippet.cs @@ -4,12 +4,13 @@ using System.Collections.Generic; using System.Linq; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; namespace Microsoft.Generator.CSharp.Snippets { - public sealed record EnumerableSnippet(CSharpType ItemType, ValueExpression Untyped) : TypedSnippet(new CSharpType(typeof(IEnumerable<>), false, ItemType), Untyped) + public sealed record EnumerableSnippet(CSharpType ItemType, ValueExpression Expression) : TypedSnippet(new CSharpType(typeof(IEnumerable<>), false, ItemType), Expression) { - public BoolSnippet Any() => new(new InvokeStaticMethodExpression(typeof(Enumerable), nameof(Enumerable.Any), new[] { Untyped }, CallAsExtension: true)); - public EnumerableSnippet Select(TypedSnippet selector) => new(selector.Type, new InvokeStaticMethodExpression(typeof(Enumerable), nameof(Enumerable.Select), new[] { Untyped, selector }, CallAsExtension: true)); + public BoolSnippet Any() => new(new InvokeStaticMethodExpression(typeof(Enumerable), nameof(Enumerable.Any), new[] { Expression }, CallAsExtension: true)); + public EnumerableSnippet Select(TypedSnippet selector) => new(selector.Type, new InvokeStaticMethodExpression(typeof(Enumerable), nameof(Enumerable.Select), new[] { Expression, selector }, CallAsExtension: true)); } } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/EnvironmentSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/EnvironmentSnippet.cs index 6ca06d38e4..7f2b339b24 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/EnvironmentSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/EnvironmentSnippet.cs @@ -6,7 +6,7 @@ namespace Microsoft.Generator.CSharp.Snippets { - public sealed record EnvironmentSnippet(ValueExpression Untyped) : TypedSnippet(typeof(Environment), Untyped) + public sealed record EnvironmentSnippet(ValueExpression Expression) : TypedSnippet(typeof(Environment), Expression) { public static StringSnippet NewLine() => new(new TypeReferenceExpression(typeof(Environment)).Property(nameof(Environment.NewLine))); } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/FrameworkTypeSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/FrameworkTypeSnippet.cs index 4fa3f7c240..84e940975c 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/FrameworkTypeSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/FrameworkTypeSnippet.cs @@ -9,5 +9,5 @@ namespace Microsoft.Generator.CSharp.Snippets /// /// Represents expression which has a return value of a framework type. /// - public sealed record FrameworkTypeSnippet(Type FrameworkType, ValueExpression Untyped) : TypedSnippet(FrameworkType, Untyped); + public sealed record FrameworkTypeSnippet(Type FrameworkType, ValueExpression Expression) : TypedSnippet(FrameworkType, Expression); } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/IntSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/IntSnippet.cs index 3528ea0e38..d6a3a49960 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/IntSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/IntSnippet.cs @@ -5,7 +5,7 @@ namespace Microsoft.Generator.CSharp.Snippets { - public sealed record IntSnippet(ValueExpression Untyped) : TypedSnippet(Untyped) + public sealed record IntSnippet(ValueExpression Expression) : TypedSnippet(Expression) { public static IntSnippet MaxValue => new(StaticProperty(nameof(int.MaxValue))); public IntSnippet Add(IntSnippet value) => Operator("+", value); diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/JsonValueKindSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/JsonValueKindSnippet.cs index 3884eea9db..cd5ffbd370 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/JsonValueKindSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/JsonValueKindSnippet.cs @@ -6,7 +6,7 @@ namespace Microsoft.Generator.CSharp.Snippets { - public sealed record JsonValueKindSnippet(ValueExpression Untyped) : TypedSnippet(Untyped) + public sealed record JsonValueKindSnippet(ValueExpression Expression) : TypedSnippet(Expression) { public static JsonValueKindSnippet String => InvokeStaticProperty(nameof(JsonValueKind.String)); public static JsonValueKindSnippet Number => InvokeStaticProperty(nameof(JsonValueKind.Number)); diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/KeyValuePairSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/KeyValuePairSnippet.cs index 3f1a5347fd..3f6edd2f75 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/KeyValuePairSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/KeyValuePairSnippet.cs @@ -3,13 +3,14 @@ using System.Collections.Generic; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; namespace Microsoft.Generator.CSharp.Snippets { - public sealed record KeyValuePairSnippet(CSharpType KeyType, CSharpType ValueType, ValueExpression Untyped) : TypedSnippet(GetType(KeyType, ValueType), Untyped) + public sealed record KeyValuePairSnippet(CSharpType KeyType, CSharpType ValueType, ValueExpression Expression) : TypedSnippet(GetType(KeyType, ValueType), Expression) { - public ValueExpression Key => new MemberExpression(Untyped, nameof(KeyValuePair.Key)); - public ValueExpression Value => new MemberExpression(Untyped, nameof(KeyValuePair.Value)); + public ValueExpression Key => new MemberExpression(Expression, nameof(KeyValuePair.Key)); + public ValueExpression Value => new MemberExpression(Expression, nameof(KeyValuePair.Value)); public static CSharpType GetType(CSharpType keyType, CSharpType valueType) => new(typeof(KeyValuePair<,>), false, keyType, valueType); } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/ListSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/ListSnippet.cs index c9c0eb5cce..2c77d69295 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/ListSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/ListSnippet.cs @@ -3,14 +3,17 @@ using System.Collections.Generic; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Statements; namespace Microsoft.Generator.CSharp.Snippets { - public sealed record ListSnippet(CSharpType ItemType, ValueExpression Untyped) : TypedSnippet(new CSharpType(typeof(List<>), ItemType), Untyped) + public sealed record ListSnippet(CSharpType ItemType, ValueExpression Expression) : TypedSnippet(new CSharpType(typeof(List<>), ItemType), Expression) { - public MethodBodyStatement Add(ValueExpression item) => Untyped.Invoke(nameof(List.Add), item).Terminate(); + public MethodBodyStatement Add(ValueExpression item) => Expression.Invoke(nameof(List.Add), item).Terminate(); - public ValueExpression ToArray() => Untyped.Invoke(nameof(List.ToArray)); + public IndexableExpression ToArray() => new(Expression.Invoke(nameof(List.ToArray))); + + public ValueExpression this[ValueExpression index] => new IndexerExpression(Expression, index); } } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/LongSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/LongSnippet.cs index 4f9286f370..9e79dd9aef 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/LongSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/LongSnippet.cs @@ -5,10 +5,10 @@ namespace Microsoft.Generator.CSharp.Snippets { - public sealed record LongSnippet(ValueExpression Untyped) : TypedSnippet(Untyped) + public sealed record LongSnippet(ValueExpression Expression) : TypedSnippet(Expression) { public StringSnippet InvokeToString(ValueExpression formatProvider) - => new(Untyped.Invoke(nameof(long.ToString), formatProvider)); + => new(Expression.Invoke(nameof(long.ToString), formatProvider)); public static LongSnippet Parse(StringSnippet value, ValueExpression formatProvider) => new(new InvokeStaticMethodExpression(typeof(long), nameof(long.Parse), new[] { value, formatProvider })); diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/ObjectSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/ObjectSnippet.cs index 6c40363a8a..b635bf4f4f 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/ObjectSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/ObjectSnippet.cs @@ -2,11 +2,10 @@ // Licensed under the MIT License. using Microsoft.Generator.CSharp.Expressions; -using Microsoft.Generator.CSharp.Snippets; -namespace Microsoft.Generator.CSharp.TypedSnippets +namespace Microsoft.Generator.CSharp.Snippets { - public sealed record ObjectSnippet(ValueExpression Untyped) : TypedSnippet(Untyped) + public sealed record ObjectSnippet(ValueExpression Expression) : TypedSnippet(Expression) { } } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/StreamReaderSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/StreamReaderSnippet.cs index f308abc7cf..c9ced72210 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/StreamReaderSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/StreamReaderSnippet.cs @@ -7,12 +7,12 @@ namespace Microsoft.Generator.CSharp.Snippets { - public sealed record StreamReaderSnippet(ValueExpression Untyped) : TypedSnippet(Untyped) + public sealed record StreamReaderSnippet(ValueExpression Expression) : TypedSnippet(Expression) { public StringSnippet ReadToEnd(bool async) { var methodName = async ? nameof(StreamReader.ReadToEndAsync) : nameof(StreamReader.ReadToEnd); - return new(Untyped.Invoke(methodName, Array.Empty(), async)); + return new(Expression.Invoke(methodName, Array.Empty(), async)); } } } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/StreamSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/StreamSnippet.cs index df398dd91a..8a39f531fc 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/StreamSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/StreamSnippet.cs @@ -5,12 +5,18 @@ using System.IO; using Microsoft.Generator.CSharp.Expressions; using Microsoft.Generator.CSharp.Statements; +using static Microsoft.Generator.CSharp.Snippets.Snippet; namespace Microsoft.Generator.CSharp.Snippets { - public sealed record StreamSnippet(ValueExpression Untyped) : TypedSnippet(Untyped) + public sealed record StreamSnippet(ValueExpression Expression) : TypedSnippet(Expression) { - public MethodBodyStatement CopyTo(StreamSnippet destination) => Untyped.Invoke(nameof(Stream.CopyTo), destination).Terminate(); + public static StreamSnippet FileOpenRead(string filePath) + => new(new InvokeStaticMethodExpression(typeof(File), nameof(File.OpenRead), [Literal(filePath)])); + public static StreamSnippet FileOpenWrite(string filePath) + => new(new InvokeStaticMethodExpression(typeof(File), nameof(File.OpenWrite), [Literal(filePath)])); + + public MethodBodyStatement CopyTo(StreamSnippet destination) => Expression.Invoke(nameof(Stream.CopyTo), destination).Terminate(); public ValueExpression Position => new MemberExpression(this, nameof(Stream.Position)); public ValueExpression GetBuffer => new InvokeInstanceMethodExpression(this, nameof(MemoryStream.GetBuffer), Array.Empty(), null, false); diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/StringBuilderSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/StringBuilderSnippet.cs index 817c611fed..664f80a480 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/StringBuilderSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/StringBuilderSnippet.cs @@ -6,26 +6,26 @@ namespace Microsoft.Generator.CSharp.Snippets { - public sealed record StringBuilderSnippet(ValueExpression Untyped) : TypedSnippet(Untyped) + public sealed record StringBuilderSnippet(ValueExpression Expression) : TypedSnippet(Expression) { public IntSnippet Length => new(Property(nameof(StringBuilder.Length))); - public StringBuilderSnippet Append(StringSnippet value) => new(Untyped.Invoke(nameof(StringBuilder.Append), value)); + public StringBuilderSnippet Append(StringSnippet value) => new(Expression.Invoke(nameof(StringBuilder.Append), value)); - public StringBuilderSnippet AppendLine(StringSnippet value) => new(Untyped.Invoke(nameof(StringBuilder.AppendLine), value)); + public StringBuilderSnippet AppendLine(StringSnippet value) => new(Expression.Invoke(nameof(StringBuilder.AppendLine), value)); - public StringBuilderSnippet Append(ValueExpression value) => new(Untyped.Invoke(nameof(StringBuilder.Append), value)); + public StringBuilderSnippet Append(ValueExpression value) => new(Expression.Invoke(nameof(StringBuilder.Append), value)); - public StringBuilderSnippet AppendLine(ValueExpression value) => new(Untyped.Invoke(nameof(StringBuilder.AppendLine), value)); + public StringBuilderSnippet AppendLine(ValueExpression value) => new(Expression.Invoke(nameof(StringBuilder.AppendLine), value)); public StringBuilderSnippet Append(string value) => Append(Snippet.Literal(value)); public StringBuilderSnippet AppendLine(string value) => AppendLine(Snippet.Literal(value)); - public StringBuilderSnippet Append(FormattableStringExpression value) => new(Untyped.Invoke(nameof(StringBuilder.Append), value)); + public StringBuilderSnippet Append(FormattableStringExpression value) => new(Expression.Invoke(nameof(StringBuilder.Append), value)); - public StringBuilderSnippet AppendLine(FormattableStringExpression value) => new(Untyped.Invoke(nameof(StringBuilder.AppendLine), value)); + public StringBuilderSnippet AppendLine(FormattableStringExpression value) => new(Expression.Invoke(nameof(StringBuilder.AppendLine), value)); - public StringBuilderSnippet Remove(ValueExpression startIndex, ValueExpression length) => new(Untyped.Invoke(nameof(StringBuilder.Remove), [startIndex, length])); + public StringBuilderSnippet Remove(ValueExpression startIndex, ValueExpression length) => new(Expression.Invoke(nameof(StringBuilder.Remove), [startIndex, length])); } } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/StringSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/StringSnippet.cs index 39028b2c0a..b46d702578 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/StringSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/StringSnippet.cs @@ -7,10 +7,8 @@ namespace Microsoft.Generator.CSharp.Snippets { - public sealed record StringSnippet(ValueExpression Untyped) : TypedSnippet(Untyped) + public sealed record StringSnippet(ValueExpression Expression) : TypedSnippet(Expression) { - public CharSnippet Index(ValueExpression index) => new(new IndexerExpression(this, index)); - public CharSnippet Index(int index) => Index(Snippet.Literal(index)); public ValueExpression Length => Property(nameof(string.Length)); public static BoolSnippet Equals(StringSnippet left, StringSnippet right, StringComparison comparisonType) @@ -29,5 +27,9 @@ public StringSnippet Substring(ValueExpression startIndex) => new(new InvokeInstanceMethodExpression(this, nameof(string.Substring), new[] { startIndex }, null, false)); public ValueExpression ToCharArray() => new InvokeInstanceMethodExpression(this, nameof(string.ToCharArray), Array.Empty(), null, false); + + public CharSnippet this[ValueExpression index] => new(new IndexerExpression(this, index)); + + public CharSnippet this[int index] => this[Snippet.Literal(index)]; } } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/TimeSpanSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/TimeSpanSnippet.cs index 8f38db75e3..bba8b28717 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/TimeSpanSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/TimeSpanSnippet.cs @@ -6,11 +6,11 @@ namespace Microsoft.Generator.CSharp.Snippets { - public sealed record TimeSpanSnippet(ValueExpression Untyped) : TypedSnippet(Untyped) + public sealed record TimeSpanSnippet(ValueExpression Expression) : TypedSnippet(Expression) { - public StringSnippet InvokeToString(string? format) => new(Untyped.Invoke(nameof(TimeSpan.ToString), [Snippet.Literal(format)])); + public StringSnippet InvokeToString(string? format) => new(Expression.Invoke(nameof(TimeSpan.ToString), [Snippet.Literal(format)])); public StringSnippet InvokeToString(ValueExpression format, ValueExpression formatProvider) - => new(Untyped.Invoke(nameof(TimeSpan.ToString), new[] { format, formatProvider })); + => new(Expression.Invoke(nameof(TimeSpan.ToString), new[] { format, formatProvider })); public static TimeSpanSnippet FromSeconds(ValueExpression value) => new(InvokeStatic(nameof(TimeSpan.FromSeconds), value)); diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/TypeProviderSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/TypeProviderSnippet.cs index 78980c456f..677c599ae4 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/TypeProviderSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/TypeProviderSnippet.cs @@ -6,7 +6,7 @@ namespace Microsoft.Generator.CSharp.Snippets { - public record TypeProviderSnippet(TypeProvider TypeProvider, ValueExpression Untyped) : TypedSnippet(TypeProvider.Type, Untyped) + public record TypeProviderSnippet(TypeProvider TypeProvider, ValueExpression Expression) : TypedSnippet(TypeProvider.Type, Expression) { public static MemberExpression DeserializeDelegate(TypeProvider typeProvider) => new(new TypeReferenceExpression(typeProvider.Type), $"Deserialize{typeProvider.Name}"); diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/TypedSnippet.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/TypedSnippet.cs index f180388bfe..f9a756548a 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/TypedSnippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/TypedSnippet.cs @@ -4,6 +4,7 @@ using System; using System.Diagnostics; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Statements; namespace Microsoft.Generator.CSharp.Snippets @@ -13,9 +14,9 @@ namespace Microsoft.Generator.CSharp.Snippets /// Return type doesn't affect how expression is written, but helps creating strong-typed helpers to create value expressions. /// /// Type expected to be returned by value expression. - /// + /// [DebuggerDisplay("{GetDebuggerDisplay(),nq}")] - public abstract record TypedSnippet(CSharpType Type, ValueExpression Untyped) + public abstract record TypedSnippet(CSharpType Type, ValueExpression Expression) { public virtual ValueExpression Property(string propertyName, bool nullConditional = false) => new MemberExpression(nullConditional ? new NullConditionalExpression(this) : this, propertyName); @@ -34,15 +35,24 @@ protected static ValueExpression ValidateType(TypedSnippet typed, CSharpType typ throw new InvalidOperationException($"Expression with return type {typed.Type.Name} is cast to type {type.Name}"); } - public static implicit operator ValueExpression(TypedSnippet typed) => typed.Untyped; + public static implicit operator ValueExpression(TypedSnippet typed) => typed.Expression; private MethodBodyStatement? _terminated; public MethodBodyStatement Terminate() => _terminated ??= new ExpressionStatement(this); + public BoolSnippet Equal(ValueExpression other) => new(new BinaryOperatorExpression("==", this, other)); + + public BoolSnippet NotEqual(ValueExpression other) => new(new BinaryOperatorExpression("!=", this, other)); + + public InvokeInstanceMethodExpression Invoke(string methodName, params ValueExpression[] args) + => new InvokeInstanceMethodExpression(this, methodName, [..args], null, false); + + public ValueExpression AndExpr(ValueExpression other) => new BinaryOperatorExpression("and", this, other); + private string GetDebuggerDisplay() { using CodeWriter writer = new CodeWriter(); - Untyped.Write(writer); + Expression.Write(writer); return writer.ToString(false); } } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/TypedSnippetOfT.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/TypedSnippetOfT.cs index 41b12fdecc..106270816f 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/TypedSnippetOfT.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/TypedSnippets/TypedSnippetOfT.cs @@ -5,11 +5,12 @@ using System.Collections.Generic; using System.Linq; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; namespace Microsoft.Generator.CSharp.Snippets { #pragma warning disable SA1649 // File name should match first type name - public abstract record TypedSnippet(ValueExpression Untyped) : TypedSnippet(typeof(T), ValidateType(Untyped, typeof(T))) + public abstract record TypedSnippet(ValueExpression Expression) : TypedSnippet(typeof(T), ValidateType(Expression, typeof(T))) #pragma warning restore SA1649 // File name should match first type name { protected static MemberExpression StaticProperty(string name) => new(typeof(T), name); @@ -42,20 +43,20 @@ protected static InvokeStaticMethodExpression InvokeStatic(string methodName, IR => new(typeof(T), methodName, arguments, CallAsAsync: async); protected InvokeStaticMethodExpression InvokeExtension(CSharpType extensionType, string methodName) - => new(extensionType, methodName, new[] { Untyped }, CallAsAsync: false, CallAsExtension: true); + => new(extensionType, methodName, new[] { Expression }, CallAsAsync: false, CallAsExtension: true); protected InvokeStaticMethodExpression InvokeExtension(CSharpType extensionType, string methodName, ValueExpression arg) - => new(extensionType, methodName, new[] { Untyped, arg }, CallAsAsync: false, CallAsExtension: true); + => new(extensionType, methodName, new[] { Expression, arg }, CallAsAsync: false, CallAsExtension: true); protected InvokeStaticMethodExpression InvokeExtension(CSharpType extensionType, string methodName, ValueExpression arg1, ValueExpression arg2) - => new(extensionType, methodName, new[] { Untyped, arg1, arg2 }, CallAsAsync: false, CallAsExtension: true); + => new(extensionType, methodName, new[] { Expression, arg1, arg2 }, CallAsAsync: false, CallAsExtension: true); protected InvokeStaticMethodExpression InvokeExtension(CSharpType extensionType, string methodName, IEnumerable arguments, bool async) - => new(extensionType, methodName, arguments.Prepend(Untyped).ToArray(), CallAsAsync: async, CallAsExtension: true); + => new(extensionType, methodName, arguments.Prepend(Expression).ToArray(), CallAsAsync: async, CallAsExtension: true); - private static ValueExpression ValidateType(ValueExpression untyped, Type type) + private static ValueExpression ValidateType(ValueExpression expression, Type type) { - return untyped; + return expression; } } } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Utilities/NamedTypeSymbolExtensions.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Utilities/NamedTypeSymbolExtensions.cs index 5e9f52b7b2..8b6c5be3e4 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Utilities/NamedTypeSymbolExtensions.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Utilities/NamedTypeSymbolExtensions.cs @@ -1,8 +1,9 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. using System.Linq; using Microsoft.CodeAnalysis; +using Microsoft.Generator.CSharp.Primitives; namespace Microsoft.Generator.CSharp { diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Writers/CodeWriter.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Writers/CodeWriter.cs index 54e4b522ca..bbe548f4a8 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Writers/CodeWriter.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Writers/CodeWriter.cs @@ -8,6 +8,7 @@ using System.Text; using Microsoft.CodeAnalysis; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Providers; using Microsoft.Generator.CSharp.Statements; using static Microsoft.Generator.CSharp.Snippets.Snippet; @@ -701,7 +702,7 @@ public IDisposable WriteMethodDeclarationNoScope(MethodSignatureBase methodBase, if (isImplicitOrExplicit) { - Append($"{method.ReturnType}"); + AppendIf($"{method.ReturnType}", method.ReturnType is not null); } if (method.ExplicitInterface is not null) diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Writers/DiagnosticScope.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Writers/DiagnosticScope.cs index e872d5faa4..d65860174b 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Writers/DiagnosticScope.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/src/Writers/DiagnosticScope.cs @@ -2,6 +2,7 @@ // Licensed under the MIT License. using System; +using Microsoft.Generator.CSharp.Primitives; namespace Microsoft.Generator.CSharp { diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/CSharpGenTests.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/CSharpGenTests.cs index b69bc95ea1..16b6213b54 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/CSharpGenTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/CSharpGenTests.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.IO; using Microsoft.Generator.CSharp.Input; +using Microsoft.Generator.CSharp.Primitives; using Moq; using Moq.Protected; using NUnit.Framework; diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Expressions/ExpressionsTests.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Expressions/ExpressionsTests.cs index c94bf4969f..6e79daa6a5 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Expressions/ExpressionsTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Expressions/ExpressionsTests.cs @@ -4,8 +4,8 @@ using System; using System.IO; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Providers; -using Microsoft.Generator.CSharp.Snippets; using Microsoft.Generator.CSharp.Statements; using Moq; using NUnit.Framework; diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Expressions/KnownValueExpressionsTests.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Expressions/KnownValueExpressionsTests.cs index 794e740d13..db6c757fe9 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Expressions/KnownValueExpressionsTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Expressions/KnownValueExpressionsTests.cs @@ -3,10 +3,9 @@ using System; using System.Collections.Generic; -using System.Linq; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Snippets; -using Microsoft.Generator.CSharp.Statements; using NUnit.Framework; namespace Microsoft.Generator.CSharp.Tests.Expressions @@ -16,25 +15,29 @@ public class KnownValueExpressionsTests [Test] public void BinaryOperatorExpressionWithOrOperator() { - var left = new ValueExpression(); - var right = new ValueExpression(); + var left = ValueExpression.Empty; + var right = ValueExpression.Empty; var boolExpression = new BoolSnippet(left); var result = boolExpression.Or(right); + using var writer = new CodeWriter(); + result.Expression.Write(writer); - Assert.AreEqual(new BinaryOperatorExpression("||", boolExpression, right), result.Untyped); + Assert.AreEqual("(||)", writer.ToString(false)); } [Test] public void BinaryOperatorExpressionWithAndOperator() { - var left = new ValueExpression(); - var right = new ValueExpression(); + var left = ValueExpression.Empty; + var right = ValueExpression.Empty; var boolExpression = new BoolSnippet(left); var result = boolExpression.And(right); + using var writer = new CodeWriter(); + result.Expression.Write(writer); - Assert.AreEqual(new BinaryOperatorExpression("&&", boolExpression, right), result.Untyped); + Assert.AreEqual("(&&)", writer.ToString(false)); } [TestCase(typeof(int))] @@ -53,23 +56,26 @@ public void BinaryOperatorExpressionWithAndOperator() public void ListExpression(Type T) { var itemType = new CSharpType(T); - var untypedValue = new ValueExpression(); + var untypedValue = ValueExpression.Empty; var listExpression = new ListSnippet(itemType, untypedValue); + using var writer = new CodeWriter(); + listExpression.Expression.Write(writer); + Assert.AreEqual(itemType, listExpression.ItemType); - Assert.AreEqual(untypedValue, listExpression.Untyped); + Assert.AreEqual("", writer.ToString(false)); } [Test] public void ListExpressionAddItem() { - var item = new ValueExpression(); - var listExpression = new ListSnippet(new CSharpType(typeof(int)), new ValueExpression()); + var item = ValueExpression.Empty; + var listExpression = new ListSnippet(new CSharpType(typeof(int)), ValueExpression.Empty); var result = listExpression.Add(item); - var expectedStatement = listExpression.Untyped.Invoke("Add", item).Terminate(); + var expectedStatement = listExpression.Invoke("Add", item).Terminate(); Assert.AreEqual(expectedStatement.ToString(), result.ToString()); } @@ -93,7 +99,7 @@ public void DictionaryExpression(Type t1, Type t2) { var keyType = new CSharpType(t1); var valueType = new CSharpType(t2); - var untypedValue = new ValueExpression(); + var untypedValue = ValueExpression.Empty; var dictionaryExpression = new DictionarySnippet(t1, t2, untypedValue); @@ -107,13 +113,13 @@ public void DictionaryExpressionAddItems() { var keyType = new CSharpType(typeof(int)); var valueType = new CSharpType(typeof(string)); - var dictionaryExpression = new DictionarySnippet(keyType, valueType, new ValueExpression()); + var dictionaryExpression = new DictionarySnippet(keyType, valueType, ValueExpression.Empty); - var key = new ValueExpression(); - var value = new ValueExpression(); + var key = ValueExpression.Empty; + var value = ValueExpression.Empty; var result = dictionaryExpression.Add(key, value); - var expectedStatement = dictionaryExpression.Untyped.Invoke(nameof(Dictionary.Add), key, value).Terminate(); + var expectedStatement = dictionaryExpression.Invoke(nameof(Dictionary.Add), key, value).Terminate(); Assert.AreEqual(expectedStatement.ToString(), result.ToString()); } @@ -137,11 +143,11 @@ public void KeyValuePairExpression(Type t1, Type t2) { var keyType = new CSharpType(t1); var valueType = new CSharpType(t2); - var untypedValue = new ValueExpression(); + var untypedValue = ValueExpression.Empty; var keyValuePairExpression = new KeyValuePairSnippet(keyType, valueType, untypedValue); - var expectedKey = new MemberExpression(keyValuePairExpression.Untyped, nameof(KeyValuePair.Key)); - var expectedValue = new MemberExpression(keyValuePairExpression.Untyped, nameof(KeyValuePair.Value)); + var expectedKey = new MemberExpression(keyValuePairExpression, nameof(KeyValuePair.Key)); + var expectedValue = new MemberExpression(keyValuePairExpression, nameof(KeyValuePair.Value)); Assert.AreEqual(expectedKey, keyValuePairExpression.Key); Assert.AreEqual(expectedValue, keyValuePairExpression.Value); @@ -153,21 +159,14 @@ public void KeyValuePairExpression(Type t1, Type t2) public void EnumerableExpressionWithAnyMethodCall() { var itemType = new CSharpType(typeof(int)); - var untypedValue = new ValueExpression(); + var untypedValue = ValueExpression.Empty; var enumerableExpression = new EnumerableSnippet(itemType, untypedValue); var result = enumerableExpression.Any(); + using CodeWriter writer = new CodeWriter(); + result.Expression.Write(writer); - var expectedExpression = new BoolSnippet( - new InvokeStaticMethodExpression( - typeof(Enumerable), - nameof(Enumerable.Any), - new[] { untypedValue }, - CallAsExtension: true - ) - ); - - Assert.AreEqual(expectedExpression.Untyped.ToString(), result.Untyped.ToString()); + Assert.AreEqual(".Any()", writer.ToString(false)); } } } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Expressions/ValueExpressionTests.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Expressions/ValueExpressionTests.cs index c6c659edb6..bbb7592a6d 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Expressions/ValueExpressionTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Expressions/ValueExpressionTests.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; using NUnit.Framework; namespace Microsoft.Generator.CSharp.Tests.Expressions diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Microsoft.Generator.CSharp.Tests.csproj b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Microsoft.Generator.CSharp.Tests.csproj index 63b357c922..d67c20e28d 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Microsoft.Generator.CSharp.Tests.csproj +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Microsoft.Generator.CSharp.Tests.csproj @@ -2,7 +2,10 @@ - + + + + diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Mocks/MockCodeModelPlugin.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Mocks/MockCodeModelPlugin.cs index d1372b04f9..470021e076 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Mocks/MockCodeModelPlugin.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Mocks/MockCodeModelPlugin.cs @@ -5,7 +5,6 @@ using System.Collections.Generic; using Microsoft.Generator.CSharp.Input; using Microsoft.Generator.CSharp.Providers; -using Microsoft.Generator.CSharp.Snippets; namespace Microsoft.Generator.CSharp.Tests { diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Mocks/MockCodeWriterDeclaration.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Mocks/MockCodeWriterDeclaration.cs index 4eb5e27ba2..e5f59be735 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Mocks/MockCodeWriterDeclaration.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Mocks/MockCodeWriterDeclaration.cs @@ -1,6 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +using Microsoft.Generator.CSharp.Primitives; + namespace Microsoft.Generator.CSharp.Tests { /// diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Mocks/MockTypeFactory.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Mocks/MockTypeFactory.cs index 94fa2ae7fd..d70dd92d34 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Mocks/MockTypeFactory.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Mocks/MockTypeFactory.cs @@ -4,13 +4,14 @@ using System; using System.Collections.Generic; using Microsoft.Generator.CSharp.Input; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Providers; namespace Microsoft.Generator.CSharp.Tests { internal class MockTypeFactory : TypeFactory { - public override MethodProviderCollection? CreateMethodProviders(InputOperation operation, TypeProvider enclosingType) + public override MethodProviderCollection CreateMethodProviders(InputOperation operation, TypeProvider enclosingType) { throw new NotImplementedException(); } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/OutputTypes/CSharpTypeTests.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/OutputTypes/CSharpTypeTests.cs index a582bb4756..63387e76ac 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/OutputTypes/CSharpTypeTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/OutputTypes/CSharpTypeTests.cs @@ -1,4 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. using System; @@ -7,7 +7,7 @@ using System.IO; using System.Linq; using System.Text; -using Moq; +using Microsoft.Generator.CSharp.Primitives; using NUnit.Framework; namespace Microsoft.Generator.CSharp.Tests.OutputTypes diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/OutputTypes/KnownParametersTests.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/OutputTypes/KnownParametersTests.cs index 2ba174509f..d8b50232e2 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/OutputTypes/KnownParametersTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/OutputTypes/KnownParametersTests.cs @@ -6,6 +6,7 @@ using System.Linq; using System.Runtime.CompilerServices; using System.Threading; +using Microsoft.Generator.CSharp.Primitives; using NUnit.Framework; namespace Microsoft.Generator.CSharp.Tests.OutputTypes diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/OutputTypes/TypeFactoryTests.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/OutputTypes/TypeFactoryTests.cs index e0dc535e03..1165479180 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/OutputTypes/TypeFactoryTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/OutputTypes/TypeFactoryTests.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using Microsoft.Generator.CSharp.Input; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Providers; using NUnit.Framework; @@ -63,7 +64,7 @@ public override ParameterProvider CreateCSharpParam(InputParameter parameter) throw new NotImplementedException(); } - public override MethodProviderCollection? CreateMethodProviders(InputOperation operation, TypeProvider enclosingType) + public override MethodProviderCollection CreateMethodProviders(InputOperation operation, TypeProvider enclosingType) { throw new NotImplementedException(); } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Providers/EnumProviderTests.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Providers/EnumProviderTests.cs index e4f1b344a7..b8156cca39 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Providers/EnumProviderTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Providers/EnumProviderTests.cs @@ -8,6 +8,7 @@ using System.Text; using Microsoft.Generator.CSharp.Expressions; using Microsoft.Generator.CSharp.Input; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Providers; using Microsoft.Generator.CSharp.Snippets; using Moq; diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Providers/ModelProviderTests.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Providers/ModelProviderTests.cs index 78c2684b06..4709b4f4c5 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Providers/ModelProviderTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Providers/ModelProviderTests.cs @@ -7,6 +7,7 @@ using System.Linq; using System.Reflection; using Microsoft.Generator.CSharp.Input; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Providers; using Moq; using Moq.Protected; diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Providers/ParameterProviderTests.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Providers/ParameterProviderTests.cs index fb9c01b799..3ed37dc072 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Providers/ParameterProviderTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Providers/ParameterProviderTests.cs @@ -2,6 +2,7 @@ // Licensed under the MIT License. using System.Collections.Generic; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Providers; using NUnit.Framework; diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Providers/PropertyDescriptionTests.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Providers/PropertyDescriptionTests.cs index 3f5c13cb67..6c11ab38f0 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Providers/PropertyDescriptionTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Providers/PropertyDescriptionTests.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using Microsoft.Generator.CSharp.Input; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Statements; using NUnit.Framework; diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Snippets/SnippetTests.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Snippets/SnippetTests.cs index 3032deea42..7bdb16d380 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Snippets/SnippetTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Snippets/SnippetTests.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Providers; using NUnit.Framework; using static Microsoft.Generator.CSharp.Snippets.Snippet; @@ -23,7 +24,7 @@ public void ValidateFloat() public void ValidateString() { using CodeWriter writer = new CodeWriter(); - Literal("testing").Untyped.Write(writer); + Literal("testing").Expression.Write(writer); Assert.AreEqual("\"testing\"", writer.ToString(false)); } @@ -31,7 +32,7 @@ public void ValidateString() public void ValidateStringU8() { using CodeWriter writer = new CodeWriter(); - LiteralU8("testing").Untyped.Write(writer); + LiteralU8("testing").Expression.Write(writer); Assert.AreEqual("\"testing\"u8", writer.ToString(false)); } @@ -39,7 +40,7 @@ public void ValidateStringU8() public void ValidateDictionary() { using CodeWriter writer = new CodeWriter(); - New.Dictionary(typeof(string), typeof(int)).Untyped.Write(writer); + New.Dictionary(typeof(string), typeof(int)).Expression.Write(writer); Assert.AreEqual("new global::System.Collections.Generic.Dictionary()", writer.ToString(false)); } @@ -51,7 +52,7 @@ public void ValidateDictionaryWithValues() { { Literal("x"), Literal(1) }, { Literal("y"), Literal(2) } - }).Untyped.Write(writer); + }).Expression.Write(writer); Assert.AreEqual(Helpers.GetExpectedFromFile(), writer.ToString(false)); } @@ -129,7 +130,7 @@ public void ValidateFrameworkInstance() { { Identifier("X"), Literal(100) }, { Identifier("Y"), Literal(200) } - }).Untyped.Write(writer); + }).Expression.Write(writer); Assert.AreEqual(Helpers.GetExpectedFromFile(), writer.ToString(false)); } @@ -137,7 +138,7 @@ public void ValidateFrameworkInstance() public void ValidateFrameworkInstanceWithArguments() { using CodeWriter writer = new CodeWriter(); - New.Instance(typeof(TestClass), [Literal(20)]).Untyped.Write(writer); + New.Instance(typeof(TestClass), [Literal(20)]).Expression.Write(writer); Assert.AreEqual("new global::Microsoft.Generator.CSharp.Tests.Snippets.TestClass(20)", writer.ToString(false)); } diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Statements/StatementTests.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Statements/StatementTests.cs index 163c40601a..d11a4668b7 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Statements/StatementTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Statements/StatementTests.cs @@ -6,8 +6,8 @@ using System.IO; using System.Linq; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Providers; -using Microsoft.Generator.CSharp.Snippets; using Microsoft.Generator.CSharp.Statements; using Moq; using NUnit.Framework; @@ -32,9 +32,9 @@ public void Setup() [Test] public void CreateForStatement() { - var assignment = new AssignmentExpression(new DeclarationExpression(new CSharpType(typeof(BinaryData)), "responseParamName"), new ValueExpression()); - var condition = new BoolSnippet(BoolSnippet.True); - var increment = new ValueExpression(); + var assignment = new AssignmentExpression(new DeclarationExpression(new CSharpType(typeof(BinaryData)), "responseParamName"), ValueExpression.Empty); + var condition = True; + var increment = ValueExpression.Empty; var forStatement = new ForStatement(assignment, condition, increment); Assert.NotNull(forStatement); @@ -44,9 +44,9 @@ public void CreateForStatement() [Test] public void ForStatementWithAddMethod() { - var assignment = new AssignmentExpression(new DeclarationExpression(new CSharpType(typeof(BinaryData)), "responseParamName"), new ValueExpression()); - var condition = new BoolSnippet(BoolSnippet.True); - var increment = new ValueExpression(); + var assignment = new AssignmentExpression(new DeclarationExpression(new CSharpType(typeof(BinaryData)), "responseParamName"), ValueExpression.Empty); + var condition = True; + var increment = ValueExpression.Empty; var forStatement = new ForStatement(assignment, condition, increment); var statementToAdd = new MethodBodyStatement(); @@ -62,7 +62,7 @@ public void CreateForeachStatement() { var itemType = new CSharpType(typeof(int)); var itemName = "item"; - var enumerable = new ValueExpression(); + var enumerable = ValueExpression.Empty; var foreachStatement = new ForeachStatement(itemType, itemName, enumerable, isAsync: false, out var itemReference); @@ -79,7 +79,7 @@ public void CreateForeachStatement() [Test] public void ForeachStatementWithAddMethod() { - var foreachStatement = new ForeachStatement(new CSharpType(typeof(int)), "item", new ValueExpression(), isAsync: false, out var itemReference); + var foreachStatement = new ForeachStatement(new CSharpType(typeof(int)), "item", ValueExpression.Empty, isAsync: false, out var itemReference); var statementToAdd = new MethodBodyStatement(); foreachStatement.Add(statementToAdd); @@ -92,18 +92,19 @@ public void ForeachStatementWithAddMethod() [Test] public void IfStatementWithBoolExpression() { - var condition = new BoolSnippet(BoolSnippet.True); + var condition = True; var ifStatement = new IfStatement(condition); - Assert.NotNull(ifStatement); - Assert.AreEqual(condition.Untyped, ifStatement.Condition); - Assert.NotNull(ifStatement.Body); + using var writer = new CodeWriter(); + ifStatement.Write(writer); + + Assert.AreEqual(Helpers.GetExpectedFromFile(), writer.ToString(false)); } [Test] public void IfStatementWithAddMethod() { - var ifStatement = new IfStatement(BoolSnippet.True); + var ifStatement = new IfStatement(True); var statementToAdd = new MethodBodyStatement(); ifStatement.Add(statementToAdd); @@ -116,7 +117,7 @@ public void IfStatementWithAddMethod() [Test] public void IfStatementWithDefaultOptions() { - var condition = new BoolSnippet(BoolSnippet.True); + var condition = True; var ifStatement = new IfStatement(condition); Assert.IsFalse(ifStatement.Inline); @@ -126,7 +127,7 @@ public void IfStatementWithDefaultOptions() [Test] public void IfStatementInlineOptionTrue() { - var condition = new BoolSnippet(BoolSnippet.True); + var condition = True; var ifStatement = new IfStatement(condition, inline: true); Assert.IsTrue(ifStatement.Inline); @@ -135,7 +136,7 @@ public void IfStatementInlineOptionTrue() [Test] public void IfStatementAddBracesOptionFalse() { - var condition = new BoolSnippet(BoolSnippet.True); + var condition = True; var ifStatement = new IfStatement(condition, addBraces: false); Assert.IsFalse(ifStatement.AddBraces); @@ -144,40 +145,40 @@ public void IfStatementAddBracesOptionFalse() [Test] public void IfElseStatementWithIfAndElse() { - var condition = new BoolSnippet(BoolSnippet.True); + var condition = True; var elseStatement = new MethodBodyStatement(); var ifElseStatement = new IfElseStatement(new IfStatement(condition), elseStatement); - Assert.NotNull(ifElseStatement); - Assert.NotNull(ifElseStatement.If); - Assert.AreEqual(condition.Untyped, ifElseStatement.If.Condition); - Assert.AreEqual(elseStatement, ifElseStatement.Else); + using var writer = new CodeWriter(); + ifElseStatement.Write(writer); + + Assert.AreEqual(Helpers.GetExpectedFromFile(), writer.ToString(false)); } [Test] public void IfElseStatementWithConditionAndStatements() { - var condition = new BoolSnippet(BoolSnippet.True); + var condition = True; var ifStatement = new MethodBodyStatement(); var elseStatement = new MethodBodyStatement(); var ifElseStatement = new IfElseStatement(condition, ifStatement, elseStatement); - Assert.NotNull(ifElseStatement); - Assert.NotNull(ifElseStatement.If); - Assert.AreEqual(condition.Untyped, ifElseStatement.If.Condition); - Assert.AreEqual(elseStatement, ifElseStatement.Else); + using var writer = new CodeWriter(); + ifElseStatement.Write(writer); + + Assert.AreEqual(Helpers.GetExpectedFromFile(), writer.ToString(false)); } [Test] public void SwitchStatementWithSingleCase() { - var matchExpression = new ValueExpression(); + var matchExpression = ValueExpression.Empty; var switchStatement = new SwitchStatement(matchExpression); var caseStatement = new MethodBodyStatement(); - var switchCase = new SwitchCaseStatement(new ValueExpression(), caseStatement); + var switchCase = new SwitchCaseStatement(ValueExpression.Empty, caseStatement); switchStatement.Add(switchCase); @@ -188,13 +189,13 @@ public void SwitchStatementWithSingleCase() [Test] public void SwitchStatementWithMultipleCases() { - var matchExpression = new ValueExpression(); + var matchExpression = ValueExpression.Empty; var switchStatement = new SwitchStatement(matchExpression); var caseStatements = new List { - new SwitchCaseStatement(new ValueExpression(), new MethodBodyStatement()), - new SwitchCaseStatement(new ValueExpression(), new MethodBodyStatement()) + new SwitchCaseStatement(ValueExpression.Empty, new MethodBodyStatement()), + new SwitchCaseStatement(ValueExpression.Empty, new MethodBodyStatement()) }; foreach (var switchCase in caseStatements) @@ -208,13 +209,13 @@ public void SwitchStatementWithMultipleCases() [Test] public void SwitchStatementEnumeratingCases() { - var matchExpression = new ValueExpression(); + var matchExpression = ValueExpression.Empty; var switchStatement = new SwitchStatement(matchExpression); var caseStatements = new List { - new SwitchCaseStatement(new ValueExpression(), new MethodBodyStatement()), - new SwitchCaseStatement(new ValueExpression(), new MethodBodyStatement()) + new SwitchCaseStatement(ValueExpression.Empty, new MethodBodyStatement()), + new SwitchCaseStatement(ValueExpression.Empty, new MethodBodyStatement()) }; foreach (var switchCase in caseStatements) @@ -358,10 +359,12 @@ public void TryCatchFinallyStatementWithTryCatchAndFinally() public void TryCatchFinallyStatementWithMultipleCatches() { var tryStatement = new MethodBodyStatement(); + var var1 = new DeclarationExpression(typeof(UnauthorizedAccessException), "ex1"); + var var2 = new DeclarationExpression(typeof(Exception), "ex2"); var catchStatements = new[] { - new CatchExpression(null, new MethodBodyStatement()), - new CatchExpression(null, new MethodBodyStatement()) + new CatchExpression(var1, new MethodBodyStatement()), + new CatchExpression(var2, new MethodBodyStatement()) }; var finallyStatement = new MethodBodyStatement(); var tryCatchFinally = new TryCatchFinallyStatement(tryStatement, catchStatements, finallyStatement); @@ -369,6 +372,26 @@ public void TryCatchFinallyStatementWithMultipleCatches() Assert.AreEqual(tryStatement, tryCatchFinally.Try); CollectionAssert.AreEqual(catchStatements, tryCatchFinally.Catches); Assert.AreEqual(finallyStatement, tryCatchFinally.Finally); + + var mockTypeProvider = new Mock(); + + // Create a method declaration statement + var method = new MethodProvider( + new MethodSignature( + Name: "Foo", + Modifiers: MethodSignatureModifiers.Public, + ReturnType: new CSharpType(typeof(bool)), + Parameters: [], + Description: null, ReturnDescription: null), + new MethodBodyStatement[] { tryCatchFinally }, + mockTypeProvider.Object); + + // Verify the expected behavior + using var writer = new CodeWriter(); + writer.WriteMethod(method); + var expectedResult = Helpers.GetExpectedFromFile(); + var test = writer.ToString(false); + Assert.AreEqual(expectedResult, test); } [Test] diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Statements/TestData/StatementTests/IfElseStatementWithConditionAndStatements.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Statements/TestData/StatementTests/IfElseStatementWithConditionAndStatements.cs new file mode 100644 index 0000000000..948dd3246c --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Statements/TestData/StatementTests/IfElseStatementWithConditionAndStatements.cs @@ -0,0 +1,6 @@ +if (true) +{ +} +else +{ +} diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Statements/TestData/StatementTests/IfElseStatementWithIfAndElse.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Statements/TestData/StatementTests/IfElseStatementWithIfAndElse.cs new file mode 100644 index 0000000000..948dd3246c --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Statements/TestData/StatementTests/IfElseStatementWithIfAndElse.cs @@ -0,0 +1,6 @@ +if (true) +{ +} +else +{ +} diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Statements/TestData/StatementTests/IfStatementWithBoolExpression.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Statements/TestData/StatementTests/IfStatementWithBoolExpression.cs new file mode 100644 index 0000000000..38b332c96f --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Statements/TestData/StatementTests/IfStatementWithBoolExpression.cs @@ -0,0 +1,3 @@ +if (true) +{ +} diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Statements/TestData/StatementTests/TryCatchFinallyStatementWithMultipleCatches.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Statements/TestData/StatementTests/TryCatchFinallyStatementWithMultipleCatches.cs new file mode 100644 index 0000000000..b860cccd13 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Statements/TestData/StatementTests/TryCatchFinallyStatementWithMultipleCatches.cs @@ -0,0 +1,15 @@ +public bool Foo() +{ + try + { + } + catch (global::System.UnauthorizedAccessException ex1) + { + } + catch (global::System.Exception ex2) + { + } + finally + { + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Statements/UsingScopeStatementTests.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Statements/UsingScopeStatementTests.cs index 9e7fc8f5cb..d17a878f4d 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Statements/UsingScopeStatementTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Statements/UsingScopeStatementTests.cs @@ -2,6 +2,7 @@ // Licensed under the MIT License. using System.IO; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Statements; using NUnit.Framework; using static Microsoft.Generator.CSharp.Snippets.Snippet; diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/TypedSnippets/TypedSnippetsTests.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/TypedSnippets/TypedSnippetsTests.cs index 1ae907e637..6e2961640e 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/TypedSnippets/TypedSnippetsTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/TypedSnippets/TypedSnippetsTests.cs @@ -4,9 +4,9 @@ using System; using System.IO; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Providers; using Microsoft.Generator.CSharp.Snippets; -using Moq; using NUnit.Framework; namespace Microsoft.Generator.CSharp.Tests.Snippets diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Writers/CodeScopeTests.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Writers/CodeScopeTests.cs index 3df04423b8..cd7a944357 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Writers/CodeScopeTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Writers/CodeScopeTests.cs @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +using Microsoft.Generator.CSharp.Primitives; using NUnit.Framework; namespace Microsoft.Generator.CSharp.Tests.Writers diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Writers/CodeWriterTests.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Writers/CodeWriterTests.cs index 4e7d1f5acf..6d307e0e71 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Writers/CodeWriterTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Writers/CodeWriterTests.cs @@ -7,6 +7,7 @@ using System.Linq; using System.Text; using Microsoft.Generator.CSharp.Expressions; +using Microsoft.Generator.CSharp.Primitives; using Microsoft.Generator.CSharp.Providers; using Microsoft.Generator.CSharp.Statements; using NUnit.Framework; @@ -279,8 +280,8 @@ public void CodeWriter_WriteProperty_ExpressionBody_WithExplicitInterface() public void CodeWriter_WriteProperty_MethodPropertyBody() { var property1 = new PropertyProvider($"To test an auto property without a setter", MethodSignatureModifiers.Public, typeof(string), "Property1", new MethodPropertyBody(Return(Literal("abc")))); - var property2 = new PropertyProvider($"To test an auto property with a setter", MethodSignatureModifiers.Public, typeof(string), "Property2", new MethodPropertyBody(Return(Literal("abc")), This.Property("Property2").Assign(new KeywordExpression("value", null)).Terminate())); - var property3 = new PropertyProvider($"To test an auto property with an internal setter", MethodSignatureModifiers.Public, typeof(string), "Property3", new MethodPropertyBody(Return(Literal("abc")), This.Property("Property3").Assign(new KeywordExpression("value", null)).Terminate(), MethodSignatureModifiers.Internal)); + var property2 = new PropertyProvider($"To test an auto property with a setter", MethodSignatureModifiers.Public, typeof(string), "Property2", new MethodPropertyBody(Return(Literal("abc")), This.Property("Property2").Assign(Value).Terminate())); + var property3 = new PropertyProvider($"To test an auto property with an internal setter", MethodSignatureModifiers.Public, typeof(string), "Property3", new MethodPropertyBody(Return(Literal("abc")), This.Property("Property3").Assign(Value).Terminate(), MethodSignatureModifiers.Internal)); using var codeWriter = new CodeWriter(); codeWriter.WriteProperty(property1); @@ -299,8 +300,8 @@ public void CodeWriter_WriteProperty_MethodPropertyBody() public void CodeWriter_WriteProperty_MethodPropertyBody_WithExplicitInterface() { var property1 = new PropertyProvider($"To test an auto property without a setter", MethodSignatureModifiers.Public, typeof(int), nameof(IList.Count), new MethodPropertyBody(Return(Literal(299792458))), explicitInterface: typeof(IList)); - var property2 = new PropertyProvider($"To test an auto property with a setter", MethodSignatureModifiers.Public, typeof(bool), nameof(IList.IsReadOnly), new MethodPropertyBody(Return(True), This.Property($"{nameof(IList.IsReadOnly)}").Assign(new KeywordExpression("value", null)).Terminate()), explicitInterface: typeof(IList)); - var property3 = new PropertyProvider($"To test an auto property with an internal setter", MethodSignatureModifiers.Public, typeof(int), nameof(IReadOnlyList.Count), new MethodPropertyBody(Return(Literal(299792458)), This.Property($"{nameof(IReadOnlyList.Count)}").Assign(new KeywordExpression("value", null)).Terminate(), MethodSignatureModifiers.Internal), explicitInterface: typeof(IReadOnlyList)); + var property2 = new PropertyProvider($"To test an auto property with a setter", MethodSignatureModifiers.Public, typeof(bool), nameof(IList.IsReadOnly), new MethodPropertyBody(Return(True), This.Property($"{nameof(IList.IsReadOnly)}").Assign(Value).Terminate()), explicitInterface: typeof(IList)); + var property3 = new PropertyProvider($"To test an auto property with an internal setter", MethodSignatureModifiers.Public, typeof(int), nameof(IReadOnlyList.Count), new MethodPropertyBody(Return(Literal(299792458)), This.Property($"{nameof(IReadOnlyList.Count)}").Assign(Value).Terminate(), MethodSignatureModifiers.Internal), explicitInterface: typeof(IReadOnlyList)); using var codeWriter = new CodeWriter(); codeWriter.WriteProperty(property1); @@ -408,9 +409,9 @@ public void CodeWriter_WriteProperty_IndexerProperty_MethodPropertyBody() var p1 = new ParameterProvider("p1", $"p1", typeof(int), null); var indexer1 = new IndexerProvider($"To test a method property without a setter", MethodSignatureModifiers.Public, typeof(string), p1, new MethodPropertyBody(Return(Literal("abc")))); var p2 = new ParameterProvider("p2", $"p2", typeof(int), null); - var indexer2 = new IndexerProvider($"To test a method property with a setter", MethodSignatureModifiers.Public, typeof(string), p2, new MethodPropertyBody(Return(Literal("abc")), This.Property($"Property2").Assign(new KeywordExpression("value", null)).Terminate())); + var indexer2 = new IndexerProvider($"To test a method property with a setter", MethodSignatureModifiers.Public, typeof(string), p2, new MethodPropertyBody(Return(Literal("abc")), This.Property($"Property2").Assign(Value).Terminate())); var p3 = new ParameterProvider("p3", $"p3", typeof(int), null); - var indexer3 = new IndexerProvider($"To test a method property with an internal setter", MethodSignatureModifiers.Public, typeof(string), p3, new MethodPropertyBody(Return(Literal("abc")), This.Property($"Property3").Assign(new KeywordExpression("value", null)).Terminate(), MethodSignatureModifiers.Internal)); + var indexer3 = new IndexerProvider($"To test a method property with an internal setter", MethodSignatureModifiers.Public, typeof(string), p3, new MethodPropertyBody(Return(Literal("abc")), This.Property($"Property3").Assign(Value).Terminate(), MethodSignatureModifiers.Internal)); using var codeWriter = new CodeWriter(); codeWriter.WriteProperty(indexer1); @@ -430,8 +431,8 @@ public void CodeWriter_WriteProperty_IndexerProperty_MethodPropertyBody_WithExpl { var index = new ParameterProvider("index", $"index", typeof(int), null); var indexer1 = new IndexerProvider($"To test a method property without a setter", MethodSignatureModifiers.Public, typeof(string), index, new MethodPropertyBody(Return(Literal("abc"))), explicitInterface: typeof(IReadOnlyList)); - var indexer2 = new IndexerProvider($"To test a method property with a setter", MethodSignatureModifiers.Public, typeof(string), index, new MethodPropertyBody(Return(Literal("abc")), This.Property($"Property2").Assign(new KeywordExpression("value", null)).Terminate()), explicitInterface: typeof(IList)); - var indexer3 = new IndexerProvider($"To test a method property with an internal setter", MethodSignatureModifiers.Public, typeof(string), index, new MethodPropertyBody(Return(Literal("abc")), This.Property($"Property3").Assign(new KeywordExpression("value", null)).Terminate(), MethodSignatureModifiers.Internal), explicitInterface: typeof(IReadOnlyDictionary)); + var indexer2 = new IndexerProvider($"To test a method property with a setter", MethodSignatureModifiers.Public, typeof(string), index, new MethodPropertyBody(Return(Literal("abc")), This.Property($"Property2").Assign(Value).Terminate()), explicitInterface: typeof(IList)); + var indexer3 = new IndexerProvider($"To test a method property with an internal setter", MethodSignatureModifiers.Public, typeof(string), index, new MethodPropertyBody(Return(Literal("abc")), This.Property($"Property3").Assign(Value).Terminate(), MethodSignatureModifiers.Internal), explicitInterface: typeof(IReadOnlyDictionary)); using var codeWriter = new CodeWriter(); codeWriter.WriteProperty(indexer1); diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Writers/TypeProviderWriterTests.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Writers/TypeProviderWriterTests.cs index d05cb2bf8f..b9dc1ac9ea 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Writers/TypeProviderWriterTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp/test/Writers/TypeProviderWriterTests.cs @@ -2,15 +2,16 @@ // Licensed under the MIT License. using System; -using Microsoft.Generator.CSharp.Input; using System.Collections.Generic; -using Microsoft.Generator.CSharp.Providers; -using Moq; -using NUnit.Framework; -using System.Reflection; using System.IO; using System.Linq; +using System.Reflection; +using Microsoft.Generator.CSharp.Input; +using Microsoft.Generator.CSharp.Primitives; +using Microsoft.Generator.CSharp.Providers; +using Moq; using Moq.Protected; +using NUnit.Framework; namespace Microsoft.Generator.CSharp.Tests.Writers { @@ -62,7 +63,7 @@ public void TypeProviderWriter_WriteModel() var properties = new List { RequiredStringProperty, RequiredIntProperty }; MockPluginSetValue(properties); - var inputModel = new InputModelType("TestModel", null, "public", null, "Test model.", InputModelTypeUsage.RoundTrip, + var inputModel = new InputModelType("TestModel", string.Empty, "public", null, "Test model.", InputModelTypeUsage.RoundTrip, properties, null, new List(), null, null, new Dictionary(), null, false); var modelProvider = new ModelProvider(inputModel); @@ -80,7 +81,7 @@ public void TypeProviderWriter_WriteModelAsStruct() var properties = new List { RequiredStringProperty, RequiredIntProperty }; MockPluginSetValue(properties); - var inputModel = new InputModelType("TestModel", null, "public", null, "Test model.", InputModelTypeUsage.RoundTrip, + var inputModel = new InputModelType("TestModel", string.Empty, "public", null, "Test model.", InputModelTypeUsage.RoundTrip, properties, null, new List(), null, null, new Dictionary(), null, modelAsStruct: true); var modelProvider = new ModelProvider(inputModel); diff --git a/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/Internal/ClientPipelineExtensions.cs b/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/Internal/ClientPipelineExtensions.cs new file mode 100644 index 0000000000..6ed3aa6f71 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/Internal/ClientPipelineExtensions.cs @@ -0,0 +1,67 @@ +// + +#nullable disable + +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Threading.Tasks; + +namespace UnbrandedTypeSpec +{ + internal static partial class ClientPipelineExtensions + { + public static async ValueTask ProcessMessageAsync(this ClientPipeline pipeline, PipelineMessage message, RequestOptions options) + { + await pipeline.SendAsync(message).ConfigureAwait(false); + + if (message.Response.IsError && (options?.ErrorOptions & ClientErrorBehaviors.NoThrow) != ClientErrorBehaviors.NoThrow) + { + throw await ClientResultException.CreateAsync(message.Response).ConfigureAwait(false); + } + + PipelineResponse response = message.BufferResponse ? message.Response : message.ExtractResponse(); + return response; + } + + public static PipelineResponse ProcessMessage(this ClientPipeline pipeline, PipelineMessage message, RequestOptions options) + { + pipeline.Send(message); + + if (message.Response.IsError && (options?.ErrorOptions & ClientErrorBehaviors.NoThrow) != ClientErrorBehaviors.NoThrow) + { + throw new ClientResultException(message.Response); + } + + PipelineResponse response = message.BufferResponse ? message.Response : message.ExtractResponse(); + return response; + } + + public static async ValueTask> ProcessHeadAsBoolMessageAsync(this ClientPipeline pipeline, PipelineMessage message, RequestOptions options) + { + PipelineResponse response = await pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false); + switch (response.Status) + { + case >= 200 and < 300: + return ClientResult.FromValue(true, response); + case >= 400 and < 500: + return ClientResult.FromValue(false, response); + default: + return new ErrorResult(response, new ClientResultException(response)); + } + } + + public static ClientResult ProcessHeadAsBoolMessage(this ClientPipeline pipeline, PipelineMessage message, RequestOptions options) + { + PipelineResponse response = pipeline.ProcessMessage(message, options); + switch (response.Status) + { + case >= 200 and < 300: + return ClientResult.FromValue(true, response); + case >= 400 and < 500: + return ClientResult.FromValue(false, response); + default: + return new ErrorResult(response, new ClientResultException(response)); + } + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/Internal/ClientUriBuilder.cs b/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/Internal/ClientUriBuilder.cs new file mode 100644 index 0000000000..8d913b556b --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/Internal/ClientUriBuilder.cs @@ -0,0 +1,134 @@ +// + +#nullable disable + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace UnbrandedTypeSpec +{ + internal partial class ClientUriBuilder + { + private UriBuilder _uriBuilder; + private StringBuilder _pathBuilder; + private StringBuilder _queryBuilder; + + public ClientUriBuilder() + { + } + + /// Gets the uribuilder. + private UriBuilder UriBuilder => _uriBuilder ??= new UriBuilder(); + + /// Gets the pathbuilder. + private StringBuilder PathBuilder => _pathBuilder ??= new StringBuilder(UriBuilder.Path); + + /// Gets the querybuilder. + private StringBuilder QueryBuilder => _queryBuilder ??= new StringBuilder(UriBuilder.Query); + + public void Reset(Uri uri) + { + _uriBuilder = new UriBuilder(uri); + _pathBuilder = new StringBuilder(UriBuilder.Path); + _queryBuilder = new StringBuilder(UriBuilder.Query); + } + + public void AppendPath(string value, bool escape) + { + if (escape) + { + value = Uri.EscapeDataString(value); + } + if (PathBuilder.Length > 0 && PathBuilder[PathBuilder.Length - 1] == '/' && value[0] == '/') + { + PathBuilder.Remove(PathBuilder.Length - 1, 1); + } + PathBuilder.Append(value); + UriBuilder.Path = PathBuilder.ToString(); + } + + public void AppendPath(bool value, bool escape = false) => AppendPath(TypeFormatters.ConvertToString(value), escape); + + public void AppendPath(float value, bool escape = true) => AppendPath(TypeFormatters.ConvertToString(value), escape); + + public void AppendPath(double value, bool escape = true) => AppendPath(TypeFormatters.ConvertToString(value), escape); + + public void AppendPath(int value, bool escape = true) => AppendPath(TypeFormatters.ConvertToString(value), escape); + + public void AppendPath(byte[] value, string format, bool escape = true) => AppendPath(TypeFormatters.ConvertToString(value, format), escape); + + public void AppendPath(IEnumerable value, bool escape = true) => AppendPath(TypeFormatters.ConvertToString(value), escape); + + public void AppendPath(DateTimeOffset value, string format, bool escape = true) => AppendPath(TypeFormatters.ConvertToString(value, format), escape); + + public void AppendPath(TimeSpan value, string format, bool escape = true) => AppendPath(TypeFormatters.ConvertToString(value, format), escape); + + public void AppendPath(Guid value, bool escape = true) => AppendPath(TypeFormatters.ConvertToString(value), escape); + + public void AppendPath(long value, bool escape = true) => AppendPath(TypeFormatters.ConvertToString(value), escape); + + public void AppendQuery(string name, string value, bool escape) + { + if (QueryBuilder.Length > 0) + { + QueryBuilder.Append('&'); + } + if (escape) + { + value = Uri.EscapeDataString(value); + } + QueryBuilder.Append(name); + QueryBuilder.Append('='); + QueryBuilder.Append(value); + } + + public void AppendQuery(string name, bool value, bool escape = false) => AppendQuery(name, TypeFormatters.ConvertToString(value), escape); + + public void AppendQuery(string name, float value, bool escape = true) => AppendQuery(name, TypeFormatters.ConvertToString(value), escape); + + public void AppendQuery(string name, DateTimeOffset value, string format, bool escape = true) => AppendQuery(name, TypeFormatters.ConvertToString(value, format), escape); + + public void AppendQuery(string name, TimeSpan value, string format, bool escape = true) => AppendQuery(name, TypeFormatters.ConvertToString(value, format), escape); + + public void AppendQuery(string name, double value, bool escape = true) => AppendQuery(name, TypeFormatters.ConvertToString(value), escape); + + public void AppendQuery(string name, decimal value, bool escape = true) => AppendQuery(name, TypeFormatters.ConvertToString(value), escape); + + public void AppendQuery(string name, int value, bool escape = true) => AppendQuery(name, TypeFormatters.ConvertToString(value), escape); + + public void AppendQuery(string name, long value, bool escape = true) => AppendQuery(name, TypeFormatters.ConvertToString(value), escape); + + public void AppendQuery(string name, TimeSpan value, bool escape = true) => AppendQuery(name, TypeFormatters.ConvertToString(value), escape); + + public void AppendQuery(string name, byte[] value, string format, bool escape = true) => AppendQuery(name, TypeFormatters.ConvertToString(value, format), escape); + + public void AppendQuery(string name, Guid value, bool escape = true) => AppendQuery(name, TypeFormatters.ConvertToString(value), escape); + + public void AppendQueryDelimited(string name, IEnumerable value, string delimiter, bool escape = true) + { + IEnumerable stringValues = value.Select(v => TypeFormatters.ConvertToString(v)); + AppendQuery(name, string.Join(delimiter, stringValues), escape); + } + + public void AppendQueryDelimited(string name, IEnumerable value, string delimiter, string format, bool escape = true) + { + IEnumerable stringValues = value.Select(v => TypeFormatters.ConvertToString(v, format)); + AppendQuery(name, string.Join(delimiter, stringValues), escape); + } + + public Uri ToUri() + { + if (_pathBuilder != null) + { + UriBuilder.Path = _pathBuilder.ToString(); + } + if (_queryBuilder != null) + { + UriBuilder.Query = _queryBuilder.ToString(); + } + return UriBuilder.Uri; + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/Internal/ErrorResult.cs b/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/Internal/ErrorResult.cs new file mode 100644 index 0000000000..a79e6b98e1 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/Internal/ErrorResult.cs @@ -0,0 +1,24 @@ +// + +#nullable disable + +using System.ClientModel; +using System.ClientModel.Primitives; + +namespace UnbrandedTypeSpec +{ + internal partial class ErrorResult : ClientResult + { + private readonly PipelineResponse _response; + private readonly ClientResultException _exception; + + public ErrorResult(PipelineResponse response, ClientResultException exception): base(default, response) + { + _response = response; + _exception = exception; + } + + /// Gets the value. + public override T Value => throw _exception; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/Models/Friend.Serialization.cs b/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/Models/Friend.Serialization.cs index c5ba2fa86b..1c2605d6a8 100644 --- a/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/Models/Friend.Serialization.cs +++ b/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/Models/Friend.Serialization.cs @@ -3,6 +3,7 @@ #nullable disable using System; +using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; using System.Text.Json; @@ -64,9 +65,19 @@ Friend IJsonModel.Create(ref Utf8JsonReader reader, ModelReaderWriterOpt throw new NotImplementedException("Not implemented"); } - BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) => PersistableModelWriteCore(options); + + /// The client options for reading and writing models. + protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options) { - throw new NotImplementedException("Not implemented"); + string format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; + switch (format) + { + case "J": + return ModelReaderWriter.Write(this, options); + default: + throw new FormatException($"The model {nameof(Friend)} does not support writing '{options.Format}' format."); + } } Friend IPersistableModel.Create(BinaryData data, ModelReaderWriterOptions options) @@ -75,5 +86,17 @@ Friend IPersistableModel.Create(BinaryData data, ModelReaderWriterOption } string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => "J"; + + /// The to serialize into . + public static implicit operator BinaryContent(Friend friend) + { + throw new NotImplementedException("Not implemented"); + } + + /// The to deserialize the from. + public static explicit operator Friend(ClientResult result) + { + throw new NotImplementedException("Not implemented"); + } } } diff --git a/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/Models/ModelWithRequiredNullableProperties.Serialization.cs b/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/Models/ModelWithRequiredNullableProperties.Serialization.cs index b16901be3c..0cddb6dcf1 100644 --- a/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/Models/ModelWithRequiredNullableProperties.Serialization.cs +++ b/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/Models/ModelWithRequiredNullableProperties.Serialization.cs @@ -3,6 +3,7 @@ #nullable disable using System; +using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; using System.Text.Json; @@ -91,9 +92,19 @@ ModelWithRequiredNullableProperties IJsonModel.Write(ModelReaderWriterOptions options) + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) => PersistableModelWriteCore(options); + + /// The client options for reading and writing models. + protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options) { - throw new NotImplementedException("Not implemented"); + string format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; + switch (format) + { + case "J": + return ModelReaderWriter.Write(this, options); + default: + throw new FormatException($"The model {nameof(ModelWithRequiredNullableProperties)} does not support writing '{options.Format}' format."); + } } ModelWithRequiredNullableProperties IPersistableModel.Create(BinaryData data, ModelReaderWriterOptions options) @@ -102,5 +113,17 @@ ModelWithRequiredNullableProperties IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => "J"; + + /// The to serialize into . + public static implicit operator BinaryContent(ModelWithRequiredNullableProperties modelWithRequiredNullableProperties) + { + throw new NotImplementedException("Not implemented"); + } + + /// The to deserialize the from. + public static explicit operator ModelWithRequiredNullableProperties(ClientResult result) + { + throw new NotImplementedException("Not implemented"); + } } } diff --git a/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/Models/ProjectedModel.Serialization.cs b/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/Models/ProjectedModel.Serialization.cs index d20a15408c..ec7ca059dc 100644 --- a/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/Models/ProjectedModel.Serialization.cs +++ b/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/Models/ProjectedModel.Serialization.cs @@ -3,6 +3,7 @@ #nullable disable using System; +using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; using System.Text.Json; @@ -64,9 +65,19 @@ ProjectedModel IJsonModel.Create(ref Utf8JsonReader reader, Mode throw new NotImplementedException("Not implemented"); } - BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) => PersistableModelWriteCore(options); + + /// The client options for reading and writing models. + protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options) { - throw new NotImplementedException("Not implemented"); + string format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; + switch (format) + { + case "J": + return ModelReaderWriter.Write(this, options); + default: + throw new FormatException($"The model {nameof(ProjectedModel)} does not support writing '{options.Format}' format."); + } } ProjectedModel IPersistableModel.Create(BinaryData data, ModelReaderWriterOptions options) @@ -75,5 +86,17 @@ ProjectedModel IPersistableModel.Create(BinaryData data, ModelRe } string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => "J"; + + /// The to serialize into . + public static implicit operator BinaryContent(ProjectedModel projectedModel) + { + throw new NotImplementedException("Not implemented"); + } + + /// The to deserialize the from. + public static explicit operator ProjectedModel(ClientResult result) + { + throw new NotImplementedException("Not implemented"); + } } } diff --git a/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/Models/ReturnsAnonymousModelResponse.Serialization.cs b/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/Models/ReturnsAnonymousModelResponse.Serialization.cs index 854d06391f..a93a277855 100644 --- a/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/Models/ReturnsAnonymousModelResponse.Serialization.cs +++ b/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/Models/ReturnsAnonymousModelResponse.Serialization.cs @@ -3,6 +3,7 @@ #nullable disable using System; +using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; using System.Text.Json; @@ -57,9 +58,19 @@ ReturnsAnonymousModelResponse IJsonModel.Create(r throw new NotImplementedException("Not implemented"); } - BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) => PersistableModelWriteCore(options); + + /// The client options for reading and writing models. + protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options) { - throw new NotImplementedException("Not implemented"); + string format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; + switch (format) + { + case "J": + return ModelReaderWriter.Write(this, options); + default: + throw new FormatException($"The model {nameof(ReturnsAnonymousModelResponse)} does not support writing '{options.Format}' format."); + } } ReturnsAnonymousModelResponse IPersistableModel.Create(BinaryData data, ModelReaderWriterOptions options) @@ -68,5 +79,17 @@ ReturnsAnonymousModelResponse IPersistableModel.C } string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => "J"; + + /// The to serialize into . + public static implicit operator BinaryContent(ReturnsAnonymousModelResponse returnsAnonymousModelResponse) + { + throw new NotImplementedException("Not implemented"); + } + + /// The to deserialize the from. + public static explicit operator ReturnsAnonymousModelResponse(ClientResult result) + { + throw new NotImplementedException("Not implemented"); + } } } diff --git a/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/Models/RoundTripModel.Serialization.cs b/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/Models/RoundTripModel.Serialization.cs index 9e0a8d11fe..c54a72a4f7 100644 --- a/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/Models/RoundTripModel.Serialization.cs +++ b/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/Models/RoundTripModel.Serialization.cs @@ -3,6 +3,7 @@ #nullable disable using System; +using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; using System.Text.Json; @@ -275,9 +276,19 @@ RoundTripModel IJsonModel.Create(ref Utf8JsonReader reader, Mode throw new NotImplementedException("Not implemented"); } - BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) => PersistableModelWriteCore(options); + + /// The client options for reading and writing models. + protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options) { - throw new NotImplementedException("Not implemented"); + string format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; + switch (format) + { + case "J": + return ModelReaderWriter.Write(this, options); + default: + throw new FormatException($"The model {nameof(RoundTripModel)} does not support writing '{options.Format}' format."); + } } RoundTripModel IPersistableModel.Create(BinaryData data, ModelReaderWriterOptions options) @@ -286,5 +297,17 @@ RoundTripModel IPersistableModel.Create(BinaryData data, ModelRe } string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => "J"; + + /// The to serialize into . + public static implicit operator BinaryContent(RoundTripModel roundTripModel) + { + throw new NotImplementedException("Not implemented"); + } + + /// The to deserialize the from. + public static explicit operator RoundTripModel(ClientResult result) + { + throw new NotImplementedException("Not implemented"); + } } } diff --git a/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/Models/Thing.Serialization.cs b/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/Models/Thing.Serialization.cs index 5612767697..835cf519ee 100644 --- a/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/Models/Thing.Serialization.cs +++ b/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/Models/Thing.Serialization.cs @@ -3,6 +3,7 @@ #nullable disable using System; +using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; using System.Text.Json; @@ -135,9 +136,19 @@ Thing IJsonModel.Create(ref Utf8JsonReader reader, ModelReaderWriterOptio throw new NotImplementedException("Not implemented"); } - BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) => PersistableModelWriteCore(options); + + /// The client options for reading and writing models. + protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options) { - throw new NotImplementedException("Not implemented"); + string format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; + switch (format) + { + case "J": + return ModelReaderWriter.Write(this, options); + default: + throw new FormatException($"The model {nameof(Thing)} does not support writing '{options.Format}' format."); + } } Thing IPersistableModel.Create(BinaryData data, ModelReaderWriterOptions options) @@ -146,5 +157,17 @@ Thing IPersistableModel.Create(BinaryData data, ModelReaderWriterOptions } string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => "J"; + + /// The to serialize into . + public static implicit operator BinaryContent(Thing thing) + { + throw new NotImplementedException("Not implemented"); + } + + /// The to deserialize the from. + public static explicit operator Thing(ClientResult result) + { + throw new NotImplementedException("Not implemented"); + } } } diff --git a/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/UnbrandedTypeSpecClient.cs b/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/UnbrandedTypeSpecClient.cs index 3ac4c09f9e..193a9fbcda 100644 --- a/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/UnbrandedTypeSpecClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/UnbrandedTypeSpecClient.cs @@ -3,6 +3,9 @@ #nullable disable using System; +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Threading.Tasks; using UnbrandedTypeSpec.Models; namespace UnbrandedTypeSpec @@ -10,94 +13,1166 @@ namespace UnbrandedTypeSpec /// public partial class UnbrandedTypeSpecClient { - internal void CreateSayHiRequest(Uri unbrandedTypeSpecUrl, string headParameter, string queryParameter, string optionalQuery, string accept) + private ClientPipeline _pipeline; + + /// This is a sample typespec project. + public UnbrandedTypeSpecClient() + { + _pipeline = ClientPipeline.Create(); + } + + internal PipelineMessage CreateSayHiRequest(string headParameter, string queryParameter, string optionalQuery, RequestOptions options) { throw new NotImplementedException("Method not implemented."); } - internal void CreateHelloAgainRequest(Uri unbrandedTypeSpecUrl, string p1, string contentType, string p2, RoundTripModel action, string accept) + /// + /// [Protocol Method] Return hi + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// + /// + /// + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// or is null. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual ClientResult SayHi(string headParameter, string queryParameter, string optionalQuery, RequestOptions options) + { + Argument.AssertNotNull(headParameter, nameof(headParameter)); + Argument.AssertNotNull(queryParameter, nameof(queryParameter)); + + using PipelineMessage message = CreateSayHiRequest(headParameter, queryParameter, optionalQuery, options); + return ClientResult.FromResponse(_pipeline.ProcessMessage(message, options)); + } + + /// + /// [Protocol Method] Return hi + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// + /// + /// + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// or is null. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual async Task SayHiAsync(string headParameter, string queryParameter, string optionalQuery, RequestOptions options) + { + Argument.AssertNotNull(headParameter, nameof(headParameter)); + Argument.AssertNotNull(queryParameter, nameof(queryParameter)); + + using PipelineMessage message = CreateSayHiRequest(headParameter, queryParameter, optionalQuery, options); + return ClientResult.FromResponse(await _pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false)); + } + + /// Return hi. + /// + /// + /// + /// or is null. + /// Service returned a non-success status code. + public virtual ClientResult SayHi(string headParameter, string queryParameter, string optionalQuery) + { + Argument.AssertNotNull(headParameter, nameof(headParameter)); + Argument.AssertNotNull(queryParameter, nameof(queryParameter)); + + return SayHi(headParameter, queryParameter, optionalQuery, null); + } + + /// Return hi. + /// + /// + /// + /// or is null. + /// Service returned a non-success status code. + public virtual async Task SayHiAsync(string headParameter, string queryParameter, string optionalQuery) + { + Argument.AssertNotNull(headParameter, nameof(headParameter)); + Argument.AssertNotNull(queryParameter, nameof(queryParameter)); + + return await SayHiAsync(headParameter, queryParameter, optionalQuery, null).ConfigureAwait(false); + } + + internal PipelineMessage CreateHelloAgainRequest(string p1, string p2, BinaryContent content, RequestOptions options) { throw new NotImplementedException("Method not implemented."); } - internal void CreateNoContentTypeRequest(Uri unbrandedTypeSpecUrl, string p1, string p2, RoundTripModel action, string accept, string contentType) + /// + /// [Protocol Method] Return hi again + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// + /// + /// The content to send as the body of the request. + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// or is null. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual ClientResult HelloAgain(string p1, string p2, BinaryContent content, RequestOptions options) + { + Argument.AssertNotNull(p1, nameof(p1)); + Argument.AssertNotNull(p2, nameof(p2)); + + using PipelineMessage message = CreateHelloAgainRequest(p1, p2, content, options); + return ClientResult.FromResponse(_pipeline.ProcessMessage(message, options)); + } + + /// + /// [Protocol Method] Return hi again + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// + /// + /// The content to send as the body of the request. + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// or is null. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual async Task HelloAgainAsync(string p1, string p2, BinaryContent content, RequestOptions options) + { + Argument.AssertNotNull(p1, nameof(p1)); + Argument.AssertNotNull(p2, nameof(p2)); + + using PipelineMessage message = CreateHelloAgainRequest(p1, p2, content, options); + return ClientResult.FromResponse(await _pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false)); + } + + /// Return hi again. + /// + /// + /// + /// , or is null. + /// Service returned a non-success status code. + public virtual ClientResult HelloAgain(string p1, string p2, RoundTripModel action) + { + Argument.AssertNotNull(p1, nameof(p1)); + Argument.AssertNotNull(p2, nameof(p2)); + Argument.AssertNotNull(action, nameof(action)); + + ClientResult result = HelloAgain(p1, p2, action, null); + return ClientResult.FromValue((RoundTripModel)result, result.GetRawResponse()); + } + + /// Return hi again. + /// + /// + /// + /// , or is null. + /// Service returned a non-success status code. + public virtual async Task HelloAgainAsync(string p1, string p2, RoundTripModel action) + { + Argument.AssertNotNull(p1, nameof(p1)); + Argument.AssertNotNull(p2, nameof(p2)); + Argument.AssertNotNull(action, nameof(action)); + + ClientResult result = await HelloAgainAsync(p1, p2, action, null).ConfigureAwait(false); + return ClientResult.FromValue((RoundTripModel)result, result.GetRawResponse()); + } + + internal PipelineMessage CreateNoContentTypeRequest(string p1, string p2, BinaryContent content, RequestOptions options) { throw new NotImplementedException("Method not implemented."); } - internal void CreateHelloDemo2Request(Uri unbrandedTypeSpecUrl, string accept) + /// + /// [Protocol Method] Return hi again + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// + /// + /// The content to send as the body of the request. + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// or is null. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual ClientResult NoContentType(string p1, string p2, BinaryContent content, RequestOptions options) + { + Argument.AssertNotNull(p1, nameof(p1)); + Argument.AssertNotNull(p2, nameof(p2)); + + using PipelineMessage message = CreateNoContentTypeRequest(p1, p2, content, options); + return ClientResult.FromResponse(_pipeline.ProcessMessage(message, options)); + } + + /// + /// [Protocol Method] Return hi again + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// + /// + /// The content to send as the body of the request. + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// or is null. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual async Task NoContentTypeAsync(string p1, string p2, BinaryContent content, RequestOptions options) + { + Argument.AssertNotNull(p1, nameof(p1)); + Argument.AssertNotNull(p2, nameof(p2)); + + using PipelineMessage message = CreateNoContentTypeRequest(p1, p2, content, options); + return ClientResult.FromResponse(await _pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false)); + } + + /// Return hi again. + /// + /// + /// + /// , or is null. + /// Service returned a non-success status code. + public virtual ClientResult NoContentType(string p1, string p2, RoundTripModel action) + { + Argument.AssertNotNull(p1, nameof(p1)); + Argument.AssertNotNull(p2, nameof(p2)); + Argument.AssertNotNull(action, nameof(action)); + + ClientResult result = NoContentType(p1, p2, action, null); + return ClientResult.FromValue((RoundTripModel)result, result.GetRawResponse()); + } + + /// Return hi again. + /// + /// + /// + /// , or is null. + /// Service returned a non-success status code. + public virtual async Task NoContentTypeAsync(string p1, string p2, RoundTripModel action) + { + Argument.AssertNotNull(p1, nameof(p1)); + Argument.AssertNotNull(p2, nameof(p2)); + Argument.AssertNotNull(action, nameof(action)); + + ClientResult result = await NoContentTypeAsync(p1, p2, action, null).ConfigureAwait(false); + return ClientResult.FromValue((RoundTripModel)result, result.GetRawResponse()); + } + + internal PipelineMessage CreateHelloDemo2Request(RequestOptions options) { throw new NotImplementedException("Method not implemented."); } - internal void CreateCreateLiteralRequest(Uri unbrandedTypeSpecUrl, Thing body, string accept, string contentType) + /// + /// [Protocol Method] Return hi in demo2 + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual ClientResult HelloDemo2(RequestOptions options) + { + using PipelineMessage message = CreateHelloDemo2Request(options); + return ClientResult.FromResponse(_pipeline.ProcessMessage(message, options)); + } + + /// + /// [Protocol Method] Return hi in demo2 + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual async Task HelloDemo2Async(RequestOptions options) + { + using PipelineMessage message = CreateHelloDemo2Request(options); + return ClientResult.FromResponse(await _pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false)); + } + + /// Return hi in demo2. + /// Service returned a non-success status code. + public virtual ClientResult HelloDemo2() + { + return HelloDemo2(null); + } + + /// Return hi in demo2. + /// Service returned a non-success status code. + public virtual async Task HelloDemo2Async() + { + return await HelloDemo2Async(null).ConfigureAwait(false); + } + + internal PipelineMessage CreateCreateLiteralRequest(BinaryContent content, RequestOptions options) { throw new NotImplementedException("Method not implemented."); } - internal void CreateHelloLiteralRequest(Uri unbrandedTypeSpecUrl, string p1, int p2, bool p3, string accept) + /// + /// [Protocol Method] Create with literal value + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// The content to send as the body of the request. + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual ClientResult CreateLiteral(BinaryContent content, RequestOptions options) + { + using PipelineMessage message = CreateCreateLiteralRequest(content, options); + return ClientResult.FromResponse(_pipeline.ProcessMessage(message, options)); + } + + /// + /// [Protocol Method] Create with literal value + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// The content to send as the body of the request. + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual async Task CreateLiteralAsync(BinaryContent content, RequestOptions options) + { + using PipelineMessage message = CreateCreateLiteralRequest(content, options); + return ClientResult.FromResponse(await _pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false)); + } + + /// Create with literal value. + /// + /// is null. + /// Service returned a non-success status code. + public virtual ClientResult CreateLiteral(Thing body) + { + Argument.AssertNotNull(body, nameof(body)); + + ClientResult result = CreateLiteral(body, null); + return ClientResult.FromValue((Thing)result, result.GetRawResponse()); + } + + /// Create with literal value. + /// + /// is null. + /// Service returned a non-success status code. + public virtual async Task CreateLiteralAsync(Thing body) + { + Argument.AssertNotNull(body, nameof(body)); + + ClientResult result = await CreateLiteralAsync(body, null).ConfigureAwait(false); + return ClientResult.FromValue((Thing)result, result.GetRawResponse()); + } + + internal PipelineMessage CreateHelloLiteralRequest(RequestOptions options) { throw new NotImplementedException("Method not implemented."); } - internal void CreateTopActionRequest(Uri unbrandedTypeSpecUrl, DateTimeOffset action, string accept) + /// + /// [Protocol Method] Send literal parameters + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual ClientResult HelloLiteral(RequestOptions options) + { + using PipelineMessage message = CreateHelloLiteralRequest(options); + return ClientResult.FromResponse(_pipeline.ProcessMessage(message, options)); + } + + /// + /// [Protocol Method] Send literal parameters + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual async Task HelloLiteralAsync(RequestOptions options) + { + using PipelineMessage message = CreateHelloLiteralRequest(options); + return ClientResult.FromResponse(await _pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false)); + } + + /// Send literal parameters. + /// Service returned a non-success status code. + public virtual ClientResult HelloLiteral() + { + return HelloLiteral(null); + } + + /// Send literal parameters. + /// Service returned a non-success status code. + public virtual async Task HelloLiteralAsync() + { + return await HelloLiteralAsync(null).ConfigureAwait(false); + } + + internal PipelineMessage CreateTopActionRequest(DateTimeOffset action, RequestOptions options) { throw new NotImplementedException("Method not implemented."); } - internal void CreateTopAction2Request(Uri unbrandedTypeSpecUrl, string accept) + /// + /// [Protocol Method] top level method + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// is null. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual ClientResult TopAction(DateTimeOffset action, RequestOptions options) + { + Argument.AssertNotNull(action, nameof(action)); + + using PipelineMessage message = CreateTopActionRequest(action, options); + return ClientResult.FromResponse(_pipeline.ProcessMessage(message, options)); + } + + /// + /// [Protocol Method] top level method + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// is null. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual async Task TopActionAsync(DateTimeOffset action, RequestOptions options) + { + Argument.AssertNotNull(action, nameof(action)); + + using PipelineMessage message = CreateTopActionRequest(action, options); + return ClientResult.FromResponse(await _pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false)); + } + + /// top level method. + /// + /// is null. + /// Service returned a non-success status code. + public virtual ClientResult TopAction(DateTimeOffset action) + { + Argument.AssertNotNull(action, nameof(action)); + + return TopAction(action, null); + } + + /// top level method. + /// + /// is null. + /// Service returned a non-success status code. + public virtual async Task TopActionAsync(DateTimeOffset action) + { + Argument.AssertNotNull(action, nameof(action)); + + return await TopActionAsync(action, null).ConfigureAwait(false); + } + + internal PipelineMessage CreateTopAction2Request(RequestOptions options) { throw new NotImplementedException("Method not implemented."); } - internal void CreatePatchActionRequest(Uri unbrandedTypeSpecUrl, Thing body, string accept, string contentType) + /// + /// [Protocol Method] top level method2 + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual ClientResult TopAction2(RequestOptions options) + { + using PipelineMessage message = CreateTopAction2Request(options); + return ClientResult.FromResponse(_pipeline.ProcessMessage(message, options)); + } + + /// + /// [Protocol Method] top level method2 + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual async Task TopAction2Async(RequestOptions options) + { + using PipelineMessage message = CreateTopAction2Request(options); + return ClientResult.FromResponse(await _pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false)); + } + + /// top level method2. + /// Service returned a non-success status code. + public virtual ClientResult TopAction2() + { + return TopAction2(null); + } + + /// top level method2. + /// Service returned a non-success status code. + public virtual async Task TopAction2Async() + { + return await TopAction2Async(null).ConfigureAwait(false); + } + + internal PipelineMessage CreatePatchActionRequest(BinaryContent content, RequestOptions options) { throw new NotImplementedException("Method not implemented."); } - internal void CreateAnonymousBodyRequest(Uri unbrandedTypeSpecUrl, Thing Thing, string accept, string contentType) + /// + /// [Protocol Method] top level patch + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// The content to send as the body of the request. + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual ClientResult PatchAction(BinaryContent content, RequestOptions options) + { + using PipelineMessage message = CreatePatchActionRequest(content, options); + return ClientResult.FromResponse(_pipeline.ProcessMessage(message, options)); + } + + /// + /// [Protocol Method] top level patch + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// The content to send as the body of the request. + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual async Task PatchActionAsync(BinaryContent content, RequestOptions options) + { + using PipelineMessage message = CreatePatchActionRequest(content, options); + return ClientResult.FromResponse(await _pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false)); + } + + /// top level patch. + /// + /// is null. + /// Service returned a non-success status code. + public virtual ClientResult PatchAction(Thing body) + { + Argument.AssertNotNull(body, nameof(body)); + + ClientResult result = PatchAction(body, null); + return ClientResult.FromValue((Thing)result, result.GetRawResponse()); + } + + /// top level patch. + /// + /// is null. + /// Service returned a non-success status code. + public virtual async Task PatchActionAsync(Thing body) + { + Argument.AssertNotNull(body, nameof(body)); + + ClientResult result = await PatchActionAsync(body, null).ConfigureAwait(false); + return ClientResult.FromValue((Thing)result, result.GetRawResponse()); + } + + internal PipelineMessage CreateAnonymousBodyRequest(BinaryContent content, RequestOptions options) { throw new NotImplementedException("Method not implemented."); } - internal void CreateFriendlyModelRequest(Uri unbrandedTypeSpecUrl, Friend Friend, string accept, string contentType) + /// + /// [Protocol Method] body parameter without body decorator + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// The content to send as the body of the request. + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual ClientResult AnonymousBody(BinaryContent content, RequestOptions options) + { + using PipelineMessage message = CreateAnonymousBodyRequest(content, options); + return ClientResult.FromResponse(_pipeline.ProcessMessage(message, options)); + } + + /// + /// [Protocol Method] body parameter without body decorator + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// The content to send as the body of the request. + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual async Task AnonymousBodyAsync(BinaryContent content, RequestOptions options) + { + using PipelineMessage message = CreateAnonymousBodyRequest(content, options); + return ClientResult.FromResponse(await _pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false)); + } + + /// body parameter without body decorator. + /// A model with a few properties of literal types. + /// is null. + /// Service returned a non-success status code. + public virtual ClientResult AnonymousBody(Thing Thing) + { + Argument.AssertNotNull(Thing, nameof(Thing)); + + ClientResult result = AnonymousBody(Thing, null); + return ClientResult.FromValue((Thing)result, result.GetRawResponse()); + } + + /// body parameter without body decorator. + /// A model with a few properties of literal types. + /// is null. + /// Service returned a non-success status code. + public virtual async Task AnonymousBodyAsync(Thing Thing) + { + Argument.AssertNotNull(Thing, nameof(Thing)); + + ClientResult result = await AnonymousBodyAsync(Thing, null).ConfigureAwait(false); + return ClientResult.FromValue((Thing)result, result.GetRawResponse()); + } + + internal PipelineMessage CreateFriendlyModelRequest(BinaryContent content, RequestOptions options) { throw new NotImplementedException("Method not implemented."); } - internal void CreateAddTimeHeaderRequest(Uri unbrandedTypeSpecUrl, DateTimeOffset repeatabilityFirstSent, string accept) + /// + /// [Protocol Method] Model can have its friendly name + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// The content to send as the body of the request. + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual ClientResult FriendlyModel(BinaryContent content, RequestOptions options) + { + using PipelineMessage message = CreateFriendlyModelRequest(content, options); + return ClientResult.FromResponse(_pipeline.ProcessMessage(message, options)); + } + + /// + /// [Protocol Method] Model can have its friendly name + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// The content to send as the body of the request. + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual async Task FriendlyModelAsync(BinaryContent content, RequestOptions options) + { + using PipelineMessage message = CreateFriendlyModelRequest(content, options); + return ClientResult.FromResponse(await _pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false)); + } + + /// Model can have its friendly name. + /// this is not a friendly model but with a friendly name. + /// is null. + /// Service returned a non-success status code. + public virtual ClientResult FriendlyModel(Friend Friend) + { + Argument.AssertNotNull(Friend, nameof(Friend)); + + ClientResult result = FriendlyModel(Friend, null); + return ClientResult.FromValue((Friend)result, result.GetRawResponse()); + } + + /// Model can have its friendly name. + /// this is not a friendly model but with a friendly name. + /// is null. + /// Service returned a non-success status code. + public virtual async Task FriendlyModelAsync(Friend Friend) + { + Argument.AssertNotNull(Friend, nameof(Friend)); + + ClientResult result = await FriendlyModelAsync(Friend, null).ConfigureAwait(false); + return ClientResult.FromValue((Friend)result, result.GetRawResponse()); + } + + internal PipelineMessage CreateAddTimeHeaderRequest(DateTimeOffset repeatabilityFirstSent, RequestOptions options) { throw new NotImplementedException("Method not implemented."); } - internal void CreateProjectedNameModelRequest(Uri unbrandedTypeSpecUrl, ProjectedModel ProjectedModel, string accept, string contentType) + /// + /// [Protocol Method] addTimeHeader + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual ClientResult AddTimeHeader(DateTimeOffset repeatabilityFirstSent, RequestOptions options) + { + using PipelineMessage message = CreateAddTimeHeaderRequest(repeatabilityFirstSent, options); + return ClientResult.FromResponse(_pipeline.ProcessMessage(message, options)); + } + + /// + /// [Protocol Method] addTimeHeader + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual async Task AddTimeHeaderAsync(DateTimeOffset repeatabilityFirstSent, RequestOptions options) + { + using PipelineMessage message = CreateAddTimeHeaderRequest(repeatabilityFirstSent, options); + return ClientResult.FromResponse(await _pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false)); + } + + /// addTimeHeader. + /// + /// Service returned a non-success status code. + public virtual ClientResult AddTimeHeader(DateTimeOffset repeatabilityFirstSent) + { + return AddTimeHeader(repeatabilityFirstSent, null); + } + + /// addTimeHeader. + /// + /// Service returned a non-success status code. + public virtual async Task AddTimeHeaderAsync(DateTimeOffset repeatabilityFirstSent) + { + return await AddTimeHeaderAsync(repeatabilityFirstSent, null).ConfigureAwait(false); + } + + internal PipelineMessage CreateProjectedNameModelRequest(BinaryContent content, RequestOptions options) { throw new NotImplementedException("Method not implemented."); } - internal void CreateReturnsAnonymousModelRequest(Uri unbrandedTypeSpecUrl, string accept) + /// + /// [Protocol Method] Model can have its projected name + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// The content to send as the body of the request. + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual ClientResult ProjectedNameModel(BinaryContent content, RequestOptions options) + { + using PipelineMessage message = CreateProjectedNameModelRequest(content, options); + return ClientResult.FromResponse(_pipeline.ProcessMessage(message, options)); + } + + /// + /// [Protocol Method] Model can have its projected name + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// The content to send as the body of the request. + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual async Task ProjectedNameModelAsync(BinaryContent content, RequestOptions options) + { + using PipelineMessage message = CreateProjectedNameModelRequest(content, options); + return ClientResult.FromResponse(await _pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false)); + } + + /// Model can have its projected name. + /// this is a model with a projected name. + /// is null. + /// Service returned a non-success status code. + public virtual ClientResult ProjectedNameModel(ProjectedModel ProjectedModel) + { + Argument.AssertNotNull(ProjectedModel, nameof(ProjectedModel)); + + ClientResult result = ProjectedNameModel(ProjectedModel, null); + return ClientResult.FromValue((ProjectedModel)result, result.GetRawResponse()); + } + + /// Model can have its projected name. + /// this is a model with a projected name. + /// is null. + /// Service returned a non-success status code. + public virtual async Task ProjectedNameModelAsync(ProjectedModel ProjectedModel) + { + Argument.AssertNotNull(ProjectedModel, nameof(ProjectedModel)); + + ClientResult result = await ProjectedNameModelAsync(ProjectedModel, null).ConfigureAwait(false); + return ClientResult.FromValue((ProjectedModel)result, result.GetRawResponse()); + } + + internal PipelineMessage CreateReturnsAnonymousModelRequest(RequestOptions options) { throw new NotImplementedException("Method not implemented."); } - internal void CreateGetUnknownValueRequest(Uri unbrandedTypeSpecUrl, string accept) + /// + /// [Protocol Method] return anonymous model + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual ClientResult ReturnsAnonymousModel(RequestOptions options) + { + using PipelineMessage message = CreateReturnsAnonymousModelRequest(options); + return ClientResult.FromResponse(_pipeline.ProcessMessage(message, options)); + } + + /// + /// [Protocol Method] return anonymous model + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual async Task ReturnsAnonymousModelAsync(RequestOptions options) + { + using PipelineMessage message = CreateReturnsAnonymousModelRequest(options); + return ClientResult.FromResponse(await _pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false)); + } + + /// return anonymous model. + /// Service returned a non-success status code. + public virtual ClientResult ReturnsAnonymousModel() + { + return ReturnsAnonymousModel(null); + } + + /// return anonymous model. + /// Service returned a non-success status code. + public virtual async Task ReturnsAnonymousModelAsync() + { + return await ReturnsAnonymousModelAsync(null).ConfigureAwait(false); + } + + internal PipelineMessage CreateGetUnknownValueRequest(RequestOptions options) { throw new NotImplementedException("Method not implemented."); } - internal void CreateInternalProtocolRequest(Uri unbrandedTypeSpecUrl, Thing body, string accept, string contentType) + /// + /// [Protocol Method] get extensible enum + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual ClientResult GetUnknownValue(RequestOptions options) + { + using PipelineMessage message = CreateGetUnknownValueRequest(options); + return ClientResult.FromResponse(_pipeline.ProcessMessage(message, options)); + } + + /// + /// [Protocol Method] get extensible enum + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual async Task GetUnknownValueAsync(RequestOptions options) + { + using PipelineMessage message = CreateGetUnknownValueRequest(options); + return ClientResult.FromResponse(await _pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false)); + } + + /// get extensible enum. + /// Service returned a non-success status code. + public virtual ClientResult GetUnknownValue() + { + return GetUnknownValue(null); + } + + /// get extensible enum. + /// Service returned a non-success status code. + public virtual async Task GetUnknownValueAsync() + { + return await GetUnknownValueAsync(null).ConfigureAwait(false); + } + + internal PipelineMessage CreateInternalProtocolRequest(BinaryContent content, RequestOptions options) { throw new NotImplementedException("Method not implemented."); } - internal void CreateStillConvenientRequest(Uri unbrandedTypeSpecUrl, string accept) + /// + /// [Protocol Method] When set protocol false and convenient true, then the protocol method should be internal + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// The content to send as the body of the request. + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual ClientResult InternalProtocol(BinaryContent content, RequestOptions options) + { + using PipelineMessage message = CreateInternalProtocolRequest(content, options); + return ClientResult.FromResponse(_pipeline.ProcessMessage(message, options)); + } + + /// + /// [Protocol Method] When set protocol false and convenient true, then the protocol method should be internal + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// The content to send as the body of the request. + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual async Task InternalProtocolAsync(BinaryContent content, RequestOptions options) + { + using PipelineMessage message = CreateInternalProtocolRequest(content, options); + return ClientResult.FromResponse(await _pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false)); + } + + /// When set protocol false and convenient true, then the protocol method should be internal. + /// + /// is null. + /// Service returned a non-success status code. + public virtual ClientResult InternalProtocol(Thing body) + { + Argument.AssertNotNull(body, nameof(body)); + + ClientResult result = InternalProtocol(body, null); + return ClientResult.FromValue((Thing)result, result.GetRawResponse()); + } + + /// When set protocol false and convenient true, then the protocol method should be internal. + /// + /// is null. + /// Service returned a non-success status code. + public virtual async Task InternalProtocolAsync(Thing body) + { + Argument.AssertNotNull(body, nameof(body)); + + ClientResult result = await InternalProtocolAsync(body, null).ConfigureAwait(false); + return ClientResult.FromValue((Thing)result, result.GetRawResponse()); + } + + internal PipelineMessage CreateStillConvenientRequest(RequestOptions options) { throw new NotImplementedException("Method not implemented."); } - internal void CreateHeadAsBooleanRequest(Uri unbrandedTypeSpecUrl, string id, string accept) + /// + /// [Protocol Method] When set protocol false and convenient true, the convenient method should be generated even it has the same signature as protocol one + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual ClientResult StillConvenient(RequestOptions options) + { + using PipelineMessage message = CreateStillConvenientRequest(options); + return ClientResult.FromResponse(_pipeline.ProcessMessage(message, options)); + } + + /// + /// [Protocol Method] When set protocol false and convenient true, the convenient method should be generated even it has the same signature as protocol one + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual async Task StillConvenientAsync(RequestOptions options) + { + using PipelineMessage message = CreateStillConvenientRequest(options); + return ClientResult.FromResponse(await _pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false)); + } + + /// When set protocol false and convenient true, the convenient method should be generated even it has the same signature as protocol one. + /// Service returned a non-success status code. + public virtual ClientResult StillConvenient() + { + return StillConvenient(null); + } + + /// When set protocol false and convenient true, the convenient method should be generated even it has the same signature as protocol one. + /// Service returned a non-success status code. + public virtual async Task StillConvenientAsync() + { + return await StillConvenientAsync(null).ConfigureAwait(false); + } + + internal PipelineMessage CreateHeadAsBooleanRequest(string id, RequestOptions options) { throw new NotImplementedException("Method not implemented."); } + + /// + /// [Protocol Method] head as boolean. + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// is null. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual ClientResult HeadAsBoolean(string id, RequestOptions options) + { + Argument.AssertNotNull(id, nameof(id)); + + using PipelineMessage message = CreateHeadAsBooleanRequest(id, options); + return ClientResult.FromResponse(_pipeline.ProcessMessage(message, options)); + } + + /// + /// [Protocol Method] head as boolean. + /// + /// + /// This protocol method</see> allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// is null. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual async Task HeadAsBooleanAsync(string id, RequestOptions options) + { + Argument.AssertNotNull(id, nameof(id)); + + using PipelineMessage message = CreateHeadAsBooleanRequest(id, options); + return ClientResult.FromResponse(await _pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false)); + } + + /// head as boolean. + /// + /// is null. + /// Service returned a non-success status code. + public virtual ClientResult HeadAsBoolean(string id) + { + Argument.AssertNotNull(id, nameof(id)); + + return HeadAsBoolean(id, null); + } + + /// head as boolean. + /// + /// is null. + /// Service returned a non-success status code. + public virtual async Task HeadAsBooleanAsync(string id) + { + Argument.AssertNotNull(id, nameof(id)); + + return await HeadAsBooleanAsync(id, null).ConfigureAwait(false); + } } } diff --git a/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/tspCodeModel.json b/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/tspCodeModel.json index 94767189aa..7d9adddcec 100644 --- a/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/tspCodeModel.json +++ b/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/tspCodeModel.json @@ -19,7 +19,7 @@ "Description": "accept" } ], - "Namespace": "UnbrandedTypeSpec", + "CrossLanguageDefinitionId": "", "Description": "The Thing_requiredLiteralString", "IsExtensible": true, "Usage": "RoundTrip" @@ -40,7 +40,7 @@ "Description": "123" } ], - "Namespace": "UnbrandedTypeSpec", + "CrossLanguageDefinitionId": "", "Description": "The Thing_requiredLiteralInt", "IsExtensible": true, "Usage": "RoundTrip" @@ -61,7 +61,7 @@ "Description": "1.23" } ], - "Namespace": "UnbrandedTypeSpec", + "CrossLanguageDefinitionId": "", "Description": "The Thing_requiredLiteralFloat", "IsExtensible": true, "Usage": "RoundTrip" @@ -82,7 +82,7 @@ "Description": "reject" } ], - "Namespace": "UnbrandedTypeSpec", + "CrossLanguageDefinitionId": "", "Description": "The Thing_optionalLiteralString", "IsExtensible": true, "Usage": "RoundTrip" @@ -103,7 +103,7 @@ "Description": "456" } ], - "Namespace": "UnbrandedTypeSpec", + "CrossLanguageDefinitionId": "", "Description": "The Thing_optionalLiteralInt", "IsExtensible": true, "Usage": "RoundTrip" @@ -124,7 +124,7 @@ "Description": "4.56" } ], - "Namespace": "UnbrandedTypeSpec", + "CrossLanguageDefinitionId": "", "Description": "The Thing_optionalLiteralFloat", "IsExtensible": true, "Usage": "RoundTrip" @@ -133,6 +133,7 @@ "$id": "20", "Kind": "enum", "Name": "StringFixedEnum", + "CrossLanguageDefinitionId": "UnbrandedTypeSpec.StringFixedEnum", "ValueType": { "$id": "21", "Kind": "string" @@ -154,7 +155,6 @@ "Value": "4" } ], - "Namespace": "UnbrandedTypeSpec", "Description": "Simple enum", "IsExtensible": false, "Usage": "RoundTrip" @@ -163,6 +163,7 @@ "$id": "25", "Kind": "enum", "Name": "StringExtensibleEnum", + "CrossLanguageDefinitionId": "UnbrandedTypeSpec.StringExtensibleEnum", "ValueType": { "$id": "26", "Kind": "string" @@ -184,7 +185,6 @@ "Value": "4" } ], - "Namespace": "UnbrandedTypeSpec", "Description": "Extensible enum", "IsExtensible": true, "Usage": "RoundTrip" @@ -193,6 +193,7 @@ "$id": "30", "Kind": "enum", "Name": "IntExtensibleEnum", + "CrossLanguageDefinitionId": "UnbrandedTypeSpec.IntExtensibleEnum", "ValueType": { "$id": "31", "Kind": "int32" @@ -214,7 +215,6 @@ "Value": 4 } ], - "Namespace": "UnbrandedTypeSpec", "Description": "Int based extensible enum", "IsExtensible": true, "Usage": "RoundTrip" @@ -223,6 +223,7 @@ "$id": "35", "Kind": "enum", "Name": "FloatExtensibleEnum", + "CrossLanguageDefinitionId": "UnbrandedTypeSpec.FloatExtensibleEnum", "ValueType": { "$id": "36", "Kind": "float32" @@ -244,7 +245,6 @@ "Value": 4.4 } ], - "Namespace": "UnbrandedTypeSpec", "Description": "Float based extensible enum", "IsExtensible": true, "Usage": "RoundTrip" @@ -253,6 +253,7 @@ "$id": "40", "Kind": "enum", "Name": "FloatExtensibleEnumWithIntValue", + "CrossLanguageDefinitionId": "UnbrandedTypeSpec.FloatExtensibleEnumWithIntValue", "ValueType": { "$id": "41", "Kind": "float32" @@ -274,7 +275,6 @@ "Value": 4 } ], - "Namespace": "UnbrandedTypeSpec", "Description": "float fixed enum", "IsExtensible": true, "Usage": "RoundTrip" @@ -283,6 +283,7 @@ "$id": "45", "Kind": "enum", "Name": "FloatFixedEnum", + "CrossLanguageDefinitionId": "UnbrandedTypeSpec.FloatFixedEnum", "ValueType": { "$id": "46", "Kind": "float32" @@ -304,7 +305,6 @@ "Value": 4.4 } ], - "Namespace": "UnbrandedTypeSpec", "Description": "float fixed enum", "IsExtensible": false, "Usage": "RoundTrip" @@ -313,6 +313,7 @@ "$id": "50", "Kind": "enum", "Name": "FloatFixedEnumWithIntValue", + "CrossLanguageDefinitionId": "UnbrandedTypeSpec.FloatFixedEnumWithIntValue", "ValueType": { "$id": "51", "Kind": "int32" @@ -334,7 +335,6 @@ "Value": 4 } ], - "Namespace": "UnbrandedTypeSpec", "Description": "float fixed enum", "IsExtensible": false, "Usage": "RoundTrip" @@ -343,6 +343,7 @@ "$id": "55", "Kind": "enum", "Name": "IntFixedEnum", + "CrossLanguageDefinitionId": "UnbrandedTypeSpec.IntFixedEnum", "ValueType": { "$id": "56", "Kind": "int32" @@ -364,7 +365,6 @@ "Value": 4 } ], - "Namespace": "UnbrandedTypeSpec", "Description": "int fixed enum", "IsExtensible": false, "Usage": "RoundTrip" @@ -375,7 +375,7 @@ "$id": "60", "Kind": "model", "Name": "Thing", - "Namespace": "UnbrandedTypeSpec", + "CrossLanguageDefinitionId": "UnbrandedTypeSpec.Thing", "Usage": "RoundTrip", "Description": "A model with a few properties of literal types", "Properties": [ @@ -610,7 +610,7 @@ "$id": "97", "Kind": "model", "Name": "RoundTripModel", - "Namespace": "UnbrandedTypeSpec", + "CrossLanguageDefinitionId": "UnbrandedTypeSpec.RoundTripModel", "Usage": "RoundTrip", "Description": "this is a roundtrip model", "Properties": [ @@ -933,7 +933,7 @@ "$id": "144", "Kind": "model", "Name": "ModelWithRequiredNullableProperties", - "Namespace": "UnbrandedTypeSpec", + "CrossLanguageDefinitionId": "UnbrandedTypeSpec.ModelWithRequiredNullableProperties", "Usage": "RoundTrip", "Description": "A model with a few required nullable properties", "Properties": [ @@ -1010,7 +1010,7 @@ "$id": "154", "Kind": "model", "Name": "Friend", - "Namespace": "UnbrandedTypeSpec", + "CrossLanguageDefinitionId": "UnbrandedTypeSpec.NotFriend", "Usage": "RoundTrip", "Description": "this is not a friendly model but with a friendly name", "Properties": [ @@ -1032,7 +1032,7 @@ "$id": "157", "Kind": "model", "Name": "ProjectedModel", - "Namespace": "UnbrandedTypeSpec", + "CrossLanguageDefinitionId": "UnbrandedTypeSpec.ModelWithProjectedName", "Usage": "RoundTrip", "Description": "this is a model with a projected name", "Properties": [ @@ -1054,7 +1054,7 @@ "$id": "160", "Kind": "model", "Name": "ReturnsAnonymousModelResponse", - "Namespace": "UnbrandedTypeSpec", + "CrossLanguageDefinitionId": "UnbrandedTypeSpec.returnsAnonymousModel.Response.anonymous", "Usage": "Output", "Properties": [] } diff --git a/packages/http-client-csharp/package-lock.json b/packages/http-client-csharp/package-lock.json index a9199649c9..4fa76abba9 100644 --- a/packages/http-client-csharp/package-lock.json +++ b/packages/http-client-csharp/package-lock.json @@ -13,7 +13,7 @@ }, "devDependencies": { "@azure-tools/typespec-azure-core": "0.43.0", - "@azure-tools/typespec-client-generator-core": "0.43.0", + "@azure-tools/typespec-client-generator-core": "0.43.1", "@microsoft/api-extractor": "^7.40.3", "@types/node": "~18.13.0", "@typespec/compiler": "0.57.0", @@ -74,9 +74,9 @@ } }, "node_modules/@azure-tools/typespec-client-generator-core": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.43.0.tgz", - "integrity": "sha512-rssB/zsg89wstzJC1MWzbd8oPpqbgoftkp9G/NP3BoMb/gCP5uRLggwlSUAgnoU2Lt0jBUKcMlqEiVLTAkY9LA==", + "version": "0.43.1", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.43.1.tgz", + "integrity": "sha512-NwNN/fIOcjOU/8o6ViCuEAAQl6zmu2X1QKPuXxeSy8ssDwrTiX9Ho2X/7IZM4XmOArKTtgmTkNcSnnmuj5dsGg==", "dev": true, "dependencies": { "change-case": "~5.4.4", @@ -90,7 +90,8 @@ "@typespec/compiler": "~0.57.0", "@typespec/http": "~0.57.0", "@typespec/rest": "~0.57.0", - "@typespec/versioning": "~0.57.0" + "@typespec/versioning": "~0.57.0", + "@typespec/xml": "~0.57.0" } }, "node_modules/@babel/code-frame": { @@ -1357,6 +1358,19 @@ "@typespec/compiler": "~0.57.0" } }, + "node_modules/@typespec/xml": { + "version": "0.57.0", + "resolved": "https://registry.npmjs.org/@typespec/xml/-/xml-0.57.0.tgz", + "integrity": "sha512-itsFsahgBRNREoF4FXUgELmNGtOMmzNnhxT+NeAl4f7EXmz/mu1y/k9hWmDXWr+DB0Oq1r0Fc+D0TSl51szzlQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@typespec/compiler": "~0.57.0" + } + }, "node_modules/@vitest/coverage-v8": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-1.4.0.tgz", diff --git a/packages/http-client-csharp/package.json b/packages/http-client-csharp/package.json index 9fbc423d78..6037cb31e4 100644 --- a/packages/http-client-csharp/package.json +++ b/packages/http-client-csharp/package.json @@ -56,7 +56,7 @@ }, "devDependencies": { "@azure-tools/typespec-azure-core": "0.43.0", - "@azure-tools/typespec-client-generator-core": "0.43.0", + "@azure-tools/typespec-client-generator-core": "0.43.1", "@microsoft/api-extractor": "^7.40.3", "@types/node": "~18.13.0", "@typespec/compiler": "0.57.0", diff --git a/packages/http/package.json b/packages/http/package.json index 088fcefcbe..4c3737ad06 100644 --- a/packages/http/package.json +++ b/packages/http/package.json @@ -62,9 +62,9 @@ "@typespec/tspd": "workspace:~", "@vitest/coverage-v8": "^1.6.0", "@vitest/ui": "^1.6.0", - "c8": "^9.1.0", + "c8": "^10.1.2", "rimraf": "~5.0.7", - "typescript": "~5.4.5", + "typescript": "~5.5.3", "vitest": "^1.6.0" } } diff --git a/packages/http/src/decorators.ts b/packages/http/src/decorators.ts index a8473ed52b..f0dec1eefc 100644 --- a/packages/http/src/decorators.ts +++ b/packages/http/src/decorators.ts @@ -9,6 +9,7 @@ import { Operation, Program, StringLiteral, + SyntaxKind, Tuple, Type, Union, @@ -362,53 +363,48 @@ function rangeDescription(start: number, end: number) { return undefined; } -function setOperationVerb(program: Program, entity: Type, verb: HttpVerb): void { - if (entity.kind === "Operation") { - if (!program.stateMap(HttpStateKeys.verbs).has(entity)) { - program.stateMap(HttpStateKeys.verbs).set(entity, verb); - } else { - reportDiagnostic(program, { - code: "http-verb-duplicate", - format: { entityName: entity.name }, - target: entity, - }); - } - } else { - reportDiagnostic(program, { - code: "http-verb-wrong-type", - format: { verb, entityKind: entity.kind }, - target: entity, +function setOperationVerb(context: DecoratorContext, entity: Operation, verb: HttpVerb): void { + validateVerbUniqueOnNode(context, entity); + context.program.stateMap(HttpStateKeys.verbs).set(entity, verb); +} + +function validateVerbUniqueOnNode(context: DecoratorContext, type: Operation) { + const verbDecorators = type.decorators.filter( + (x) => + VERB_DECORATORS.includes(x.decorator) && + x.node?.kind === SyntaxKind.DecoratorExpression && + x.node?.parent === type.node + ); + + if (verbDecorators.length > 1) { + reportDiagnostic(context.program, { + code: "http-verb-duplicate", + format: { entityName: type.name }, + target: context.decoratorTarget, }); + return false; } + return true; } export function getOperationVerb(program: Program, entity: Type): HttpVerb | undefined { return program.stateMap(HttpStateKeys.verbs).get(entity); } -export const $get: GetDecorator = (context: DecoratorContext, entity: Operation) => { - setOperationVerb(context.program, entity, "get"); -}; - -export const $put: PutDecorator = (context: DecoratorContext, entity: Operation) => { - setOperationVerb(context.program, entity, "put"); -}; - -export const $post: PostDecorator = (context: DecoratorContext, entity: Operation) => { - setOperationVerb(context.program, entity, "post"); -}; - -export const $patch: PatchDecorator = (context: DecoratorContext, entity: Operation) => { - setOperationVerb(context.program, entity, "patch"); -}; +function createVerbDecorator(verb: HttpVerb) { + return (context: DecoratorContext, entity: Operation) => { + setOperationVerb(context, entity, verb); + }; +} -export const $delete: DeleteDecorator = (context: DecoratorContext, entity: Operation) => { - setOperationVerb(context.program, entity, "delete"); -}; +export const $get: GetDecorator = createVerbDecorator("get"); +export const $put: PutDecorator = createVerbDecorator("put"); +export const $post: PostDecorator = createVerbDecorator("post"); +export const $patch: PatchDecorator = createVerbDecorator("patch"); +export const $delete: DeleteDecorator = createVerbDecorator("delete"); +export const $head: HeadDecorator = createVerbDecorator("head"); -export const $head: HeadDecorator = (context: DecoratorContext, entity: Operation) => { - setOperationVerb(context.program, entity, "head"); -}; +const VERB_DECORATORS = [$get, $head, $post, $put, $patch, $delete]; export interface HttpServer { url: string; diff --git a/packages/http/src/lib.ts b/packages/http/src/lib.ts index a628270b5c..4dea2027ab 100644 --- a/packages/http/src/lib.ts +++ b/packages/http/src/lib.ts @@ -9,12 +9,6 @@ export const $lib = createTypeSpecLibrary({ default: paramMessage`HTTP verb already applied to ${"entityName"}`, }, }, - "http-verb-wrong-type": { - severity: "error", - messages: { - default: paramMessage`Cannot use @${"verb"} on a ${"entityKind"}`, - }, - }, "missing-path-param": { severity: "error", messages: { diff --git a/packages/http/test/verbs.test.ts b/packages/http/test/verbs.test.ts new file mode 100644 index 0000000000..48eb235288 --- /dev/null +++ b/packages/http/test/verbs.test.ts @@ -0,0 +1,40 @@ +import { expectDiagnostics } from "@typespec/compiler/testing"; +import { describe, expect, it } from "vitest"; +import { diagnoseOperations, getRoutesFor } from "./test-host.js"; + +describe("specify verb with each decorator", () => { + it.each([ + ["@get", "get"], + ["@post", "post"], + ["@put", "put"], + ["@patch", "patch"], + ["@delete", "delete"], + ["@head", "head"], + ])("%s set verb to %s", async (dec, expected) => { + const routes = await getRoutesFor(`${dec} op test(): string;`); + expect(routes[0].verb).toBe(expected); + }); +}); + +describe("emit error when using 2 verb decorator together on the same node", () => { + it.each([ + ["@get", "@post"], + ["@post", "@put"], + ])("%s", async (...decs) => { + const diagnostics = await diagnoseOperations(`${decs.join(" ")} op test(): string;`); + const diag = { + code: "@typespec/http/http-verb-duplicate", + message: "HTTP verb already applied to test", + }; + expectDiagnostics(diagnostics, new Array(decs.length).fill(diag)); + }); +}); + +it("allow overriding the verb specified in a base operation", async () => { + const routes = await getRoutesFor(` + @get op test(): T; + @head op ping is test; + + `); + expect(routes[0].verb).toBe("head"); +}); diff --git a/packages/internal-build-utils/package.json b/packages/internal-build-utils/package.json index 21b942d33f..0532b5a1bd 100644 --- a/packages/internal-build-utils/package.json +++ b/packages/internal-build-utils/package.json @@ -41,7 +41,7 @@ ], "dependencies": { "@pnpm/find-workspace-packages": "^6.0.9", - "cspell": "^8.8.1", + "cspell": "^8.9.1", "semver": "^7.6.2", "strip-json-comments": "~5.0.1", "yargs": "~17.7.2" @@ -52,10 +52,10 @@ "@types/yargs": "~17.0.32", "@vitest/coverage-v8": "^1.6.0", "@vitest/ui": "^1.6.0", - "c8": "^9.1.0", + "c8": "^10.1.2", "chokidar": "~3.6.0", "rimraf": "~5.0.7", - "typescript": "~5.4.5", + "typescript": "~5.5.3", "vitest": "^1.6.0" } } diff --git a/packages/json-schema/package.json b/packages/json-schema/package.json index 85b96e40fa..a6df8e3e3c 100644 --- a/packages/json-schema/package.json +++ b/packages/json-schema/package.json @@ -62,14 +62,14 @@ "@typespec/tspd": "workspace:~", "@vitest/coverage-v8": "^1.6.0", "@vitest/ui": "^1.6.0", - "ajv": "~8.13.0", + "ajv": "~8.16.0", "ajv-formats": "~3.0.1", - "c8": "^9.1.0", + "c8": "^10.1.2", "rimraf": "~5.0.7", - "typescript": "~5.4.5", + "typescript": "~5.5.3", "vitest": "^1.6.0" }, "dependencies": { - "yaml": "~2.4.2" + "yaml": "~2.4.5" } } diff --git a/packages/json-schema/src/index.ts b/packages/json-schema/src/index.ts index 27a23b8def..4839373bae 100644 --- a/packages/json-schema/src/index.ts +++ b/packages/json-schema/src/index.ts @@ -14,6 +14,7 @@ import { setTypeSpecNamespace, typespecTypeToJson, } from "@typespec/compiler"; +import { createAssetEmitter } from "@typespec/compiler/emitter-framework"; import { ValidatesRawJsonDecorator } from "../generated-defs/TypeSpec.JsonSchema.Private.js"; import { BaseUriDecorator, @@ -45,7 +46,7 @@ export type JsonSchemaDeclaration = Model | Union | Enum | Scalar; const jsonSchemaKey = createStateSymbol("JsonSchema"); export async function $onEmit(context: EmitContext) { - const emitter = context.getAssetEmitter(JsonSchemaEmitter); + const emitter = createAssetEmitter(context.program, JsonSchemaEmitter as any, context); if (emitter.getOptions().emitAllModels) { emitter.emitProgram({ emitTypeSpecNamespace: false }); diff --git a/packages/json-schema/src/json-schema-emitter.ts b/packages/json-schema/src/json-schema-emitter.ts index ee99b954df..19d2460fc8 100644 --- a/packages/json-schema/src/json-schema-emitter.ts +++ b/packages/json-schema/src/json-schema-emitter.ts @@ -819,7 +819,7 @@ export class JsonSchemaEmitter extends TypeEmitter, JSONSche // #region context emitters modelDeclarationContext(model: Model, name: string): Context { - if (this.#isStdType(model) && model.name === "object") { + if (this.#isStdType(model) && (model.name as any) === "object") { return {}; } diff --git a/packages/library-linter/package.json b/packages/library-linter/package.json index 32471e0fec..6e78ecd0a4 100644 --- a/packages/library-linter/package.json +++ b/packages/library-linter/package.json @@ -55,9 +55,9 @@ "@typespec/compiler": "workspace:~", "@vitest/coverage-v8": "^1.6.0", "@vitest/ui": "^1.6.0", - "c8": "^9.1.0", + "c8": "^10.1.2", "rimraf": "~5.0.7", - "typescript": "~5.4.5", + "typescript": "~5.5.3", "vitest": "^1.6.0" } } diff --git a/packages/monarch/package.json b/packages/monarch/package.json index 660f4a6d56..f909691e6f 100644 --- a/packages/monarch/package.json +++ b/packages/monarch/package.json @@ -45,13 +45,13 @@ "@types/node": "~18.11.19", "@vitest/coverage-v8": "^1.6.0", "@vitest/ui": "^1.6.0", - "c8": "^9.1.0", - "happy-dom": "^14.11.0", + "c8": "^10.1.2", + "happy-dom": "^14.12.3", "rimraf": "~5.0.7", - "typescript": "~5.4.5", + "typescript": "~5.5.3", "vitest": "^1.6.0" }, "dependencies": { - "monaco-editor-core": "^0.48.0" + "monaco-editor-core": "^0.50.0" } } diff --git a/packages/monarch/tsconfig.json b/packages/monarch/tsconfig.json index 6e60792fb9..c6a44c5ed8 100644 --- a/packages/monarch/tsconfig.json +++ b/packages/monarch/tsconfig.json @@ -4,7 +4,6 @@ "outDir": "dist", "rootDir": ".", "tsBuildInfoFile": "temp/tsconfig.tsbuildinfo", - "lib": ["DOM", "ESNext"], "verbatimModuleSyntax": true }, "include": ["src/**/*.ts", "test/**/*.ts"] diff --git a/packages/openapi/package.json b/packages/openapi/package.json index 1cea77790b..ef46702a78 100644 --- a/packages/openapi/package.json +++ b/packages/openapi/package.json @@ -64,9 +64,9 @@ "@typespec/tspd": "workspace:~", "@vitest/coverage-v8": "^1.6.0", "@vitest/ui": "^1.6.0", - "c8": "^9.1.0", + "c8": "^10.1.2", "rimraf": "~5.0.7", - "typescript": "~5.4.5", + "typescript": "~5.5.3", "vitest": "^1.6.0" } } diff --git a/packages/openapi/tsconfig.json b/packages/openapi/tsconfig.json index b73ccb236b..b50f2b5577 100644 --- a/packages/openapi/tsconfig.json +++ b/packages/openapi/tsconfig.json @@ -4,8 +4,7 @@ "compilerOptions": { "outDir": "dist", "rootDir": ".", - "tsBuildInfoFile": "temp/tsconfig.tsbuildinfo", - "lib": ["DOM", "ESNext"] + "tsBuildInfoFile": "temp/tsconfig.tsbuildinfo" }, "include": ["src/**/*.ts", "generated-defs/**/*.ts", "test/**/*.ts"] } diff --git a/packages/openapi3/package.json b/packages/openapi3/package.json index 9b30c996a4..8fc996327c 100644 --- a/packages/openapi3/package.json +++ b/packages/openapi3/package.json @@ -52,7 +52,7 @@ "!dist/test/**" ], "dependencies": { - "yaml": "~2.4.2" + "yaml": "~2.4.5" }, "peerDependencies": { "@typespec/compiler": "workspace:~", @@ -71,9 +71,9 @@ "@typespec/versioning": "workspace:~", "@vitest/coverage-v8": "^1.6.0", "@vitest/ui": "^1.6.0", - "c8": "^9.1.0", + "c8": "^10.1.2", "rimraf": "~5.0.7", - "typescript": "~5.4.5", + "typescript": "~5.5.3", "vitest": "^1.6.0" } } diff --git a/packages/openapi3/src/openapi.ts b/packages/openapi3/src/openapi.ts index 6922ab3aef..01538af7cf 100644 --- a/packages/openapi3/src/openapi.ts +++ b/packages/openapi3/src/openapi.ts @@ -301,12 +301,14 @@ function createOAPIEmitter( service.type, options.omitUnreachableTypes ); - schemaEmitter = context.getAssetEmitter( + schemaEmitter = createAssetEmitter( + program, class extends OpenAPI3SchemaEmitter { constructor(emitter: AssetEmitter, OpenAPI3EmitterOptions>) { super(emitter, metadataInfo, visibilityUsage, options); } - } as any + } as any, + context ); const securitySchemes = getOpenAPISecuritySchemes(allHttpAuthentications); diff --git a/packages/openapi3/tsconfig.json b/packages/openapi3/tsconfig.json index 04002b8509..5a6b10eaf7 100644 --- a/packages/openapi3/tsconfig.json +++ b/packages/openapi3/tsconfig.json @@ -8,8 +8,7 @@ "compilerOptions": { "outDir": "dist", "rootDir": ".", - "tsBuildInfoFile": "temp/tsconfig.tsbuildinfo", - "lib": ["DOM", "ESNext"] + "tsBuildInfoFile": "temp/tsconfig.tsbuildinfo" }, "include": ["src/**/*.ts", "generated-defs/**/*.ts", "test/**/*.ts"] } diff --git a/packages/playground-website/package.json b/packages/playground-website/package.json index f36fe17639..169fbb5406 100644 --- a/packages/playground-website/package.json +++ b/packages/playground-website/package.json @@ -66,22 +66,22 @@ "react-dom": "~18.3.1" }, "devDependencies": { - "@babel/core": "^7.24.5", - "@playwright/test": "^1.44.0", + "@babel/core": "^7.24.7", + "@playwright/test": "^1.45.0", "@types/debounce": "~1.2.4", "@types/node": "~18.11.19", - "@types/react": "~18.3.2", + "@types/react": "~18.3.3", "@types/react-dom": "~18.3.0", "@types/swagger-ui": "~3.52.4", - "@vitejs/plugin-react": "~4.2.1", + "@vitejs/plugin-react": "~4.3.1", "@vitest/coverage-v8": "^1.6.0", "@vitest/ui": "^1.6.0", - "c8": "^9.1.0", + "c8": "^10.1.2", "cross-env": "~7.0.3", "rimraf": "~5.0.7", "rollup-plugin-visualizer": "~5.12.0", - "typescript": "~5.4.5", - "vite": "^5.2.11", + "typescript": "~5.5.3", + "vite": "^5.3.2", "vitest": "^1.6.0" } } diff --git a/packages/playground/package.json b/packages/playground/package.json index ee4b3638a9..8a50368712 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -68,8 +68,8 @@ "!dist/test/**" ], "dependencies": { - "@fluentui/react-components": "~9.52.0", - "@fluentui/react-icons": "^2.0.240", + "@fluentui/react-components": "~9.54.2", + "@fluentui/react-icons": "^2.0.247", "@typespec/bundler": "workspace:~", "@typespec/compiler": "workspace:~", "@typespec/html-program-viewer": "workspace:~", @@ -80,39 +80,39 @@ "@typespec/rest": "workspace:~", "@typespec/versioning": "workspace:~", "clsx": "^2.1.1", - "debounce": "~2.0.0", + "debounce": "~2.1.0", "lzutf8": "0.6.3", "monaco-editor": "~0.46.0", "react": "~18.3.1", "react-dom": "~18.3.1", "react-error-boundary": "^4.0.13", - "swagger-ui-dist": "^5.17.10", + "swagger-ui-dist": "^5.17.14", "vscode-languageserver": "~9.0.1", "vscode-languageserver-textdocument": "~1.0.11" }, "devDependencies": { - "@babel/core": "^7.24.5", - "@playwright/test": "^1.44.0", - "@storybook/addon-actions": "^8.1.2", - "@storybook/cli": "^8.1.2", - "@storybook/react": "^8.1.2", - "@storybook/react-vite": "^8.1.2", - "@storybook/test": "^8.1.2", - "@storybook/types": "^8.1.2", + "@babel/core": "^7.24.7", + "@playwright/test": "^1.45.0", + "@storybook/addon-actions": "^8.1.11", + "@storybook/cli": "^8.1.11", + "@storybook/react": "^8.1.11", + "@storybook/react-vite": "^8.1.11", + "@storybook/test": "^8.1.11", + "@storybook/types": "^8.1.11", "@types/debounce": "~1.2.4", "@types/node": "~18.11.19", - "@types/react": "~18.3.2", + "@types/react": "~18.3.3", "@types/react-dom": "~18.3.0", - "@types/swagger-ui-dist": "~3.30.4", + "@types/swagger-ui-dist": "~3.30.5", "@typespec/bundler": "workspace:~", - "@vitejs/plugin-react": "~4.2.1", - "c8": "^9.1.0", + "@vitejs/plugin-react": "~4.3.1", + "c8": "^10.1.2", "cross-env": "~7.0.3", "es-module-shims": "~1.10.0", "rimraf": "~5.0.7", - "typescript": "~5.4.5", - "vite": "^5.2.11", - "vite-plugin-checker": "^0.6.4", + "typescript": "~5.5.3", + "vite": "^5.3.2", + "vite-plugin-checker": "^0.7.0", "vite-plugin-dts": "^3.9.1" } } diff --git a/packages/prettier-plugin-typespec/ThirdPartyNotices.txt b/packages/prettier-plugin-typespec/ThirdPartyNotices.txt index dae65da6cd..40c7b19afc 100644 --- a/packages/prettier-plugin-typespec/ThirdPartyNotices.txt +++ b/packages/prettier-plugin-typespec/ThirdPartyNotices.txt @@ -8,7 +8,7 @@ original copyright notices and the licenses under which Microsoft received such components are set forth below. Microsoft reserves all rights not expressly granted herein, whether by implication, estoppel or otherwise. -1. prettier version 3.2.5 (prettier/prettier) +1. prettier version 3.3.2 (prettier/prettier) %% prettier NOTICES AND INFORMATION BEGIN HERE @@ -32,7 +32,7 @@ MIT, ISC, BSD-2-Clause, BSD-3-Clause, Apache-2.0 ## Bundled dependencies -### @angular/compiler@v17.1.2 +### @angular/compiler@v18.0.2 > Angular - the compiler library @@ -42,7 +42,7 @@ Author: angular ---------------------------------------- -### @babel/code-frame@v7.23.5 +### @babel/code-frame@v7.24.7 > Generate errors that contain a code frame that point to source locations. @@ -76,7 +76,7 @@ Author: The Babel Team (https://babel.dev/team) ---------------------------------------- -### @babel/helper-validator-identifier@v7.22.20 +### @babel/helper-validator-identifier@v7.24.7 > Validate identifier/keywords name @@ -109,7 +109,7 @@ Author: The Babel Team (https://babel.dev/team) ---------------------------------------- -### @babel/highlight@v7.23.4 +### @babel/highlight@v7.24.7 > Syntax highlight JavaScript strings for output in terminals. @@ -143,7 +143,7 @@ Author: The Babel Team (https://babel.dev/team) ---------------------------------------- -### @babel/parser@v7.23.9 +### @babel/parser@v7.24.7 > A JavaScript parser @@ -202,7 +202,9 @@ License: MIT ---------------------------------------- -### @glimmer/syntax@v0.88.1 +### @glimmer/syntax@v0.92.0 + +License: MIT > Copyright (c) 2015 Tilde, Inc. > @@ -226,7 +228,7 @@ License: MIT ---------------------------------------- -### @glimmer/util@v0.88.1 +### @glimmer/util@v0.92.0 > Common utilities used in Glimmer @@ -254,7 +256,7 @@ License: MIT ---------------------------------------- -### @glimmer/wire-format@v0.88.1 +### @glimmer/wire-format@v0.92.0 License: MIT @@ -469,11 +471,12 @@ Author: Alex Bell ---------------------------------------- -### @typescript-eslint/types@v6.20.0 +### @typescript-eslint/types@v7.13.0 > Types for the TypeScript-ESTree AST spec License: MIT +Homepage: Repository: > MIT License @@ -500,11 +503,12 @@ Repository: ---------------------------------------- -### @typescript-eslint/typescript-estree@v6.20.0 +### @typescript-eslint/typescript-estree@v7.13.0 > A parser that converts TypeScript source code into an ESTree compatible form License: BSD-2-Clause +Homepage: Repository: > TypeScript ESTree @@ -598,7 +602,7 @@ Repository: ---------------------------------------- -### angular-estree-parser@v9.0.0 +### angular-estree-parser@v10.0.3 > A parser that converts Angular source code into an ESTree-compatible form @@ -681,25 +685,6 @@ Author: Sindre Sorhus (https://sindresorhus.com) ---------------------------------------- -### ansi-styles@v3.2.1 - -> ANSI escape codes for styling strings in the terminal - -License: MIT -Author: Sindre Sorhus (sindresorhus.com) - -> MIT License -> -> Copyright (c) Sindre Sorhus (sindresorhus.com) -> -> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -> -> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -> -> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ----------------------------------------- - ### bail@v1.0.5 > Throw a given error @@ -734,73 +719,7 @@ Contributors: ---------------------------------------- -### balanced-match@v1.0.2 - -> Match balanced character pairs, like "{" and "}" - -License: MIT -Homepage: -Repository: -Author: Julian Gruber (http://juliangruber.com) - -> (MIT) -> -> Copyright (c) 2013 Julian Gruber -> -> Permission is hereby granted, free of charge, to any person obtaining a copy of -> this software and associated documentation files (the "Software"), to deal in -> the Software without restriction, including without limitation the rights to -> use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -> of the Software, and to permit persons to whom the Software is furnished to do -> so, subject to the following conditions: -> -> The above copyright notice and this permission notice shall be included in all -> copies or substantial portions of the Software. -> -> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -> SOFTWARE. - ----------------------------------------- - -### brace-expansion@v1.1.11 - -> Brace expansion as known from sh/bash - -License: MIT -Homepage: -Repository: -Author: Julian Gruber (http://juliangruber.com) - -> MIT License -> -> Copyright (c) 2013 Julian Gruber -> -> Permission is hereby granted, free of charge, to any person obtaining a copy -> of this software and associated documentation files (the "Software"), to deal -> in the Software without restriction, including without limitation the rights -> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -> copies of the Software, and to permit persons to whom the Software is -> furnished to do so, subject to the following conditions: -> -> The above copyright notice and this permission notice shall be included in all -> copies or substantial portions of the Software. -> -> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -> SOFTWARE. - ----------------------------------------- - -### braces@v3.0.2 +### braces@v3.0.3 > Bash-like brace expansion, implemented in JavaScript. Safer than other brace expansion libs, with complete support for the Bash 4.3 braces specification, without sacrificing speed. @@ -816,7 +735,7 @@ Contributors: > The MIT License (MIT) > -> Copyright (c) 2014-2018, Jon Schlinkert. +> Copyright (c) 2014-present, Jon Schlinkert. > > Permission is hereby granted, free of charge, to any person obtaining a copy > of this software and associated documentation files (the "Software"), to deal @@ -1077,56 +996,6 @@ Contributors: ---------------------------------------- -### color-convert@v1.9.3 - -> Plain color conversion functions - -License: MIT -Author: Heather Arthur - -> Copyright (c) 2011-2016 Heather Arthur -> -> Permission is hereby granted, free of charge, to any person obtaining -> a copy of this software and associated documentation files (the -> "Software"), to deal in the Software without restriction, including -> without limitation the rights to use, copy, modify, merge, publish, -> distribute, sublicense, and/or sell copies of the Software, and to -> permit persons to whom the Software is furnished to do so, subject to -> the following conditions: -> -> The above copyright notice and this permission notice shall be -> included in all copies or substantial portions of the Software. -> -> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -> MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -> NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -> LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -> OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -> WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ----------------------------------------- - -### color-name@v1.1.3 - -> A list of color names and its values - -License: MIT -Homepage: -Repository: -Author: DY - -> The MIT License (MIT) -> Copyright (c) 2015 Dmitry Ivanov -> -> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -> -> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -> -> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ----------------------------------------- - ### common-path-prefix@v3.0.0 > Computes the longest prefix string that is common to each path, excluding the base component @@ -1153,35 +1022,6 @@ Author: Mark Wubben (https://novemberborn.net/) ---------------------------------------- -### concat-map@v0.0.1 - -> concatenative mapdashery - -License: MIT -Repository: -Author: James Halliday (http://substack.net) - -> This software is released under the MIT license: -> -> Permission is hereby granted, free of charge, to any person obtaining a copy of -> this software and associated documentation files (the "Software"), to deal in -> the Software without restriction, including without limitation the rights to -> use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -> the Software, and to permit persons to whom the Software is furnished to do so, -> subject to the following conditions: -> -> The above copyright notice and this permission notice shall be included in all -> copies or substantial portions of the Software. -> -> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -> FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -> COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -> IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -> CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ----------------------------------------- - ### dashify@v2.0.0 > Convert a camelcase or space-separated string to a dash-separated string. ~12 sloc, fast, supports diacritics. @@ -1218,44 +1058,42 @@ Contributors: ---------------------------------------- -### diff@v5.1.0 +### diff@v5.2.0 -> A javascript text diff implementation. +> A JavaScript text diff implementation. License: BSD-3-Clause Repository: -> Software License Agreement (BSD License) +> BSD 3-Clause License > > Copyright (c) 2009-2015, Kevin Decker -> > All rights reserved. > -> Redistribution and use of this software in source and binary forms, with or without modification, -> are permitted provided that the following conditions are met: +> Redistribution and use in source and binary forms, with or without +> modification, are permitted provided that the following conditions are met: > -> * Redistributions of source code must retain the above -> copyright notice, this list of conditions and the -> following disclaimer. +> 1. Redistributions of source code must retain the above copyright notice, this +> list of conditions and the following disclaimer. > -> * Redistributions in binary form must reproduce the above -> copyright notice, this list of conditions and the -> following disclaimer in the documentation and/or other -> materials provided with the distribution. +> 2. Redistributions in binary form must reproduce the above copyright notice, +> this list of conditions and the following disclaimer in the documentation +> and/or other materials provided with the distribution. > -> * Neither the name of Kevin Decker nor the names of its -> contributors may be used to endorse or promote products -> derived from this software without specific prior -> written permission. +> 3. Neither the name of the copyright holder nor the names of its +> contributors may be used to endorse or promote products derived from +> this software without specific prior written permission. > -> THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR -> IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -> FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -> CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -> DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -> DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -> IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT -> OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +> THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +> AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +> IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +> DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +> FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +> DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +> SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +> CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +> OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +> OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------- @@ -1325,37 +1163,6 @@ Author: Mathias Bynens (https://mathiasbynens.be/) ---------------------------------------- -### escape-string-regexp@v1.0.5 - -> Escape RegExp special characters - -License: MIT -Author: Sindre Sorhus (sindresorhus.com) - -> The MIT License (MIT) -> -> Copyright (c) Sindre Sorhus (sindresorhus.com) -> -> Permission is hereby granted, free of charge, to any person obtaining a copy -> of this software and associated documentation files (the "Software"), to deal -> in the Software without restriction, including without limitation the rights -> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -> copies of the Software, and to permit persons to whom the Software is -> furnished to do so, subject to the following conditions: -> -> The above copyright notice and this permission notice shall be included in -> all copies or substantial portions of the Software. -> -> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -> THE SOFTWARE. - ----------------------------------------- - ### escape-string-regexp@v5.0.0 > Escape RegExp special characters @@ -1375,7 +1182,7 @@ Author: Sindre Sorhus (https://sindresorhus.com) ---------------------------------------- -### espree@v10.0.0 +### espree@v10.0.1 > An Esprima-compatible JavaScript parser built on Acorn @@ -1535,7 +1342,7 @@ Author: Matteo Collina ---------------------------------------- -### file-entry-cache@v7.0.2 +### file-entry-cache@v9.0.0 > Super simple cache for file metadata, useful for process that work o a given series of files and that only need to repeat the job on the changed ones since the previous run of the process @@ -1566,7 +1373,7 @@ Author: Jared Wray (https://jaredwray.com) ---------------------------------------- -### fill-range@v7.0.1 +### fill-range@v7.1.1 > Fill in a range of numbers or letters, optionally passing an increment or `step` to use, or create a regex-compatible range with `options.toRegex` @@ -1643,7 +1450,7 @@ Author: Sindre Sorhus (https://sindresorhus.com) ---------------------------------------- -### flat-cache@v3.2.0 +### flat-cache@v5.0.0 > A stupidly simple key/value storage using files to persist some data @@ -1674,7 +1481,7 @@ Author: Jared Wray (https://jaredwray.com) ---------------------------------------- -### flatted@v3.2.9 +### flatted@v3.3.1 > A super light and fast circular JSON parser. @@ -1736,7 +1543,7 @@ Contributors: ---------------------------------------- -### flow-parser@v0.226.0 +### flow-parser@v0.237.2 > JavaScript parser written in OCaml. Produces ESTree AST @@ -1747,60 +1554,6 @@ Author: Flow Team ---------------------------------------- -### fs.realpath@v1.0.0 - -> Use node's fs.realpath, but fall back to the JS implementation if the native one fails - -License: ISC -Repository: -Author: Isaac Z. Schlueter (http://blog.izs.me/) - -> The ISC License -> -> Copyright (c) Isaac Z. Schlueter and Contributors -> -> Permission to use, copy, modify, and/or distribute this software for any -> purpose with or without fee is hereby granted, provided that the above -> copyright notice and this permission notice appear in all copies. -> -> THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -> WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -> MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -> ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -> WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -> ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -> IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -> -> ---- -> -> This library bundles a version of the `fs.realpath` and `fs.realpathSync` -> methods from Node.js v0.10 under the terms of the Node.js MIT license. -> -> Node's license follows, also included at the header of `old.js` which contains -> the licensed code: -> -> Copyright Joyent, Inc. and other Node contributors. -> -> Permission is hereby granted, free of charge, to any person obtaining a -> copy of this software and associated documentation files (the "Software"), -> to deal in the Software without restriction, including without limitation -> the rights to use, copy, modify, merge, publish, distribute, sublicense, -> and/or sell copies of the Software, and to permit persons to whom the -> Software is furnished to do so, subject to the following conditions: -> -> The above copyright notice and this permission notice shall be included in -> all copies or substantial portions of the Software. -> -> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -> FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -> DEALINGS IN THE SOFTWARE. - ----------------------------------------- - ### get-east-asian-width@v1.2.0 > Determine the East Asian Width of a Unicode character @@ -1839,38 +1592,6 @@ Author: Sindre Sorhus (https://sindresorhus.com) ---------------------------------------- -### glob@v7.2.3 - -> a little globber - -License: ISC -Repository: -Author: Isaac Z. Schlueter (http://blog.izs.me/) - -> The ISC License -> -> Copyright (c) Isaac Z. Schlueter and Contributors -> -> Permission to use, copy, modify, and/or distribute this software for any -> purpose with or without fee is hereby granted, provided that the above -> copyright notice and this permission notice appear in all copies. -> -> THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -> WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -> MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -> ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -> WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -> ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -> IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -> -> ## Glob Logo -> -> Glob's logo created by Tanya Brassie , licensed -> under a Creative Commons Attribution-ShareAlike 4.0 International License -> https://creativecommons.org/licenses/by-sa/4.0/ - ----------------------------------------- - ### glob-parent@v5.1.2 > Extract the non-magic parent path from a glob string. @@ -1931,25 +1652,6 @@ Repository: ---------------------------------------- -### has-flag@v3.0.0 - -> Check if argv has a specific flag - -License: MIT -Author: Sindre Sorhus (sindresorhus.com) - -> MIT License -> -> Copyright (c) Sindre Sorhus (sindresorhus.com) -> -> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -> -> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -> -> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ----------------------------------------- - ### ignore@v5.3.1 > Ignore is a manager and filter for .gitignore rules, the one used by eslint, gitbook and many others. @@ -1982,7 +1684,7 @@ Author: kael ---------------------------------------- -### import-meta-resolve@v4.0.0 +### import-meta-resolve@v4.1.0 > Resolve things like Node.js — ponyfill for `import.meta.resolve` @@ -2121,33 +1823,6 @@ Author: Dominic Tarr (dominictarr.com) ---------------------------------------- -### inflight@v1.0.6 - -> Add callbacks to requests in flight to avoid async duplication - -License: ISC -Homepage: -Repository: -Author: Isaac Z. Schlueter (http://blog.izs.me/) - -> The ISC License -> -> Copyright (c) Isaac Z. Schlueter -> -> Permission to use, copy, modify, and/or distribute this software for any -> purpose with or without fee is hereby granted, provided that the above -> copyright notice and this permission notice appear in all copies. -> -> THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -> WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -> MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -> ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -> WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -> ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -> IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - ----------------------------------------- - ### inherits@v2.0.4 > Browser-friendly inheritance fully compatible with standard node.js inherits() @@ -2904,7 +2579,7 @@ Repository: ---------------------------------------- -### meriyah@v4.3.9 +### meriyah@v4.5.0 > A 100% compliant, self-hosted javascript parser with high focus on both performance and stability @@ -2925,7 +2600,7 @@ Contributors: ---------------------------------------- -### micromatch@v4.0.5 +### micromatch@v4.0.7 > Glob matching for javascript/node.js. A replacement and faster alternative to minimatch and multimatch. @@ -2973,32 +2648,6 @@ Contributors: ---------------------------------------- -### minimatch@v3.1.2 - -> a glob matcher in javascript - -License: ISC -Repository: -Author: Isaac Z. Schlueter (http://blog.izs.me) - -> The ISC License -> -> Copyright (c) Isaac Z. Schlueter and Contributors -> -> Permission to use, copy, modify, and/or distribute this software for any -> purpose with or without fee is hereby granted, provided that the above -> copyright notice and this permission notice appear in all copies. -> -> THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -> WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -> MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -> ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -> WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -> ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -> IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - ----------------------------------------- - ### minimist@v1.2.8 > parse argument options @@ -3090,32 +2739,6 @@ Author: Andrey Sitnik ---------------------------------------- -### once@v1.4.0 - -> Run a function exactly one time - -License: ISC -Repository: -Author: Isaac Z. Schlueter (http://blog.izs.me/) - -> The ISC License -> -> Copyright (c) Isaac Z. Schlueter and Contributors -> -> Permission to use, copy, modify, and/or distribute this software for any -> purpose with or without fee is hereby granted, provided that the above -> copyright notice and this permission notice appear in all copies. -> -> THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -> WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -> MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -> ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -> WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -> ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -> IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - ----------------------------------------- - ### p-limit@v4.0.0 > Run multiple promise-returning & async functions with limited concurrency @@ -3226,38 +2849,7 @@ Author: Sindre Sorhus (https://sindresorhus.com) ---------------------------------------- -### path-is-absolute@v1.0.1 - -> Node.js 0.12 path.isAbsolute() ponyfill - -License: MIT -Author: Sindre Sorhus (sindresorhus.com) - -> The MIT License (MIT) -> -> Copyright (c) Sindre Sorhus (sindresorhus.com) -> -> Permission is hereby granted, free of charge, to any person obtaining a copy -> of this software and associated documentation files (the "Software"), to deal -> in the Software without restriction, including without limitation the rights -> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -> copies of the Software, and to permit persons to whom the Software is -> furnished to do so, subject to the following conditions: -> -> The above copyright notice and this permission notice shall be included in -> all copies or substantial portions of the Software. -> -> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -> THE SOFTWARE. - ----------------------------------------- - -### picocolors@v1.0.0 +### picocolors@v1.0.1 > The tiniest and the fastest library for terminal output formatting with ANSI colors @@ -3366,7 +2958,7 @@ Author: typicode ---------------------------------------- -### postcss@v8.4.33 +### postcss@v8.4.38 > Tool for transforming styles with JS plugins @@ -3728,31 +3320,6 @@ Author: Matteo Collina ---------------------------------------- -### rimraf@v3.0.2 - -> A deep deletion module for node (like `rm -rf`) - -License: ISC -Author: Isaac Z. Schlueter (http://blog.izs.me/) - -> The ISC License -> -> Copyright (c) Isaac Z. Schlueter and Contributors -> -> Permission to use, copy, modify, and/or distribute this software for any -> purpose with or without fee is hereby granted, provided that the above -> copyright notice and this permission notice appear in all copies. -> -> THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -> WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -> MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -> ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -> WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -> ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -> IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - ----------------------------------------- - ### run-parallel@v1.2.0 > Run an array of functions in parallel @@ -3804,12 +3371,12 @@ Author: Sindre Sorhus (https://sindresorhus.com) ---------------------------------------- -### semver@v7.5.4 +### semver@v7.6.2 > The semantic version parser used by npm. License: ISC -Repository: +Repository: Author: GitHub Inc. > The ISC License @@ -3968,25 +3535,6 @@ Author: Sindre Sorhus (https://sindresorhus.com) ---------------------------------------- -### supports-color@v5.5.0 - -> Detect whether a terminal supports color - -License: MIT -Author: Sindre Sorhus (sindresorhus.com) - -> MIT License -> -> Copyright (c) Sindre Sorhus (sindresorhus.com) -> -> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -> -> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -> -> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ----------------------------------------- - ### to-fast-properties@v4.0.0 > Force V8 to use fast properties for an object @@ -4121,13 +3669,13 @@ Contributors: ---------------------------------------- -### ts-api-utils@v1.0.3 +### ts-api-utils@v1.3.0 -> Utility functions for working with TypeScript's API. Successor to the wonderful tsutils. +> Utility functions for working with TypeScript's API. Successor to the wonderful tsutils. 🛠️️ License: MIT Repository: -Author: Josh Goldberg +Author: JoshuaKGoldberg > # MIT License > @@ -4152,7 +3700,7 @@ Author: Josh Goldberg ---------------------------------------- -### typescript@v5.3.3 +### typescript@v5.4.5 > TypeScript is a language for application scale JavaScript development @@ -4711,33 +4259,6 @@ Contributors: ---------------------------------------- -### wrappy@v1.0.2 - -> Callback wrapping utility - -License: ISC -Homepage: -Repository: -Author: Isaac Z. Schlueter (http://blog.izs.me/) - -> The ISC License -> -> Copyright (c) Isaac Z. Schlueter and Contributors -> -> Permission to use, copy, modify, and/or distribute this software for any -> purpose with or without fee is hereby granted, provided that the above -> copyright notice and this permission notice appear in all copies. -> -> THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -> WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -> MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -> ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -> WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -> ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -> IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - ----------------------------------------- - ### xtend@v4.0.2 > extend like a boss diff --git a/packages/prettier-plugin-typespec/package.json b/packages/prettier-plugin-typespec/package.json index 3838f808f7..1ec6015576 100644 --- a/packages/prettier-plugin-typespec/package.json +++ b/packages/prettier-plugin-typespec/package.json @@ -12,16 +12,16 @@ "author": "Microsoft Corporation", "license": "MIT", "dependencies": { - "prettier": "~3.2.5" + "prettier": "~3.3.2" }, "devDependencies": { - "@rollup/plugin-commonjs": "~25.0.7", + "@rollup/plugin-commonjs": "~26.0.1", "@rollup/plugin-json": "~6.1.0", "@rollup/plugin-node-resolve": "~15.2.3", - "@rollup/plugin-replace": "~5.0.5", + "@rollup/plugin-replace": "~5.0.7", "@typespec/compiler": "workspace:~", "@typespec/internal-build-utils": "workspace:~", - "rollup": "~4.17.2", + "rollup": "~4.18.0", "vitest": "^1.6.0" }, "files": [ diff --git a/packages/protobuf/package.json b/packages/protobuf/package.json index 2fba9d6d59..9a09e6c168 100644 --- a/packages/protobuf/package.json +++ b/packages/protobuf/package.json @@ -40,16 +40,16 @@ "@typespec/compiler": "workspace:~" }, "devDependencies": { - "@types/micromatch": "^4.0.7", + "@types/micromatch": "^4.0.9", "@types/node": "~18.11.19", "@typespec/compiler": "workspace:~", "@typespec/tspd": "workspace:~", "@vitest/coverage-v8": "^1.6.0", "@vitest/ui": "^1.6.0", - "c8": "^9.1.0", - "micromatch": "^4.0.5", + "c8": "^10.1.2", + "micromatch": "^4.0.7", "rimraf": "~5.0.7", - "typescript": "~5.4.5", + "typescript": "~5.5.3", "vitest": "^1.6.0" } } diff --git a/packages/rest/package.json b/packages/rest/package.json index 4e0e1cebfc..fc979be7d6 100644 --- a/packages/rest/package.json +++ b/packages/rest/package.json @@ -63,9 +63,9 @@ "@typespec/tspd": "workspace:~", "@vitest/coverage-v8": "^1.6.0", "@vitest/ui": "^1.6.0", - "c8": "^9.1.0", + "c8": "^10.1.2", "rimraf": "~5.0.7", - "typescript": "~5.4.5", + "typescript": "~5.5.3", "vitest": "^1.6.0" } } diff --git a/packages/samples/package.json b/packages/samples/package.json index ecf49798e5..7861549ecb 100644 --- a/packages/samples/package.json +++ b/packages/samples/package.json @@ -61,7 +61,7 @@ "autorest": "~3.7.1", "cross-env": "~7.0.3", "rimraf": "~5.0.7", - "typescript": "~5.4.5", + "typescript": "~5.5.3", "vitest": "^1.6.0" } } diff --git a/packages/spec/package.json b/packages/spec/package.json index bb0bef0c0c..0e2a99ad12 100644 --- a/packages/spec/package.json +++ b/packages/spec/package.json @@ -22,6 +22,6 @@ "devDependencies": { "@types/node": "~18.11.19", "@typespec/internal-build-utils": "workspace:~", - "ecmarkup": "~18.3.1" + "ecmarkup": "~19.0.0" } } diff --git a/packages/tmlanguage-generator/package.json b/packages/tmlanguage-generator/package.json index fa6f06dce7..8eeae0522b 100644 --- a/packages/tmlanguage-generator/package.json +++ b/packages/tmlanguage-generator/package.json @@ -40,6 +40,6 @@ "@types/node": "~18.11.19", "@types/plist": "~3.0.5", "rimraf": "~5.0.7", - "typescript": "~5.4.5" + "typescript": "~5.5.3" } } diff --git a/packages/tspd/package.json b/packages/tspd/package.json index 1ee4cfdfe9..0dfc10ddbb 100644 --- a/packages/tspd/package.json +++ b/packages/tspd/package.json @@ -58,8 +58,8 @@ "dependencies": { "@typespec/compiler": "workspace:~", "picocolors": "~1.0.1", - "prettier": "~3.2.5", - "yaml": "~2.4.2", + "prettier": "~3.3.2", + "yaml": "~2.4.5", "yargs": "~17.7.2" }, "devDependencies": { @@ -69,12 +69,12 @@ "@typespec/prettier-plugin-typespec": "workspace:~", "@vitest/coverage-v8": "^1.6.0", "@vitest/ui": "^1.6.0", - "c8": "^9.1.0", + "c8": "^10.1.2", "rimraf": "~5.0.7", "source-map-support": "~0.5.21", - "typedoc": "^0.25.13", - "typedoc-plugin-markdown": "^4.0.2", - "typescript": "~5.4.5", + "typedoc": "^0.26.3", + "typedoc-plugin-markdown": "^4.1.1", + "typescript": "~5.5.3", "vitest": "^1.6.0" } } diff --git a/packages/tspd/src/ref-doc/api-docs.ts b/packages/tspd/src/ref-doc/api-docs.ts index d3b75c5d69..1a9b5e839a 100644 --- a/packages/tspd/src/ref-doc/api-docs.ts +++ b/packages/tspd/src/ref-doc/api-docs.ts @@ -1,6 +1,6 @@ import { joinPaths } from "@typespec/compiler"; import { writeFile } from "fs/promises"; -import { Application, DeclarationReflection, PageEvent, ReflectionKind } from "typedoc"; +import { Application, PageEvent, Reflection, ReflectionKind } from "typedoc"; import { PluginOptions, load } from "typedoc-plugin-markdown"; import { stringify } from "yaml"; export async function generateJsApiDocs(libraryPath: string, outputDir: string) { @@ -62,19 +62,19 @@ function setOptions(app: Application, options: any, reportErrors = true) { } export function loadRenderer(app: Application) { - app.renderer.on(PageEvent.END, (page: PageEvent) => { - if (page.contents) { + app.renderer.on(PageEvent.END, (page: PageEvent) => { + if (page.contents && page) { const frontMatter = createFrontMatter(page.model); page.contents = frontMatter + page.contents.replace(/\\>>0);e={"data":{"baseData":{"ver":2}},"ext":{"app":{"sesId":"0000"},"intweb":{},"sdk":{"ver":"javascript:"+l,"epoch":""+S,"seq":w++},"utc":{"popSample":100},"web":{"userConsent":!1}},"time":function(){var e=new Date;function t(e){e=""+e;return e=1===e.length?"0"+e:e}return e.getUTCFullYear()+"-"+t(e.getUTCMonth()+1)+"-"+t(e.getUTCDate())+"T"+t(e.getUTCHours())+":"+t(e.getUTCMinutes())+":"+t(e.getUTCSeconds())+"."+String((e.getUTCMilliseconds()/1e3).toFixed(3)).slice(2,5)+"Z"}(),"iKey":"o:"+function(e){var t="";{var n;!e||-1<(n=e.indexOf("-"))&&(t=e.substring(0,n))}return t}(e),"name":t,"ver":"4.0"};return function(e){var t=(new Date).getTimezoneOffset(),n=t%60,t=(t-n)/60,o="+";0=14.0.0'} + /@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': 1.1.0 + '@azure/abort-controller': 2.1.1 '@azure/core-auth': 1.7.1 - '@azure/core-tracing': 1.0.0-preview.13 + '@azure/core-rest-pipeline': 1.15.1 + '@azure/core-tracing': 1.1.1 '@azure/core-util': 1.8.1 '@azure/logger': 1.1.1 - '@types/node-fetch': 2.6.11 - '@types/tunnel': 0.0.3 - form-data: 4.0.0 - node-fetch: 2.7.0 - process: 0.11.10 tslib: 2.6.2 - tunnel: 0.0.6 - uuid: 8.3.2 - xml2js: 0.5.0 transitivePeerDependencies: - - encoding + - supports-color + + /@azure/core-http-compat@2.1.2: + resolution: {integrity: sha512-5MnV1yqzZwgNLLjlizsU3QqOeQChkIXw781Fwh1xdAqJR5AA32IUaq6xv1BICJvfbHoa+JYcaij2HFkhLbNTJQ==} + engines: {node: '>=18.0.0'} + dependencies: + '@azure/abort-controller': 2.1.1 + '@azure/core-client': 1.9.1 + '@azure/core-rest-pipeline': 1.15.1 + transitivePeerDependencies: + - supports-color dev: false /@azure/core-lro@2.7.1: @@ -1709,14 +1713,6 @@ packages: transitivePeerDependencies: - supports-color - /@azure/core-tracing@1.0.0-preview.13: - resolution: {integrity: sha512-KxDlhXyMlh2Jhj2ykX6vNEU0Vou4nHr025KoSEiz7cS3BNiHNaZcdECk/DmLkEB0as5T7b/TpRcehJ5yV6NeXQ==} - engines: {node: '>=12.0.0'} - dependencies: - '@opentelemetry/api': 1.8.0 - tslib: 2.6.2 - dev: false - /@azure/core-tracing@1.1.1: resolution: {integrity: sha512-qPbYhN1pE5XQ2jPKIHP33x8l3oBu1UqIWnYqZZ3OYnYjzY0xqIHjn49C+ptsPD9yC7uyWI9Zm7iZUZLs2R4DhQ==} engines: {node: '>=18.0.0'} @@ -1730,13 +1726,21 @@ packages: '@azure/abort-controller': 2.1.1 tslib: 2.6.2 - /@azure/identity@4.2.1: - resolution: {integrity: sha512-U8hsyC9YPcEIzoaObJlRDvp7KiF0MGS7xcWbyJSVvXRkC/HXo1f0oYeBYmEvVgRfacw7GHf6D6yAoh9JHz6A5Q==} + /@azure/core-xml@1.4.2: + resolution: {integrity: sha512-CW3MZhApe/S4iikbYKE7s83fjDBPIr2kpidX+hlGRwh7N4o1nIpQ/PfJTeioqhfqdMvRtheEl+ft64fyTaLNaA==} + engines: {node: '>=18.0.0'} + dependencies: + fast-xml-parser: 4.4.0 + tslib: 2.6.2 + dev: false + + /@azure/identity@4.3.0: + resolution: {integrity: sha512-LHZ58/RsIpIWa4hrrE2YuJ/vzG1Jv9f774RfTTAVDZDriubvJ0/S5u4pnw4akJDlS0TiJb6VMphmVUFsWmgodQ==} engines: {node: '>=18.0.0'} dependencies: '@azure/abort-controller': 1.1.0 '@azure/core-auth': 1.7.1 - '@azure/core-client': 1.9.1 + '@azure/core-client': 1.9.2 '@azure/core-rest-pipeline': 1.15.1 '@azure/core-tracing': 1.1.1 '@azure/core-util': 1.8.1 @@ -1779,20 +1783,25 @@ packages: jsonwebtoken: 9.0.2 uuid: 8.3.2 - /@azure/storage-blob@12.18.0: - resolution: {integrity: sha512-BzBZJobMoDyjJsPRMLNHvqHycTGrT8R/dtcTx9qUFcqwSRfGVK9A/cZ7Nx38UQydT9usZGbaDCN75QRNjezSAA==} - engines: {node: '>=14.0.0'} + /@azure/storage-blob@12.23.0: + resolution: {integrity: sha512-c1KJ5R5hqR/HtvmFtTn/Y1BNMq45NUBp0LZH7yF8WFMET+wmESgEr0FVTu/Z5NonmfUjbgJZG5Nh8xHc5RdWGQ==} + engines: {node: '>=18.0.0'} dependencies: '@azure/abort-controller': 1.1.0 - '@azure/core-http': 3.0.4 + '@azure/core-auth': 1.7.1 + '@azure/core-client': 1.9.1 + '@azure/core-http-compat': 2.1.2 '@azure/core-lro': 2.7.1 '@azure/core-paging': 1.6.1 - '@azure/core-tracing': 1.0.0-preview.13 + '@azure/core-rest-pipeline': 1.15.1 + '@azure/core-tracing': 1.1.1 + '@azure/core-util': 1.8.1 + '@azure/core-xml': 1.4.2 '@azure/logger': 1.1.1 events: 3.3.0 tslib: 2.6.2 transitivePeerDependencies: - - encoding + - supports-color dev: false /@babel/code-frame@7.12.11: @@ -1801,35 +1810,35 @@ packages: '@babel/highlight': 7.24.2 dev: true - /@babel/code-frame@7.24.2: - resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} + /@babel/code-frame@7.24.7: + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.24.2 + '@babel/highlight': 7.24.7 picocolors: 1.0.1 - /@babel/compat-data@7.24.1: - resolution: {integrity: sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA==} - engines: {node: '>=6.9.0'} - /@babel/compat-data@7.24.4: resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} engines: {node: '>=6.9.0'} - /@babel/core@7.24.5: - resolution: {integrity: sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==} + /@babel/compat-data@7.24.7: + resolution: {integrity: sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==} + engines: {node: '>=6.9.0'} + + /@babel/core@7.24.7: + resolution: {integrity: sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.2 - '@babel/generator': 7.24.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) - '@babel/helpers': 7.24.5 - '@babel/parser': 7.24.5 - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.5 - '@babel/types': 7.24.5 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.7 + '@babel/helper-compilation-targets': 7.24.7 + '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) + '@babel/helpers': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/template': 7.24.7 + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 convert-source-map: 2.0.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -1838,21 +1847,20 @@ packages: transitivePeerDependencies: - supports-color - /@babel/generator@7.24.4: - resolution: {integrity: sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==} + /@babel/generator@7.24.5: + resolution: {integrity: sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.24.5 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 - dev: false - /@babel/generator@7.24.5: - resolution: {integrity: sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==} + /@babel/generator@7.24.7: + resolution: {integrity: sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.24.7 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 @@ -1873,64 +1881,56 @@ packages: resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/compat-data': 7.24.1 + '@babel/compat-data': 7.24.4 '@babel/helper-validator-option': 7.23.5 browserslist: 4.23.0 lru-cache: 5.1.1 semver: 6.3.1 - /@babel/helper-create-class-features-plugin@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-1yJa9dX9g//V6fDebXoEfEsxkZHk3Hcbm+zLhyu6qVgYFLvmTALTeV+jNU9e5RnYtioBrGEOdoI2joMSNQ/+aA==} + /@babel/helper-compilation-targets@7.24.7: + resolution: {integrity: sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-member-expression-to-functions': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5) - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.24.5 + '@babel/compat-data': 7.24.7 + '@babel/helper-validator-option': 7.24.7 + browserslist: 4.23.0 + lru-cache: 5.1.1 semver: 6.3.1 - /@babel/helper-create-class-features-plugin@7.24.5(@babel/core@7.24.5): + /@babel/helper-create-class-features-plugin@7.24.5(@babel/core@7.24.7): resolution: {integrity: sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-member-expression-to-functions': 7.24.5 '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5) + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.7) '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.24.5 semver: 6.3.1 - dev: true - /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.5): + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.7): resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 semver: 6.3.1 - /@babel/helper-define-polyfill-provider@0.6.1(@babel/core@7.24.5): + /@babel/helper-define-polyfill-provider@0.6.1(@babel/core@7.24.7): resolution: {integrity: sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.24.5 debug: 4.3.4 @@ -1943,6 +1943,12 @@ packages: resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} engines: {node: '>=6.9.0'} + /@babel/helper-environment-visitor@7.24.7: + resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.7 + /@babel/helper-function-name@7.23.0: resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} engines: {node: '>=6.9.0'} @@ -1950,24 +1956,30 @@ packages: '@babel/template': 7.24.0 '@babel/types': 7.24.5 + /@babel/helper-function-name@7.24.7: + resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.24.7 + '@babel/types': 7.24.7 + /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.24.5 - /@babel/helper-member-expression-to-functions@7.23.0: - resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} + /@babel/helper-hoist-variables@7.24.7: + resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.24.7 /@babel/helper-member-expression-to-functions@7.24.5: resolution: {integrity: sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.24.5 - dev: true /@babel/helper-module-imports@7.24.3: resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} @@ -1975,53 +1987,78 @@ packages: dependencies: '@babel/types': 7.24.5 - /@babel/helper-module-transforms@7.24.5(@babel/core@7.24.5): + /@babel/helper-module-imports@7.24.7: + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color + + /@babel/helper-module-transforms@7.24.5(@babel/core@7.24.7): resolution: {integrity: sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-module-imports': 7.24.3 '@babel/helper-simple-access': 7.24.5 '@babel/helper-split-export-declaration': 7.24.5 '@babel/helper-validator-identifier': 7.24.5 + /@babel/helper-module-transforms@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + transitivePeerDependencies: + - supports-color + /@babel/helper-optimise-call-expression@7.22.5: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.24.5 - /@babel/helper-plugin-utils@7.24.0: - resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==} - engines: {node: '>=6.9.0'} - /@babel/helper-plugin-utils@7.24.5: resolution: {integrity: sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==} engines: {node: '>=6.9.0'} - /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.5): + /@babel/helper-plugin-utils@7.24.7: + resolution: {integrity: sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.7): resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-wrap-function': 7.22.20 - /@babel/helper-replace-supers@7.24.1(@babel/core@7.24.5): + /@babel/helper-replace-supers@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.24.5 '@babel/helper-optimise-call-expression': 7.22.5 /@babel/helper-simple-access@7.24.5: @@ -2030,6 +2067,15 @@ packages: dependencies: '@babel/types': 7.24.5 + /@babel/helper-simple-access@7.24.7: + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color + /@babel/helper-skip-transparent-expression-wrappers@7.22.5: resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} @@ -2042,18 +2088,36 @@ packages: dependencies: '@babel/types': 7.24.5 + /@babel/helper-split-export-declaration@7.24.7: + resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.7 + /@babel/helper-string-parser@7.24.1: resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} engines: {node: '>=6.9.0'} + /@babel/helper-string-parser@7.24.7: + resolution: {integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==} + engines: {node: '>=6.9.0'} + /@babel/helper-validator-identifier@7.24.5: resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==} engines: {node: '>=6.9.0'} + /@babel/helper-validator-identifier@7.24.7: + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + /@babel/helper-validator-option@7.23.5: resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} engines: {node: '>=6.9.0'} + /@babel/helper-validator-option@7.24.7: + resolution: {integrity: sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==} + engines: {node: '>=6.9.0'} + /@babel/helper-wrap-function@7.22.20: resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} engines: {node: '>=6.9.0'} @@ -2062,15 +2126,12 @@ packages: '@babel/template': 7.24.0 '@babel/types': 7.24.5 - /@babel/helpers@7.24.5: - resolution: {integrity: sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==} + /@babel/helpers@7.24.7: + resolution: {integrity: sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.5 - '@babel/types': 7.24.5 - transitivePeerDependencies: - - supports-color + '@babel/template': 7.24.7 + '@babel/types': 7.24.7 /@babel/highlight@7.24.2: resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} @@ -2080,6 +2141,16 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 picocolors: 1.0.1 + dev: true + + /@babel/highlight@7.24.7: + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.1 /@babel/parser@7.24.5: resolution: {integrity: sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==} @@ -2088,1187 +2159,986 @@ packages: dependencies: '@babel/types': 7.24.5 - /@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.5(@babel/core@7.24.5): + /@babel/parser@7.24.7: + resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.24.7 + + /@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.5(@babel/core@7.24.7): resolution: {integrity: sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.24.5 - dev: true - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.24.5): + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.24.5): + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.24.7) - /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.24.5): + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.5): + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.7): resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.5): + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.7): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.5): + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.7): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.5): + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.7): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.5): + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.7): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.5): + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.7): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-syntax-flow@7.24.1(@babel/core@7.24.5): + /@babel/plugin-syntax-flow@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 dev: true - /@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.24.5): + /@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.5): + /@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.5): + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.7): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.5): + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.7): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.5): + /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.5): + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.7): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.5): + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.7): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.5): + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.7): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.5): + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.7): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.5): + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.7): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.5): + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.7): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.5): + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.7): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.5): + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.7): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.5): + /@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.5): + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.7): resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) + '@babel/core': 7.24.7 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.7) '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.24.5): + /@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.24.7): resolution: {integrity: sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.5) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.7) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.7) - /@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-module-imports': 7.24.3 '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.5) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.7) - /@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-transform-block-scoping@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-h71T2QQvDgM2SmT29UYU6ozjMlAt7s7CSs5Hvy8f8cf/GM/Z4a2zMfN+fjVGaieeCrXR3EdQl6C4gQG+OgmbKw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - - /@babel/plugin-transform-block-scoping@7.24.5(@babel/core@7.24.5): + /@babel/plugin-transform-block-scoping@7.24.5(@babel/core@7.24.7): resolution: {integrity: sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - dev: true - /@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.0 - - /@babel/plugin-transform-class-static-block@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-FUHlKCn6J3ERiu8Dv+4eoz7w8+kFLSyeVG4vDAikwADGjUCoHw/JHokyGtr8OR4UjpwPVivyF+h8Q5iv/JmrtA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.5) - dev: false + '@babel/core': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-transform-class-static-block@7.24.4(@babel/core@7.24.5): + /@babel/plugin-transform-class-static-block@7.24.4(@babel/core@7.24.7): resolution: {integrity: sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) + '@babel/core': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.7) '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.5) - dev: true + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.7) - /@babel/plugin-transform-classes@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5) - '@babel/helper-split-export-declaration': 7.24.5 - globals: 11.12.0 - dev: false - - /@babel/plugin-transform-classes@7.24.5(@babel/core@7.24.5): + /@babel/plugin-transform-classes@7.24.5(@babel/core@7.24.7): resolution: {integrity: sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5) + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.7) '@babel/helper-split-export-declaration': 7.24.5 globals: 11.12.0 - dev: true - /@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 '@babel/template': 7.24.0 - /@babel/plugin-transform-destructuring@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - - /@babel/plugin-transform-destructuring@7.24.5(@babel/core@7.24.5): + /@babel/plugin-transform-destructuring@7.24.5(@babel/core@7.24.7): resolution: {integrity: sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - dev: true - /@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) + '@babel/core': 7.24.7 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.7) '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.7) - /@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.7) - /@babel/plugin-transform-flow-strip-types@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-flow-strip-types@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.7) dev: true - /@babel/plugin-transform-for-of@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-for-of@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - /@babel/plugin-transform-function-name@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-function-name@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.7) - /@babel/plugin-transform-literals@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-literals@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.7) - /@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) + '@babel/core': 7.24.7 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.7) '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.5 '@babel/helper-simple-access': 7.24.5 - /@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.7) '@babel/helper-plugin-utils': 7.24.5 '@babel/helper-validator-identifier': 7.24.5 - /@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) + '@babel/core': 7.24.7 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.7) '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.5): + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.7): resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) + '@babel/core': 7.24.7 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.7) '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-transform-new-target@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-new-target@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.7) - /@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5) - - /@babel/plugin-transform-object-rest-spread@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.5) - dev: false + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.7) - /@babel/plugin-transform-object-rest-spread@7.24.5(@babel/core@7.24.5): + /@babel/plugin-transform-object-rest-spread@7.24.5(@babel/core@7.24.7): resolution: {integrity: sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) - dev: true + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.7) - /@babel/plugin-transform-object-super@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-object-super@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5) + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.7) - /@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5) - - /@babel/plugin-transform-optional-chaining@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) - dev: false + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.7) - /@babel/plugin-transform-optional-chaining@7.24.5(@babel/core@7.24.5): + /@babel/plugin-transform-optional-chaining@7.24.5(@babel/core@7.24.7): resolution: {integrity: sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.7) - /@babel/plugin-transform-parameters@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - - /@babel/plugin-transform-parameters@7.24.5(@babel/core@7.24.5): + /@babel/plugin-transform-parameters@7.24.5(@babel/core@7.24.7): resolution: {integrity: sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - dev: true - /@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.0 - - /@babel/plugin-transform-private-property-in-object@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.5) - dev: false + '@babel/core': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-transform-private-property-in-object@7.24.5(@babel/core@7.24.5): + /@babel/plugin-transform-private-property-in-object@7.24.5(@babel/core@7.24.7): resolution: {integrity: sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.7) '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.5) - dev: true + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.7) - /@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-transform-react-constant-elements@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-react-constant-elements@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-QXp1U9x0R7tkiGB0FOk8o74jhnap0FlZ5gNkRIWdG3eP+SvMFg118e1zaWewDzgABb106QSKpVsD3Wgd8t6ifA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-transform-react-display-name@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-react-display-name@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.24.5): + /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.24.7): resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.5) + '@babel/core': 7.24.7 + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.7) dev: false - /@babel/plugin-transform-react-jsx-self@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-kDJgnPujTmAZ/9q2CN4m2/lRsUUPDvsG3+tSHWUJIzMGTt5U/b/fwWd3RO3n+5mjLrsBrVa5eKFRVSQbi3dF1w==} + /@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 dev: true - /@babel/plugin-transform-react-jsx-source@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-react-jsx-source@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.5 dev: true - /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.5): + /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.7): resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-module-imports': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.7) '@babel/types': 7.24.5 dev: false - /@babel/plugin-transform-react-pure-annotations@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-react-pure-annotations@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 regenerator-transform: 0.15.2 - /@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-transform-runtime@7.24.3(@babel/core@7.24.5): + /@babel/plugin-transform-runtime@7.24.3(@babel/core@7.24.7): resolution: {integrity: sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-module-imports': 7.24.3 - '@babel/helper-plugin-utils': 7.24.0 - babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.5) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.5) - babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.7) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.7) + babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.24.7) semver: 6.3.1 transitivePeerDependencies: - supports-color dev: false - /@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-transform-spread@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-spread@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - /@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-transform-typeof-symbol@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.0 - dev: false - - /@babel/plugin-transform-typeof-symbol@7.24.5(@babel/core@7.24.5): + /@babel/plugin-transform-typeof-symbol@7.24.5(@babel/core@7.24.7): resolution: {integrity: sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - dev: true - /@babel/plugin-transform-typescript@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-typescript@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-liYSESjX2fZ7JyBFkYG78nfvHlMKE6IpNdTVnxmlYUR+j5ZLsitFbaAE+eJSK2zPPkNWNw4mXL51rQ8WrvdK0w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.5) + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.7) - /@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) + '@babel/core': 7.24.7 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.7) '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) + '@babel/core': 7.24.7 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.7) '@babel/helper-plugin-utils': 7.24.5 - /@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) + '@babel/core': 7.24.7 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.7) '@babel/helper-plugin-utils': 7.24.5 - /@babel/preset-env@7.24.3(@babel/core@7.24.5): - resolution: {integrity: sha512-fSk430k5c2ff8536JcPvPWK4tZDwehWLGlBp0wrsBUjZVdeQV6lePbwKWZaZfK2vnh/1kQX1PzAJWsnBmVgGJA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.24.1 - '@babel/core': 7.24.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.5) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.5) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.5) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.5) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.5) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.5) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.5) - '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.24.5) - '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-block-scoping': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-class-static-block': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-classes': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-destructuring': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.5) - '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-object-rest-spread': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-private-property-in-object': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-typeof-symbol': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.24.5) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.5) - babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.5) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.5) - babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.24.5) - core-js-compat: 3.37.1 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/preset-env@7.24.5(@babel/core@7.24.5): + /@babel/preset-env@7.24.5(@babel/core@7.24.7): resolution: {integrity: sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/compat-data': 7.24.4 - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.24.5 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.5) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.5) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.5) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.5) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.5) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.5) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.5) - '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.24.5) - '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-block-scoping': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-class-static-block': 7.24.4(@babel/core@7.24.5) - '@babel/plugin-transform-classes': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-destructuring': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.5) - '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-object-rest-spread': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-private-property-in-object': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-typeof-symbol': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.24.5) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.5) - babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.5) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.5) - babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.24.5) + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.5(@babel/core@7.24.7) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.7) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.7) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.7) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.7) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.7) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.7) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.7) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.7) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.7) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.7) + '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.24.7) + '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-block-scoping': 7.24.5(@babel/core@7.24.7) + '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-class-static-block': 7.24.4(@babel/core@7.24.7) + '@babel/plugin-transform-classes': 7.24.5(@babel/core@7.24.7) + '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-destructuring': 7.24.5(@babel/core@7.24.7) + '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.7) + '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-object-rest-spread': 7.24.5(@babel/core@7.24.7) + '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.24.7) + '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.7) + '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-private-property-in-object': 7.24.5(@babel/core@7.24.7) + '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-typeof-symbol': 7.24.5(@babel/core@7.24.7) + '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.24.7) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.7) + babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.7) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.7) + babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.24.7) core-js-compat: 3.37.1 semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: true - /@babel/preset-flow@7.24.1(@babel/core@7.24.5): + /@babel/preset-flow@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-sWCV2G9pcqZf+JHyv/RyqEIpFypxdCSxWIxQjpdaQxenNog7cN1pr76hg8u0Fz8Qgg0H4ETkGcJnXL8d4j0PPA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.24.7) dev: true - /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.5): + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.7): resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.5 '@babel/types': 7.24.5 esutils: 2.0.3 - /@babel/preset-react@7.24.1(@babel/core@7.24.5): + /@babel/preset-react@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.5 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.5) - '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.24.5) - '@babel/plugin-transform-react-pure-annotations': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.7) + '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.24.7) + '@babel/plugin-transform-react-pure-annotations': 7.24.1(@babel/core@7.24.7) dev: false - /@babel/preset-typescript@7.24.1(@babel/core@7.24.5): + /@babel/preset-typescript@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.5 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-typescript': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-typescript': 7.24.1(@babel/core@7.24.7) - /@babel/register@7.23.7(@babel/core@7.24.5): + /@babel/register@7.23.7(@babel/core@7.24.7): resolution: {integrity: sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 clone-deep: 4.0.1 find-cache-dir: 2.1.0 make-dir: 2.1.0 @@ -3297,15 +3167,23 @@ packages: resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.24.2 + '@babel/code-frame': 7.24.7 '@babel/parser': 7.24.5 '@babel/types': 7.24.5 - /@babel/traverse@7.24.1: - resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==} + /@babel/template@7.24.7: + resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.24.2 + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 + + /@babel/traverse@7.24.5: + resolution: {integrity: sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.24.7 '@babel/generator': 7.24.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 @@ -3317,20 +3195,19 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: false - /@babel/traverse@7.24.5: - resolution: {integrity: sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==} + /@babel/traverse@7.24.7: + resolution: {integrity: sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.24.2 - '@babel/generator': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.24.5 - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-hoist-variables': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: @@ -3344,6 +3221,14 @@ packages: '@babel/helper-validator-identifier': 7.24.5 to-fast-properties: 2.0.0 + /@babel/types@7.24.7: + resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + /@base2/pretty-print-object@1.0.1: resolution: {integrity: sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==} dev: true @@ -3361,9 +3246,9 @@ packages: hasBin: true dependencies: cross-spawn: 7.0.3 - globby: 14.0.1 + globby: 14.0.2 is-unicode-supported: 2.0.0 - micromatch: 4.0.5 + micromatch: 4.0.7 pacote: 18.0.6 picocolors: 1.0.1 pluralize: 8.0.0 @@ -3371,7 +3256,7 @@ packages: semver: 7.6.2 source-map-support: 0.5.21 std-env: 3.7.0 - yaml: 2.4.2 + yaml: 2.4.5 yargs: 17.7.2 zod: 3.23.8 transitivePeerDependencies: @@ -3402,100 +3287,101 @@ packages: requiresBuild: true optional: true - /@cspell/cspell-bundled-dicts@8.8.1: - resolution: {integrity: sha512-zP/cC7ABk9PM6X1/itEOYa9raWrdUtUXCcUtHLnEr83HhPUHZ8vzaBgMJ176No/7EgZ4BHGXVvA0v079ukXVxw==} + /@cspell/cspell-bundled-dicts@8.9.1: + resolution: {integrity: sha512-etkor/qXSSqyh6lbudEGdTami0DooIi2AlQbJPUWRfowzYJRSYWPUbyQSUkFdRhCHni2oLOFbWaraRthNlLD/A==} engines: {node: '>=18'} dependencies: '@cspell/dict-ada': 4.0.2 - '@cspell/dict-aws': 4.0.1 + '@cspell/dict-aws': 4.0.2 '@cspell/dict-bash': 4.1.3 - '@cspell/dict-companies': 3.0.31 - '@cspell/dict-cpp': 5.1.3 + '@cspell/dict-companies': 3.1.2 + '@cspell/dict-cpp': 5.1.10 '@cspell/dict-cryptocurrencies': 5.0.0 '@cspell/dict-csharp': 4.0.2 '@cspell/dict-css': 4.0.12 '@cspell/dict-dart': 2.0.3 '@cspell/dict-django': 4.1.0 '@cspell/dict-docker': 1.1.7 - '@cspell/dict-dotnet': 5.0.0 + '@cspell/dict-dotnet': 5.0.2 '@cspell/dict-elixir': 4.0.3 - '@cspell/dict-en-common-misspellings': 2.0.0 + '@cspell/dict-en-common-misspellings': 2.0.3 '@cspell/dict-en-gb': 1.1.33 - '@cspell/dict-en_us': 4.3.19 - '@cspell/dict-filetypes': 3.0.3 + '@cspell/dict-en_us': 4.3.23 + '@cspell/dict-filetypes': 3.0.4 '@cspell/dict-fonts': 4.0.0 '@cspell/dict-fsharp': 1.0.1 - '@cspell/dict-fullstack': 3.1.5 + '@cspell/dict-fullstack': 3.1.8 '@cspell/dict-gaming-terms': 1.0.5 '@cspell/dict-git': 3.0.0 - '@cspell/dict-golang': 6.0.5 + '@cspell/dict-golang': 6.0.9 + '@cspell/dict-google': 1.0.1 '@cspell/dict-haskell': 4.0.1 '@cspell/dict-html': 4.0.5 '@cspell/dict-html-symbol-entities': 4.0.0 - '@cspell/dict-java': 5.0.6 + '@cspell/dict-java': 5.0.7 '@cspell/dict-julia': 1.0.1 - '@cspell/dict-k8s': 1.0.2 + '@cspell/dict-k8s': 1.0.5 '@cspell/dict-latex': 4.0.0 '@cspell/dict-lorem-ipsum': 4.0.0 '@cspell/dict-lua': 4.0.3 '@cspell/dict-makefile': 1.0.0 '@cspell/dict-monkeyc': 1.0.6 '@cspell/dict-node': 5.0.1 - '@cspell/dict-npm': 5.0.15 - '@cspell/dict-php': 4.0.6 - '@cspell/dict-powershell': 5.0.3 - '@cspell/dict-public-licenses': 2.0.6 - '@cspell/dict-python': 4.1.11 + '@cspell/dict-npm': 5.0.16 + '@cspell/dict-php': 4.0.8 + '@cspell/dict-powershell': 5.0.4 + '@cspell/dict-public-licenses': 2.0.7 + '@cspell/dict-python': 4.2.1 '@cspell/dict-r': 2.0.1 '@cspell/dict-ruby': 5.0.2 - '@cspell/dict-rust': 4.0.3 - '@cspell/dict-scala': 5.0.0 - '@cspell/dict-software-terms': 3.3.22 + '@cspell/dict-rust': 4.0.4 + '@cspell/dict-scala': 5.0.2 + '@cspell/dict-software-terms': 3.4.9 '@cspell/dict-sql': 2.1.3 '@cspell/dict-svelte': 1.0.2 '@cspell/dict-swift': 2.0.1 '@cspell/dict-terraform': 1.0.0 - '@cspell/dict-typescript': 3.1.4 + '@cspell/dict-typescript': 3.1.5 '@cspell/dict-vue': 3.0.0 - /@cspell/cspell-json-reporter@8.8.1: - resolution: {integrity: sha512-HtendGGO0w1gElhSYsD4D9iKT1nMBoUP31y0Ndw3AtQRzH6I31lx6DWnrXIef1bTL4wdq7ocxgG5HGQBQ8PWfA==} + /@cspell/cspell-json-reporter@8.9.1: + resolution: {integrity: sha512-sN4PZivGuH/HWScvoCeNuNc5VLSe4F+SeuoyKmsF4uRv447r9sW0/fpjASGqDTjLXpEfWaXDPoIb+0alY3gm+g==} engines: {node: '>=18'} dependencies: - '@cspell/cspell-types': 8.8.1 + '@cspell/cspell-types': 8.9.1 - /@cspell/cspell-pipe@8.8.1: - resolution: {integrity: sha512-AMQ0s7qH71tNnrpX8ILl+OZceDHt//h/T3Yk//qvn69x1Dzfg4Saqv/qhfG1VClQVyV5F4y7tIa4UNd5X6mW4g==} + /@cspell/cspell-pipe@8.9.1: + resolution: {integrity: sha512-wH5Xu8W3aMEWFSpOczMtH/04clLMfDGdbYMYB7w6BeHI/LDW8DZaRhigOOhx9FRgVk/YIVbKKAKVgvFrfD5cEA==} engines: {node: '>=18'} - /@cspell/cspell-resolver@8.8.1: - resolution: {integrity: sha512-K5sPp05Pz3tYU9roFGILSB6OdSVYqyr4Y/NW1CxZsXgq+hmwxAJQag/RyhW6cUp/1Jhy5RKYGNy0H0u/jODx3A==} + /@cspell/cspell-resolver@8.9.1: + resolution: {integrity: sha512-Q2SOnIi2dnQ2zqPd+tcEYfom9qlsapGyLK4Mdx2Vv29MU2RDZ9VHFDncV6yo6O58gmlYl8sXtJsVceiHgwwlkQ==} engines: {node: '>=18'} dependencies: global-directory: 4.0.1 - /@cspell/cspell-service-bus@8.8.1: - resolution: {integrity: sha512-dxZ/ymwP6XNMGkU5iIUVgFP2JEqEvpJZavpAerB/y5E560Agv1WuUpkZE/PMCmseoLjSiV5yQzcnLNoT5X/w7A==} + /@cspell/cspell-service-bus@8.9.1: + resolution: {integrity: sha512-dPKpqkglGnwvrW9mgbHIdimDQZH3iy8uT8gm3dEO//UahxMBdMpvtdbC3R9kesQCSagvYRVE7hwJvOktSAK+Vg==} engines: {node: '>=18'} - /@cspell/cspell-types@8.8.1: - resolution: {integrity: sha512-JEbLN+b3XdHIpEaoZJnpPfL8iTKWraqE7x1VwG7FIQ9wjP6fCPwfNRVM0CUWEmT+85O/zvbYVOlTJn1uIOLnZw==} + /@cspell/cspell-types@8.9.1: + resolution: {integrity: sha512-Z/pTX2i+U5KwyCYRSw8BleJtw81jFifv91DDka4nqi2oyHJ3eEUljVovNOuZ3lotn/ArHdu4rY98s1w6Z69mYw==} engines: {node: '>=18'} /@cspell/dict-ada@4.0.2: resolution: {integrity: sha512-0kENOWQeHjUlfyId/aCM/mKXtkEgV0Zu2RhUXCBr4hHo9F9vph+Uu8Ww2b0i5a4ZixoIkudGA+eJvyxrG1jUpA==} - /@cspell/dict-aws@4.0.1: - resolution: {integrity: sha512-NXO+kTPQGqaaJKa4kO92NAXoqS+i99dQzf3/L1BxxWVSBS3/k1f3uhmqIh7Crb/n22W793lOm0D9x952BFga3Q==} + /@cspell/dict-aws@4.0.2: + resolution: {integrity: sha512-aNGHWSV7dRLTIn8WJemzLoMF62qOaiUQlgnsCwH5fRCD/00gsWCwg106pnbkmK4AyabyxzneOV4dfecDJWkSxw==} /@cspell/dict-bash@4.1.3: resolution: {integrity: sha512-tOdI3QVJDbQSwPjUkOiQFhYcu2eedmX/PtEpVWg0aFps/r6AyjUQINtTgpqMYnYuq8O1QUIQqnpx21aovcgZCw==} - /@cspell/dict-companies@3.0.31: - resolution: {integrity: sha512-hKVpV/lcGKP4/DpEPS8P4osPvFH/YVLJaDn9cBIOH6/HSmL5LbFgJNKpMGaYRbhm2FEX56MKE3yn/MNeNYuesQ==} + /@cspell/dict-companies@3.1.2: + resolution: {integrity: sha512-OwR5i1xbYuJX7FtHQySmTy3iJtPV1rZQ3jFCxFGwrA1xRQ4rtRcDQ+sTXBCIAoJHkXa84f9J3zsngOKmMGyS/w==} - /@cspell/dict-cpp@5.1.3: - resolution: {integrity: sha512-sqnriXRAInZH9W75C+APBh6dtben9filPqVbIsiRMUXGg+s02ekz0z6LbS7kXeJ5mD2qXoMLBrv13qH2eIwutQ==} + /@cspell/dict-cpp@5.1.10: + resolution: {integrity: sha512-BmIF0sAz2BgGEOwzYIeEm9ALneDjd1tcTbFbo+A1Hcq3zOKP8yViSgxS9CEN30KOZIyph6Tldp531UPEpoEl0Q==} /@cspell/dict-cryptocurrencies@5.0.0: resolution: {integrity: sha512-Z4ARIw5+bvmShL+4ZrhDzGhnc9znaAGHOEMaB/GURdS/jdoreEDY34wdN0NtdLHDO5KO7GduZnZyqGdRoiSmYA==} @@ -3509,8 +3395,8 @@ packages: /@cspell/dict-dart@2.0.3: resolution: {integrity: sha512-cLkwo1KT5CJY5N5RJVHks2genFkNCl/WLfj+0fFjqNR+tk3tBI1LY7ldr9piCtSFSm4x9pO1x6IV3kRUY1lLiw==} - /@cspell/dict-data-science@1.0.11: - resolution: {integrity: sha512-TaHAZRVe0Zlcc3C23StZqqbzC0NrodRwoSAc8dis+5qLeLLnOCtagYQeROQvDlcDg3X/VVEO9Whh4W/z4PAmYQ==} + /@cspell/dict-data-science@2.0.1: + resolution: {integrity: sha512-xeutkzK0eBe+LFXOFU2kJeAYO6IuFUc1g7iRLr7HeCmlC4rsdGclwGHh61KmttL3+YHQytYStxaRBdGAXWC8Lw==} /@cspell/dict-django@4.1.0: resolution: {integrity: sha512-bKJ4gPyrf+1c78Z0Oc4trEB9MuhcB+Yg+uTTWsvhY6O2ncFYbB/LbEZfqhfmmuK/XJJixXfI1laF2zicyf+l0w==} @@ -3518,23 +3404,23 @@ packages: /@cspell/dict-docker@1.1.7: resolution: {integrity: sha512-XlXHAr822euV36GGsl2J1CkBIVg3fZ6879ZOg5dxTIssuhUOCiV2BuzKZmt6aIFmcdPmR14+9i9Xq+3zuxeX0A==} - /@cspell/dict-dotnet@5.0.0: - resolution: {integrity: sha512-EOwGd533v47aP5QYV8GlSSKkmM9Eq8P3G/eBzSpH3Nl2+IneDOYOBLEUraHuiCtnOkNsz0xtZHArYhAB2bHWAw==} + /@cspell/dict-dotnet@5.0.2: + resolution: {integrity: sha512-UD/pO2A2zia/YZJ8Kck/F6YyDSpCMq0YvItpd4YbtDVzPREfTZ48FjZsbYi4Jhzwfvc6o8R56JusAE58P+4sNQ==} /@cspell/dict-elixir@4.0.3: resolution: {integrity: sha512-g+uKLWvOp9IEZvrIvBPTr/oaO6619uH/wyqypqvwpmnmpjcfi8+/hqZH8YNKt15oviK8k4CkINIqNhyndG9d9Q==} - /@cspell/dict-en-common-misspellings@2.0.0: - resolution: {integrity: sha512-NOg8dlv37/YqLkCfBs5OXeJm/Wcfb/CzeOmOZJ2ZXRuxwsNuolb4TREUce0yAXRqMhawahY5TSDRJJBgKjBOdw==} + /@cspell/dict-en-common-misspellings@2.0.3: + resolution: {integrity: sha512-8nF1z9nUiSgMyikL66HTbDO7jCGtB24TxKBasXIBwkBKMDZgA2M883iXdeByy6m1JJUcCGFkSftVYp2W0bUgjw==} /@cspell/dict-en-gb@1.1.33: resolution: {integrity: sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g==} - /@cspell/dict-en_us@4.3.19: - resolution: {integrity: sha512-tHcXdkmm0t9LlRct1vgu3+h0KW/wlXCInkTiR4D/rl730q1zu2qVEgiy1saMiTUSNmdu7Hiy+Mhb+1braVqnZQ==} + /@cspell/dict-en_us@4.3.23: + resolution: {integrity: sha512-l0SoEQBsi3zDSl3OuL4/apBkxjuj4hLIg/oy6+gZ7LWh03rKdF6VNtSZNXWAmMY+pmb1cGA3ouleTiJIglbsIg==} - /@cspell/dict-filetypes@3.0.3: - resolution: {integrity: sha512-J9UP+qwwBLfOQ8Qg9tAsKtSY/WWmjj21uj6zXTI9hRLD1eG1uUOLcfVovAmtmVqUWziPSKMr87F6SXI3xmJXgw==} + /@cspell/dict-filetypes@3.0.4: + resolution: {integrity: sha512-IBi8eIVdykoGgIv5wQhOURi5lmCNJq0we6DvqKoPQJHthXbgsuO1qrHSiUVydMiQl/XvcnUWTMeAlVUlUClnVg==} /@cspell/dict-fonts@4.0.0: resolution: {integrity: sha512-t9V4GeN/m517UZn63kZPUYP3OQg5f0OBLSd3Md5CU3eH1IFogSvTzHHnz4Wqqbv8NNRiBZ3HfdY/pqREZ6br3Q==} @@ -3542,8 +3428,8 @@ packages: /@cspell/dict-fsharp@1.0.1: resolution: {integrity: sha512-23xyPcD+j+NnqOjRHgW3IU7Li912SX9wmeefcY0QxukbAxJ/vAN4rBpjSwwYZeQPAn3fxdfdNZs03fg+UM+4yQ==} - /@cspell/dict-fullstack@3.1.5: - resolution: {integrity: sha512-6ppvo1dkXUZ3fbYn/wwzERxCa76RtDDl5Afzv2lijLoijGGUw5yYdLBKJnx8PJBGNLh829X352ftE7BElG4leA==} + /@cspell/dict-fullstack@3.1.8: + resolution: {integrity: sha512-YRlZupL7uqMCtEBK0bDP9BrcPnjDhz7m4GBqCc1EYqfXauHbLmDT8ELha7T/E7wsFKniHSjzwDZzhNXo2lusRQ==} /@cspell/dict-gaming-terms@1.0.5: resolution: {integrity: sha512-C3riccZDD3d9caJQQs1+MPfrUrQ+0KHdlj9iUR1QD92FgTOF6UxoBpvHUUZ9YSezslcmpFQK4xQQ5FUGS7uWfw==} @@ -3551,8 +3437,11 @@ packages: /@cspell/dict-git@3.0.0: resolution: {integrity: sha512-simGS/lIiXbEaqJu9E2VPoYW1OTC2xrwPPXNXFMa2uo/50av56qOuaxDrZ5eH1LidFXwoc8HROCHYeKoNrDLSw==} - /@cspell/dict-golang@6.0.5: - resolution: {integrity: sha512-w4mEqGz4/wV+BBljLxduFNkMrd3rstBNDXmoX5kD4UTzIb4Sy0QybWCtg2iVT+R0KWiRRA56QKOvBsgXiddksA==} + /@cspell/dict-golang@6.0.9: + resolution: {integrity: sha512-etDt2WQauyEQDA+qPS5QtkYTb2I9l5IfQftAllVoB1aOrT6bxxpHvMEpJ0Hsn/vezxrCqa/BmtUbRxllIxIuSg==} + + /@cspell/dict-google@1.0.1: + resolution: {integrity: sha512-dQr4M3n95uOhtloNSgB9tYYGXGGEGEykkFyRtfcp5pFuEecYUa0BSgtlGKx9RXVtJtKgR+yFT/a5uQSlt8WjqQ==} /@cspell/dict-haskell@4.0.1: resolution: {integrity: sha512-uRrl65mGrOmwT7NxspB4xKXFUenNC7IikmpRZW8Uzqbqcu7ZRCUfstuVH7T1rmjRgRkjcIjE4PC11luDou4wEQ==} @@ -3563,14 +3452,14 @@ packages: /@cspell/dict-html@4.0.5: resolution: {integrity: sha512-p0brEnRybzSSWi8sGbuVEf7jSTDmXPx7XhQUb5bgG6b54uj+Z0Qf0V2n8b/LWwIPJNd1GygaO9l8k3HTCy1h4w==} - /@cspell/dict-java@5.0.6: - resolution: {integrity: sha512-kdE4AHHHrixyZ5p6zyms1SLoYpaJarPxrz8Tveo6gddszBVVwIUZ+JkQE1bWNLK740GWzIXdkznpUfw1hP9nXw==} + /@cspell/dict-java@5.0.7: + resolution: {integrity: sha512-ejQ9iJXYIq7R09BScU2y5OUGrSqwcD+J5mHFOKbduuQ5s/Eh/duz45KOzykeMLI6KHPVxhBKpUPBWIsfewECpQ==} /@cspell/dict-julia@1.0.1: resolution: {integrity: sha512-4JsCLCRhhLMLiaHpmR7zHFjj1qOauzDI5ZzCNQS31TUMfsOo26jAKDfo0jljFAKgw5M2fEG7sKr8IlPpQAYrmQ==} - /@cspell/dict-k8s@1.0.2: - resolution: {integrity: sha512-tLT7gZpNPnGa+IIFvK9SP1LrSpPpJ94a/DulzAPOb1Q2UBFwdpFd82UWhio0RNShduvKG/WiMZf/wGl98pn+VQ==} + /@cspell/dict-k8s@1.0.5: + resolution: {integrity: sha512-Cj+/ZV4S+MKlwfocSJZqe/2UAd/sY8YtlZjbK25VN1nCnrsKrBjfkX29vclwSj1U9aJg4Z9jw/uMjoaKu9ZrpQ==} /@cspell/dict-latex@4.0.0: resolution: {integrity: sha512-LPY4y6D5oI7D3d+5JMJHK/wxYTQa2lJMSNxps2JtuF8hbAnBQb3igoWEjEbIbRRH1XBM0X8dQqemnjQNCiAtxQ==} @@ -3590,22 +3479,22 @@ packages: /@cspell/dict-node@5.0.1: resolution: {integrity: sha512-lax/jGz9h3Dv83v8LHa5G0bf6wm8YVRMzbjJPG/9rp7cAGPtdrga+XANFq+B7bY5+jiSA3zvj10LUFCFjnnCCg==} - /@cspell/dict-npm@5.0.15: - resolution: {integrity: sha512-sX0X5YWNW54F4baW7b5JJB6705OCBIZtUqjOghlJNORS5No7QY1IX1zc5FxNNu4gsaCZITAmfMi4ityXEsEThA==} + /@cspell/dict-npm@5.0.16: + resolution: {integrity: sha512-ZWPnLAziEcSCvV0c8k9Qj88pfMu+wZwM5Qks87ShsfBgI8uLZ9tGHravA7gmjH1Gd7Bgxy2ulvXtSqIWPh1lew==} - /@cspell/dict-php@4.0.6: - resolution: {integrity: sha512-ySAXisf7twoVFZqBV2o/DKiCLIDTHNqfnj0EfH9OoOUR7HL3rb6zJkm0viLUFDO2G/8SyIi6YrN/6KX+Scjjjg==} + /@cspell/dict-php@4.0.8: + resolution: {integrity: sha512-TBw3won4MCBQ2wdu7kvgOCR3dY2Tb+LJHgDUpuquy3WnzGiSDJ4AVelrZdE1xu7mjFJUr4q48aB21YT5uQqPZA==} - /@cspell/dict-powershell@5.0.3: - resolution: {integrity: sha512-lEdzrcyau6mgzu1ie98GjOEegwVHvoaWtzQnm1ie4DyZgMr+N6D0Iyj1lzvtmt0snvsDFa5F2bsYzf3IMKcpcA==} + /@cspell/dict-powershell@5.0.4: + resolution: {integrity: sha512-eosDShapDgBWN9ULF7+sRNdUtzRnUdsfEdBSchDm8FZA4HOqxUSZy3b/cX/Rdw0Fnw0AKgk0kzgXw7tS6vwJMQ==} - /@cspell/dict-public-licenses@2.0.6: - resolution: {integrity: sha512-bHqpSpJvLCUcWxj1ov/Ki8WjmESpYwRpQlqfdchekOTc93Huhvjm/RXVN1R4fVf4Hspyem1QVkCGqAmjJMj6sw==} + /@cspell/dict-public-licenses@2.0.7: + resolution: {integrity: sha512-KlBXuGcN3LE7tQi/GEqKiDewWGGuopiAD0zRK1QilOx5Co8XAvs044gk4MNIQftc8r0nHeUI+irJKLGcR36DIQ==} - /@cspell/dict-python@4.1.11: - resolution: {integrity: sha512-XG+v3PumfzUW38huSbfT15Vqt3ihNb462ulfXifpQllPok5OWynhszCLCRQjQReV+dgz784ST4ggRxW452/kVg==} + /@cspell/dict-python@4.2.1: + resolution: {integrity: sha512-9X2jRgyM0cxBoFQRo4Zc8oacyWnXi+0/bMI5FGibZNZV4y/o9UoFEr6agjU260/cXHTjIdkX233nN7eb7dtyRg==} dependencies: - '@cspell/dict-data-science': 1.0.11 + '@cspell/dict-data-science': 2.0.1 /@cspell/dict-r@2.0.1: resolution: {integrity: sha512-KCmKaeYMLm2Ip79mlYPc8p+B2uzwBp4KMkzeLd5E6jUlCL93Y5Nvq68wV5fRLDRTf7N1LvofkVFWfDcednFOgA==} @@ -3613,14 +3502,14 @@ packages: /@cspell/dict-ruby@5.0.2: resolution: {integrity: sha512-cIh8KTjpldzFzKGgrqUX4bFyav5lC52hXDKo4LbRuMVncs3zg4hcSf4HtURY+f2AfEZzN6ZKzXafQpThq3dl2g==} - /@cspell/dict-rust@4.0.3: - resolution: {integrity: sha512-8DFCzkFQ+2k3fDaezWc/D+0AyiBBiOGYfSDUfrTNU7wpvUvJ6cRcAUshMI/cn2QW/mmxTspRgVlXsE6GUMz00Q==} + /@cspell/dict-rust@4.0.4: + resolution: {integrity: sha512-v9/LcZknt/Xq7m1jdTWiQEtmkVVKdE1etAfGL2sgcWpZYewEa459HeWndNA0gfzQrpWX9sYay18mt7pqClJEdA==} - /@cspell/dict-scala@5.0.0: - resolution: {integrity: sha512-ph0twaRoV+ylui022clEO1dZ35QbeEQaKTaV2sPOsdwIokABPIiK09oWwGK9qg7jRGQwVaRPEq0Vp+IG1GpqSQ==} + /@cspell/dict-scala@5.0.2: + resolution: {integrity: sha512-v97ClgidZt99JUm7OjhQugDHmhx4U8fcgunHvD/BsXWjXNj4cTr0m0YjofyZoL44WpICsNuFV9F/sv9OM5HUEw==} - /@cspell/dict-software-terms@3.3.22: - resolution: {integrity: sha512-uEtaN0xeDbGh88QX+SSvvBNvZahk3ZXBRnfgHWoppUF6WGtg1oLtuLWO6fGGtwRE4klXvSWP8rA2ixzAbWvYqw==} + /@cspell/dict-software-terms@3.4.9: + resolution: {integrity: sha512-J2uNH3ScBPQijXyzLfxsC1CYgq36MWvbynJzQJ15ZazTsecC0pQHynm3/6VH4X/BphV2eXB0GRJT3yMicYLGCw==} /@cspell/dict-sql@2.1.3: resolution: {integrity: sha512-SEyTNKJrjqD6PAzZ9WpdSu6P7wgdNtGV2RV8Kpuw1x6bV+YsSptuClYG+JSdRExBTE6LwIe1bTklejUp3ZP8TQ==} @@ -3634,22 +3523,26 @@ packages: /@cspell/dict-terraform@1.0.0: resolution: {integrity: sha512-Ak+vy4HP/bOgzf06BAMC30+ZvL9mzv21xLM2XtfnBLTDJGdxlk/nK0U6QT8VfFLqJ0ZZSpyOxGsUebWDCTr/zQ==} - /@cspell/dict-typescript@3.1.4: - resolution: {integrity: sha512-jUcPa0rsPca5ur1+G56DXnSc5hbbJkzvPHHvyQtkbPXBQd3CXPMNfrTVCgzex/7cY/7FONcpFCUwgwfni9Jqbw==} + /@cspell/dict-typescript@3.1.5: + resolution: {integrity: sha512-EkIwwNV/xqEoBPJml2S16RXj65h1kvly8dfDLgXerrKw6puybZdvAHerAph6/uPTYdtLcsPyJYkPt5ISOJYrtw==} /@cspell/dict-vue@3.0.0: resolution: {integrity: sha512-niiEMPWPV9IeRBRzZ0TBZmNnkK3olkOPYxC1Ny2AX4TGlYRajcW0WUtoSHmvvjZNfWLSg2L6ruiBeuPSbjnG6A==} - /@cspell/dynamic-import@8.8.1: - resolution: {integrity: sha512-IyKEbSaHkw9V4Oc4JDasF96+BHKV8motBrepjLIMUjdJ152fBg8zqbvF769POdCJg0QouZVUV+h9V7zC6v45/g==} + /@cspell/dynamic-import@8.9.1: + resolution: {integrity: sha512-ao4IDqQ8MyRqiB3NHA8R7ThRsuDLXdSCFm7Pvz8EqDnWaX3NAuClzgT3EoxJlw9pyyPQX3tW5Vg7ft3GSsBFUw==} engines: {node: '>=18.0'} dependencies: import-meta-resolve: 4.1.0 - /@cspell/strong-weak-map@8.8.1: - resolution: {integrity: sha512-QNnMY5jKP/ItVYRGS4w3KF+1iXBUUjldZNVtEoQe2dFergxvbIYQ0S++TZb25G/o9nRF5GmOpecJaOvwUBZsiw==} + /@cspell/strong-weak-map@8.9.1: + resolution: {integrity: sha512-onD/UPJW7rBQrRDqYNvPUAoWoBp1G2g+mijAD7EkuseyAKTKlKz624rXpHUOTqI814owmhFMNSf2QyYy8gFM6Q==} engines: {node: '>=18'} + /@cspell/url@8.9.1: + resolution: {integrity: sha512-2AncPKGq9fnytwnL7V4KfoSjiEU0m8tVDFerGiDMNmTMWiQ4zj0kTATai118XT1eBVKiyrAotYRLSrsuUo9U3g==} + engines: {node: '>=18.0'} + /@cspotcode/source-map-support@0.8.1: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} @@ -3665,7 +3558,7 @@ packages: resolution: {integrity: sha512-+sbxb71sWre+PwDK7X2T8+bhS6clcVMLwBPznX45Qu6opJcgRjAp7gYSDzVFp187J+feSj5dNBN1mJoi6ckkUQ==} dev: false - /@docsearch/react@3.6.0(@algolia/client-search@4.23.2)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.13.0): + /@docsearch/react@3.6.0(@algolia/client-search@4.23.2)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.13.0): resolution: {integrity: sha512-HUFut4ztcVNmqy9gp/wxNbC7pTOHhgVVkHVGCACTuLhUKUhKAF9KYHJtMiLUJxEqiFLQiuri1fWF8zqwM/cu1w==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' @@ -3685,7 +3578,7 @@ packages: '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.23.2)(algoliasearch@4.23.2)(search-insights@2.13.0) '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.23.2)(algoliasearch@4.23.2) '@docsearch/css': 3.6.0 - '@types/react': 18.3.2 + '@types/react': 18.3.3 algoliasearch: 4.23.2 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -3694,32 +3587,32 @@ packages: - '@algolia/client-search' dev: false - /@docusaurus/core@3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): - resolution: {integrity: sha512-PzKMydKI3IU1LmeZQDi+ut5RSuilbXnA8QdowGeJEgU8EJjmx3rBHNT1LxQxOVqNEwpWi/csLwd9bn7rUjggPA==} + /@docusaurus/core@3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3): + resolution: {integrity: sha512-g+0wwmN2UJsBqy2fQRQ6fhXruoEa62JDeEa5d8IdTJlMoaDaEDfHh7WjwGRn4opuTQWpjAwP/fbcgyHKlE+64w==} engines: {node: '>=18.0'} hasBin: true peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@babel/core': 7.24.5 - '@babel/generator': 7.24.4 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-transform-runtime': 7.24.3(@babel/core@7.24.5) - '@babel/preset-env': 7.24.3(@babel/core@7.24.5) - '@babel/preset-react': 7.24.1(@babel/core@7.24.5) - '@babel/preset-typescript': 7.24.1(@babel/core@7.24.5) + '@babel/core': 7.24.7 + '@babel/generator': 7.24.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-transform-runtime': 7.24.3(@babel/core@7.24.7) + '@babel/preset-env': 7.24.5(@babel/core@7.24.7) + '@babel/preset-react': 7.24.1(@babel/core@7.24.7) + '@babel/preset-typescript': 7.24.1(@babel/core@7.24.7) '@babel/runtime': 7.24.1 '@babel/runtime-corejs3': 7.24.1 - '@babel/traverse': 7.24.1 - '@docusaurus/cssnano-preset': 3.3.2 - '@docusaurus/logger': 3.3.2 - '@docusaurus/mdx-loader': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/utils': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(typescript@5.4.5) - '@docusaurus/utils-common': 3.3.2(@docusaurus/types@3.3.2) - '@docusaurus/utils-validation': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(typescript@5.4.5) + '@babel/traverse': 7.24.5 + '@docusaurus/cssnano-preset': 3.4.0 + '@docusaurus/logger': 3.4.0 + '@docusaurus/mdx-loader': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(typescript@5.5.3) + '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.4.0) + '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(typescript@5.5.3) autoprefixer: 10.4.19(postcss@8.4.38) - babel-loader: 9.1.3(@babel/core@7.24.5)(webpack@5.91.0) + babel-loader: 9.1.3(@babel/core@7.24.7)(webpack@5.91.0) babel-plugin-dynamic-import-node: 2.3.3 boxen: 6.2.1 chalk: 4.1.2 @@ -3748,10 +3641,10 @@ packages: mini-css-extract-plugin: 2.8.1(webpack@5.91.0) p-map: 4.0.0 postcss: 8.4.38 - postcss-loader: 7.3.4(postcss@8.4.38)(typescript@5.4.5)(webpack@5.91.0) + postcss-loader: 7.3.4(postcss@8.4.38)(typescript@5.5.3)(webpack@5.91.0) prompts: 2.4.2 react: 18.3.1 - react-dev-utils: 12.0.1(eslint@8.57.0)(typescript@5.4.5)(webpack@5.91.0) + react-dev-utils: 12.0.1(eslint@8.57.0)(typescript@5.5.3)(webpack@5.91.0) react-dom: 18.3.1(react@18.3.1) react-helmet-async: 1.3.0(react-dom@18.3.1)(react@18.3.1) react-loadable: /@docusaurus/react-loadable@6.0.0(react@18.3.1) @@ -3763,11 +3656,11 @@ packages: semver: 7.6.2 serve-handler: 6.1.5 shelljs: 0.8.5 - terser-webpack-plugin: 5.3.10(@swc/core@1.5.7)(webpack@5.91.0) + terser-webpack-plugin: 5.3.10(@swc/core@1.6.6)(webpack@5.91.0) tslib: 2.6.2 update-notifier: 6.0.2 url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.91.0) - webpack: 5.91.0(@swc/core@1.5.7) + webpack: 5.91.0(@swc/core@1.6.6) webpack-bundle-analyzer: 4.10.1 webpack-dev-server: 4.15.2(webpack@5.91.0) webpack-merge: 5.10.0 @@ -3792,8 +3685,8 @@ packages: - webpack-cli dev: false - /@docusaurus/cssnano-preset@3.3.2: - resolution: {integrity: sha512-+5+epLk/Rp4vFML4zmyTATNc3Is+buMAL6dNjrMWahdJCJlMWMPd/8YfU+2PA57t8mlSbhLJ7vAZVy54cd1vRQ==} + /@docusaurus/cssnano-preset@3.4.0: + resolution: {integrity: sha512-qwLFSz6v/pZHy/UP32IrprmH5ORce86BGtN0eBtG75PpzQJAzp9gefspox+s8IEOr0oZKuQ/nhzZ3xwyc3jYJQ==} engines: {node: '>=18.0'} dependencies: cssnano-preset-advanced: 6.1.2(postcss@8.4.38) @@ -3802,24 +3695,24 @@ packages: tslib: 2.6.2 dev: false - /@docusaurus/logger@3.3.2: - resolution: {integrity: sha512-Ldu38GJ4P8g4guN7d7pyCOJ7qQugG7RVyaxrK8OnxuTlaImvQw33aDRwaX2eNmX8YK6v+//Z502F4sOZbHHCHQ==} + /@docusaurus/logger@3.4.0: + resolution: {integrity: sha512-bZwkX+9SJ8lB9kVRkXw+xvHYSMGG4bpYHKGXeXFvyVc79NMeeBSGgzd4TQLHH+DYeOJoCdl8flrFJVxlZ0wo/Q==} engines: {node: '>=18.0'} dependencies: chalk: 4.1.2 tslib: 2.6.2 dev: false - /@docusaurus/mdx-loader@3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): - resolution: {integrity: sha512-AFRxj/aOk3/mfYDPxE3wTbrjeayVRvNSZP7mgMuUlrb2UlPRbSVAFX1k2RbgAJrnTSwMgb92m2BhJgYRfptN3g==} + /@docusaurus/mdx-loader@3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3): + resolution: {integrity: sha512-kSSbrrk4nTjf4d+wtBA9H+FGauf2gCax89kV8SUSJu3qaTdSIKdWERlngsiHaCFgZ7laTJ8a67UFf+xlFPtuTw==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/logger': 3.3.2 - '@docusaurus/utils': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(typescript@5.4.5) - '@docusaurus/utils-validation': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(typescript@5.4.5) + '@docusaurus/logger': 3.4.0 + '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(typescript@5.5.3) + '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(typescript@5.5.3) '@mdx-js/mdx': 3.0.1 '@slorber/remark-comment': 1.0.0 escape-html: 1.0.3 @@ -3842,7 +3735,7 @@ packages: unist-util-visit: 5.0.0 url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.91.0) vfile: 6.0.1 - webpack: 5.91.0(@swc/core@1.5.7) + webpack: 5.91.0(@swc/core@1.6.6) transitivePeerDependencies: - '@docusaurus/types' - '@swc/core' @@ -3853,15 +3746,15 @@ packages: - webpack-cli dev: false - /@docusaurus/module-type-aliases@3.3.2(@swc/core@1.5.7)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-b/XB0TBJah5yKb4LYuJT4buFvL0MGAb0+vJDrJtlYMguRtsEBkf2nWl5xP7h4Dlw6ol0hsHrCYzJ50kNIOEclw==} + /@docusaurus/module-type-aliases@3.4.0(@swc/core@1.6.6)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-A1AyS8WF5Bkjnb8s+guTDuYmUiwJzNrtchebBHpc0gz0PyHJNMaybUlSrmJjHVcGrya0LKI4YcR3lBDQfXRYLw==} peerDependencies: react: '*' react-dom: '*' dependencies: - '@docusaurus/types': 3.3.2(@swc/core@1.5.7)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/types': 3.4.0(@swc/core@1.6.6)(react-dom@18.3.1)(react@18.3.1) '@types/history': 4.7.11 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-router-config': 5.0.11 '@types/react-router-dom': 5.3.3 react: 18.3.1 @@ -3875,20 +3768,20 @@ packages: - uglify-js - webpack-cli - /@docusaurus/plugin-content-blog@3.3.2(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): - resolution: {integrity: sha512-fJU+dmqp231LnwDJv+BHVWft8pcUS2xVPZdeYH6/ibH1s2wQ/sLcmUrGWyIv/Gq9Ptj8XWjRPMghlxghuPPoxg==} + /@docusaurus/plugin-content-blog@3.4.0(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3): + resolution: {integrity: sha512-vv6ZAj78ibR5Jh7XBUT4ndIjmlAxkijM3Sx5MAAzC1gyv0vupDQNhzuFg1USQmQVj3P5I6bquk12etPV3LJ+Xw==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/logger': 3.3.2 - '@docusaurus/mdx-loader': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/types': 3.3.2(@swc/core@1.5.7)(react-dom@18.3.1)(react@18.3.1) - '@docusaurus/utils': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(typescript@5.4.5) - '@docusaurus/utils-common': 3.3.2(@docusaurus/types@3.3.2) - '@docusaurus/utils-validation': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(typescript@5.4.5) + '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/logger': 3.4.0 + '@docusaurus/mdx-loader': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/types': 3.4.0(@swc/core@1.6.6)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(typescript@5.5.3) + '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.4.0) + '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(typescript@5.5.3) cheerio: 1.0.0-rc.12 feed: 4.2.2 fs-extra: 11.2.0 @@ -3900,7 +3793,7 @@ packages: tslib: 2.6.2 unist-util-visit: 5.0.0 utility-types: 3.11.0 - webpack: 5.91.0(@swc/core@1.5.7) + webpack: 5.91.0(@swc/core@1.6.6) transitivePeerDependencies: - '@parcel/css' - '@rspack/core' @@ -3920,21 +3813,21 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-docs@3.3.2(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): - resolution: {integrity: sha512-Dm1ri2VlGATTN3VGk1ZRqdRXWa1UlFubjaEL6JaxaK7IIFqN/Esjpl+Xw10R33loHcRww/H76VdEeYayaL76eg==} + /@docusaurus/plugin-content-docs@3.4.0(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3): + resolution: {integrity: sha512-HkUCZffhBo7ocYheD9oZvMcDloRnGhBMOZRyVcAQRFmZPmNqSyISlXA1tQCIxW+r478fty97XXAGjNYzBjpCsg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/logger': 3.3.2 - '@docusaurus/mdx-loader': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/module-type-aliases': 3.3.2(@swc/core@1.5.7)(react-dom@18.3.1)(react@18.3.1) - '@docusaurus/types': 3.3.2(@swc/core@1.5.7)(react-dom@18.3.1)(react@18.3.1) - '@docusaurus/utils': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(typescript@5.4.5) - '@docusaurus/utils-common': 3.3.2(@docusaurus/types@3.3.2) - '@docusaurus/utils-validation': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(typescript@5.4.5) + '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/logger': 3.4.0 + '@docusaurus/mdx-loader': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/module-type-aliases': 3.4.0(@swc/core@1.6.6)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/types': 3.4.0(@swc/core@1.6.6)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(typescript@5.5.3) + '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.4.0) + '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(typescript@5.5.3) '@types/react-router-config': 5.0.11 combine-promises: 1.2.0 fs-extra: 11.2.0 @@ -3944,7 +3837,7 @@ packages: react-dom: 18.3.1(react@18.3.1) tslib: 2.6.2 utility-types: 3.11.0 - webpack: 5.91.0(@swc/core@1.5.7) + webpack: 5.91.0(@swc/core@1.6.6) transitivePeerDependencies: - '@parcel/css' - '@rspack/core' @@ -3964,23 +3857,23 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-pages@3.3.2(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): - resolution: {integrity: sha512-EKc9fQn5H2+OcGER8x1aR+7URtAGWySUgULfqE/M14+rIisdrBstuEZ4lUPDRrSIexOVClML82h2fDS+GSb8Ew==} + /@docusaurus/plugin-content-pages@3.4.0(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3): + resolution: {integrity: sha512-h2+VN/0JjpR8fIkDEAoadNjfR3oLzB+v1qSXbIAKjQ46JAHx3X22n9nqS+BWSQnTnp1AjkjSvZyJMekmcwxzxg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/mdx-loader': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/types': 3.3.2(@swc/core@1.5.7)(react-dom@18.3.1)(react@18.3.1) - '@docusaurus/utils': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(typescript@5.4.5) - '@docusaurus/utils-validation': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(typescript@5.4.5) + '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/mdx-loader': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/types': 3.4.0(@swc/core@1.6.6)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(typescript@5.5.3) + '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(typescript@5.5.3) fs-extra: 11.2.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.6.2 - webpack: 5.91.0(@swc/core@1.5.7) + webpack: 5.91.0(@swc/core@1.6.6) transitivePeerDependencies: - '@parcel/css' - '@rspack/core' @@ -4000,16 +3893,16 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-debug@3.3.2(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): - resolution: {integrity: sha512-oBIBmwtaB+YS0XlmZ3gCO+cMbsGvIYuAKkAopoCh0arVjtlyPbejzPrHuCoRHB9G7abjNZw7zoONOR8+8LM5+Q==} + /@docusaurus/plugin-debug@3.4.0(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3): + resolution: {integrity: sha512-uV7FDUNXGyDSD3PwUaf5YijX91T5/H9SX4ErEcshzwgzWwBtK37nUWPU3ZLJfeTavX3fycTOqk9TglpOLaWkCg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/types': 3.3.2(@swc/core@1.5.7)(react-dom@18.3.1)(react@18.3.1) - '@docusaurus/utils': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(typescript@5.4.5) + '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/types': 3.4.0(@swc/core@1.6.6)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(typescript@5.5.3) fs-extra: 11.2.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -4034,16 +3927,16 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-analytics@3.3.2(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): - resolution: {integrity: sha512-jXhrEIhYPSClMBK6/IA8qf1/FBoxqGXZvg7EuBax9HaK9+kL3L0TJIlatd8jQJOMtds8mKw806TOCc3rtEad1A==} + /@docusaurus/plugin-google-analytics@3.4.0(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3): + resolution: {integrity: sha512-mCArluxEGi3cmYHqsgpGGt3IyLCrFBxPsxNZ56Mpur0xSlInnIHoeLDH7FvVVcPJRPSQ9/MfRqLsainRw+BojA==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/types': 3.3.2(@swc/core@1.5.7)(react-dom@18.3.1)(react@18.3.1) - '@docusaurus/utils-validation': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(typescript@5.4.5) + '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/types': 3.4.0(@swc/core@1.6.6)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(typescript@5.5.3) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.6.2 @@ -4066,16 +3959,16 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-gtag@3.3.2(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): - resolution: {integrity: sha512-vcrKOHGbIDjVnNMrfbNpRQR1x6Jvcrb48kVzpBAOsKbj9rXZm/idjVAXRaewwobHdOrJkfWS/UJoxzK8wyLRBQ==} + /@docusaurus/plugin-google-gtag@3.4.0(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3): + resolution: {integrity: sha512-Dsgg6PLAqzZw5wZ4QjUYc8Z2KqJqXxHxq3vIoyoBWiLEEfigIs7wHR+oiWUQy3Zk9MIk6JTYj7tMoQU0Jm3nqA==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/types': 3.3.2(@swc/core@1.5.7)(react-dom@18.3.1)(react@18.3.1) - '@docusaurus/utils-validation': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(typescript@5.4.5) + '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/types': 3.4.0(@swc/core@1.6.6)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(typescript@5.5.3) '@types/gtag.js': 0.0.12 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -4099,16 +3992,16 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-tag-manager@3.3.2(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): - resolution: {integrity: sha512-ldkR58Fdeks0vC+HQ+L+bGFSJsotQsipXD+iKXQFvkOfmPIV6QbHRd7IIcm5b6UtwOiK33PylNS++gjyLUmaGw==} + /@docusaurus/plugin-google-tag-manager@3.4.0(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3): + resolution: {integrity: sha512-O9tX1BTwxIhgXpOLpFDueYA9DWk69WCbDRrjYoMQtFHSkTyE7RhNgyjSPREUWJb9i+YUg3OrsvrBYRl64FCPCQ==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/types': 3.3.2(@swc/core@1.5.7)(react-dom@18.3.1)(react@18.3.1) - '@docusaurus/utils-validation': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(typescript@5.4.5) + '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/types': 3.4.0(@swc/core@1.6.6)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(typescript@5.5.3) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.6.2 @@ -4131,19 +4024,19 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-sitemap@3.3.2(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): - resolution: {integrity: sha512-/ZI1+bwZBhAgC30inBsHe3qY9LOZS+79fRGkNdTcGHRMcdAp6Vw2pCd1gzlxd/xU+HXsNP6cLmTOrggmRp3Ujg==} + /@docusaurus/plugin-sitemap@3.4.0(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3): + resolution: {integrity: sha512-+0VDvx9SmNrFNgwPoeoCha+tRoAjopwT0+pYO1xAbyLcewXSemq+eLxEa46Q1/aoOaJQ0qqHELuQM7iS2gp33Q==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/logger': 3.3.2 - '@docusaurus/types': 3.3.2(@swc/core@1.5.7)(react-dom@18.3.1)(react@18.3.1) - '@docusaurus/utils': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(typescript@5.4.5) - '@docusaurus/utils-common': 3.3.2(@docusaurus/types@3.3.2) - '@docusaurus/utils-validation': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(typescript@5.4.5) + '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/logger': 3.4.0 + '@docusaurus/types': 3.4.0(@swc/core@1.6.6)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(typescript@5.5.3) + '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.4.0) + '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(typescript@5.5.3) fs-extra: 11.2.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -4168,26 +4061,26 @@ packages: - webpack-cli dev: false - /@docusaurus/preset-classic@3.3.2(@algolia/client-search@4.23.2)(@swc/core@1.5.7)(@types/react@18.3.2)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.13.0)(typescript@5.4.5): - resolution: {integrity: sha512-1SDS7YIUN1Pg3BmD6TOTjhB7RSBHJRpgIRKx9TpxqyDrJ92sqtZhomDc6UYoMMLQNF2wHFZZVGFjxJhw2VpL+Q==} + /@docusaurus/preset-classic@3.4.0(@algolia/client-search@4.23.2)(@swc/core@1.6.6)(@types/react@18.3.3)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.13.0)(typescript@5.5.3): + resolution: {integrity: sha512-Ohj6KB7siKqZaQhNJVMBBUzT3Nnp6eTKqO+FXO3qu/n1hJl3YLwVKTWBg28LF7MWrKu46UuYavwMRxud0VyqHg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/plugin-content-blog': 3.3.2(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/plugin-content-docs': 3.3.2(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/plugin-content-pages': 3.3.2(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/plugin-debug': 3.3.2(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/plugin-google-analytics': 3.3.2(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/plugin-google-gtag': 3.3.2(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/plugin-google-tag-manager': 3.3.2(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/plugin-sitemap': 3.3.2(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/theme-classic': 3.3.2(@swc/core@1.5.7)(@types/react@18.3.2)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/theme-common': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/theme-search-algolia': 3.3.2(@algolia/client-search@4.23.2)(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(@types/react@18.3.2)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.13.0)(typescript@5.4.5) - '@docusaurus/types': 3.3.2(@swc/core@1.5.7)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/plugin-content-blog': 3.4.0(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/plugin-content-docs': 3.4.0(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/plugin-content-pages': 3.4.0(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/plugin-debug': 3.4.0(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/plugin-google-analytics': 3.4.0(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/plugin-google-gtag': 3.4.0(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/plugin-google-tag-manager': 3.4.0(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/plugin-sitemap': 3.4.0(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/theme-classic': 3.4.0(@swc/core@1.6.6)(@types/react@18.3.3)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/theme-common': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/theme-search-algolia': 3.4.0(@algolia/client-search@4.23.2)(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(@types/react@18.3.3)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.13.0)(typescript@5.5.3) + '@docusaurus/types': 3.4.0(@swc/core@1.6.6)(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) transitivePeerDependencies: @@ -4217,29 +4110,29 @@ packages: peerDependencies: react: '*' dependencies: - '@types/react': 18.3.2 + '@types/react': 18.3.3 react: 18.3.1 - /@docusaurus/theme-classic@3.3.2(@swc/core@1.5.7)(@types/react@18.3.2)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): - resolution: {integrity: sha512-gepHFcsluIkPb4Im9ukkiO4lXrai671wzS3cKQkY9BXQgdVwsdPf/KS0Vs4Xlb0F10fTz+T3gNjkxNEgSN9M0A==} + /@docusaurus/theme-classic@3.4.0(@swc/core@1.6.6)(@types/react@18.3.3)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3): + resolution: {integrity: sha512-0IPtmxsBYv2adr1GnZRdMkEQt1YW6tpzrUPj02YxNpvJ5+ju4E13J5tB4nfdaen/tfR1hmpSPlTFPvTf4kwy8Q==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/mdx-loader': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/module-type-aliases': 3.3.2(@swc/core@1.5.7)(react-dom@18.3.1)(react@18.3.1) - '@docusaurus/plugin-content-blog': 3.3.2(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/plugin-content-docs': 3.3.2(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/plugin-content-pages': 3.3.2(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/theme-common': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/theme-translations': 3.3.2 - '@docusaurus/types': 3.3.2(@swc/core@1.5.7)(react-dom@18.3.1)(react@18.3.1) - '@docusaurus/utils': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(typescript@5.4.5) - '@docusaurus/utils-common': 3.3.2(@docusaurus/types@3.3.2) - '@docusaurus/utils-validation': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(typescript@5.4.5) - '@mdx-js/react': 3.0.1(@types/react@18.3.2)(react@18.3.1) + '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/mdx-loader': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/module-type-aliases': 3.4.0(@swc/core@1.6.6)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/plugin-content-blog': 3.4.0(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/plugin-content-docs': 3.4.0(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/plugin-content-pages': 3.4.0(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/theme-common': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/theme-translations': 3.4.0 + '@docusaurus/types': 3.4.0(@swc/core@1.6.6)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(typescript@5.5.3) + '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.4.0) + '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(typescript@5.5.3) + '@mdx-js/react': 3.0.1(@types/react@18.3.3)(react@18.3.1) clsx: 2.1.1 copy-text-to-clipboard: 3.2.0 infima: 0.2.0-alpha.43 @@ -4274,22 +4167,22 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-common@3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): - resolution: {integrity: sha512-kXqSaL/sQqo4uAMQ4fHnvRZrH45Xz2OdJ3ABXDS7YVGPSDTBC8cLebFrRR4YF9EowUHto1UC/EIklJZQMG/usA==} + /@docusaurus/theme-common@3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3): + resolution: {integrity: sha512-0A27alXuv7ZdCg28oPE8nH/Iz73/IUejVaCazqu9elS4ypjiLhK3KfzdSQBnL/g7YfHSlymZKdiOHEo8fJ0qMA==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/mdx-loader': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/module-type-aliases': 3.3.2(@swc/core@1.5.7)(react-dom@18.3.1)(react@18.3.1) - '@docusaurus/plugin-content-blog': 3.3.2(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/plugin-content-docs': 3.3.2(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/plugin-content-pages': 3.3.2(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/utils': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(typescript@5.4.5) - '@docusaurus/utils-common': 3.3.2(@docusaurus/types@3.3.2) + '@docusaurus/mdx-loader': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/module-type-aliases': 3.4.0(@swc/core@1.6.6)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/plugin-content-blog': 3.4.0(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/plugin-content-docs': 3.4.0(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/plugin-content-pages': 3.4.0(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(typescript@5.5.3) + '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.4.0) '@types/history': 4.7.11 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-router-config': 5.0.11 clsx: 2.1.1 parse-numeric-range: 1.3.0 @@ -4318,18 +4211,18 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-mermaid@3.3.2(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): - resolution: {integrity: sha512-JY6q7owe5S5iH2N9oTjNDkqmuPW/+4j/zrX46Xag4RYOzt+WtMkeJilbzak8QGG8I2wDJXjUvX7Lu/jWuDAwUg==} + /@docusaurus/theme-mermaid@3.4.0(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3): + resolution: {integrity: sha512-3w5QW0HEZ2O6x2w6lU3ZvOe1gNXP2HIoKDMJBil1VmLBc9PmpAG17VmfhI/p3L2etNmOiVs5GgniUqvn8AFEGQ==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/module-type-aliases': 3.3.2(@swc/core@1.5.7)(react-dom@18.3.1)(react@18.3.1) - '@docusaurus/theme-common': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/types': 3.3.2(@swc/core@1.5.7)(react-dom@18.3.1)(react@18.3.1) - '@docusaurus/utils-validation': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(typescript@5.4.5) + '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/module-type-aliases': 3.4.0(@swc/core@1.6.6)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/theme-common': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/types': 3.4.0(@swc/core@1.6.6)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(typescript@5.5.3) mermaid: 10.9.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -4353,21 +4246,21 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-search-algolia@3.3.2(@algolia/client-search@4.23.2)(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(@types/react@18.3.2)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.13.0)(typescript@5.4.5): - resolution: {integrity: sha512-qLkfCl29VNBnF1MWiL9IyOQaHxUvicZp69hISyq/xMsNvFKHFOaOfk9xezYod2Q9xx3xxUh9t/QPigIei2tX4w==} + /@docusaurus/theme-search-algolia@3.4.0(@algolia/client-search@4.23.2)(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(@types/react@18.3.3)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.13.0)(typescript@5.5.3): + resolution: {integrity: sha512-aiHFx7OCw4Wck1z6IoShVdUWIjntC8FHCw9c5dR8r3q4Ynh+zkS8y2eFFunN/DL6RXPzpnvKCg3vhLQYJDmT9Q==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docsearch/react': 3.6.0(@algolia/client-search@4.23.2)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.13.0) - '@docusaurus/core': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/logger': 3.3.2 - '@docusaurus/plugin-content-docs': 3.3.2(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/theme-common': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@docusaurus/theme-translations': 3.3.2 - '@docusaurus/utils': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(typescript@5.4.5) - '@docusaurus/utils-validation': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(typescript@5.4.5) + '@docsearch/react': 3.6.0(@algolia/client-search@4.23.2)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.13.0) + '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/logger': 3.4.0 + '@docusaurus/plugin-content-docs': 3.4.0(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/theme-common': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(eslint@8.57.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@docusaurus/theme-translations': 3.4.0 + '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(typescript@5.5.3) + '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(typescript@5.5.3) algoliasearch: 4.23.2 algoliasearch-helper: 3.16.3(algoliasearch@4.23.2) clsx: 2.1.1 @@ -4401,34 +4294,34 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-translations@3.3.2: - resolution: {integrity: sha512-bPuiUG7Z8sNpGuTdGnmKl/oIPeTwKr0AXLGu9KaP6+UFfRZiyWbWE87ti97RrevB2ffojEdvchNujparR3jEZQ==} + /@docusaurus/theme-translations@3.4.0: + resolution: {integrity: sha512-zSxCSpmQCCdQU5Q4CnX/ID8CSUUI3fvmq4hU/GNP/XoAWtXo9SAVnM3TzpU8Gb//H3WCsT8mJcTfyOk3d9ftNg==} engines: {node: '>=18.0'} dependencies: fs-extra: 11.2.0 tslib: 2.6.2 dev: false - /@docusaurus/tsconfig@3.3.2: - resolution: {integrity: sha512-2MQXkLoWqgOSiqFojNEq8iPtFBHGQqd1b/SQMoe+v3GgHmk/L6YTTO/hMcHhWb1hTFmbkei++IajSfD3RlZKvw==} + /@docusaurus/tsconfig@3.4.0: + resolution: {integrity: sha512-0qENiJ+TRaeTzcg4olrnh0BQ7eCxTgbYWBnWUeQDc84UYkt/T3pDNnm3SiQkqPb+YQ1qtYFlC0RriAElclo8Dg==} dev: true - /@docusaurus/types@3.3.2(@swc/core@1.5.7)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-5p201S7AZhliRxTU7uMKtSsoC8mgPA9bs9b5NQg1IRdRxJfflursXNVsgc3PcMqiUTul/v1s3k3rXXFlRE890w==} + /@docusaurus/types@3.4.0(@swc/core@1.6.6)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-4jcDO8kXi5Cf9TcyikB/yKmz14f2RZ2qTRerbHAsS+5InE9ZgSLBNLsewtFTcTOXSVcbU3FoGOzcNWAmU1TR0A==} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: '@mdx-js/mdx': 3.0.1 '@types/history': 4.7.11 - '@types/react': 18.3.2 + '@types/react': 18.3.3 commander: 5.1.0 joi: 17.12.2 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-helmet-async: 1.3.0(react-dom@18.3.1)(react@18.3.1) utility-types: 3.11.0 - webpack: 5.91.0(@swc/core@1.5.7) + webpack: 5.91.0(@swc/core@1.6.6) webpack-merge: 5.10.0 transitivePeerDependencies: - '@swc/core' @@ -4437,8 +4330,8 @@ packages: - uglify-js - webpack-cli - /@docusaurus/utils-common@3.3.2(@docusaurus/types@3.3.2): - resolution: {integrity: sha512-QWFTLEkPYsejJsLStgtmetMFIA3pM8EPexcZ4WZ7b++gO5jGVH7zsipREnCHzk6+eDgeaXfkR6UPaTt86bp8Og==} + /@docusaurus/utils-common@3.4.0(@docusaurus/types@3.4.0): + resolution: {integrity: sha512-NVx54Wr4rCEKsjOH5QEVvxIqVvm+9kh7q8aYTU5WzUU9/Hctd6aTrcZ3G0Id4zYJ+AeaG5K5qHA4CY5Kcm2iyQ==} engines: {node: '>=18.0'} peerDependencies: '@docusaurus/types': '*' @@ -4446,19 +4339,21 @@ packages: '@docusaurus/types': optional: true dependencies: - '@docusaurus/types': 3.3.2(@swc/core@1.5.7)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/types': 3.4.0(@swc/core@1.6.6)(react-dom@18.3.1)(react@18.3.1) tslib: 2.6.2 dev: false - /@docusaurus/utils-validation@3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(typescript@5.4.5): - resolution: {integrity: sha512-itDgFs5+cbW9REuC7NdXals4V6++KifgVMzoGOOOSIifBQw+8ULhy86u5e1lnptVL0sv8oAjq2alO7I40GR7pA==} + /@docusaurus/utils-validation@3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(typescript@5.5.3): + resolution: {integrity: sha512-hYQ9fM+AXYVTWxJOT1EuNaRnrR2WGpRdLDQG07O8UOpsvCPWUVOeo26Rbm0JWY2sGLfzAb+tvJ62yF+8F+TV0g==} engines: {node: '>=18.0'} dependencies: - '@docusaurus/logger': 3.3.2 - '@docusaurus/utils': 3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(typescript@5.4.5) - '@docusaurus/utils-common': 3.3.2(@docusaurus/types@3.3.2) + '@docusaurus/logger': 3.4.0 + '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(typescript@5.5.3) + '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.4.0) + fs-extra: 11.2.0 joi: 17.12.2 js-yaml: 4.1.0 + lodash: 4.17.21 tslib: 2.6.2 transitivePeerDependencies: - '@docusaurus/types' @@ -4470,8 +4365,8 @@ packages: - webpack-cli dev: false - /@docusaurus/utils@3.3.2(@docusaurus/types@3.3.2)(@swc/core@1.5.7)(typescript@5.4.5): - resolution: {integrity: sha512-f4YMnBVymtkSxONv4Y8js3Gez9IgHX+Lcg6YRMOjVbq8sgCcdYK1lf6SObAuz5qB/mxiSK7tW0M9aaiIaUSUJg==} + /@docusaurus/utils@3.4.0(@docusaurus/types@3.4.0)(@swc/core@1.6.6)(typescript@5.5.3): + resolution: {integrity: sha512-fRwnu3L3nnWaXOgs88BVBmG1yGjcQqZNHG+vInhEa2Sz2oQB+ZjbEMO5Rh9ePFpZ0YDiDUhpaVjwmS+AU2F14g==} engines: {node: '>=18.0'} peerDependencies: '@docusaurus/types': '*' @@ -4479,10 +4374,10 @@ packages: '@docusaurus/types': optional: true dependencies: - '@docusaurus/logger': 3.3.2 - '@docusaurus/types': 3.3.2(@swc/core@1.5.7)(react-dom@18.3.1)(react@18.3.1) - '@docusaurus/utils-common': 3.3.2(@docusaurus/types@3.3.2) - '@svgr/webpack': 8.1.0(typescript@5.4.5) + '@docusaurus/logger': 3.4.0 + '@docusaurus/types': 3.4.0(@swc/core@1.6.6)(react-dom@18.3.1)(react@18.3.1) + '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.4.0) + '@svgr/webpack': 8.1.0(typescript@5.5.3) escape-string-regexp: 4.0.0 file-loader: 6.2.0(webpack@5.91.0) fs-extra: 11.2.0 @@ -4492,13 +4387,14 @@ packages: jiti: 1.21.0 js-yaml: 4.1.0 lodash: 4.17.21 - micromatch: 4.0.5 + micromatch: 4.0.7 prompts: 2.4.2 resolve-pathname: 3.0.0 shelljs: 0.8.5 tslib: 2.6.2 url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.91.0) - webpack: 5.91.0(@swc/core@1.5.7) + utility-types: 3.11.0 + webpack: 5.91.0(@swc/core@1.6.6) transitivePeerDependencies: - '@swc/core' - esbuild @@ -4552,7 +4448,7 @@ packages: resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} dev: false - /@emotion/react@11.11.4(@types/react@18.3.2)(react@18.3.1): + /@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1): resolution: {integrity: sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==} peerDependencies: '@types/react': '*' @@ -4568,7 +4464,7 @@ packages: '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.3.1) '@emotion/utils': 1.2.1 '@emotion/weak-memoize': 0.3.1 - '@types/react': 18.3.2 + '@types/react': 18.3.3 hoist-non-react-statics: 3.3.2 react: 18.3.1 dev: false @@ -4615,6 +4511,15 @@ packages: dev: true optional: true + /@esbuild/aix-ppc64@0.21.5: + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-arm64@0.20.2: resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} engines: {node: '>=12'} @@ -4624,6 +4529,15 @@ packages: dev: true optional: true + /@esbuild/android-arm64@0.21.5: + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-arm@0.20.2: resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} engines: {node: '>=12'} @@ -4633,6 +4547,15 @@ packages: dev: true optional: true + /@esbuild/android-arm@0.21.5: + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-x64@0.20.2: resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} engines: {node: '>=12'} @@ -4642,6 +4565,15 @@ packages: dev: true optional: true + /@esbuild/android-x64@0.21.5: + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-arm64@0.20.2: resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} engines: {node: '>=12'} @@ -4651,6 +4583,15 @@ packages: dev: true optional: true + /@esbuild/darwin-arm64@0.21.5: + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-x64@0.20.2: resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} engines: {node: '>=12'} @@ -4660,6 +4601,15 @@ packages: dev: true optional: true + /@esbuild/darwin-x64@0.21.5: + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-arm64@0.20.2: resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} engines: {node: '>=12'} @@ -4669,6 +4619,15 @@ packages: dev: true optional: true + /@esbuild/freebsd-arm64@0.21.5: + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-x64@0.20.2: resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} engines: {node: '>=12'} @@ -4678,6 +4637,15 @@ packages: dev: true optional: true + /@esbuild/freebsd-x64@0.21.5: + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm64@0.20.2: resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} engines: {node: '>=12'} @@ -4687,6 +4655,15 @@ packages: dev: true optional: true + /@esbuild/linux-arm64@0.21.5: + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm@0.20.2: resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} engines: {node: '>=12'} @@ -4696,6 +4673,15 @@ packages: dev: true optional: true + /@esbuild/linux-arm@0.21.5: + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ia32@0.20.2: resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} engines: {node: '>=12'} @@ -4705,6 +4691,15 @@ packages: dev: true optional: true + /@esbuild/linux-ia32@0.21.5: + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-loong64@0.20.2: resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} engines: {node: '>=12'} @@ -4714,6 +4709,15 @@ packages: dev: true optional: true + /@esbuild/linux-loong64@0.21.5: + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-mips64el@0.20.2: resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} engines: {node: '>=12'} @@ -4723,6 +4727,15 @@ packages: dev: true optional: true + /@esbuild/linux-mips64el@0.21.5: + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ppc64@0.20.2: resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} engines: {node: '>=12'} @@ -4732,6 +4745,15 @@ packages: dev: true optional: true + /@esbuild/linux-ppc64@0.21.5: + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-riscv64@0.20.2: resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} engines: {node: '>=12'} @@ -4741,6 +4763,15 @@ packages: dev: true optional: true + /@esbuild/linux-riscv64@0.21.5: + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-s390x@0.20.2: resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} engines: {node: '>=12'} @@ -4750,6 +4781,15 @@ packages: dev: true optional: true + /@esbuild/linux-s390x@0.21.5: + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-x64@0.20.2: resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} engines: {node: '>=12'} @@ -4759,6 +4799,15 @@ packages: dev: true optional: true + /@esbuild/linux-x64@0.21.5: + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/netbsd-x64@0.20.2: resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} engines: {node: '>=12'} @@ -4768,6 +4817,15 @@ packages: dev: true optional: true + /@esbuild/netbsd-x64@0.21.5: + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/openbsd-x64@0.20.2: resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} engines: {node: '>=12'} @@ -4777,6 +4835,15 @@ packages: dev: true optional: true + /@esbuild/openbsd-x64@0.21.5: + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/sunos-x64@0.20.2: resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} engines: {node: '>=12'} @@ -4786,6 +4853,15 @@ packages: dev: true optional: true + /@esbuild/sunos-x64@0.21.5: + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-arm64@0.20.2: resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} engines: {node: '>=12'} @@ -4795,6 +4871,15 @@ packages: dev: true optional: true + /@esbuild/win32-arm64@0.21.5: + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-ia32@0.20.2: resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} engines: {node: '>=12'} @@ -4804,6 +4889,15 @@ packages: dev: true optional: true + /@esbuild/win32-ia32@0.21.5: + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-x64@0.20.2: resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} engines: {node: '>=12'} @@ -4813,6 +4907,15 @@ packages: dev: true optional: true + /@esbuild/win32-x64@0.21.5: + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esfx/async-canceltoken@1.0.0: resolution: {integrity: sha512-3Ps/4NPd7qFltmHL+CYXCjZtNXcQGV9BZmpzu8Rt3/0SZMtbQve0gtX0uJDJGvAWa6w3IB4HrKVP12VPoFONmA==} dependencies: @@ -4847,36 +4950,20 @@ packages: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: eslint: 8.57.0 - eslint-visitor-keys: 3.4.3 - - /@eslint-community/regexpp@4.10.0: - resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - /@eslint/eslintrc@2.1.4: - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 9.6.1 - globals: 13.24.0 - ignore: 5.3.1 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color + eslint-visitor-keys: 3.4.3 - /@eslint/eslintrc@3.0.2: - resolution: {integrity: sha512-wV19ZEGEMAC1eHgrS7UQPqsdEiCIbTKTasEfcXAigzoXICcqZSjBZEHlZwNVvKg6UBCjSlos84XiLqsRJnIcIg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 debug: 4.3.4 - espree: 10.0.1 - globals: 14.0.0 + espree: 9.6.1 + globals: 13.24.0 ignore: 5.3.1 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -4884,7 +4971,6 @@ packages: strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - dev: true /@eslint/eslintrc@3.1.0: resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} @@ -4942,31 +5028,31 @@ packages: '@swc/helpers': 0.5.8 dev: false - /@fluentui/priority-overflow@9.1.12: - resolution: {integrity: sha512-uUIrdQ96LvheAREwrhlwwBNDu/Q3eT+2Sy9vC8qm7g5BjCQOP/WdHQGPgk6ywns55j1aKNOgE2Uq0jf+hk/JnQ==} + /@fluentui/priority-overflow@9.1.13: + resolution: {integrity: sha512-yDojVpkhBZTXOYExrCgW1GXbw3x9pYIS617xlNJIc2t06Cd3H32y2p51QXFt94sBmlVyAvPu7UKBHaq1Yw7u+w==} dependencies: '@swc/helpers': 0.5.8 dev: false - /@fluentui/react-accordion@9.3.55(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): - resolution: {integrity: sha512-k2D4TxsnVUpxoykPLP1jtFAGPrQDGYwbEeHaY3J09ntKRQBRBJNzUoOLGtlXjTE6+dybq2LlW7RqyUCZBXga4g==} + /@fluentui/react-accordion@9.4.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): + resolution: {integrity: sha512-E7kAxMyxv1r2e5wWiXLgzDSyGSNgED4WAIRxCCVBCeNKLlNXw4zrRKFc1RmYZrgEiKjAqut/izrH+FVnhfz2Mw==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' react: '>=16.14.0 <19.0.0' react-dom: '>=16.14.0 <19.0.0' dependencies: - '@fluentui/react-aria': 9.11.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-context-selector': 9.1.60(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-icons': 2.0.240(react@18.3.1) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-tabster': 9.21.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-aria': 9.13.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-context-selector': 9.1.63(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-icons': 2.0.247(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-tabster': 9.22.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -4974,24 +5060,24 @@ packages: - scheduler dev: false - /@fluentui/react-alert@9.0.0-beta.122(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): - resolution: {integrity: sha512-TFnOdWlKDufHlprD4Ng2x0LZ37XWV5IjofkCVzgCkf/hOvVD1POZ61IL+22q56+ShAP/qYA9MoufjMbzhZKv9w==} + /@fluentui/react-alert@9.0.0-beta.124(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): + resolution: {integrity: sha512-yFBo3B5H9hnoaXxlkuz8wRz04DEyQ+ElYA/p5p+Vojf19Zuta8DmFZZ6JtWdtxcdnnQ4LvAfC5OYYlzdReozPA==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' react: '>=16.14.0 <19.0.0' react-dom: '>=16.14.0 <19.0.0' dependencies: - '@fluentui/react-avatar': 9.6.27(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-button': 9.3.81(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-icons': 2.0.240(react@18.3.1) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-tabster': 9.21.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-avatar': 9.6.31(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-button': 9.3.85(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-icons': 2.0.247(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-tabster': 9.22.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -4999,8 +5085,8 @@ packages: - scheduler dev: false - /@fluentui/react-aria@9.11.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-DKZ4bY7aVwW2RKusGABNhbE6C56ttWGWs34gH82RuzUmqdKcYwp62DiCqz/gV42zAdzLb7PZUGnJEQctKxMbpA==} + /@fluentui/react-aria@9.13.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-zn0AiOafvjbtoY5KbAxdi785LDo68ezR6p5zAnE9fk3v5tnbkJwMo8Nqp1E7bCXg4Y7h+JhsLtl7he9DkWdIPQ==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' @@ -5008,38 +5094,38 @@ packages: react-dom: '>=16.14.0 <19.0.0' dependencies: '@fluentui/keyboard-keys': 9.0.7 - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-tabster': 9.21.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-tabster': 9.22.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false - /@fluentui/react-avatar@9.6.27(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): - resolution: {integrity: sha512-l79O7bsE0yXSL/7EscDXEfpvX2jddx61xffFmtRUfjQftSoGg/zrzFynFDO/3ZsgYQzRWqvLsdrEskYKBeH/9A==} + /@fluentui/react-avatar@9.6.31(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): + resolution: {integrity: sha512-Wn1anJB9M7IqoGex1/v2q+tc4etuCXJVNltm1IvHUulj4n4q5LS5IdXX7Td7OXBA8SA2BsgL/N84WFNh36wb8g==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' react: '>=16.14.0 <19.0.0' react-dom: '>=16.14.0 <19.0.0' dependencies: - '@fluentui/react-badge': 9.2.36(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-context-selector': 9.1.60(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-icons': 2.0.240(react@18.3.1) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-popover': 9.9.9(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-tabster': 9.21.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-badge': 9.2.39(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-context-selector': 9.1.63(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-icons': 2.0.247(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-popover': 9.9.13(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-tabster': 9.22.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-tooltip': 9.4.28(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-tooltip': 9.4.32(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -5047,54 +5133,54 @@ packages: - scheduler dev: false - /@fluentui/react-badge@9.2.36(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-JK3ClcnamUZgVF9qTIVcWl8lKxWTjfS8WWL9rlAU+8OzHq0VPBfKlY8lfPjJ2Bp7viLNIopob/hciXhL1PZ3yA==} + /@fluentui/react-badge@9.2.39(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-TfcEqk+t0DwQFy6rl6Nnijpsu3EgjZGWcHYrQDeSfCBs6qQRTZFkU+OyZKBwVw9WcTyuO2Kx5oIPMG3bHDT6jw==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' react: '>=16.14.0 <19.0.0' react-dom: '>=16.14.0 <19.0.0' dependencies: - '@fluentui/react-icons': 2.0.240(react@18.3.1) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-icons': 2.0.247(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false - /@fluentui/react-breadcrumb@9.0.27(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-7kyW1wUeUdz2k3ERfSvFe0eqXtGGNK5xkymgvfZyJ3cfs9WDac4HeeSdrisHEFSXpTqJxpmWn4dUQN9hCJqgHQ==} + /@fluentui/react-breadcrumb@9.0.31(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-/OQtIVPpjkgBmmG/MM+aIr9i3a1jGsDVn5nkF9YeJrMyNBzVNHE7d5HhTJJfr900xnQNg+T6ofvhH0XxKkC3pw==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' react: '>=16.14.0 <19.0.0' react-dom: '>=16.14.0 <19.0.0' dependencies: - '@fluentui/react-aria': 9.11.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-button': 9.3.81(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-icons': 2.0.240(react@18.3.1) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-link': 9.2.22(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-tabster': 9.21.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-aria': 9.13.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-button': 9.3.85(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-icons': 2.0.247(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-link': 9.2.26(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-tabster': 9.22.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false - /@fluentui/react-button@9.3.81(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-YC39VB6AiEJ0NAVVwxBtY70NJu4rWU7u5nHSkBwJ/XDZw9XP5P8hhQCWrEM/2+KG5YZ+Vp1CrASaUuFEAklkrA==} + /@fluentui/react-button@9.3.85(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-2ha0oPDTWsS8cEJ59hU9O7KlBT4ySlk/04B7j9gZJRNSqeLrzckxWMl/DiuA6xomHquniBcCpgOkOQFlFS0z8w==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' @@ -5102,23 +5188,23 @@ packages: react-dom: '>=16.14.0 <19.0.0' dependencies: '@fluentui/keyboard-keys': 9.0.7 - '@fluentui/react-aria': 9.11.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-icons': 2.0.240(react@18.3.1) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-tabster': 9.21.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-aria': 9.13.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-icons': 2.0.247(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-tabster': 9.22.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false - /@fluentui/react-card@9.0.80(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-BHbHiQJrkSfGZMiTpIcFwJ08U0Pj6ryyroBwdNiQQ+K/T1OjPfhL038GxguJUYQCntyNVCzJbvzOnD8hHuI3ew==} + /@fluentui/react-card@9.0.85(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-bhH1vHahdG8c0etwICTBXqkhfvW7GEv6NihPOIgPdBbJ1ivdKeNOhSC2S6QUcBxi3KHRQKRaMQWI4Ipko+Qg7A==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' @@ -5126,37 +5212,37 @@ packages: react-dom: '>=16.14.0 <19.0.0' dependencies: '@fluentui/keyboard-keys': 9.0.7 - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-tabster': 9.21.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-tabster': 9.22.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false - /@fluentui/react-checkbox@9.2.26(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): - resolution: {integrity: sha512-jTH0IckTgn64AOGip7CyavgNSFxNcAR2QgBXO32NNCDF7rpLAq5X2jd3VIG7AYi4uVfnFNxBLNwS7NBVfz22dw==} + /@fluentui/react-checkbox@9.2.30(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): + resolution: {integrity: sha512-WR4c0CEinWHMq/yWaLJXMAEyehIFZNtkUZi0l2QA/W6jIhjONE/bR/35yQRkDQXnUl7OTdkmh50cI+i8I9up1w==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' react: '>=16.14.0 <19.0.0' react-dom: '>=16.14.0 <19.0.0' dependencies: - '@fluentui/react-field': 9.1.66(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-icons': 2.0.240(react@18.3.1) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-label': 9.1.70(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-tabster': 9.21.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-field': 9.1.69(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-icons': 2.0.247(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-label': 9.1.72(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-tabster': 9.22.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -5164,8 +5250,8 @@ packages: - scheduler dev: false - /@fluentui/react-combobox@9.11.5(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): - resolution: {integrity: sha512-O8g2R4/MQJrx3Bk8vCfzcgKoIY1dL6X4CJgBO8xArZ6vAEDxSgXQoDgY1PwnutJEFBsbC3d0BsAfjhhateNItg==} + /@fluentui/react-combobox@9.12.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): + resolution: {integrity: sha512-NrE6wpzlz1d6JK2uEosrSVlZ+3b/yqHUsGe1fUTen8ballRFRv8zn7DVH/HYAKjW9CKuzQAls8dnTpAtpAkaFg==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' @@ -5173,20 +5259,20 @@ packages: react-dom: '>=16.14.0 <19.0.0' dependencies: '@fluentui/keyboard-keys': 9.0.7 - '@fluentui/react-aria': 9.11.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-context-selector': 9.1.60(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-field': 9.1.66(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-icons': 2.0.240(react@18.3.1) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-portal': 9.4.25(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-positioning': 9.15.1(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-tabster': 9.21.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-aria': 9.13.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-context-selector': 9.1.63(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-field': 9.1.69(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-icons': 2.0.247(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-portal': 9.4.29(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-positioning': 9.15.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-tabster': 9.22.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -5194,72 +5280,73 @@ packages: - scheduler dev: false - /@fluentui/react-components@9.52.0(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): - resolution: {integrity: sha512-x+ZcMxEbDDfnwJftSvNG2EKjZw6p+lVX3ItZ0ynGLNnbhIupV5dfCxoIk4mxHTGKG34SCNbuvZt9YO7O+VX/AQ==} + /@fluentui/react-components@9.54.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): + resolution: {integrity: sha512-MmaGDeEDVZ7mRxfmKRM8QCjius31qOhL8MtSWeats1EY9ilDi3hKidWpk3U4qCjXXjAXfZ1zc49TtV3k1l4rMg==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' react: '>=16.14.0 <19.0.0' react-dom: '>=16.14.0 <19.0.0' dependencies: - '@fluentui/react-accordion': 9.3.55(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-alert': 9.0.0-beta.122(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-aria': 9.11.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-avatar': 9.6.27(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-badge': 9.2.36(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-breadcrumb': 9.0.27(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-button': 9.3.81(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-card': 9.0.80(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-checkbox': 9.2.26(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-combobox': 9.11.5(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-dialog': 9.10.6(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-divider': 9.2.69(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-drawer': 9.3.2(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-field': 9.1.66(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-image': 9.1.66(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-infobutton': 9.0.0-beta.102(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-infolabel': 9.0.34(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-input': 9.4.76(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-label': 9.1.70(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-link': 9.2.22(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-menu': 9.14.5(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-message-bar': 9.2.0(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-overflow': 9.1.20(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-persona': 9.2.86(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-popover': 9.9.9(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-portal': 9.4.25(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-positioning': 9.15.1(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-progress': 9.1.76(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-provider': 9.16.0(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-radio': 9.2.21(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-rating': 9.0.9(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-search': 9.0.5(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-select': 9.1.76(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-skeleton': 9.1.4(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-slider': 9.1.83(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-spinbutton': 9.2.76(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-spinner': 9.4.8(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-swatch-picker': 9.1.0(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-switch': 9.1.83(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-table': 9.15.5(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-tabs': 9.4.21(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-tabster': 9.21.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-tag-picker': 9.0.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-tags': 9.3.6(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-teaching-popover': 9.1.5(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-text': 9.4.18(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-textarea': 9.3.76(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-accordion': 9.4.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-alert': 9.0.0-beta.124(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-aria': 9.13.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-avatar': 9.6.31(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-badge': 9.2.39(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-breadcrumb': 9.0.31(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-button': 9.3.85(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-card': 9.0.85(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-checkbox': 9.2.30(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-combobox': 9.12.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-dialog': 9.11.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-divider': 9.2.71(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-drawer': 9.5.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-field': 9.1.69(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-image': 9.1.69(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-infobutton': 9.0.0-beta.102(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-infolabel': 9.0.38(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-input': 9.4.80(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-label': 9.1.72(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-link': 9.2.26(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-menu': 9.14.9(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-message-bar': 9.2.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-motion': 9.2.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-overflow': 9.1.23(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-persona': 9.2.90(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-popover': 9.9.13(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-portal': 9.4.29(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-positioning': 9.15.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-progress': 9.1.80(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-provider': 9.16.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-radio': 9.2.25(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-rating': 9.0.13(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-search': 9.0.9(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-select': 9.1.80(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-skeleton': 9.1.8(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-slider': 9.1.87(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-spinbutton': 9.2.80(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-spinner': 9.4.10(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-swatch-picker': 9.1.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-switch': 9.1.87(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-table': 9.15.9(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-tabs': 9.4.25(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-tabster': 9.22.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-tag-picker': 9.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-tags': 9.3.10(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-teaching-popover': 9.1.9(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-text': 9.4.21(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-textarea': 9.3.80(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-toast': 9.3.43(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-toolbar': 9.1.84(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-tooltip': 9.4.28(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-tree': 9.5.0(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-virtualizer': 9.0.0-alpha.78(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-toast': 9.3.48(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-toolbar': 9.1.88(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-tooltip': 9.4.32(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-tree': 9.7.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-virtualizer': 9.0.0-alpha.80(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -5267,8 +5354,8 @@ packages: - scheduler dev: false - /@fluentui/react-context-selector@9.1.60(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): - resolution: {integrity: sha512-gm93NSABCVKw6pw9PGd4M5aJUIVrI6u/HlyqBKLB7HjBZwa1RwdNH9PghUJ2TSjfhS8V00Rkt28nCqEwz34Dlw==} + /@fluentui/react-context-selector@9.1.63(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): + resolution: {integrity: sha512-XxyeRmRmhH2DQanXvVQZJqxauXp/wGS5Ve/6Y0Iey2S412myUYzxnGckUOUbVpaKh2sG0P2rXboUUQ6ey2C3eQ==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' @@ -5276,17 +5363,17 @@ packages: react-dom: '>=16.14.0 <19.0.0' scheduler: '>=0.19.0 <=0.23.0' dependencies: - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) scheduler: 0.23.0 dev: false - /@fluentui/react-dialog@9.10.6(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): - resolution: {integrity: sha512-E/vcXe7s+hUyz8pQsUMGwVJFA/B9U4L2yOestTIGshj9kY/ijJxbgagr7M8/58rGHeiPPqxhaIuQA8SMtwni8w==} + /@fluentui/react-dialog@9.11.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): + resolution: {integrity: sha512-SdmKZMxPIoasZsIyFDVP1GT/7lNmDf+aW47e47XROgeYnJVUWjTdUpOdg9lmCWhKynUPoXpDj+lgHOZuXpjkog==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' @@ -5294,64 +5381,64 @@ packages: react-dom: '>=16.14.0 <19.0.0' dependencies: '@fluentui/keyboard-keys': 9.0.7 - '@fluentui/react-aria': 9.11.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-context-selector': 9.1.60(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-icons': 2.0.240(react@18.3.1) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-portal': 9.4.25(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-tabster': 9.21.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-aria': 9.13.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-context-selector': 9.1.63(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-icons': 2.0.247(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-motion': 9.2.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-portal': 9.4.29(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-tabster': 9.22.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-transition-group: 4.4.5(react-dom@18.3.1)(react@18.3.1) transitivePeerDependencies: - scheduler dev: false - /@fluentui/react-divider@9.2.69(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-D1ajELLS8F7N7rWLRlNCtZa/JhfsTqKC5jYpWYbUZPkYS9VxetPaO3hjcmAOrK5ycqYkUv/zsU7wbnTSIkSEOA==} + /@fluentui/react-divider@9.2.71(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-v262PqaTEmR06oglIZj41a3+Onapw6U8Ke6iRQeDHks4+BDxk+epFcBRM5OA4XBTGrDAGGDL5+os+9sicHpkfg==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' react: '>=16.14.0 <19.0.0' react-dom: '>=16.14.0 <19.0.0' dependencies: - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false - /@fluentui/react-drawer@9.3.2(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): - resolution: {integrity: sha512-Lrzg63l4pi44BxY+N3ivUCW5zSsorRHfCaP/T5L67p6STc4+QQjHeJGXo2X7cR8Xhu2CUUdmBkZ80a/9W9K0gg==} + /@fluentui/react-drawer@9.5.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): + resolution: {integrity: sha512-jXbzM/pQyQnH7GrnuAxUpUE34eRtjSvBZE2sFDninYdsK4gcA4ulxZAa2YEh1uFL/KDt7TyHlaAU2QN8pFX0ww==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' react: '>=16.14.0 <19.0.0' react-dom: '>=16.14.0 <19.0.0' dependencies: - '@fluentui/react-dialog': 9.10.6(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-motion-preview': 0.5.21(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-tabster': 9.21.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-dialog': 9.11.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-motion-preview': 0.5.23(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-tabster': 9.22.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -5359,23 +5446,23 @@ packages: - scheduler dev: false - /@fluentui/react-field@9.1.66(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): - resolution: {integrity: sha512-9dzn2GU/ttbK1QuS6VqbACFhFFs0IHRniCgqcufxIXLbcdze0NmyALJb6X6DRAlgunTlM4UDrD6CNB2cv0B08A==} + /@fluentui/react-field@9.1.69(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): + resolution: {integrity: sha512-AwylrrZthfgMLDQcgwPWpq7buEeZJAsdnR2ovlhRXoC3md1zpBkAjt640Om0UXNJcSu7FWIlZVaOsgWIi+mU9A==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' react: '>=16.14.0 <19.0.0' react-dom: '>=16.14.0 <19.0.0' dependencies: - '@fluentui/react-context-selector': 9.1.60(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-icons': 2.0.240(react@18.3.1) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-label': 9.1.70(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-context-selector': 9.1.63(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-icons': 2.0.247(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-label': 9.1.72(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -5383,37 +5470,37 @@ packages: - scheduler dev: false - /@fluentui/react-icons@2.0.240(react@18.3.1): - resolution: {integrity: sha512-vvYAA5bKImFedfRWnlady/Imdz45lGpKyPhNXZVpDoKX1yub/QNtSlH9XctynteQt8cEyvzPtHPXZBgxDTtDlw==} + /@fluentui/react-icons@2.0.247(react@18.3.1): + resolution: {integrity: sha512-w5KQb0xBcqBwXB0jNCKQnMjllxlkLTpDICQYBqM0QXI7lEtEWQ/4IyPiocdJ+aBYVrSbI5d8rTqvHvYsFUYXmg==} peerDependencies: react: '>=16.8.0 <19.0.0' dependencies: - '@griffel/react': 1.5.21(react@18.3.1) + '@griffel/react': 1.5.22(react@18.3.1) react: 18.3.1 tslib: 2.6.2 dev: false - /@fluentui/react-image@9.1.66(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-5nd644/IIqq0ehXVyY2VGq9RGCMbB0YuxaW1EHqCfhEsDBxATjyQHuLRmP5RIZh0g0p7kHVQ2N0aVhH+WDSm/Q==} + /@fluentui/react-image@9.1.69(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-bQ7suwNrGb+FSVaL44e7CgZmjeJ8ZI5KS5q8RyW21/oc+hKDxQrB52ahQdzfWsh07CGzZ8tCgfLu+sOaOKppGQ==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' react: '>=16.14.0 <19.0.0' react-dom: '>=16.14.0 <19.0.0' dependencies: - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false - /@fluentui/react-infobutton@9.0.0-beta.102(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): + /@fluentui/react-infobutton@9.0.0-beta.102(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): resolution: {integrity: sha512-3kA4F0Vga8Ds6JGlBajLCCDOo/LmPuS786Wg7ui4ZTDYVIMzy1yp2XuVcZniifBFvEp0HQCUoDPWUV0VI3FfzQ==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' @@ -5421,16 +5508,16 @@ packages: react: '>=16.14.0 <19.0.0' react-dom: '>=16.14.0 <19.0.0' dependencies: - '@fluentui/react-icons': 2.0.240(react@18.3.1) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-label': 9.1.70(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-popover': 9.9.9(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-tabster': 9.21.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-icons': 2.0.247(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-label': 9.1.72(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-popover': 9.9.13(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-tabster': 9.22.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -5438,24 +5525,24 @@ packages: - scheduler dev: false - /@fluentui/react-infolabel@9.0.34(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): - resolution: {integrity: sha512-0tI9wDEHAe3V6lZC64h/6EW3IaLQg/uv2u0gUqSHHwOr7uC8+p08Iqm2xWhZWOL+u+1+hejBW0qqVYy3vur+Yg==} + /@fluentui/react-infolabel@9.0.38(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): + resolution: {integrity: sha512-gFKYlzJ9BXQWtNjhIsfZSL+lB3yzwKE+OPjgDmoSaBP3ozW2PPDGY2dZG7BwJ0oWNoubqeKeNj/mC6d4zL4HWg==} peerDependencies: '@types/react': '>=16.8.0 <19.0.0' '@types/react-dom': '>=16.8.0 <19.0.0' react: '>=16.8.0 <19.0.0' react-dom: '>=16.8.0 <19.0.0' dependencies: - '@fluentui/react-icons': 2.0.240(react@18.3.1) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-label': 9.1.70(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-popover': 9.9.9(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-tabster': 9.21.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-icons': 2.0.247(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-label': 9.1.72(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-popover': 9.9.13(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-tabster': 9.22.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -5463,22 +5550,22 @@ packages: - scheduler dev: false - /@fluentui/react-input@9.4.76(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): - resolution: {integrity: sha512-6ZrnkDm/nwiQn61iuTHEs5+y7duek6eC/Rp5CzWa5alNCgoJ8O5AzZ1G8NWrhAcn8Qu4rh+IJHckS+p3ScjnUA==} + /@fluentui/react-input@9.4.80(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): + resolution: {integrity: sha512-++a84fgrwom6FLYALiwxBNiJMow9ZIQOzbrM+9RTGozfjj74lQ6bnBU9dmKKTalWZAuwSYHO6jaM+xlrrVjY8A==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' react: '>=16.14.0 <19.0.0' react-dom: '>=16.14.0 <19.0.0' dependencies: - '@fluentui/react-field': 9.1.66(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-field': 9.1.69(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -5486,41 +5573,54 @@ packages: - scheduler dev: false - /@fluentui/react-jsx-runtime@9.0.38(@types/react@18.3.2)(react@18.3.1): + /@fluentui/react-jsx-runtime@9.0.38(@types/react@18.3.3)(react@18.3.1): resolution: {integrity: sha512-4HGwWshavd9H+SyEkxPriPZLFz7QRa4YMzYi3ibBI0q2iiZZw8wQ3otuM/Pf8xxamJgYpnDl3mAesJU+3hFANw==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' react: '>=16.14.0 <19.0.0' dependencies: - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 react: 18.3.1 react-is: 17.0.2 dev: false - /@fluentui/react-label@9.1.70(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-dYsx4w9Hk8VAhyt7ZU88u1eIbpchtmr0sEVSgXEVevtUo4R4mT5UnOESsUwLT4wMY0sevBm5AoXbNsnoPutQQg==} + /@fluentui/react-jsx-runtime@9.0.40(@types/react@18.3.3)(react@18.3.1): + resolution: {integrity: sha512-3QF4f6LezBWGoRgeo287A8jey3aSW0Xxewxgzdh5si7KeJt7CO9Pz90QJhz+PRKC6Q6C+zSGyinTUCpQtYr70A==} + peerDependencies: + '@types/react': '>=16.14.0 <19.0.0' + react: '>=16.14.0 <19.0.0' + dependencies: + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) + '@swc/helpers': 0.5.8 + '@types/react': 18.3.3 + react: 18.3.1 + react-is: 17.0.2 + dev: false + + /@fluentui/react-label@9.1.72(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-msEymXx2qpWutqYBKS8ZM2dRi59Fau3sz5nX2tUrqcrf3g1s8guhjGN4a54DgvhfkvIp3QWyXH3tUD8ddANnxg==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' react: '>=16.14.0 <19.0.0' react-dom: '>=16.14.0 <19.0.0' dependencies: - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false - /@fluentui/react-link@9.2.22(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-77ef/PM1G+8dHq3LNFvjM5kWu8mS65eoxAtyfwbKAJRNfrtKFc1XrTBOcnqipXAqEPilQ+vgpgz/i0ziFVPvHQ==} + /@fluentui/react-link@9.2.26(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-CFv/KzRrqmQLKOSVj2cW2sL90eQvG5XRI8xhP8FIwxLoS0MwQiAFIUTaG1bkqXnZj2QmlT7zOyHFVRGeBLzRbw==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' @@ -5528,21 +5628,21 @@ packages: react-dom: '>=16.14.0 <19.0.0' dependencies: '@fluentui/keyboard-keys': 9.0.7 - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-tabster': 9.21.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-tabster': 9.22.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false - /@fluentui/react-menu@9.14.5(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): - resolution: {integrity: sha512-JelsSR1s5hUKaTSd/TqkKtKaTpiJ+bKHmKefoQ+xBDslwBngMMMVRo7rAQmdoGQwVeky44f3YsoMgD+re/8QdA==} + /@fluentui/react-menu@9.14.9(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): + resolution: {integrity: sha512-oa/7Fmsvs+G87HeURzC7PW7FbhOTMnkhYn3dp5Vcw+gxmuIfu+SGYTcdoYe6p67Ci4WlDguMBgzmXoNEG9d0sQ==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' @@ -5550,19 +5650,19 @@ packages: react-dom: '>=16.14.0 <19.0.0' dependencies: '@fluentui/keyboard-keys': 9.0.7 - '@fluentui/react-aria': 9.11.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-context-selector': 9.1.60(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-icons': 2.0.240(react@18.3.1) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-portal': 9.4.25(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-positioning': 9.15.1(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-tabster': 9.21.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-aria': 9.13.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-context-selector': 9.1.63(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-icons': 2.0.247(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-portal': 9.4.29(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-positioning': 9.15.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-tabster': 9.22.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -5570,64 +5670,82 @@ packages: - scheduler dev: false - /@fluentui/react-message-bar@9.2.0(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-47i2QIPpt8JlumnGO+rUYDVpeIjyQ96no4LSPhclrIltFO+znse6gkub2TMBVLc1E7lfWGnlEMVKOEMWD+u4kg==} + /@fluentui/react-message-bar@9.2.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-Bo5xBpmZHzD/mtsIwY4cOCMmswu1jvhtZlW07SO4aV9hvADlmuv+h9zl5dVQmoV5lHJRvDAcIPLC0pw/X9vsKA==} peerDependencies: '@types/react': '>=16.8.0 <19.0.0' '@types/react-dom': '>=16.8.0 <19.0.0' react: '>=16.8.0 <19.0.0' react-dom: '>=16.8.0 <19.0.0' dependencies: - '@fluentui/react-button': 9.3.81(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-icons': 2.0.240(react@18.3.1) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-button': 9.3.85(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-icons': 2.0.247(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-transition-group: 4.4.5(react-dom@18.3.1)(react@18.3.1) dev: false - /@fluentui/react-motion-preview@0.5.21(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-I2Lj1RFrq9yVKxYlKrbE7SeluZo08eJrs8S5pL6OVxXJND0avW7pFF2ZOs3EsABW1clcp1S55IgJ9D6nVlnbvw==} + /@fluentui/react-motion-preview@0.5.23(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-8JQPIWCB4u9DVXVtWpDbdEeEck2VgK2RgoYq8M1bF6rwOAAd1Vqkxlqlply3gryYYvnsy2cdTki8bntfiwhbzQ==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' react: '>=16.14.0 <19.0.0' react-dom: '>=16.14.0 <19.0.0' dependencies: - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + dev: false + + /@fluentui/react-motion@9.2.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-A7WOoytc33TdvE1OarDsjQF/Sjr5sDRblTRZbJFgZ/vxOY/zucGb6iT+kjD0K14X6BuINTDF2ItvXEooih1xFA==} + peerDependencies: + '@types/react': '>=16.8.0 <19.0.0' + '@types/react-dom': '>=16.8.0 <19.0.0' + react: '>=16.8.0 <19.0.0' + react-dom: '>=16.8.0 <19.0.0' + dependencies: + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) + '@swc/helpers': 0.5.8 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) + react-is: 17.0.2 dev: false - /@fluentui/react-overflow@9.1.20(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): - resolution: {integrity: sha512-dBIzGF+beNxNUlVFtYaTDFCOIERMrAlDmvvGf35pV+/rQTsgTYqqB9xEl9L8VNHbgb5bt7ApSMPEZBaA6Rna4A==} + /@fluentui/react-overflow@9.1.23(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): + resolution: {integrity: sha512-zx2Nh5dOeg9rH1OEhinlkbNpxwvKsyHe7wAdnGy8T70+N0crL8znAUUrpngyB7jdb4H2xLm4xnYoUOzsKcZp/Q==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' react: '>=16.14.0 <19.0.0' react-dom: '>=16.14.0 <19.0.0' dependencies: - '@fluentui/priority-overflow': 9.1.12 - '@fluentui/react-context-selector': 9.1.60(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/priority-overflow': 9.1.13 + '@fluentui/react-context-selector': 9.1.63(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -5635,23 +5753,23 @@ packages: - scheduler dev: false - /@fluentui/react-persona@9.2.86(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): - resolution: {integrity: sha512-mlVWKcy5puQH46bB7zpli8YcbeUvzuEbn3R9+A3uX8HIQbVXsMoObSmB5K7ct0Bsw9kytvxMI0xufMGB4anR9w==} + /@fluentui/react-persona@9.2.90(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): + resolution: {integrity: sha512-roQ92Fl2eW5XsUFhvo6fRPixYxyIPcbRm0wZyHnb6Tl5WcKZao/ayLKH414leDVtgjTbfpw0if+qx0ipLiBsvA==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' react: '>=16.14.0 <19.0.0' react-dom: '>=16.14.0 <19.0.0' dependencies: - '@fluentui/react-avatar': 9.6.27(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-badge': 9.2.36(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-avatar': 9.6.31(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-badge': 9.2.39(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -5659,8 +5777,8 @@ packages: - scheduler dev: false - /@fluentui/react-popover@9.9.9(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): - resolution: {integrity: sha512-mDROFucfX/aNquI6kvO0mj2kkyJZvDtpim9cPvsDQqc0ZHRKvBycU3GXKf0owtpmQQzzrZmOSKCp2+8le2DW+w==} + /@fluentui/react-popover@9.9.13(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): + resolution: {integrity: sha512-ktym1lY5Y0kgYuUYW0kvfnH3hlK4izJ4HM0kikO+hyIIys/iv41o+9lhj8sIbHCKPnkOL9fnTs98pgzffms04A==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' @@ -5668,18 +5786,18 @@ packages: react-dom: '>=16.14.0 <19.0.0' dependencies: '@fluentui/keyboard-keys': 9.0.7 - '@fluentui/react-aria': 9.11.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-context-selector': 9.1.60(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-portal': 9.4.25(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-positioning': 9.15.1(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-tabster': 9.21.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-aria': 9.13.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-context-selector': 9.1.63(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-portal': 9.4.29(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-positioning': 9.15.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-tabster': 9.22.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -5687,28 +5805,28 @@ packages: - scheduler dev: false - /@fluentui/react-portal@9.4.25(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-wPVfEWrPPtrkaGCl7ZV10FcXTaMkzVA8mw8ZkV94lpWKT6aBLIUYYB40lDG1FbCdSQsY2Nof/Mcvruu/vX51dw==} + /@fluentui/react-portal@9.4.29(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-1rhJ2u3PUCPpASSqrRCsLFZmkjxb3gEl8pNkKluudRwCu21rsG+HZUAjLTFZuE629shMWJ+7dsg0NkH14hX0zg==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' react: '>=16.14.0 <19.0.0' react-dom: '>=16.14.0 <19.0.0' dependencies: - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-tabster': 9.21.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-tabster': 9.22.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - use-disposable: 1.0.2(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + use-disposable: 1.0.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) dev: false - /@fluentui/react-positioning@9.15.1(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-ZRaiEOELH20xdHiFdqyF7DLlHivOFNHsyguPi4BBtZbStJ9tF92GrYFf7EuYKxaaR0jeeLa4ZgZRSWRzAiMBpg==} + /@fluentui/react-positioning@9.15.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-QHTG9YGRIeZ/bjooJPh2KvEMH98sCFITTQpeUf9O5qrB+wMHoBXz10E2OSW9qGYnpbRPfOldqB6aymVWMw3OJQ==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' @@ -5717,33 +5835,33 @@ packages: dependencies: '@floating-ui/devtools': 0.2.1(@floating-ui/dom@1.6.3) '@floating-ui/dom': 1.6.3 - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false - /@fluentui/react-progress@9.1.76(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): - resolution: {integrity: sha512-EltkWoM/gL1e0MpYvuEFX+u2wjEol8EucG7kfMlqMy9qGHipxYejwZCmIq7GqmrfRF8lMdEboTGipf5FjUQUkQ==} + /@fluentui/react-progress@9.1.80(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): + resolution: {integrity: sha512-kt++7lueMBwDtlRElpgYYIJa0dQPZaO1yWhqpi6pHR4Ukem4jCNFvaV1D6SJ50POlLxyh5SefcjnYxOOTIixqA==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' react: '>=16.14.0 <19.0.0' react-dom: '>=16.14.0 <19.0.0' dependencies: - '@fluentui/react-field': 9.1.66(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-field': 9.1.69(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -5751,47 +5869,47 @@ packages: - scheduler dev: false - /@fluentui/react-provider@9.16.0(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-mYpJq7p3o7b7fAIZn6dvJtO23dioqIOV8HotTIetcsixk4AbtBMnfKme0i3kq+CM7xhUeBpdDB5mLs5aZTnYtQ==} + /@fluentui/react-provider@9.16.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-a8jNYiQ+Ftj7uo4VpRh3uhLXa3N9Yr0OcwwKBLsim6yxTNnonFqxeMiposF3TQtBtKLmy6ZqV62uI4lbbE9XwA==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' react: '>=16.14.0 <19.0.0' react-dom: '>=16.14.0 <19.0.0' dependencies: - '@fluentui/react-icons': 2.0.240(react@18.3.1) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-tabster': 9.21.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-icons': 2.0.247(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-tabster': 9.22.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/core': 1.16.0 '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false - /@fluentui/react-radio@9.2.21(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): - resolution: {integrity: sha512-ILdTh6o+JjmOQ/1UDj0W2iznDWucA65hZJZM9mEp0W/AM2OuNSXU9lJ/BG6z2aUpj5ec1jkIz+/GzQ7s7PJPxw==} + /@fluentui/react-radio@9.2.25(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): + resolution: {integrity: sha512-rm9OGO63FjzxPtWipIDrP0Z7O9UuDXNIUvB0Rb3sizf+fw9nltw+cztQIFgFiknJ6CU5jf5pJdh/AiFka/Jsmg==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' react: '>=16.14.0 <19.0.0' react-dom: '>=16.14.0 <19.0.0' dependencies: - '@fluentui/react-field': 9.1.66(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-label': 9.1.70(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-tabster': 9.21.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-field': 9.1.69(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-label': 9.1.72(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-tabster': 9.22.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -5799,43 +5917,43 @@ packages: - scheduler dev: false - /@fluentui/react-rating@9.0.9(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-OZ2bMg5GO32NZrQfX72jRKAzDxLm/nX0G1TCNV9Fx4VvwFquG/aRQr9KUh4BNbs2Fi2oPFFbpPi1FWVQnsM51w==} + /@fluentui/react-rating@9.0.13(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-6/TVG2dbk5J06NF8AxkhkuG0z7ZJ0e/e/CVVQ5N7jrQD3iyDKxwJKGTk3ToyLAkVBtfic10fk++DGA3aRnEM5A==} peerDependencies: '@types/react': '>=16.8.0 <19.0.0' '@types/react-dom': '>=16.8.0 <19.0.0' react: '>=16.8.0 <19.0.0' react-dom: '>=16.8.0 <19.0.0' dependencies: - '@fluentui/react-icons': 2.0.240(react@18.3.1) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-tabster': 9.21.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-icons': 2.0.247(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-tabster': 9.22.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false - /@fluentui/react-search@9.0.5(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): - resolution: {integrity: sha512-TJm0dDbkpvbCdeK6W20iqY22R+3aAylBpOMCbtVcpKDWvwz8Q8hplJF1QzHG26PdO7sB6X4HjcFYgO9wDqHfEQ==} + /@fluentui/react-search@9.0.9(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): + resolution: {integrity: sha512-/r1fAkNjeLD8NsVDTtLsQrAVNQUg9MxFdE6mxVSwN1JKMkAdRTpgeJ+O7X80Umuawcl9UHmLOoxHmXHadBOvzQ==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' react: '>=16.14.0 <19.0.0' react-dom: '>=16.14.0 <19.0.0' dependencies: - '@fluentui/react-icons': 2.0.240(react@18.3.1) - '@fluentui/react-input': 9.4.76(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-icons': 2.0.247(react@18.3.1) + '@fluentui/react-input': 9.4.80(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -5843,23 +5961,23 @@ packages: - scheduler dev: false - /@fluentui/react-select@9.1.76(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): - resolution: {integrity: sha512-VOfKDFmHeqEAjSgxkTd2UiIEdiCD99uPsCbgRUeSGzD+9Rsbxs5aMnSWclH+XuTliLrTWSDHim8k4IGdg4lYbA==} + /@fluentui/react-select@9.1.80(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): + resolution: {integrity: sha512-g3pJOdrYhPDaUHqkJAi5CTrwitXFqwyZrGQ2An3XVMfRkB5KEg+Rd4gEcdOIFta95EkjtV3DanyVoIv18wCj4A==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' react: '>=16.14.0 <19.0.0' react-dom: '>=16.14.0 <19.0.0' dependencies: - '@fluentui/react-field': 9.1.66(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-icons': 2.0.240(react@18.3.1) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-field': 9.1.69(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-icons': 2.0.247(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -5867,7 +5985,7 @@ packages: - scheduler dev: false - /@fluentui/react-shared-contexts@9.19.0(@types/react@18.3.2)(react@18.3.1): + /@fluentui/react-shared-contexts@9.19.0(@types/react@18.3.3)(react@18.3.1): resolution: {integrity: sha512-KWHRVuKSvQpFdGGxj802AwoHlq7VyFKaj89cgX2pBu2ZqZrdpxkbkfFQIvxLoaZ/Bzm7fWXVQrDYpj+8JHAfCA==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' @@ -5875,26 +5993,26 @@ packages: dependencies: '@fluentui/react-theme': 9.1.17 '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 react: 18.3.1 dev: false - /@fluentui/react-skeleton@9.1.4(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): - resolution: {integrity: sha512-mFRld+IoXJLBKC+n/e/f2FCxoHbkubKmK3xHxHCXM9n8NHltKBOuJT7lh7IEpV1F/NAz8+y7ijHFIVKhoDCsuA==} + /@fluentui/react-skeleton@9.1.8(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): + resolution: {integrity: sha512-k2qlRlYByVPf1haf4+akLN2w2DidiDW7LBv/0Z0fWKpf7gnYfUjonmtrN2rlOTKGpKu1ZCtf7eupdM69Qd4sLg==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' react: '>=16.14.0 <19.0.0' react-dom: '>=16.14.0 <19.0.0' dependencies: - '@fluentui/react-field': 9.1.66(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-field': 9.1.69(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -5902,23 +6020,23 @@ packages: - scheduler dev: false - /@fluentui/react-slider@9.1.83(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): - resolution: {integrity: sha512-jOyReDWqDrHlBdb7pcbMLaxqmspMs7nOsgO8hQGZAtT7s0JLH3t7xkyOH+ggE8b9UwIEK0lxS7owSY5CcoU54Q==} + /@fluentui/react-slider@9.1.87(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): + resolution: {integrity: sha512-zI/r5uRLhKCwbLfMGs9gAraE81awXwuiKaWU6FjAflLwCt9tb9Fw/lk0Pj3GL3BH1nORDnPgN+f5ZXyc6vGPcg==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' react: '>=16.14.0 <19.0.0' react-dom: '>=16.14.0 <19.0.0' dependencies: - '@fluentui/react-field': 9.1.66(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-tabster': 9.21.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-field': 9.1.69(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-tabster': 9.22.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -5926,8 +6044,8 @@ packages: - scheduler dev: false - /@fluentui/react-spinbutton@9.2.76(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): - resolution: {integrity: sha512-8NUsYOSLJRP1hxcK+y/9wwhB93ytXDAUYR8K7iPfsUMYh7wPWvs9Q/36JWGgIkBXJrWcxmU7QEt4NTkCchmweg==} + /@fluentui/react-spinbutton@9.2.80(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): + resolution: {integrity: sha512-1Opw0/MFaYZKJVoY77MYkHx7+FCWEBc+nUl9nshcYCBwCcgY/YqBlJ5oVInvZ6Ym3cvYESqgOhmOqr3iJCC/CQ==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' @@ -5935,15 +6053,15 @@ packages: react-dom: '>=16.14.0 <19.0.0' dependencies: '@fluentui/keyboard-keys': 9.0.7 - '@fluentui/react-field': 9.1.66(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-icons': 2.0.240(react@18.3.1) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-field': 9.1.69(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-icons': 2.0.247(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -5951,45 +6069,45 @@ packages: - scheduler dev: false - /@fluentui/react-spinner@9.4.8(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-smd2VVxZrHj6w8nWFoqRZ21SDtKuYM3pInq2sY4BeyikmViTY5CNQ6BFDxk4+CY9AOuMMaGttjCW8J3uYGMxkA==} + /@fluentui/react-spinner@9.4.10(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-xXIBV27vhu4m3sedRuhQyYef53NUX8LifVWoMkmBXbEtOjc9vEN15tkT3L7vdlenJDGYYVNJDp54qWUCUnZVYg==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' react: '>=16.14.0 <19.0.0' react-dom: '>=16.14.0 <19.0.0' dependencies: - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-label': 9.1.70(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-label': 9.1.72(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false - /@fluentui/react-swatch-picker@9.1.0(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): - resolution: {integrity: sha512-y00ukuMnf0YxWcQ7OYQfcEmz+YS2UxUQfvRoEqQQh10AENBvOMnP7bC89lSBnTBxlSWV1MnvDCqbTZ+YZlOBUA==} + /@fluentui/react-swatch-picker@9.1.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): + resolution: {integrity: sha512-H/jAB+0BI6YDe6x0nH9uI7PmHOUmXpkprlOC5uaJGLNhBQQrNcV9wrxImwWHfr7DKDZce8SVyGl0OXTT2I/RVw==} peerDependencies: '@types/react': '>=16.8.0 <19.0.0' '@types/react-dom': '>=16.8.0 <19.0.0' react: '>=16.8.0 <19.0.0' react-dom: '>=16.8.0 <19.0.0' dependencies: - '@fluentui/react-context-selector': 9.1.60(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-icons': 2.0.240(react@18.3.1) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-tabster': 9.21.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-context-selector': 9.1.63(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-icons': 2.0.247(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-tabster': 9.22.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -5997,25 +6115,25 @@ packages: - scheduler dev: false - /@fluentui/react-switch@9.1.83(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): - resolution: {integrity: sha512-UZfB3J3+sgyU9YKlzXDQBAzF5WXf8q754eTYdfbu1Irev+1WgXwugEM0QI5aJVPmefb9Umzwfsva3HI1UVOFbQ==} + /@fluentui/react-switch@9.1.87(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): + resolution: {integrity: sha512-zD6HivKQOF7POzFDJEyjXhB8gedYw1HS3OKKQGWMFzjJwiGJJAi6mABllh6hARuGES86otmqmq/N6WGPAusc+w==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' react: '>=16.14.0 <19.0.0' react-dom: '>=16.14.0 <19.0.0' dependencies: - '@fluentui/react-field': 9.1.66(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-icons': 2.0.240(react@18.3.1) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-label': 9.1.70(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-tabster': 9.21.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-field': 9.1.69(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-icons': 2.0.247(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-label': 9.1.72(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-tabster': 9.22.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -6023,8 +6141,8 @@ packages: - scheduler dev: false - /@fluentui/react-table@9.15.5(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): - resolution: {integrity: sha512-tyBVYIYFYS2HD1pYwOIFyMDb9EdUkCG2kIolHjrSByNkDwYjaQSGabupn1EH9G/eCFkSTFqGwNnqDnjYzzDqOg==} + /@fluentui/react-table@9.15.9(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): + resolution: {integrity: sha512-unTbm8rjEqOzH/xHmltBApgS9jUtnLJ1t/XnhF0ATKvHDjGE5tkDyLkBM9Z6HZlC0xOkd4nyTMlUaaSeNdvFXQ==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' @@ -6032,20 +6150,20 @@ packages: react-dom: '>=16.14.0 <19.0.0' dependencies: '@fluentui/keyboard-keys': 9.0.7 - '@fluentui/react-aria': 9.11.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-avatar': 9.6.27(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-checkbox': 9.2.26(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-context-selector': 9.1.60(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-icons': 2.0.240(react@18.3.1) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-radio': 9.2.21(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-tabster': 9.21.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-aria': 9.13.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-avatar': 9.6.31(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-checkbox': 9.2.30(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-context-selector': 9.1.63(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-icons': 2.0.247(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-radio': 9.2.25(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-tabster': 9.22.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -6053,23 +6171,23 @@ packages: - scheduler dev: false - /@fluentui/react-tabs@9.4.21(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): - resolution: {integrity: sha512-MRBjWIh+qXXRmdYz+inUEb13kc77cl5Phm4gdBPRrXje/A78gOVb+/B2TqalPHH1GMPSpYd0BpGIvxuKJm2eYg==} + /@fluentui/react-tabs@9.4.25(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): + resolution: {integrity: sha512-xc4uvoTzKDEKmx0AYYt2yDIi4MPfQ9SZtTa4F0tUmmAhM2LOa54E1cUNZSuzw69foxtYLAB9TouRSnAYHGIHoQ==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' react: '>=16.14.0 <19.0.0' react-dom: '>=16.14.0 <19.0.0' dependencies: - '@fluentui/react-context-selector': 9.1.60(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-tabster': 9.21.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-context-selector': 9.1.63(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-tabster': 9.22.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -6077,29 +6195,29 @@ packages: - scheduler dev: false - /@fluentui/react-tabster@9.21.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-WmPBeR2U3htAHKKmeL5+I8vIKyg5cRNCfrORpSpVlfZ0I/eTL+dRJJBRtTmOQ9VfPCNB7NF3VVpnR5EgcRbouw==} + /@fluentui/react-tabster@9.22.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-m8m7ISCDN8EHM430hAD9kO9KKz5T6PNJ42HdI0gYf+d8xQjyMKr3HBOHzVDmdfv/9QHfftWtwS9WpqqS7IOreA==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' react: '>=16.14.0 <19.0.0' react-dom: '>=16.14.0 <19.0.0' dependencies: - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 keyborg: 2.6.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - tabster: 7.1.3 + tabster: 8.0.0 dev: false - /@fluentui/react-tag-picker@9.0.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): - resolution: {integrity: sha512-Zjlk/FAr1wCeCJk8fIjXPK3eInimsB64PhgHTRfR2PfvgtDgly0K1cZBStsm2c6SdEkJDkNqChFyvvUiVyb8fw==} + /@fluentui/react-tag-picker@9.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): + resolution: {integrity: sha512-TY+XRlnPgRHZDIcyGphSscm8202admvbyhE1nKVQEUnnEIZjHw7wammfv2If0PjgViRyQ9/XlEj5AttQldKpWw==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' @@ -6107,22 +6225,22 @@ packages: react-dom: '>=16.14.0 <19.0.0' dependencies: '@fluentui/keyboard-keys': 9.0.7 - '@fluentui/react-aria': 9.11.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-combobox': 9.11.5(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-context-selector': 9.1.60(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-field': 9.1.66(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-icons': 2.0.240(react@18.3.1) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-portal': 9.4.25(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-positioning': 9.15.1(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-tabster': 9.21.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-tags': 9.3.6(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-aria': 9.13.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-combobox': 9.12.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-context-selector': 9.1.63(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-field': 9.1.69(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-icons': 2.0.247(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-portal': 9.4.29(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-positioning': 9.15.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-tabster': 9.22.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-tags': 9.3.10(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -6130,8 +6248,8 @@ packages: - scheduler dev: false - /@fluentui/react-tags@9.3.6(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): - resolution: {integrity: sha512-oSkARy6deCv5oXCLlHM4Z/MaKN82jaPhUxXbgGsc//cu4JUQNc0VIXoSYf/Y9HEz9IeEV/Id2yXsBnbkl9KaJA==} + /@fluentui/react-tags@9.3.10(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): + resolution: {integrity: sha512-tVlyGTTVutFebA6nsIfu9V2aXj2jb/Hy+H0hCIgxZnfFeBnp5m5MxInvwhfiOpO8v+ENuEC53LjQcdCw7TmhuQ==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' @@ -6139,17 +6257,17 @@ packages: react-dom: '>=16.14.0 <19.0.0' dependencies: '@fluentui/keyboard-keys': 9.0.7 - '@fluentui/react-aria': 9.11.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-avatar': 9.6.27(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-icons': 2.0.240(react@18.3.1) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-tabster': 9.21.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-aria': 9.13.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-avatar': 9.6.31(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-icons': 2.0.247(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-tabster': 9.22.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -6157,27 +6275,27 @@ packages: - scheduler dev: false - /@fluentui/react-teaching-popover@9.1.5(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): - resolution: {integrity: sha512-IJuOaLzAAqxK15JpJrS7KZTSV40P4fW2friNLf0vgGbvn0n4SiFlnBEmec75Mk6NDOxWEGDGVgSywQw7HXgjpA==} + /@fluentui/react-teaching-popover@9.1.9(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): + resolution: {integrity: sha512-+UuDAyTXrswKegEcED7hLPiZ6MCkMGKRkAxJpC/l4FRmaEGJ8y/j33F7HvfrACdFbIEbceuRS7Wx2GRWlotjRQ==} peerDependencies: '@types/react': '>=16.8.0 <19.0.0' '@types/react-dom': '>=16.8.0 <19.0.0' react: '>=16.8.0 <19.0.0' react-dom: '>=16.8.0 <19.0.0' dependencies: - '@fluentui/react-aria': 9.11.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-button': 9.3.81(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-context-selector': 9.1.60(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-icons': 2.0.240(react@18.3.1) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-popover': 9.9.9(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-tabster': 9.21.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-aria': 9.13.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-button': 9.3.85(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-context-selector': 9.1.63(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-icons': 2.0.247(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-popover': 9.9.13(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-tabster': 9.22.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -6186,42 +6304,42 @@ packages: - scheduler dev: false - /@fluentui/react-text@9.4.18(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-ntKfnidKVFpqJsC/Xyn4dygAjx+/SjqJOp3UmKCZirAckCWWokwmO31v8eV8Mgf8f9tKpQu2GOvuEjI5eBBqrw==} + /@fluentui/react-text@9.4.21(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-VP09hiPqrPsTNxmXsejyGP9xRqpRw2Mqim+M4hb6xoorcq1hjfInhr1W79jdDycStJ9MvTDOs6mBP+1wg8tJzA==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' react: '>=16.14.0 <19.0.0' react-dom: '>=16.14.0 <19.0.0' dependencies: - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false - /@fluentui/react-textarea@9.3.76(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): - resolution: {integrity: sha512-nSxR+LSM86HC2KlZwAimOA+2nAKziESCvs43hDw8lPdrBsMBFm97whHvU0RMozKA8nKFPInP36TR9QlQy9f52A==} + /@fluentui/react-textarea@9.3.80(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): + resolution: {integrity: sha512-n9wMXz9eO0kzguysFmP5Pi2R21m26eBpVHnkGyhYu7ESNh0Q4JdBoylpyCpncpi92OQjY4jj7n7QM01U6jNC/A==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' react: '>=16.14.0 <19.0.0' react-dom: '>=16.14.0 <19.0.0' dependencies: - '@fluentui/react-field': 9.1.66(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-field': 9.1.69(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -6236,8 +6354,8 @@ packages: '@swc/helpers': 0.5.8 dev: false - /@fluentui/react-toast@9.3.43(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-CtPKu+Xaugon4WnztQDQALrO7rkcfWrWX0MElWz3/7YZ7vWiN9hVmrjy+QuIrgtYP8sb0HhYxgNPvLV/5VMa2A==} + /@fluentui/react-toast@9.3.48(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-iEP4ggFVgDtfR2hkXdOMBhy5eETLpXCfUcoDGTti3Z1xH5Y4b3dLByEpAXcP2M8zxJk81MZDCFcaY5gZTBhp4w==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' @@ -6245,43 +6363,43 @@ packages: react-dom: '>=16.14.0 <19.0.0' dependencies: '@fluentui/keyboard-keys': 9.0.7 - '@fluentui/react-aria': 9.11.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-icons': 2.0.240(react@18.3.1) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-portal': 9.4.25(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-tabster': 9.21.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-aria': 9.13.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-icons': 2.0.247(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-motion': 9.2.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-portal': 9.4.29(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-tabster': 9.22.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-transition-group: 4.4.5(react-dom@18.3.1)(react@18.3.1) dev: false - /@fluentui/react-toolbar@9.1.84(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): - resolution: {integrity: sha512-9L0ZnusI+uDEYxZ8mNTR2br9odIgiU3gDGXmSTQTUjdcH0vJNbbVqew6G1Gm2KCwdXjIjwPSTDOPNMbuhFiHHQ==} + /@fluentui/react-toolbar@9.1.88(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): + resolution: {integrity: sha512-c4jfk1LbUjQ8zpoGsMv+PpcozjuUj9kBseslwRLKBwh0/rZdf5VbZPHtYozE9YiVrTfJpbNYGLSZRHbETMIxvw==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' react: '>=16.14.0 <19.0.0' react-dom: '>=16.14.0 <19.0.0' dependencies: - '@fluentui/react-button': 9.3.81(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-context-selector': 9.1.60(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-divider': 9.2.69(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-radio': 9.2.21(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-tabster': 9.21.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-button': 9.3.85(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-context-selector': 9.1.63(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-divider': 9.2.71(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-radio': 9.2.25(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-tabster': 9.22.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -6289,8 +6407,8 @@ packages: - scheduler dev: false - /@fluentui/react-tooltip@9.4.28(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-zhiKRiKE2uh8wNPwJ0oTPo7lLt693wdKvFua9NryHmkNyyWleMFXa+gkF/dcXxyAh6zPuH8aNQT6rN/s738Vhw==} + /@fluentui/react-tooltip@9.4.32(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-wMBTc66KhHGEf92JHNuirSbo5fjzmVUrAiVFHiZ44HsxbkRuBbwzeKOxpS+jODHxUjd0wYjUt/muEdGwAMBHGQ==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' @@ -6298,23 +6416,23 @@ packages: react-dom: '>=16.14.0 <19.0.0' dependencies: '@fluentui/keyboard-keys': 9.0.7 - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-portal': 9.4.25(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-positioning': 9.15.1(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-tabster': 9.21.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-portal': 9.4.29(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-positioning': 9.15.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-tabster': 9.22.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false - /@fluentui/react-tree@9.5.0(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): - resolution: {integrity: sha512-QOt37ZOpO+aZUnTjwZqqXNuDpyRodR7GEuI6Nf9fAZhw8679bDBrFdXGriawltVXXegtJ1QJFEJhbV858m0PKQ==} + /@fluentui/react-tree@9.7.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0): + resolution: {integrity: sha512-+x0usCgARcOtunyP2Vv8u3u2YshURI16iWmeG4aIinFCZxERkPK9kRFHXv2Cey2wE3QrDOMmciqY4ZJ522b7ow==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' @@ -6322,21 +6440,21 @@ packages: react-dom: '>=16.14.0 <19.0.0' dependencies: '@fluentui/keyboard-keys': 9.0.7 - '@fluentui/react-aria': 9.11.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-avatar': 9.6.27(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-button': 9.3.81(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) - '@fluentui/react-checkbox': 9.2.26(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-context-selector': 9.1.60(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-icons': 2.0.240(react@18.3.1) - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-radio': 9.2.21(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-tabster': 9.21.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-aria': 9.13.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-avatar': 9.6.31(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-button': 9.3.85(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@fluentui/react-checkbox': 9.2.30(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-context-selector': 9.1.63(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-icons': 2.0.247(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-radio': 9.2.25(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1)(scheduler@0.23.0) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-tabster': 9.22.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@fluentui/react-theme': 9.1.17 - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -6344,33 +6462,33 @@ packages: - scheduler dev: false - /@fluentui/react-utilities@9.18.9(@types/react@18.3.2)(react@18.3.1): - resolution: {integrity: sha512-no2k8vxNiJt7SbSzB8H4aHNTcKK08Bzqu6kbwrUXMEklQxEoC+e2BJ+2nzHJUdFqR4WUq0380dDFjjrBimIiWw==} + /@fluentui/react-utilities@9.18.11(@types/react@18.3.3)(react@18.3.1): + resolution: {integrity: sha512-VTOWnH6hug6WoNVWlQNRH20iu7088ckoQeRbppAZLMKNXKQtmbA6S1ZmU8kT/qYMWWK8OdjixcPA+h4AAZmQcg==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' react: '>=16.14.0 <19.0.0' dependencies: '@fluentui/keyboard-keys': 9.0.7 - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 react: 18.3.1 dev: false - /@fluentui/react-virtualizer@9.0.0-alpha.78(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-UVMfuvuLxNa5W1kUHOdAfUoctxoURx9Zz+r0Hl2mVEE6sXwoCbuy2C9xzZjppzyEta40bTRhHbxpX63stbm8Iw==} + /@fluentui/react-virtualizer@9.0.0-alpha.80(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-1RzGHX4/4oYJOnnjD+5HM8iOMVOxG5435PFI8BOZCvCJ2jj/krMixv9jrL5RB2KiDt4Xm+gPUDw7trPcx+XCtA==} peerDependencies: '@types/react': '>=16.14.0 <19.0.0' '@types/react-dom': '>=16.9.0 <19.0.0' react: '>=16.14.0 <19.0.0' react-dom: '>=16.14.0 <19.0.0' dependencies: - '@fluentui/react-jsx-runtime': 9.0.38(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.2)(react@18.3.1) - '@fluentui/react-utilities': 9.18.9(@types/react@18.3.2)(react@18.3.1) + '@fluentui/react-jsx-runtime': 9.0.40(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-shared-contexts': 9.19.0(@types/react@18.3.3)(react@18.3.1) + '@fluentui/react-utilities': 9.18.11(@types/react@18.3.3)(react@18.3.1) '@griffel/react': 1.5.22(react@18.3.1) '@swc/helpers': 0.5.8 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -6382,17 +6500,6 @@ packages: '@swc/helpers': 0.5.8 dev: false - /@griffel/core@1.15.3: - resolution: {integrity: sha512-5ksBpOjFJ75HijGehQ06Ri9cQjhd/rqQ0N/jJzXDDXQFYdOOzib/QL7BXNwhkLtTyHvN391cD4/BqcTdynfLUg==} - dependencies: - '@emotion/hash': 0.9.1 - '@griffel/style-types': 1.0.4 - csstype: 3.1.3 - rtl-css-js: 1.16.1 - stylis: 4.3.1 - tslib: 2.6.2 - dev: false - /@griffel/core@1.16.0: resolution: {integrity: sha512-7xy9sWxmyFok0chZXJ91z4VH0HdwhAPUln5Ctpg6S/WRKoPhpIg9EieiL5CRFhIp1krPIncJSes4WqaB9OKiow==} dependencies: @@ -6404,16 +6511,6 @@ packages: tslib: 2.6.2 dev: false - /@griffel/react@1.5.21(react@18.3.1): - resolution: {integrity: sha512-7wuY9uFSt/0E7kLAKX//ue8NILx0IGoOtIx6WVuavEUFJXPCrvFn4uCDgnJC0211LZtJ+XH7zZGPNUtSb7nijw==} - peerDependencies: - react: '>=16.8.0 <19.0.0' - dependencies: - '@griffel/core': 1.15.3 - react: 18.3.1 - tslib: 2.6.2 - dev: false - /@griffel/react@1.5.22(react@18.3.1): resolution: {integrity: sha512-QZWo73e+7oh+aTxCJzCe9SNUszM0+lHG9p1LoEQ5MZdvtT8sur1M4cz+TVTTgUXqUBnHBf1TIYXvVoRxiZhy8Q==} peerDependencies: @@ -6424,12 +6521,6 @@ packages: tslib: 2.6.2 dev: false - /@griffel/style-types@1.0.4: - resolution: {integrity: sha512-geZomjQTIHXoQZFFB811PUMXYAr8LuBNOMPcR2YJAl1pslbHYYiZKCa2FgZCw00hnQFP4uB4JIJ2CiPJqKZYmw==} - dependencies: - csstype: 3.1.3 - dev: false - /@griffel/style-types@1.1.0: resolution: {integrity: sha512-cINLeC14/YUHlrtL96vzCrsFr19WUO0i9DuljBtX5S7B8pMyiNf6Pw0htjroLojvfD2okhdsr9CHwpUxz1u4kw==} dependencies: @@ -6475,7 +6566,6 @@ packages: strip-ansi-cjs: /strip-ansi@6.0.1 wrap-ansi: 8.1.0 wrap-ansi-cjs: /wrap-ansi@7.0.0 - dev: true /@istanbuljs/schema@0.1.3: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} @@ -6500,7 +6590,7 @@ packages: chalk: 4.1.2 dev: false - /@joshwooding/vite-plugin-react-docgen-typescript@0.3.1(typescript@5.4.5)(vite@5.2.11): + /@joshwooding/vite-plugin-react-docgen-typescript@0.3.1(typescript@5.5.3)(vite@5.3.2): resolution: {integrity: sha512-pdoMZ9QaPnVlSM+SdU/wgg0nyD/8wQ7y90ttO2CMCyrrm7RxveYIJ5eNfjPaoMFqW41LZra7QO9j+xV4Y18Glw==} peerDependencies: typescript: '>= 4.3.x' @@ -6512,9 +6602,9 @@ packages: glob: 7.2.3 glob-promise: 4.2.2(glob@7.2.3) magic-string: 0.27.0 - react-docgen-typescript: 2.2.2(typescript@5.4.5) - typescript: 5.4.5 - vite: 5.2.11(@types/node@18.11.19) + react-docgen-typescript: 2.2.2(typescript@5.5.3) + typescript: 5.5.3 + vite: 5.3.2(@types/node@18.11.19) dev: true /@jridgewell/gen-mapping@0.3.5: @@ -6588,14 +6678,14 @@ packages: transitivePeerDependencies: - supports-color - /@mdx-js/react@3.0.1(@types/react@18.3.2)(react@18.3.1): + /@mdx-js/react@3.0.1(@types/react@18.3.3)(react@18.3.1): resolution: {integrity: sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==} peerDependencies: '@types/react': '>=16' react: '>=16' dependencies: '@types/mdx': 2.0.12 - '@types/react': 18.3.2 + '@types/react': 18.3.3 react: 18.3.1 dev: false @@ -7110,24 +7200,18 @@ packages: aggregate-error: 5.0.0 dev: true - /@opentelemetry/api@1.8.0: - resolution: {integrity: sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==} - engines: {node: '>=8.0.0'} - dev: false - /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} requiresBuild: true - dev: true optional: true - /@playwright/test@1.44.0: - resolution: {integrity: sha512-rNX5lbNidamSUorBhB4XZ9SQTjAqfe5M+p37Z8ic0jPFBMo5iCtQz1kRWkEMg+rYOKSlVycpQmpqjSFq7LXOfg==} - engines: {node: '>=16'} + /@playwright/test@1.45.0: + resolution: {integrity: sha512-TVYsfMlGAaxeUllNkywbwek67Ncf8FRGn8ZlRdO291OL3NjG9oMbfVhyP82HQF0CZLMrYsvesqoUekxdWuF9Qw==} + engines: {node: '>=18'} hasBin: true dependencies: - playwright: 1.44.0 + playwright: 1.45.0 dev: true /@pnpm/cli-meta@5.0.1: @@ -7451,7 +7535,7 @@ packages: /@polka/url@1.0.0-next.25: resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} - /@rollup/plugin-alias@5.1.0(rollup@4.17.2): + /@rollup/plugin-alias@5.1.0(rollup@4.18.0): resolution: {integrity: sha512-lpA3RZ9PdIG7qqhEfv79tBffNaoDuukFDrmhLqg9ifv99u/ehn+lOg30x2zmhf8AQqQUZaMk/B9fZraQ6/acDQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -7460,28 +7544,28 @@ packages: rollup: optional: true dependencies: - rollup: 4.17.2 + rollup: 4.18.0 slash: 4.0.0 dev: false - /@rollup/plugin-commonjs@25.0.7(rollup@4.17.2): - resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} - engines: {node: '>=14.0.0'} + /@rollup/plugin-commonjs@26.0.1(rollup@4.18.0): + resolution: {integrity: sha512-UnsKoZK6/aGIH6AdkptXhNvhaqftcjq3zZdT+LY5Ftms6JR06nADcDsYp5hTU9E2lbJUEOhdlY5J4DNTneM+jQ==} + engines: {node: '>=16.0.0 || 14 >= 14.17'} peerDependencies: rollup: ^2.68.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.17.2) + '@rollup/pluginutils': 5.1.0(rollup@4.18.0) commondir: 1.0.1 estree-walker: 2.0.2 - glob: 8.1.0 + glob: 10.4.2 is-reference: 1.2.1 magic-string: 0.30.8 - rollup: 4.17.2 + rollup: 4.18.0 - /@rollup/plugin-json@6.1.0(rollup@4.17.2): + /@rollup/plugin-json@6.1.0(rollup@4.18.0): resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -7490,10 +7574,10 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.17.2) - rollup: 4.17.2 + '@rollup/pluginutils': 5.1.0(rollup@4.18.0) + rollup: 4.18.0 - /@rollup/plugin-multi-entry@6.0.1(rollup@4.17.2): + /@rollup/plugin-multi-entry@6.0.1(rollup@4.18.0): resolution: {integrity: sha512-AXm6toPyTSfbYZWghQGbom1Uh7dHXlrGa+HoiYNhQtDUE3Q7LqoUYdVQx9E1579QWS1uOiu+cZRSE4okO7ySgw==} engines: {node: '>=14.0.0'} peerDependencies: @@ -7502,12 +7586,12 @@ packages: rollup: optional: true dependencies: - '@rollup/plugin-virtual': 3.0.2(rollup@4.17.2) + '@rollup/plugin-virtual': 3.0.2(rollup@4.18.0) matched: 5.0.1 - rollup: 4.17.2 + rollup: 4.18.0 dev: false - /@rollup/plugin-node-resolve@15.2.3(rollup@4.17.2): + /@rollup/plugin-node-resolve@15.2.3(rollup@4.18.0): resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -7516,16 +7600,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.17.2) + '@rollup/pluginutils': 5.1.0(rollup@4.18.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.8 - rollup: 4.17.2 + rollup: 4.18.0 - /@rollup/plugin-replace@5.0.5(rollup@4.17.2): - resolution: {integrity: sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==} + /@rollup/plugin-replace@5.0.7(rollup@4.18.0): + resolution: {integrity: sha512-PqxSfuorkHz/SPpyngLyg5GCEkOcee9M1bkxiVDr41Pd61mqP1PLOoDPbpl44SB2mQGKwV/In74gqQmGITOhEQ==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 @@ -7533,12 +7617,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.17.2) + '@rollup/pluginutils': 5.1.0(rollup@4.18.0) magic-string: 0.30.8 - rollup: 4.17.2 + rollup: 4.18.0 dev: true - /@rollup/plugin-typescript@11.1.6(rollup@4.17.2)(typescript@5.4.5): + /@rollup/plugin-typescript@11.1.6(rollup@4.18.0)(typescript@5.5.3): resolution: {integrity: sha512-R92yOmIACgYdJ7dJ97p4K69I8gg6IEHt8M7dUBxN3W6nrO8uUxX5ixl0yU/N3aZTi8WhPuICvOHXQvF6FaykAA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -7551,13 +7635,13 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.17.2) + '@rollup/pluginutils': 5.1.0(rollup@4.18.0) resolve: 1.22.8 - rollup: 4.17.2 - typescript: 5.4.5 + rollup: 4.18.0 + typescript: 5.5.3 dev: true - /@rollup/plugin-virtual@3.0.2(rollup@4.17.2): + /@rollup/plugin-virtual@3.0.2(rollup@4.18.0): resolution: {integrity: sha512-10monEYsBp3scM4/ND4LNH5Rxvh3e/cVeL3jWTgZ2SrQ+BmUoQcopVQvnaMcOnykb1VkxUFuDAN+0FnpTFRy2A==} engines: {node: '>=14.0.0'} peerDependencies: @@ -7566,10 +7650,10 @@ packages: rollup: optional: true dependencies: - rollup: 4.17.2 + rollup: 4.18.0 dev: false - /@rollup/pluginutils@5.1.0(rollup@4.17.2): + /@rollup/pluginutils@5.1.0(rollup@4.18.0): resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} peerDependencies: @@ -7581,115 +7665,115 @@ packages: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 4.17.2 + rollup: 4.18.0 - /@rollup/rollup-android-arm-eabi@4.17.2: - resolution: {integrity: sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ==} + /@rollup/rollup-android-arm-eabi@4.18.0: + resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==} cpu: [arm] os: [android] requiresBuild: true optional: true - /@rollup/rollup-android-arm64@4.17.2: - resolution: {integrity: sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw==} + /@rollup/rollup-android-arm64@4.18.0: + resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==} cpu: [arm64] os: [android] requiresBuild: true optional: true - /@rollup/rollup-darwin-arm64@4.17.2: - resolution: {integrity: sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==} + /@rollup/rollup-darwin-arm64@4.18.0: + resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /@rollup/rollup-darwin-x64@4.17.2: - resolution: {integrity: sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ==} + /@rollup/rollup-darwin-x64@4.18.0: + resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.17.2: - resolution: {integrity: sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A==} + /@rollup/rollup-linux-arm-gnueabihf@4.18.0: + resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==} cpu: [arm] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-arm-musleabihf@4.17.2: - resolution: {integrity: sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg==} + /@rollup/rollup-linux-arm-musleabihf@4.18.0: + resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==} cpu: [arm] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.17.2: - resolution: {integrity: sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A==} + /@rollup/rollup-linux-arm64-gnu@4.18.0: + resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-arm64-musl@4.17.2: - resolution: {integrity: sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA==} + /@rollup/rollup-linux-arm64-musl@4.18.0: + resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-powerpc64le-gnu@4.17.2: - resolution: {integrity: sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ==} + /@rollup/rollup-linux-powerpc64le-gnu@4.18.0: + resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==} cpu: [ppc64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-riscv64-gnu@4.17.2: - resolution: {integrity: sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg==} + /@rollup/rollup-linux-riscv64-gnu@4.18.0: + resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==} cpu: [riscv64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-s390x-gnu@4.17.2: - resolution: {integrity: sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g==} + /@rollup/rollup-linux-s390x-gnu@4.18.0: + resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==} cpu: [s390x] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-x64-gnu@4.17.2: - resolution: {integrity: sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ==} + /@rollup/rollup-linux-x64-gnu@4.18.0: + resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-x64-musl@4.17.2: - resolution: {integrity: sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q==} + /@rollup/rollup-linux-x64-musl@4.18.0: + resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.17.2: - resolution: {integrity: sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA==} + /@rollup/rollup-win32-arm64-msvc@4.18.0: + resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==} cpu: [arm64] os: [win32] requiresBuild: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.17.2: - resolution: {integrity: sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ==} + /@rollup/rollup-win32-ia32-msvc@4.18.0: + resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==} cpu: [ia32] os: [win32] requiresBuild: true optional: true - /@rollup/rollup-win32-x64-msvc@4.17.2: - resolution: {integrity: sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w==} + /@rollup/rollup-win32-x64-msvc@4.18.0: + resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==} cpu: [x64] os: [win32] requiresBuild: true @@ -7743,6 +7827,10 @@ packages: - '@types/node' dev: true + /@shikijs/core@1.10.0: + resolution: {integrity: sha512-BZcr6FCmPfP6TXaekvujZcnkFmJHZ/Yglu97r/9VjzVndQA56/F4WjUKtJRQUnK59Wi7p/UTAOekMfCJv7jnYg==} + dev: true + /@sideway/address@4.1.5: resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} dependencies: @@ -7827,10 +7915,10 @@ packages: micromark-util-symbol: 1.1.0 dev: false - /@storybook/addon-actions@8.1.2: - resolution: {integrity: sha512-EW8sYgA1vpn67pTheBjfLCfPO82w0jMkKYFDFMMvxVoEDbJ3fgsUDDd058zBBFiDtnngv3VUrXASPTxK51F2mQ==} + /@storybook/addon-actions@8.1.11: + resolution: {integrity: sha512-jqYXgBgOVInStOCk//AA+dGkrfN8R7rDXA4lyu82zM59kvICtG9iqgmkSRDn0Z3zUkM+lIHZGoz0aLVQ8pxsgw==} dependencies: - '@storybook/core-events': 8.1.2 + '@storybook/core-events': 8.1.11 '@storybook/global': 5.0.0 '@types/uuid': 9.0.8 dequal: 2.0.3 @@ -7838,13 +7926,13 @@ packages: uuid: 9.0.1 dev: true - /@storybook/builder-manager@8.1.2(prettier@3.2.5): - resolution: {integrity: sha512-cOdfSUY6vtZvJaSK1htx4aNmCLldPS7gFTBoooj3oMv7SyP3c3T53NuB+RcYpMqAUtngjLnTcl+tQ9JR/H5meA==} + /@storybook/builder-manager@8.1.11(prettier@3.3.2): + resolution: {integrity: sha512-U7bmed4Ayg+OlJ8HPmLeGxLTHzDY7rxmxM4aAs4YL01fufYfBcjkIP9kFhJm+GJOvGm+YJEUAPe5mbM1P/bn0Q==} dependencies: '@fal-works/esbuild-plugin-global-externals': 2.1.2 - '@storybook/core-common': 8.1.2(prettier@3.2.5) - '@storybook/manager': 8.1.2 - '@storybook/node-logger': 8.1.2 + '@storybook/core-common': 8.1.11(prettier@3.3.2) + '@storybook/manager': 8.1.11 + '@storybook/node-logger': 8.1.11 '@types/ejs': 3.1.5 '@yarnpkg/esbuild-plugin-pnp': 3.0.0-rc.15(esbuild@0.20.2) browser-assert: 1.2.1 @@ -7861,8 +7949,8 @@ packages: - supports-color dev: true - /@storybook/builder-vite@8.1.2(prettier@3.2.5)(typescript@5.4.5)(vite@5.2.11): - resolution: {integrity: sha512-7MqJEV7+LKfVM/ZixDjd5RMyAL6U6zjsTuaGPW8Chf3Zvr/Z/Xa2EvKdE3c6qEz3hvleGFTBhBnBCZttoG5b/g==} + /@storybook/builder-vite@8.1.11(prettier@3.3.2)(typescript@5.5.3)(vite@5.3.2): + resolution: {integrity: sha512-hG4eoNMCPgjZ2Ai+zSmk69zjsyEihe75XbJXtYfGRqjMWtz2+SAUFO54fLc2BD5svcUiTeN+ukWcTrwApyPsKg==} peerDependencies: '@preact/preset-vite': '*' typescript: '>= 4.3.x' @@ -7876,15 +7964,15 @@ packages: vite-plugin-glimmerx: optional: true dependencies: - '@storybook/channels': 8.1.2 - '@storybook/client-logger': 8.1.2 - '@storybook/core-common': 8.1.2(prettier@3.2.5) - '@storybook/core-events': 8.1.2 - '@storybook/csf-plugin': 8.1.2 - '@storybook/node-logger': 8.1.2 - '@storybook/preview': 8.1.2 - '@storybook/preview-api': 8.1.2 - '@storybook/types': 8.1.2 + '@storybook/channels': 8.1.11 + '@storybook/client-logger': 8.1.11 + '@storybook/core-common': 8.1.11(prettier@3.3.2) + '@storybook/core-events': 8.1.11 + '@storybook/csf-plugin': 8.1.11 + '@storybook/node-logger': 8.1.11 + '@storybook/preview': 8.1.11 + '@storybook/preview-api': 8.1.11 + '@storybook/types': 8.1.11 '@types/find-cache-dir': 3.2.1 browser-assert: 1.2.1 es-module-lexer: 1.5.0 @@ -7893,39 +7981,39 @@ packages: fs-extra: 11.2.0 magic-string: 0.30.8 ts-dedent: 2.2.0 - typescript: 5.4.5 - vite: 5.2.11(@types/node@18.11.19) + typescript: 5.5.3 + vite: 5.3.2(@types/node@18.11.19) transitivePeerDependencies: - encoding - prettier - supports-color dev: true - /@storybook/channels@8.1.2: - resolution: {integrity: sha512-ChWKPCDZ4VVBpulJsZ+RQiPi4NVm6tb0FJwjEcMskxl4Nx2x4+rxLrZHrsZHWXsH5uJctSEjmmvEn1QdjVKMPQ==} + /@storybook/channels@8.1.11: + resolution: {integrity: sha512-fu5FTqo6duOqtJFa6gFzKbiSLJoia+8Tibn3xFfB6BeifWrH81hc+AZq0lTmHo5qax2G5t8ZN8JooHjMw6k2RA==} dependencies: - '@storybook/client-logger': 8.1.2 - '@storybook/core-events': 8.1.2 + '@storybook/client-logger': 8.1.11 + '@storybook/core-events': 8.1.11 '@storybook/global': 5.0.0 telejson: 7.2.0 tiny-invariant: 1.3.3 dev: true - /@storybook/cli@8.1.2(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-gynn8LjmqJmAfaMNAf8h0V+RFdTo10+x4x6yiCy/eI/Yct0B5ke9MPzdKHocMhBLv9EDNz1ealwjsvR7dmjy2w==} + /@storybook/cli@8.1.11(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-4U48w9C7mVEKrykcPcfHwJkRyCqJ28XipbElACbjIIkQEqaHaOVtP3GeKIrgkoOXe/HK3O4zKWRP2SqlVS0r4A==} hasBin: true dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/types': 7.24.5 '@ndelangen/get-tarball': 3.0.9 - '@storybook/codemod': 8.1.2 - '@storybook/core-common': 8.1.2(prettier@3.2.5) - '@storybook/core-events': 8.1.2 - '@storybook/core-server': 8.1.2(prettier@3.2.5)(react-dom@18.3.1)(react@18.3.1) - '@storybook/csf-tools': 8.1.2 - '@storybook/node-logger': 8.1.2 - '@storybook/telemetry': 8.1.2(prettier@3.2.5) - '@storybook/types': 8.1.2 + '@storybook/codemod': 8.1.11 + '@storybook/core-common': 8.1.11(prettier@3.3.2) + '@storybook/core-events': 8.1.11 + '@storybook/core-server': 8.1.11(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1) + '@storybook/csf-tools': 8.1.11 + '@storybook/node-logger': 8.1.11 + '@storybook/telemetry': 8.1.11(prettier@3.3.2) + '@storybook/types': 8.1.11 '@types/semver': 7.5.8 '@yarnpkg/fslib': 2.10.3 '@yarnpkg/libzip': 2.3.0 @@ -7939,16 +8027,16 @@ packages: fs-extra: 11.2.0 get-npm-tarball-url: 2.1.0 giget: 1.2.3 - globby: 14.0.1 + globby: 14.0.2 jscodeshift: 0.15.2(@babel/preset-env@7.24.5) leven: 3.1.0 ora: 5.4.1 - prettier: 3.2.5 + prettier: 3.3.2 prompts: 2.4.2 read-pkg-up: 7.0.1 semver: 7.6.2 strip-json-comments: 3.1.1 - tempy: 1.0.1 + tempy: 3.1.0 tiny-invariant: 1.3.3 ts-dedent: 2.2.0 transitivePeerDependencies: @@ -7961,46 +8049,46 @@ packages: - utf-8-validate dev: true - /@storybook/client-logger@8.1.2: - resolution: {integrity: sha512-2kiXh0CE2IJpV++r0sGknMVMjAiT/tQe16FlGHOh52XppUz7slQVy/W/nPhVKvcbdThSQd0kYFR9r3XmAT1LSQ==} + /@storybook/client-logger@8.1.11: + resolution: {integrity: sha512-DVMh2usz3yYmlqCLCiCKy5fT8/UR9aTh+gSqwyNFkGZrIM4otC5A8eMXajXifzotQLT5SaOEnM3WzHwmpvMIEA==} dependencies: '@storybook/global': 5.0.0 dev: true - /@storybook/codemod@8.1.2: - resolution: {integrity: sha512-kcJjq5BBxxUBVsOxBnwwkqVPm/zdWMbr5VOjmZinqPtPA1slFQxbfRenD77l6icT15InZqbRXwkp1+G8oYDVGA==} + /@storybook/codemod@8.1.11: + resolution: {integrity: sha512-/LCozjH1IQ1TOs9UQV59BE0X6UZ9q+C0NEUz7qmJZPrwAii3FkW4l7D/fwxblpMExaoxv0oE8NQfUz49U/5Ymg==} dependencies: - '@babel/core': 7.24.5 - '@babel/preset-env': 7.24.5(@babel/core@7.24.5) + '@babel/core': 7.24.7 + '@babel/preset-env': 7.24.5(@babel/core@7.24.7) '@babel/types': 7.24.5 '@storybook/csf': 0.1.7 - '@storybook/csf-tools': 8.1.2 - '@storybook/node-logger': 8.1.2 - '@storybook/types': 8.1.2 + '@storybook/csf-tools': 8.1.11 + '@storybook/node-logger': 8.1.11 + '@storybook/types': 8.1.11 '@types/cross-spawn': 6.0.6 cross-spawn: 7.0.3 - globby: 14.0.1 + globby: 14.0.2 jscodeshift: 0.15.2(@babel/preset-env@7.24.5) lodash: 4.17.21 - prettier: 3.2.5 + prettier: 3.3.2 recast: 0.23.7 tiny-invariant: 1.3.3 transitivePeerDependencies: - supports-color dev: true - /@storybook/core-common@8.1.2(prettier@3.2.5): - resolution: {integrity: sha512-Wt9xMXVSXDA7Kzk6II6SISvRVHeAtOVuJOu3VnpsFFd3tBFiXMA7jD25rHVMB3VlZDT8iaoAgdZDYnq4xYTRJg==} + /@storybook/core-common@8.1.11(prettier@3.3.2): + resolution: {integrity: sha512-Ix0nplD4I4DrV2t9B+62jaw1baKES9UbR/Jz9LVKFF9nsua3ON0aVe73dOjMxFWBngpzBYWe+zYBTZ7aQtDH4Q==} peerDependencies: prettier: ^2 || ^3 peerDependenciesMeta: prettier: optional: true dependencies: - '@storybook/core-events': 8.1.2 - '@storybook/csf-tools': 8.1.2 - '@storybook/node-logger': 8.1.2 - '@storybook/types': 8.1.2 + '@storybook/core-events': 8.1.11 + '@storybook/csf-tools': 8.1.11 + '@storybook/node-logger': 8.1.11 + '@storybook/types': 8.1.11 '@yarnpkg/fslib': 2.10.3 '@yarnpkg/libzip': 2.3.0 chalk: 4.1.2 @@ -8018,12 +8106,12 @@ packages: node-fetch: 2.7.0 picomatch: 2.3.1 pkg-dir: 5.0.0 - prettier: 3.2.5 - prettier-fallback: /prettier@3.2.5 + prettier: 3.3.2 + prettier-fallback: /prettier@3.3.2 pretty-hrtime: 1.0.3 resolve-from: 5.0.0 semver: 7.6.2 - tempy: 1.0.1 + tempy: 3.1.0 tiny-invariant: 1.3.3 ts-dedent: 2.2.0 util: 0.12.5 @@ -8032,34 +8120,34 @@ packages: - supports-color dev: true - /@storybook/core-events@8.1.2: - resolution: {integrity: sha512-GKsvo/eeEQYDEhAw5YkUIZHYNurAJjzW3+uzThUuC1r0CGcfE+twJVfQXynAyOgL6hFdqy7879/3augf3v3cJQ==} + /@storybook/core-events@8.1.11: + resolution: {integrity: sha512-vXaNe2KEW9BGlLrg0lzmf5cJ0xt+suPjWmEODH5JqBbrdZ67X6ApA2nb6WcxDQhykesWCuFN5gp1l+JuDOBi7A==} dependencies: '@storybook/csf': 0.1.7 ts-dedent: 2.2.0 dev: true - /@storybook/core-server@8.1.2(prettier@3.2.5)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-I2DR6rWv3BYCu1of2rAo8fcgqsW2NdKRm3omPqW7VRtICYiV9EnOUqV8wbEmvWtFJkuweH5o/P3rSKre2j2scw==} + /@storybook/core-server@8.1.11(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-L6dzQTmR0np/kagNONvvlm6lSvF1FNc9js3vxsEEPnEypLbhx8bDZaHmuhmBpYUzKyUMpRVQTE/WgjHLuBBuxA==} dependencies: '@aw-web-design/x-default-browser': 1.4.126 - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/parser': 7.24.5 '@discoveryjs/json-ext': 0.5.7 - '@storybook/builder-manager': 8.1.2(prettier@3.2.5) - '@storybook/channels': 8.1.2 - '@storybook/core-common': 8.1.2(prettier@3.2.5) - '@storybook/core-events': 8.1.2 + '@storybook/builder-manager': 8.1.11(prettier@3.3.2) + '@storybook/channels': 8.1.11 + '@storybook/core-common': 8.1.11(prettier@3.3.2) + '@storybook/core-events': 8.1.11 '@storybook/csf': 0.1.7 - '@storybook/csf-tools': 8.1.2 + '@storybook/csf-tools': 8.1.11 '@storybook/docs-mdx': 3.1.0-next.0 '@storybook/global': 5.0.0 - '@storybook/manager': 8.1.2 - '@storybook/manager-api': 8.1.2(react-dom@18.3.1)(react@18.3.1) - '@storybook/node-logger': 8.1.2 - '@storybook/preview-api': 8.1.2 - '@storybook/telemetry': 8.1.2(prettier@3.2.5) - '@storybook/types': 8.1.2 + '@storybook/manager': 8.1.11 + '@storybook/manager-api': 8.1.11(react-dom@18.3.1)(react@18.3.1) + '@storybook/node-logger': 8.1.11 + '@storybook/preview-api': 8.1.11 + '@storybook/telemetry': 8.1.11(prettier@3.3.2) + '@storybook/types': 8.1.11 '@types/detect-port': 1.3.5 '@types/diff': 5.2.1 '@types/node': 18.11.19 @@ -8073,8 +8161,7 @@ packages: diff: 5.2.0 express: 4.19.2 fs-extra: 11.2.0 - globby: 14.0.1 - ip: 2.0.1 + globby: 14.0.2 lodash: 4.17.21 open: 8.4.2 pretty-hrtime: 1.0.3 @@ -8098,24 +8185,24 @@ packages: - utf-8-validate dev: true - /@storybook/csf-plugin@8.1.2: - resolution: {integrity: sha512-MSWt4/bypBjfbPqna7FvIMLuvghmCfLkHMRFzZC5stUcEqPQavpTyxw8Kw0xFMTLaiBlDgi58EzDlGAXYKVZVw==} + /@storybook/csf-plugin@8.1.11: + resolution: {integrity: sha512-hkA8gjFtSN/tabG0cuvmEqanMXtxPr3qTkp4UNSt1R6jBEgFHRG2y/KYLl367kDwOSFTT987ZgRfJJruU66Fvw==} dependencies: - '@storybook/csf-tools': 8.1.2 + '@storybook/csf-tools': 8.1.11 unplugin: 1.10.1 transitivePeerDependencies: - supports-color dev: true - /@storybook/csf-tools@8.1.2: - resolution: {integrity: sha512-IGK6wx8qBuAmnPii2iSJ+ry3mGwd4iksHYypeKfrrkbmzKFG2Qh8QbytPrJz0FkTHI22kXPoQW2Ar9b0PyeqIA==} + /@storybook/csf-tools@8.1.11: + resolution: {integrity: sha512-6qMWAg/dBwCVIHzANM9lSHoirwqSS+wWmv+NwAs0t9S94M75IttHYxD3IyzwaSYCC5llp0EQFvtXXAuSfFbibg==} dependencies: '@babel/generator': 7.24.5 '@babel/parser': 7.24.5 '@babel/traverse': 7.24.5 '@babel/types': 7.24.5 '@storybook/csf': 0.1.7 - '@storybook/types': 8.1.2 + '@storybook/types': 8.1.11 fs-extra: 11.2.0 recast: 0.23.7 ts-dedent: 2.2.0 @@ -8133,13 +8220,13 @@ packages: resolution: {integrity: sha512-t4syFIeSyufieNovZbLruPt2DmRKpbwL4fERCZ1MifWDRIORCKLc4NCEHy+IqvIqd71/SJV2k4B51nF7vlJfmQ==} dev: true - /@storybook/docs-tools@8.1.2(prettier@3.2.5): - resolution: {integrity: sha512-FWhs/ZN0Fc4Qke5zdA6l0UJhIP5kdrrRjEXe0IppP7UIvtRUgrIhiS4Kz/Re110cOkjO5/K0Hr6yQPLSCPnPKA==} + /@storybook/docs-tools@8.1.11(prettier@3.3.2): + resolution: {integrity: sha512-mEXtR9rS7Y+OdKtT/QG6JBGYR1L41mcDhIqhnk7RmYl9qJstVAegrCKWR53sPKFdTVOHU7dmu6k+BD+TqHpyyw==} dependencies: - '@storybook/core-common': 8.1.2(prettier@3.2.5) - '@storybook/core-events': 8.1.2 - '@storybook/preview-api': 8.1.2 - '@storybook/types': 8.1.2 + '@storybook/core-common': 8.1.11(prettier@3.3.2) + '@storybook/core-events': 8.1.11 + '@storybook/preview-api': 8.1.11 + '@storybook/types': 8.1.11 '@types/doctrine': 0.0.3 assert: 2.1.0 doctrine: 3.0.0 @@ -8165,30 +8252,30 @@ packages: react-dom: 18.3.1(react@18.3.1) dev: true - /@storybook/instrumenter@8.1.2: - resolution: {integrity: sha512-TWldk4QTtraVaCizQrsnf4y23IPz1OqUOvzY5bA8Aje9FzzX7YHo9yEGEvd4Nx6c2GaBnInn/gWmqucmWngJDg==} + /@storybook/instrumenter@8.1.11: + resolution: {integrity: sha512-r/U9hcqnodNMHuzRt1g56mWrVsDazR85Djz64M3KOwBhrTj5d46DF4/EE80w/5zR5JOrT7p8WmjJRowiVteOCQ==} dependencies: - '@storybook/channels': 8.1.2 - '@storybook/client-logger': 8.1.2 - '@storybook/core-events': 8.1.2 + '@storybook/channels': 8.1.11 + '@storybook/client-logger': 8.1.11 + '@storybook/core-events': 8.1.11 '@storybook/global': 5.0.0 - '@storybook/preview-api': 8.1.2 + '@storybook/preview-api': 8.1.11 '@vitest/utils': 1.6.0 util: 0.12.5 dev: true - /@storybook/manager-api@8.1.2(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-6Ge7EEx94YJm3HcfjkDfRPMnr5qVdF2RzhvyflJapBxMV0X44mkGPUWyzft3cf+vUCQlXXrmtBeZauB6JTJuiA==} + /@storybook/manager-api@8.1.11(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-QSgwKfAw01K9YvvZj30iGBMgQ4YaCT3vojmttuqdH5ukyXkiO7pENLJj4Y+alwUeSi0g+SJeadCI3PXySBHOGg==} dependencies: - '@storybook/channels': 8.1.2 - '@storybook/client-logger': 8.1.2 - '@storybook/core-events': 8.1.2 + '@storybook/channels': 8.1.11 + '@storybook/client-logger': 8.1.11 + '@storybook/core-events': 8.1.11 '@storybook/csf': 0.1.7 '@storybook/global': 5.0.0 '@storybook/icons': 1.2.9(react-dom@18.3.1)(react@18.3.1) - '@storybook/router': 8.1.2 - '@storybook/theming': 8.1.2(react-dom@18.3.1)(react@18.3.1) - '@storybook/types': 8.1.2 + '@storybook/router': 8.1.11 + '@storybook/theming': 8.1.11(react-dom@18.3.1)(react@18.3.1) + '@storybook/types': 8.1.11 dequal: 2.0.3 lodash: 4.17.21 memoizerific: 1.11.3 @@ -8200,23 +8287,23 @@ packages: - react-dom dev: true - /@storybook/manager@8.1.2: - resolution: {integrity: sha512-RMAyvXkKId3C1ryYjcp8aSajTdtFc1+B+HvrehszrCWklj7H7sBJ5ZQFhw0WASDwyF/fzEnR7epb2kDjIKeCHA==} + /@storybook/manager@8.1.11: + resolution: {integrity: sha512-e02y9dmxowo7cTKYm9am7UO6NOHoHy6Xi7xZf/UA932qLwFZUtk5pnwIEFaZWI3OQsRUCGhP+FL5zizU7uVZeg==} dev: true - /@storybook/node-logger@8.1.2: - resolution: {integrity: sha512-qdCzcDKsRiEqy7FeD0p0ZvIMqaXWn+GY0q0VkrGGhSwPJ3cxyIuyA+GA9FkXUMzxVJKgR7Gh9dOlTEaCe5ZjfA==} + /@storybook/node-logger@8.1.11: + resolution: {integrity: sha512-wdzFo7B2naGhS52L3n1qBkt5BfvQjs8uax6B741yKRpiGgeAN8nz8+qelkD25MbSukxvbPgDot7WJvsMU/iCzg==} dev: true - /@storybook/preview-api@8.1.2: - resolution: {integrity: sha512-94xFDtyz8l2TdyHQiew2RZ8YLkHAgD/qGgosrLUTX9w+Pe0stU+SyiyinMVof/cac8lPzQoK60fwTABHkv8Gpg==} + /@storybook/preview-api@8.1.11: + resolution: {integrity: sha512-8ZChmFV56GKppCJ0hnBd/kNTfGn2gWVq1242kuet13pbJtBpvOhyq4W01e/Yo14tAPXvgz8dSnMvWLbJx4QfhQ==} dependencies: - '@storybook/channels': 8.1.2 - '@storybook/client-logger': 8.1.2 - '@storybook/core-events': 8.1.2 + '@storybook/channels': 8.1.11 + '@storybook/client-logger': 8.1.11 + '@storybook/core-events': 8.1.11 '@storybook/csf': 0.1.7 '@storybook/global': 5.0.0 - '@storybook/types': 8.1.2 + '@storybook/types': 8.1.11 '@types/qs': 6.9.14 dequal: 2.0.3 lodash: 4.17.21 @@ -8227,12 +8314,12 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/preview@8.1.2: - resolution: {integrity: sha512-8VjDPF2sTU7iYigISV47ug90LI1u9PLCMY71hWqHAyrAMfPd6GIz0bO5scfZ1eOwN7jIgFZVFoSBYq8kmA4iiQ==} + /@storybook/preview@8.1.11: + resolution: {integrity: sha512-K/9NZmjnL0D1BROkTNWNoPqgL2UaocALRSqCARmkBLgU2Rn/FuZgEclHkWlYo6pUrmLNK+bZ+XzpNMu12iTbpg==} dev: true - /@storybook/react-dom-shim@8.1.2(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-Djcq9MBYfefwGdk3k3jmZrLxSRM0y0RQQ0M5c8zMkM6Hbqo0MKd/UXnAKoQ8TadNnNUNaVpkanRv7KWlF0FFUQ==} + /@storybook/react-dom-shim@8.1.11(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-KVDSuipqkFjpGfldoRM5xR/N1/RNmbr+sVXqMmelr0zV2jGnexEZnoa7wRHk7IuXuivLWe8BxMxzvQWqjIa4GA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta @@ -8241,20 +8328,20 @@ packages: react-dom: 18.3.1(react@18.3.1) dev: true - /@storybook/react-vite@8.1.2(prettier@3.2.5)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5)(vite@5.2.11): - resolution: {integrity: sha512-6OSy5hsdswdFZkSz1MiFiwqFGDCvDJC8iRGLJ6fMfQFN4rN1+awwHcTM3PrVkgiFVr4SSCD761XL4w3m6JdmxA==} + /@storybook/react-vite@8.1.11(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3)(vite@5.3.2): + resolution: {integrity: sha512-QqkE6QKsIDthXtps9+YSBQ39O4VvU7Uu3y6WSA3IPgKTtGnmIvhwXtapjf7WQ2cNb5KY1JksFxHXbDe0i5IL4g==} engines: {node: '>=18.0.0'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta vite: ^4.0.0 || ^5.0.0 dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.1(typescript@5.4.5)(vite@5.2.11) - '@rollup/pluginutils': 5.1.0(rollup@4.17.2) - '@storybook/builder-vite': 8.1.2(prettier@3.2.5)(typescript@5.4.5)(vite@5.2.11) - '@storybook/node-logger': 8.1.2 - '@storybook/react': 8.1.2(prettier@3.2.5)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5) - '@storybook/types': 8.1.2 + '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.1(typescript@5.5.3)(vite@5.3.2) + '@rollup/pluginutils': 5.1.0(rollup@4.18.0) + '@storybook/builder-vite': 8.1.11(prettier@3.3.2)(typescript@5.5.3)(vite@5.3.2) + '@storybook/node-logger': 8.1.11 + '@storybook/react': 8.1.11(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@storybook/types': 8.1.11 find-up: 5.0.0 magic-string: 0.30.8 react: 18.3.1 @@ -8262,7 +8349,7 @@ packages: react-dom: 18.3.1(react@18.3.1) resolve: 1.22.8 tsconfig-paths: 4.2.0 - vite: 5.2.11(@types/node@18.11.19) + vite: 5.3.2(@types/node@18.11.19) transitivePeerDependencies: - '@preact/preset-vite' - encoding @@ -8273,8 +8360,8 @@ packages: - vite-plugin-glimmerx dev: true - /@storybook/react@8.1.2(prettier@3.2.5)(react-dom@18.3.1)(react@18.3.1)(typescript@5.4.5): - resolution: {integrity: sha512-Gg/dm3GT0wsK+4TdNsbu6CLsPShfkTujlDEKRBxeGMsLsQOwIayZp67fYjSj3OE6EachMAQToNgtDweIMMXhEg==} + /@storybook/react@8.1.11(prettier@3.3.2)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3): + resolution: {integrity: sha512-t+EYXOkgwg3ropLGS9y8gGvX5/Okffu/6JYL3YWksrBGAZSqVV4NkxCnVJZepS717SyhR0tN741gv/SxxFPJMg==} engines: {node: '>=18.0.0'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta @@ -8284,12 +8371,12 @@ packages: typescript: optional: true dependencies: - '@storybook/client-logger': 8.1.2 - '@storybook/docs-tools': 8.1.2(prettier@3.2.5) + '@storybook/client-logger': 8.1.11 + '@storybook/docs-tools': 8.1.11(prettier@3.3.2) '@storybook/global': 5.0.0 - '@storybook/preview-api': 8.1.2 - '@storybook/react-dom-shim': 8.1.2(react-dom@18.3.1)(react@18.3.1) - '@storybook/types': 8.1.2 + '@storybook/preview-api': 8.1.11 + '@storybook/react-dom-shim': 8.1.11(react-dom@18.3.1)(react@18.3.1) + '@storybook/types': 8.1.11 '@types/escodegen': 0.0.6 '@types/estree': 0.0.51 '@types/node': 18.11.19 @@ -8306,7 +8393,7 @@ packages: semver: 7.6.2 ts-dedent: 2.2.0 type-fest: 2.19.0 - typescript: 5.4.5 + typescript: 5.5.3 util-deprecate: 1.0.2 transitivePeerDependencies: - encoding @@ -8314,20 +8401,20 @@ packages: - supports-color dev: true - /@storybook/router@8.1.2: - resolution: {integrity: sha512-Lu05lDqoIinda1z43Danxhaq9t8k5jSKHJZXEIDsiLPUkGQCW3syzSE03c7qzOAbN/gmd/cu9MkmvGW+HBnWSA==} + /@storybook/router@8.1.11: + resolution: {integrity: sha512-nU5lsBvy0L8wBYOkjagh29ztZicDATpZNYrHuavlhQ2jznmmHdJvXKYk+VrMAbthjQ6ZBqfeeMNPR1UlnqR5Rw==} dependencies: - '@storybook/client-logger': 8.1.2 + '@storybook/client-logger': 8.1.11 memoizerific: 1.11.3 qs: 6.12.0 dev: true - /@storybook/telemetry@8.1.2(prettier@3.2.5): - resolution: {integrity: sha512-FoJUDtRPNM5pTvnbQOPTGBIsmW2r/XC//DtHj84B8g7V+Ww+TToMrQWWgPTQwD1epL+ihtxbAV47EUlSB9mMDw==} + /@storybook/telemetry@8.1.11(prettier@3.3.2): + resolution: {integrity: sha512-Jqvm7HcZismKzPuebhyLECO6KjGiSk4ycbca1WUM/TUvifxCXqgoUPlHHQEEfaRdHS63/MSqtMNjLsQRLC/vNQ==} dependencies: - '@storybook/client-logger': 8.1.2 - '@storybook/core-common': 8.1.2(prettier@3.2.5) - '@storybook/csf-tools': 8.1.2 + '@storybook/client-logger': 8.1.11 + '@storybook/core-common': 8.1.11(prettier@3.3.2) + '@storybook/csf-tools': 8.1.11 chalk: 4.1.2 detect-package-manager: 2.0.1 fetch-retry: 5.0.6 @@ -8339,17 +8426,17 @@ packages: - supports-color dev: true - /@storybook/test@8.1.2(vitest@1.6.0): - resolution: {integrity: sha512-wSsO7VSF9dM4NdiOu7EMQd326HpmkKzCarpIHm+FsxRemYfB6wCjbNRIrXe81PLSfyzFte8/ZvMPo0LeMefwHA==} + /@storybook/test@8.1.11(vitest@1.6.0): + resolution: {integrity: sha512-k+V3HemF2/I8fkRxRqM8uH8ULrpBSAAdBOtWSHWLvHguVcb2YA4g4kKo6tXBB9256QfyDW4ZiaAj0/9TMxmJPQ==} dependencies: - '@storybook/client-logger': 8.1.2 - '@storybook/core-events': 8.1.2 - '@storybook/instrumenter': 8.1.2 - '@storybook/preview-api': 8.1.2 - '@testing-library/dom': 9.3.4 + '@storybook/client-logger': 8.1.11 + '@storybook/core-events': 8.1.11 + '@storybook/instrumenter': 8.1.11 + '@storybook/preview-api': 8.1.11 + '@testing-library/dom': 10.1.0 '@testing-library/jest-dom': 6.4.5(vitest@1.6.0) - '@testing-library/user-event': 14.5.2(@testing-library/dom@9.3.4) - '@vitest/expect': 1.3.1 + '@testing-library/user-event': 14.5.2(@testing-library/dom@10.1.0) + '@vitest/expect': 1.6.0 '@vitest/spy': 1.6.0 util: 0.12.5 transitivePeerDependencies: @@ -8360,8 +8447,8 @@ packages: - vitest dev: true - /@storybook/theming@8.1.2(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-4ayCoSluaReGfj+wDa/KKwX5mEReVsjDhQ3nCusKsPQJK5zgT4Vt4CZekU7IK0cYmRPF4nMgVH3m3jmMD4x4ng==} + /@storybook/theming@8.1.11(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-Chn/opjO6Rl1isNobutYqAH2PjKNkj09YBw/8noomk6gElSa3JbUTyaG/+JCHA6OG/9kUsqoKDb5cZmAKNq/jA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta @@ -8372,118 +8459,118 @@ packages: optional: true dependencies: '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.3.1) - '@storybook/client-logger': 8.1.2 + '@storybook/client-logger': 8.1.11 '@storybook/global': 5.0.0 memoizerific: 1.11.3 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: true - /@storybook/types@8.1.2: - resolution: {integrity: sha512-8P3rB/6UxHlui0/Gdh2/qQvyLy6efJxVUt0g7iANQorqdYMxRNS/OtxNjI8rxFB3sIvl4owG7iYh3j2RCCEqaQ==} + /@storybook/types@8.1.11: + resolution: {integrity: sha512-k9N5iRuY2+t7lVRL6xeu6diNsxO3YI3lS4Juv3RZ2K4QsE/b3yG5ElfJB8DjHDSHwRH4ORyrU71KkOCUVfvtnw==} dependencies: - '@storybook/channels': 8.1.2 + '@storybook/channels': 8.1.11 '@types/express': 4.17.21 file-system-cache: 2.3.0 dev: true - /@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.24.5): + /@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.24.7): resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 dev: false - /@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.24.5): + /@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.24.7): resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 dev: false - /@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.24.5): + /@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.24.7): resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 dev: false - /@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.24.5): + /@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.24.7): resolution: {integrity: sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 dev: false - /@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.24.5): + /@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.24.7): resolution: {integrity: sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 dev: false - /@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.24.5): + /@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.24.7): resolution: {integrity: sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 dev: false - /@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.24.5): + /@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.24.7): resolution: {integrity: sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 dev: false - /@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.24.5): + /@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.24.7): resolution: {integrity: sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==} engines: {node: '>=12'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 dev: false - /@svgr/babel-preset@8.1.0(@babel/core@7.24.5): + /@svgr/babel-preset@8.1.0(@babel/core@7.24.7): resolution: {integrity: sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.24.5) - '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.24.5) - '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.24.5) - '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.24.5) - '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.24.5) - '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.24.5) - '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.24.5) - '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.24.5) + '@babel/core': 7.24.7 + '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.24.7) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.24.7) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.24.7) + '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.24.7) + '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.24.7) + '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.24.7) + '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.24.7) + '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.24.7) dev: false - /@svgr/core@8.1.0(typescript@5.4.5): + /@svgr/core@8.1.0(typescript@5.5.3): resolution: {integrity: sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==} engines: {node: '>=14'} dependencies: - '@babel/core': 7.24.5 - '@svgr/babel-preset': 8.1.0(@babel/core@7.24.5) + '@babel/core': 7.24.7 + '@svgr/babel-preset': 8.1.0(@babel/core@7.24.7) camelcase: 6.3.0 - cosmiconfig: 8.3.6(typescript@5.4.5) + cosmiconfig: 8.3.6(typescript@5.5.3) snake-case: 3.0.4 transitivePeerDependencies: - supports-color @@ -8504,149 +8591,149 @@ packages: peerDependencies: '@svgr/core': '*' dependencies: - '@babel/core': 7.24.5 - '@svgr/babel-preset': 8.1.0(@babel/core@7.24.5) - '@svgr/core': 8.1.0(typescript@5.4.5) + '@babel/core': 7.24.7 + '@svgr/babel-preset': 8.1.0(@babel/core@7.24.7) + '@svgr/core': 8.1.0(typescript@5.5.3) '@svgr/hast-util-to-babel-ast': 8.0.0 svg-parser: 2.0.4 transitivePeerDependencies: - supports-color dev: false - /@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0)(typescript@5.4.5): + /@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0)(typescript@5.5.3): resolution: {integrity: sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==} engines: {node: '>=14'} peerDependencies: '@svgr/core': '*' dependencies: - '@svgr/core': 8.1.0(typescript@5.4.5) - cosmiconfig: 8.3.6(typescript@5.4.5) + '@svgr/core': 8.1.0(typescript@5.5.3) + cosmiconfig: 8.3.6(typescript@5.5.3) deepmerge: 4.3.1 svgo: 3.3.2 transitivePeerDependencies: - typescript dev: false - /@svgr/webpack@8.1.0(typescript@5.4.5): + /@svgr/webpack@8.1.0(typescript@5.5.3): resolution: {integrity: sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==} engines: {node: '>=14'} dependencies: - '@babel/core': 7.24.5 - '@babel/plugin-transform-react-constant-elements': 7.24.1(@babel/core@7.24.5) - '@babel/preset-env': 7.24.3(@babel/core@7.24.5) - '@babel/preset-react': 7.24.1(@babel/core@7.24.5) - '@babel/preset-typescript': 7.24.1(@babel/core@7.24.5) - '@svgr/core': 8.1.0(typescript@5.4.5) + '@babel/core': 7.24.7 + '@babel/plugin-transform-react-constant-elements': 7.24.1(@babel/core@7.24.7) + '@babel/preset-env': 7.24.5(@babel/core@7.24.7) + '@babel/preset-react': 7.24.1(@babel/core@7.24.7) + '@babel/preset-typescript': 7.24.1(@babel/core@7.24.7) + '@svgr/core': 8.1.0(typescript@5.5.3) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0) - '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0)(typescript@5.4.5) + '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0)(typescript@5.5.3) transitivePeerDependencies: - supports-color - typescript dev: false - /@swc/core-darwin-arm64@1.5.7: - resolution: {integrity: sha512-bZLVHPTpH3h6yhwVl395k0Mtx8v6CGhq5r4KQdAoPbADU974Mauz1b6ViHAJ74O0IVE5vyy7tD3OpkQxL/vMDQ==} + /@swc/core-darwin-arm64@1.6.6: + resolution: {integrity: sha512-5DA8NUGECcbcK1YLKJwNDKqdtTYDVnkfDU1WvQSXq/rU+bjYCLtn5gCe8/yzL7ISXA6rwqPU1RDejhbNt4ARLQ==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /@swc/core-darwin-x64@1.5.7: - resolution: {integrity: sha512-RpUyu2GsviwTc2qVajPL0l8nf2vKj5wzO3WkLSHAHEJbiUZk83NJrZd1RVbEknIMO7+Uyjh54hEh8R26jSByaw==} + /@swc/core-darwin-x64@1.6.6: + resolution: {integrity: sha512-2nbh/RHpweNRsJiYDFk1KcX7UtaKgzzTNUjwtvK5cp0wWrpbXmPvdlWOx3yzwoiSASDFx78242JHHXCIOlEdsw==} engines: {node: '>=10'} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /@swc/core-linux-arm-gnueabihf@1.5.7: - resolution: {integrity: sha512-cTZWTnCXLABOuvWiv6nQQM0hP6ZWEkzdgDvztgHI/+u/MvtzJBN5lBQ2lue/9sSFYLMqzqff5EHKlFtrJCA9dQ==} + /@swc/core-linux-arm-gnueabihf@1.6.6: + resolution: {integrity: sha512-YgytuyUfR7b0z0SRHKV+ylr83HmgnROgeT7xryEkth6JGpAEHooCspQ4RrWTU8+WKJ7aXiZlGXPgybQ4TiS+TA==} engines: {node: '>=10'} cpu: [arm] os: [linux] requiresBuild: true optional: true - /@swc/core-linux-arm64-gnu@1.5.7: - resolution: {integrity: sha512-hoeTJFBiE/IJP30Be7djWF8Q5KVgkbDtjySmvYLg9P94bHg9TJPSQoC72tXx/oXOgXvElDe/GMybru0UxhKx4g==} + /@swc/core-linux-arm64-gnu@1.6.6: + resolution: {integrity: sha512-yGwx9fddzEE0iURqRVwKBQ4IwRHE6hNhl15WliHpi/PcYhzmYkUIpcbRXjr0dssubXAVPVnx6+jZVDSbutvnfg==} engines: {node: '>=10'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@swc/core-linux-arm64-musl@1.5.7: - resolution: {integrity: sha512-+NDhK+IFTiVK1/o7EXdCeF2hEzCiaRSrb9zD7X2Z7inwWlxAntcSuzZW7Y6BRqGQH89KA91qYgwbnjgTQ22PiQ==} + /@swc/core-linux-arm64-musl@1.6.6: + resolution: {integrity: sha512-a6fMbqzSAsS5KCxFJyg1mD5kwN3ZFO8qQLyJ75R/htZP/eCt05jrhmOI7h2n+1HjiG332jLnZ9S8lkVE5O8Nqw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@swc/core-linux-x64-gnu@1.5.7: - resolution: {integrity: sha512-25GXpJmeFxKB+7pbY7YQLhWWjkYlR+kHz5I3j9WRl3Lp4v4UD67OGXwPe+DIcHqcouA1fhLhsgHJWtsaNOMBNg==} + /@swc/core-linux-x64-gnu@1.6.6: + resolution: {integrity: sha512-hRGsUKNzzZle28YF0dYIpN0bt9PceR9LaVBq7x8+l9TAaDLFbgksSxcnU/ubTtsy+WsYSYGn+A83w3xWC0O8CQ==} engines: {node: '>=10'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@swc/core-linux-x64-musl@1.5.7: - resolution: {integrity: sha512-0VN9Y5EAPBESmSPPsCJzplZHV26akC0sIgd3Hc/7S/1GkSMoeuVL+V9vt+F/cCuzr4VidzSkqftdP3qEIsXSpg==} + /@swc/core-linux-x64-musl@1.6.6: + resolution: {integrity: sha512-NokIUtFxJDVv3LzGeEtYMTV3j2dnGKLac59luTeq36DQLZdJQawQIdTbzzWl2jE7lxxTZme+dhsVOH9LxE3ceg==} engines: {node: '>=10'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@swc/core-win32-arm64-msvc@1.5.7: - resolution: {integrity: sha512-RtoNnstBwy5VloNCvmvYNApkTmuCe4sNcoYWpmY7C1+bPR+6SOo8im1G6/FpNem8AR5fcZCmXHWQ+EUmRWJyuA==} + /@swc/core-win32-arm64-msvc@1.6.6: + resolution: {integrity: sha512-lzYdI4qb4k1dFG26yv+9Jaq/bUMAhgs/2JsrLncGjLof86+uj74wKYCQnbzKAsq2hDtS5DqnHnl+//J+miZfGA==} engines: {node: '>=10'} cpu: [arm64] os: [win32] requiresBuild: true optional: true - /@swc/core-win32-ia32-msvc@1.5.7: - resolution: {integrity: sha512-Xm0TfvcmmspvQg1s4+USL3x8D+YPAfX2JHygvxAnCJ0EHun8cm2zvfNBcsTlnwYb0ybFWXXY129aq1wgFC9TpQ==} + /@swc/core-win32-ia32-msvc@1.6.6: + resolution: {integrity: sha512-bvl7FMaXIJQ76WZU0ER4+RyfKIMGb6S2MgRkBhJOOp0i7VFx4WLOnrmMzaeoPJaJSkityVKAftfNh7NBzTIydQ==} engines: {node: '>=10'} cpu: [ia32] os: [win32] requiresBuild: true optional: true - /@swc/core-win32-x64-msvc@1.5.7: - resolution: {integrity: sha512-tp43WfJLCsKLQKBmjmY/0vv1slVywR5Q4qKjF5OIY8QijaEW7/8VwPyUyVoJZEnDgv9jKtUTG5PzqtIYPZGnyg==} + /@swc/core-win32-x64-msvc@1.6.6: + resolution: {integrity: sha512-WAP0JoCTfgeYKgOeYJoJV4ZS0sQUmU3OwvXa2dYYtMLF7zsNqOiW4niU7QlThBHgUv/qNZm2p6ITEgh3w1cltw==} engines: {node: '>=10'} cpu: [x64] os: [win32] requiresBuild: true optional: true - /@swc/core@1.5.7: - resolution: {integrity: sha512-U4qJRBefIJNJDRCCiVtkfa/hpiZ7w0R6kASea+/KLp+vkus3zcLSB8Ub8SvKgTIxjWpwsKcZlPf5nrv4ls46SQ==} + /@swc/core@1.6.6: + resolution: {integrity: sha512-sHfmIUPUXNrQTwFMVCY5V5Ena2GTOeaWjS2GFUpjLhAgVfP90OP67DWow7+cYrfFtqBdILHuWnjkTcd0+uPKlg==} engines: {node: '>=10'} requiresBuild: true peerDependencies: - '@swc/helpers': ^0.5.0 + '@swc/helpers': '*' peerDependenciesMeta: '@swc/helpers': optional: true dependencies: '@swc/counter': 0.1.3 - '@swc/types': 0.1.7 + '@swc/types': 0.1.9 optionalDependencies: - '@swc/core-darwin-arm64': 1.5.7 - '@swc/core-darwin-x64': 1.5.7 - '@swc/core-linux-arm-gnueabihf': 1.5.7 - '@swc/core-linux-arm64-gnu': 1.5.7 - '@swc/core-linux-arm64-musl': 1.5.7 - '@swc/core-linux-x64-gnu': 1.5.7 - '@swc/core-linux-x64-musl': 1.5.7 - '@swc/core-win32-arm64-msvc': 1.5.7 - '@swc/core-win32-ia32-msvc': 1.5.7 - '@swc/core-win32-x64-msvc': 1.5.7 + '@swc/core-darwin-arm64': 1.6.6 + '@swc/core-darwin-x64': 1.6.6 + '@swc/core-linux-arm-gnueabihf': 1.6.6 + '@swc/core-linux-arm64-gnu': 1.6.6 + '@swc/core-linux-arm64-musl': 1.6.6 + '@swc/core-linux-x64-gnu': 1.6.6 + '@swc/core-linux-x64-musl': 1.6.6 + '@swc/core-win32-arm64-msvc': 1.6.6 + '@swc/core-win32-ia32-msvc': 1.6.6 + '@swc/core-win32-x64-msvc': 1.6.6 /@swc/counter@0.1.3: resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} @@ -8657,8 +8744,8 @@ packages: tslib: 2.6.2 dev: false - /@swc/types@0.1.7: - resolution: {integrity: sha512-scHWahbHF0eyj3JsxG9CFJgFdFNaVQCNAimBlT6PzS3n/HptxqREjsm4OH6AN3lYcffZYSPxXW8ua2BEHp0lJQ==} + /@swc/types@0.1.9: + resolution: {integrity: sha512-qKnCno++jzcJ4lM4NTfYifm1EFSCeIfKiAHAfkENZAV5Kl9PjJIyd2yeeVv6c/2CckuLyv2NmRC5pv6pm2WQBg==} dependencies: '@swc/counter': 0.1.3 @@ -8669,14 +8756,14 @@ packages: defer-to-connect: 2.0.1 dev: false - /@testing-library/dom@9.3.4: - resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} - engines: {node: '>=14'} + /@testing-library/dom@10.1.0: + resolution: {integrity: sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA==} + engines: {node: '>=18'} dependencies: - '@babel/code-frame': 7.24.2 + '@babel/code-frame': 7.24.7 '@babel/runtime': 7.24.1 '@types/aria-query': 5.0.4 - aria-query: 5.1.3 + aria-query: 5.3.0 chalk: 4.1.2 dom-accessibility-api: 0.5.16 lz-string: 1.5.0 @@ -8712,16 +8799,16 @@ packages: dom-accessibility-api: 0.6.3 lodash: 4.17.21 redent: 3.0.0 - vitest: 1.6.0(@types/node@18.11.19)(@vitest/ui@1.6.0)(happy-dom@14.11.0) + vitest: 1.6.0(@types/node@18.11.19)(@vitest/ui@1.6.0)(happy-dom@14.12.3) dev: true - /@testing-library/user-event@14.5.2(@testing-library/dom@9.3.4): + /@testing-library/user-event@14.5.2(@testing-library/dom@10.1.0): resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} engines: {node: '>=12', npm: '>=6'} peerDependencies: '@testing-library/dom': '>=7.21.4' dependencies: - '@testing-library/dom': 9.3.4 + '@testing-library/dom': 10.1.0 dev: true /@tootallnate/once@2.0.0: @@ -9010,8 +9097,8 @@ packages: /@types/mdx@2.0.12: resolution: {integrity: sha512-H9VZ9YqE+H28FQVchC83RCs5xQ2J7mAAv6qdDEaWmXEVl3OpdH+xfrSUzQ1lp7U7oSTRZ0RvW08ASPJsYBi7Cw==} - /@types/micromatch@4.0.7: - resolution: {integrity: sha512-C/FMQ8HJAZhTsDpl4wDKZdMeeW5USjgzOczUwTGbRc1ZopPgOhIEnxY2ZgUrsuyy4DwK1JVOJZKFakv3TbCKiA==} + /@types/micromatch@4.0.9: + resolution: {integrity: sha512-7V+8ncr22h4UoYRLnLXSpTxjQrNUXtWHGeMPRJt1nULXI57G9bIcpyrHlmrQ7QK24EyyuXvYcSSWAM8GA9nqCg==} dependencies: '@types/braces': 3.0.4 dev: true @@ -9033,13 +9120,6 @@ packages: resolution: {integrity: sha512-PLwiVvTBg59tGFL/8VpcGvqOu3L4OuveNvPi0EYbWchRdEVP++yRUXJPFl+CApKEq13017/4Nf7aQ5lTtHUNsA==} dev: true - /@types/node-fetch@2.6.11: - resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} - dependencies: - '@types/node': 18.11.19 - form-data: 4.0.0 - dev: false - /@types/node-forge@1.3.11: resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} dependencies: @@ -9095,30 +9175,30 @@ packages: /@types/react-dom@18.3.0: resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} dependencies: - '@types/react': 18.3.2 + '@types/react': 18.3.3 /@types/react-router-config@5.0.11: resolution: {integrity: sha512-WmSAg7WgqW7m4x8Mt4N6ZyKz0BubSj/2tVUMsAHp+Yd2AMwcSbeFq9WympT19p5heCFmF97R9eD5uUR/t4HEqw==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-router': 5.1.20 /@types/react-router-dom@5.3.3: resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-router': 5.1.20 /@types/react-router@5.1.20: resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.3.2 + '@types/react': 18.3.3 - /@types/react@18.3.2: - resolution: {integrity: sha512-Btgg89dAnqD4vV7R3hlwOxgqobUQKgx3MmrQRi0yYbs/P0ym8XozIAlkqVilPqHQwXs4e9Tf63rrCgl58BcO4w==} + /@types/react@18.3.3: + resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} dependencies: '@types/prop-types': 15.7.12 csstype: 3.1.3 @@ -9170,20 +9250,14 @@ packages: dependencies: '@types/node': 18.11.19 - /@types/swagger-ui-dist@3.30.4: - resolution: {integrity: sha512-FeOBc7uj4/lAIh4jkBzorvmNoUU9JgSccyDIRo0E9MJw9KQfSxlwpHCyKGnU9kfV5N5dEdfpY8wm7to3nSwTmA==} + /@types/swagger-ui-dist@3.30.5: + resolution: {integrity: sha512-SrXhD9L8qeIxJzN+o1kmf3wXeVf/+Km3jIdRM1+Yq3I5b/dlF5TcGr5WCVM7I/cBYpgf43/gCPIucQ13AhICiw==} dev: true /@types/swagger-ui@3.52.4: resolution: {integrity: sha512-7NV7q8BfupqdQxr26OkM0g0YEPB9uXnKGzXadgcearvI9MoCHt3F72lPTX3fZZIlrr21DC0IK26wcDMZ37oFDA==} dev: true - /@types/tunnel@0.0.3: - resolution: {integrity: sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA==} - dependencies: - '@types/node': 18.11.19 - dev: false - /@types/unist@2.0.10: resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} @@ -9194,8 +9268,8 @@ packages: resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} dev: true - /@types/vscode@1.89.0: - resolution: {integrity: sha512-TMfGKLSVxfGfoO8JfIE/neZqv7QLwS4nwPwL/NwMvxtAY2230H2I4Z5xx6836pmJvMAzqooRQ4pmLm7RUicP3A==} + /@types/vscode@1.90.0: + resolution: {integrity: sha512-oT+ZJL7qHS9Z8bs0+WKf/kQ27qWYR3trsXpq46YDjFqBsMLG4ygGGjPaJ2tyrH0wJzjOEmDyg9PDJBBhWg9pkQ==} dev: true /@types/ws@8.5.10: @@ -9212,8 +9286,8 @@ packages: dependencies: '@types/yargs-parser': 21.0.3 - /@typescript-eslint/eslint-plugin@7.9.0(@typescript-eslint/parser@7.9.0)(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-6e+X0X3sFe/G/54aC3jt0txuMTURqLyekmEHViqyA2VnxhLMpvA6nqmcjIy+Cr9tLDHPssA74BP5Mx9HQIxBEA==} + /@typescript-eslint/eslint-plugin@7.15.0(@typescript-eslint/parser@7.15.0)(eslint@8.57.0)(typescript@5.5.3): + resolution: {integrity: sha512-uiNHpyjZtFrLwLDpHnzaDlP3Tt6sGMqTCiqmxaN4n4RP0EfYZDODJyddiFDF44Hjwxr5xAcaYxVKm9QKQFJFLA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 @@ -9224,23 +9298,23 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.9.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 7.9.0 - '@typescript-eslint/type-utils': 7.9.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.9.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.9.0 + '@typescript-eslint/parser': 7.15.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/scope-manager': 7.15.0 + '@typescript-eslint/type-utils': 7.15.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/utils': 7.15.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/visitor-keys': 7.15.0 eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.4.5) - typescript: 5.4.5 + ts-api-utils: 1.3.0(typescript@5.5.3) + typescript: 5.5.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@7.9.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-qHMJfkL5qvgQB2aLvhUSXxbK7OLnDkwPzFalg458pxQgfxKDfT1ZDbHQM/I6mDIf/svlMkj21kzKuQ2ixJlatQ==} + /@typescript-eslint/parser@7.15.0(eslint@8.57.0)(typescript@5.5.3): + resolution: {integrity: sha512-k9fYuQNnypLFcqORNClRykkGOMOj+pV6V91R4GO/l1FDGwpqmSwoOQrOHo3cGaH63e+D3ZiCAOsuS/D2c99j/A==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -9249,29 +9323,30 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 7.9.0 - '@typescript-eslint/types': 7.9.0 - '@typescript-eslint/typescript-estree': 7.9.0(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.9.0 + '@typescript-eslint/scope-manager': 7.15.0 + '@typescript-eslint/types': 7.15.0 + '@typescript-eslint/typescript-estree': 7.15.0(typescript@5.5.3) + '@typescript-eslint/visitor-keys': 7.15.0 debug: 4.3.4 eslint: 8.57.0 - typescript: 5.4.5 + typescript: 5.5.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/rule-tester@7.9.0(@eslint/eslintrc@3.1.0)(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-Oz5IB1kCUToVS0Nvkpgx5Vb89J+7iSsBAWKvfxQFWmcYpiqdStO6eRI2cAuRNrqo6uGh2sNsAji9hcv/KrHwMQ==} + /@typescript-eslint/rule-tester@7.15.0(@eslint/eslintrc@3.1.0)(eslint@8.57.0)(typescript@5.5.3): + resolution: {integrity: sha512-QyBNG3gTpUJKb+Kx0hMbfZk9K7a3VnWEcWygZyKbw6ihTt/pf7c7AaR7JNbdnrFYc0q3JOgCXdKq8JM4RsAeaA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: '@eslint/eslintrc': '>=2' eslint: ^8.56.0 dependencies: '@eslint/eslintrc': 3.1.0 - '@typescript-eslint/typescript-estree': 7.9.0(typescript@5.4.5) - '@typescript-eslint/utils': 7.9.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 7.15.0(typescript@5.5.3) + '@typescript-eslint/utils': 7.15.0(eslint@8.57.0)(typescript@5.5.3) ajv: 6.12.6 eslint: 8.57.0 + json-stable-stringify-without-jsonify: 1.0.1 lodash.merge: 4.6.2 semver: 7.6.2 transitivePeerDependencies: @@ -9279,23 +9354,15 @@ packages: - typescript dev: true - /@typescript-eslint/scope-manager@6.21.0: - resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} - engines: {node: ^16.0.0 || >=18.0.0} - dependencies: - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/visitor-keys': 6.21.0 - dev: true - - /@typescript-eslint/scope-manager@7.9.0: - resolution: {integrity: sha512-ZwPK4DeCDxr3GJltRz5iZejPFAAr4Wk3+2WIBaj1L5PYK5RgxExu/Y68FFVclN0y6GGwH8q+KgKRCvaTmFBbgQ==} + /@typescript-eslint/scope-manager@7.15.0: + resolution: {integrity: sha512-Q/1yrF/XbxOTvttNVPihxh1b9fxamjEoz2Os/Pe38OHwxC24CyCqXxGTOdpb4lt6HYtqw9HetA/Rf6gDGaMPlw==} engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 7.9.0 - '@typescript-eslint/visitor-keys': 7.9.0 + '@typescript-eslint/types': 7.15.0 + '@typescript-eslint/visitor-keys': 7.15.0 - /@typescript-eslint/type-utils@7.9.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-6Qy8dfut0PFrFRAZsGzuLoM4hre4gjzWJB6sUvdunCYZsYemTkzZNwF1rnGea326PHPT3zn5Lmg32M/xfJfByA==} + /@typescript-eslint/type-utils@7.15.0(eslint@8.57.0)(typescript@5.5.3): + resolution: {integrity: sha512-SkgriaeV6PDvpA6253PDVep0qCqgbO1IOBiycjnXsszNTVQe5flN5wR5jiczoEoDEnAqYFSFFc9al9BSGVltkg==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -9304,49 +9371,22 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 7.9.0(typescript@5.4.5) - '@typescript-eslint/utils': 7.9.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 7.15.0(typescript@5.5.3) + '@typescript-eslint/utils': 7.15.0(eslint@8.57.0)(typescript@5.5.3) debug: 4.3.4 eslint: 8.57.0 - ts-api-utils: 1.3.0(typescript@5.4.5) - typescript: 5.4.5 + ts-api-utils: 1.3.0(typescript@5.5.3) + typescript: 5.5.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@6.21.0: - resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} - engines: {node: ^16.0.0 || >=18.0.0} - dev: true - - /@typescript-eslint/types@7.9.0: - resolution: {integrity: sha512-oZQD9HEWQanl9UfsbGVcZ2cGaR0YT5476xfWE0oE5kQa2sNK2frxOlkeacLOTh9po4AlUT5rtkGyYM5kew0z5w==} + /@typescript-eslint/types@7.15.0: + resolution: {integrity: sha512-aV1+B1+ySXbQH0pLK0rx66I3IkiZNidYobyfn0WFsdGhSXw+P3YOqeTq5GED458SfB24tg+ux3S+9g118hjlTw==} engines: {node: ^18.18.0 || >=20.0.0} - /@typescript-eslint/typescript-estree@6.21.0(typescript@5.4.5): - resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.3 - semver: 7.6.2 - ts-api-utils: 1.3.0(typescript@5.4.5) - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/typescript-estree@7.9.0(typescript@5.4.5): - resolution: {integrity: sha512-zBCMCkrb2YjpKV3LA0ZJubtKCDxLttxfdGmwZvTqqWevUPN0FZvSI26FalGFFUZU/9YQK/A4xcQF9o/VVaCKAg==} + /@typescript-eslint/typescript-estree@7.15.0(typescript@5.5.3): + resolution: {integrity: sha512-gjyB/rHAopL/XxfmYThQbXbzRMGhZzGw6KpcMbfe8Q3nNQKStpxnUKeXb0KiN/fFDR42Z43szs6rY7eHk0zdGQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' @@ -9354,82 +9394,55 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 7.9.0 - '@typescript-eslint/visitor-keys': 7.9.0 + '@typescript-eslint/types': 7.15.0 + '@typescript-eslint/visitor-keys': 7.15.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.4 semver: 7.6.2 - ts-api-utils: 1.3.0(typescript@5.4.5) - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - - /@typescript-eslint/utils@6.21.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.8 - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) - eslint: 8.57.0 - semver: 7.6.2 + ts-api-utils: 1.3.0(typescript@5.5.3) + typescript: 5.5.3 transitivePeerDependencies: - supports-color - - typescript - dev: true - /@typescript-eslint/utils@7.9.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-5KVRQCzZajmT4Ep+NEgjXCvjuypVvYHUW7RHlXzNPuak2oWpVoD1jf5xCP0dPAuNIchjC7uQyvbdaSTFaLqSdA==} + /@typescript-eslint/utils@7.15.0(eslint@8.57.0)(typescript@5.5.3): + resolution: {integrity: sha512-hfDMDqaqOqsUVGiEPSMLR/AjTSCsmJwjpKkYQRo1FNbmW4tBwBspYDwO9eh7sKSTwMQgBw9/T4DHudPaqshRWA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@typescript-eslint/scope-manager': 7.9.0 - '@typescript-eslint/types': 7.9.0 - '@typescript-eslint/typescript-estree': 7.9.0(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.15.0 + '@typescript-eslint/types': 7.15.0 + '@typescript-eslint/typescript-estree': 7.15.0(typescript@5.5.3) eslint: 8.57.0 transitivePeerDependencies: - supports-color - typescript - /@typescript-eslint/visitor-keys@6.21.0: - resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} - engines: {node: ^16.0.0 || >=18.0.0} - dependencies: - '@typescript-eslint/types': 6.21.0 - eslint-visitor-keys: 3.4.3 - dev: true - - /@typescript-eslint/visitor-keys@7.9.0: - resolution: {integrity: sha512-iESPx2TNLDNGQLyjKhUvIKprlP49XNEK+MvIf9nIO7ZZaZdbnfWKHnXAgufpxqfA0YryH8XToi4+CjBgVnFTSQ==} + /@typescript-eslint/visitor-keys@7.15.0: + resolution: {integrity: sha512-Hqgy/ETgpt2L5xueA/zHHIl4fJI2O4XUE9l4+OIfbJIRSnTJb/QscncdqqZzofQegIJugRIF57OJea1khw2SDw==} engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 7.9.0 + '@typescript-eslint/types': 7.15.0 eslint-visitor-keys: 3.4.3 /@ungap/structured-clone@1.2.0: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - /@vitejs/plugin-react@4.2.1(vite@5.2.11): - resolution: {integrity: sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==} + /@vitejs/plugin-react@4.3.1(vite@5.3.2): + resolution: {integrity: sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.2.0 || ^5.0.0 dependencies: - '@babel/core': 7.24.5 - '@babel/plugin-transform-react-jsx-self': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.24.5) + '@babel/core': 7.24.7 + '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.24.7) '@types/babel__core': 7.20.5 - react-refresh: 0.14.0 - vite: 5.2.11(@types/node@18.11.19) + react-refresh: 0.14.2 + vite: 5.3.2(@types/node@18.11.19) transitivePeerDependencies: - supports-color dev: true @@ -9452,19 +9465,11 @@ packages: std-env: 3.7.0 strip-literal: 2.1.0 test-exclude: 6.0.0 - vitest: 1.6.0(@types/node@18.11.19)(@vitest/ui@1.6.0)(happy-dom@14.11.0) + vitest: 1.6.0(@types/node@18.11.19)(@vitest/ui@1.6.0) transitivePeerDependencies: - supports-color dev: true - /@vitest/expect@1.3.1: - resolution: {integrity: sha512-xofQFwIzfdmLLlHa6ag0dPV8YsnKOCP1KdAeVVh34vSjN2dcUiXYCD9htu/9eM7t8Xln4v03U9HLxLpPlsXdZw==} - dependencies: - '@vitest/spy': 1.3.1 - '@vitest/utils': 1.3.1 - chai: 4.4.1 - dev: true - /@vitest/expect@1.6.0: resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} dependencies: @@ -9489,12 +9494,6 @@ packages: pretty-format: 29.7.0 dev: true - /@vitest/spy@1.3.1: - resolution: {integrity: sha512-xAcW+S099ylC9VLU7eZfdT9myV67Nor9w9zhf0mGCYJSO+zM2839tOeROTdikOi/8Qeusffvxb/MyBSOja1Uig==} - dependencies: - tinyspy: 2.2.1 - dev: true - /@vitest/spy@1.6.0: resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} dependencies: @@ -9513,16 +9512,7 @@ packages: pathe: 1.1.2 picocolors: 1.0.1 sirv: 2.0.4 - vitest: 1.6.0(@types/node@18.11.19)(@vitest/ui@1.6.0)(happy-dom@14.11.0) - dev: true - - /@vitest/utils@1.3.1: - resolution: {integrity: sha512-d3Waie/299qqRyHTm2DjADeTaNdNSVsnwHPWrs20JMpjh6eiVq7ggggweO8rc4arhf6rRkWuHKwvxGvejUXZZQ==} - dependencies: - diff-sequences: 29.6.3 - estree-walker: 3.0.3 - loupe: 2.3.7 - pretty-format: 29.7.0 + vitest: 1.6.0(@types/node@18.11.19)(@vitest/ui@1.6.0) dev: true /@vitest/utils@1.6.0: @@ -9540,12 +9530,22 @@ packages: '@volar/source-map': 1.11.1 dev: true + /@volar/language-core@2.3.4: + resolution: {integrity: sha512-wXBhY11qG6pCDAqDnbBRFIDSIwbqkWI7no+lj5+L7IlA7HRIjRP7YQLGzT0LF4lS6eHkMSsclXqy9DwYJasZTQ==} + dependencies: + '@volar/source-map': 2.3.4 + dev: true + /@volar/source-map@1.11.1: resolution: {integrity: sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==} dependencies: muggle-string: 0.3.1 dev: true + /@volar/source-map@2.3.4: + resolution: {integrity: sha512-C+t63nwcblqLIVTYXaVi/+gC8NukDaDIQI72J3R7aXGvtgaVB16c+J8Iz7/VfOy7kjYv7lf5GhBny6ACw9fTGQ==} + dev: true + /@volar/typescript@1.11.1: resolution: {integrity: sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==} dependencies: @@ -9553,12 +9553,108 @@ packages: path-browserify: 1.0.1 dev: true - /@vscode/vsce@2.26.1: - resolution: {integrity: sha512-QOG6Ht7V93nhwcBxPWcG33UK0qDGEoJdg0xtVeaTN27W6PGdMJUJGTPhB/sNHUIFKwvwzv/zMAHvDgMNXbcwlA==} + /@volar/typescript@2.3.4: + resolution: {integrity: sha512-acCvt7dZECyKcvO5geNybmrqOsu9u8n5XP1rfiYsOLYGPxvHRav9BVmEdRyZ3vvY6mNyQ1wLL5Hday4IShe17w==} + dependencies: + '@volar/language-core': 2.3.4 + path-browserify: 1.0.1 + vscode-uri: 3.0.8 + dev: true + + /@vscode/vsce-sign-alpine-arm64@2.0.2: + resolution: {integrity: sha512-E80YvqhtZCLUv3YAf9+tIbbqoinWLCO/B3j03yQPbjT3ZIHCliKZlsy1peNc4XNZ5uIb87Jn0HWx/ZbPXviuAQ==} + cpu: [arm64] + os: [alpine] + requiresBuild: true + dev: true + optional: true + + /@vscode/vsce-sign-alpine-x64@2.0.2: + resolution: {integrity: sha512-n1WC15MSMvTaeJ5KjWCzo0nzjydwxLyoHiMJHu1Ov0VWTZiddasmOQHekA47tFRycnt4FsQrlkSCTdgHppn6bw==} + cpu: [x64] + os: [alpine] + requiresBuild: true + dev: true + optional: true + + /@vscode/vsce-sign-darwin-arm64@2.0.2: + resolution: {integrity: sha512-rz8F4pMcxPj8fjKAJIfkUT8ycG9CjIp888VY/6pq6cuI2qEzQ0+b5p3xb74CJnBbSC0p2eRVoe+WgNCAxCLtzQ==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@vscode/vsce-sign-darwin-x64@2.0.2: + resolution: {integrity: sha512-MCjPrQ5MY/QVoZ6n0D92jcRb7eYvxAujG/AH2yM6lI0BspvJQxp0o9s5oiAM9r32r9tkLpiy5s2icsbwefAQIw==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@vscode/vsce-sign-linux-arm64@2.0.2: + resolution: {integrity: sha512-Ybeu7cA6+/koxszsORXX0OJk9N0GgfHq70Wqi4vv2iJCZvBrOWwcIrxKjvFtwyDgdeQzgPheH5nhLVl5eQy7WA==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@vscode/vsce-sign-linux-arm@2.0.2: + resolution: {integrity: sha512-Fkb5jpbfhZKVw3xwR6t7WYfwKZktVGNXdg1m08uEx1anO0oUPUkoQRsNm4QniL3hmfw0ijg00YA6TrxCRkPVOQ==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@vscode/vsce-sign-linux-x64@2.0.2: + resolution: {integrity: sha512-NsPPFVtLaTlVJKOiTnO8Cl78LZNWy0Q8iAg+LlBiCDEgC12Gt4WXOSs2pmcIjDYzj2kY4NwdeN1mBTaujYZaPg==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@vscode/vsce-sign-win32-arm64@2.0.2: + resolution: {integrity: sha512-wPs848ymZ3Ny+Y1Qlyi7mcT6VSigG89FWQnp2qRYCyMhdJxOpA4lDwxzlpL8fG6xC8GjQjGDkwbkWUcCobvksQ==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@vscode/vsce-sign-win32-x64@2.0.2: + resolution: {integrity: sha512-pAiRN6qSAhDM5SVOIxgx+2xnoVUePHbRNC7OD2aOR3WltTKxxF25OfpK8h8UQ7A0BuRkSgREbB59DBlFk4iAeg==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@vscode/vsce-sign@2.0.4: + resolution: {integrity: sha512-0uL32egStKYfy60IqnynAChMTbL0oqpqk0Ew0YHiIb+fayuGZWADuIPHWUcY1GCnAA+VgchOPDMxnc2R3XGWEA==} + requiresBuild: true + optionalDependencies: + '@vscode/vsce-sign-alpine-arm64': 2.0.2 + '@vscode/vsce-sign-alpine-x64': 2.0.2 + '@vscode/vsce-sign-darwin-arm64': 2.0.2 + '@vscode/vsce-sign-darwin-x64': 2.0.2 + '@vscode/vsce-sign-linux-arm': 2.0.2 + '@vscode/vsce-sign-linux-arm64': 2.0.2 + '@vscode/vsce-sign-linux-x64': 2.0.2 + '@vscode/vsce-sign-win32-arm64': 2.0.2 + '@vscode/vsce-sign-win32-x64': 2.0.2 + dev: true + + /@vscode/vsce@2.29.0: + resolution: {integrity: sha512-63+aEO8SpjE6qKiIh2Cqy/P9zC7+USElGwpEdkyPp89xIBDBr5IqeNS3zkD3mp3wZqbvHIpJsCCNu74WQirYCg==} engines: {node: '>= 16'} hasBin: true dependencies: - '@azure/identity': 4.2.1 + '@azure/identity': 4.3.0 + '@vscode/vsce-sign': 2.0.4 azure-devops-node-api: 12.5.0 chalk: 2.4.2 cheerio: 1.0.0-rc.12 @@ -9604,7 +9700,7 @@ packages: '@vue/shared': 3.4.27 dev: true - /@vue/language-core@1.8.27(typescript@5.4.5): + /@vue/language-core@1.8.27(typescript@5.5.3): resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==} peerDependencies: typescript: '*' @@ -9620,7 +9716,7 @@ packages: minimatch: 9.0.4 muggle-string: 0.3.1 path-browserify: 1.0.1 - typescript: 5.4.5 + typescript: 5.5.3 vue-template-compiler: 2.7.16 dev: true @@ -9872,7 +9968,7 @@ packages: indent-string: 5.0.0 dev: true - /ajv-formats@2.1.1(ajv@8.13.0): + /ajv-formats@2.1.1(ajv@8.16.0): resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: ajv: ^8.0.0 @@ -9880,10 +9976,10 @@ packages: ajv: optional: true dependencies: - ajv: 8.13.0 + ajv: 8.16.0 dev: false - /ajv-formats@3.0.1(ajv@8.13.0): + /ajv-formats@3.0.1(ajv@8.16.0): resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} peerDependencies: ajv: ^8.0.0 @@ -9891,7 +9987,7 @@ packages: ajv: optional: true dependencies: - ajv: 8.13.0 + ajv: 8.16.0 dev: true /ajv-keywords@3.5.2(ajv@6.12.6): @@ -9901,12 +9997,12 @@ packages: dependencies: ajv: 6.12.6 - /ajv-keywords@5.1.0(ajv@8.13.0): + /ajv-keywords@5.1.0(ajv@8.16.0): resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} peerDependencies: ajv: ^8.8.2 dependencies: - ajv: 8.13.0 + ajv: 8.16.0 fast-deep-equal: 3.1.3 dev: false @@ -9918,8 +10014,8 @@ packages: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - /ajv@8.13.0: - resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==} + /ajv@8.16.0: + resolution: {integrity: sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==} dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 @@ -9995,10 +10091,6 @@ packages: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} - /ansi-sequence-parser@1.1.1: - resolution: {integrity: sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==} - dev: true - /ansi-split@1.0.1: resolution: {integrity: sha512-RRxQym4DFtDNmHIkW6aeFVvrXURb11lGAEPXNiryjCe8bK8RsANjzJ0M2aGOkvBYwP4Bl/xZ8ijtr6D3j1x/eg==} dependencies: @@ -10055,12 +10147,6 @@ packages: /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - /aria-query@5.1.3: - resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} - dependencies: - deep-equal: 2.2.3 - dev: true - /aria-query@5.3.0: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} dependencies: @@ -10189,6 +10275,7 @@ packages: /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: true /at-least-node@1.0.0: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} @@ -10232,25 +10319,25 @@ packages: typed-rest-client: 1.8.11 dev: true - /babel-core@7.0.0-bridge.0(@babel/core@7.24.5): + /babel-core@7.0.0-bridge.0(@babel/core@7.24.7): resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 dev: true - /babel-loader@9.1.3(@babel/core@7.24.5)(webpack@5.91.0): + /babel-loader@9.1.3(@babel/core@7.24.7)(webpack@5.91.0): resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==} engines: {node: '>= 14.15.0'} peerDependencies: '@babel/core': ^7.12.0 webpack: '>=5' dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.91.0(@swc/core@1.5.7) + webpack: 5.91.0(@swc/core@1.6.6) dev: false /babel-plugin-dynamic-import-node@2.3.3: @@ -10268,36 +10355,36 @@ packages: resolve: 1.22.8 dev: false - /babel-plugin-polyfill-corejs2@0.4.10(@babel/core@7.24.5): + /babel-plugin-polyfill-corejs2@0.4.10(@babel/core@7.24.7): resolution: {integrity: sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: '@babel/compat-data': 7.24.4 - '@babel/core': 7.24.5 - '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.5) + '@babel/core': 7.24.7 + '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.7) semver: 6.3.1 transitivePeerDependencies: - supports-color - /babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.5): + /babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.7): resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.5) + '@babel/core': 7.24.7 + '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.7) core-js-compat: 3.37.1 transitivePeerDependencies: - supports-color - /babel-plugin-polyfill-regenerator@0.6.1(@babel/core@7.24.5): + /babel-plugin-polyfill-regenerator@0.6.1(@babel/core@7.24.7): resolution: {integrity: sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.5) + '@babel/core': 7.24.7 + '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.7) transitivePeerDependencies: - supports-color @@ -10460,6 +10547,12 @@ packages: dependencies: fill-range: 7.0.1 + /braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.1.1 + /browser-assert@1.2.1: resolution: {integrity: sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==} dev: true @@ -10527,10 +10620,15 @@ packages: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} - /c8@9.1.0: - resolution: {integrity: sha512-mBWcT5iqNir1zIkzSPyI3NCR9EZCVI3WUD+AVO17MVWTSFNyUueXE82qTeampNtTr+ilN/5Ua3j24LgbCKjDVg==} - engines: {node: '>=14.14.0'} + /c8@10.1.2: + resolution: {integrity: sha512-Qr6rj76eSshu5CgRYvktW0uM0CFY0yi4Fd5D0duDXO6sYinyopmftUiJVuzBQxQcwQLor7JWDVRP+dUfCmzgJw==} + engines: {node: '>=18'} hasBin: true + peerDependencies: + monocart-coverage-reports: ^2 + peerDependenciesMeta: + monocart-coverage-reports: + optional: true dependencies: '@bcoe/v8-coverage': 0.2.3 '@istanbuljs/schema': 0.1.3 @@ -10539,7 +10637,7 @@ packages: istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-reports: 3.1.7 - test-exclude: 6.0.0 + test-exclude: 7.0.1 v8-to-istanbul: 9.2.0 yargs: 17.7.2 yargs-parser: 21.1.1 @@ -10931,6 +11029,7 @@ packages: engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 + dev: true /comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} @@ -10963,6 +11062,11 @@ packages: /commander@12.0.0: resolution: {integrity: sha512-MwVNWlYjDTtOjX5PiD7o5pK0UrFU/OYgcJfjjK4RaHZETNtjJqrZa9Y9ds88+A+f+d5lv+561eZ+yCKoS3gbAA==} engines: {node: '>=18'} + dev: true + + /commander@12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -11112,7 +11216,7 @@ packages: normalize-path: 3.0.0 schema-utils: 4.2.0 serialize-javascript: 6.0.2 - webpack: 5.91.0(@swc/core@1.5.7) + webpack: 5.91.0(@swc/core@1.6.6) dev: false /core-js-compat@3.37.1: @@ -11160,7 +11264,7 @@ packages: yaml: 1.10.2 dev: false - /cosmiconfig@8.3.6(typescript@5.4.5): + /cosmiconfig@8.3.6(typescript@5.5.3): resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} peerDependencies: @@ -11173,10 +11277,10 @@ packages: js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 - typescript: 5.4.5 + typescript: 5.5.3 dev: false - /cosmiconfig@9.0.0(typescript@5.4.5): + /cosmiconfig@9.0.0(typescript@5.5.3): resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} engines: {node: '>=14'} peerDependencies: @@ -11189,7 +11293,7 @@ packages: import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 - typescript: 5.4.5 + typescript: 5.5.3 dev: true /create-require@1.1.1: @@ -11221,72 +11325,73 @@ packages: engines: {node: '>=12'} dependencies: type-fest: 1.4.0 - dev: false - /cspell-config-lib@8.8.1: - resolution: {integrity: sha512-NTFfwL7Si1jp+0TINS9miXGdtPtDq95PhSbZKF9jnuBwnsnAURHCGALryLHlkRvj5JZk6dpkDfw4WxqQXdULNw==} + /cspell-config-lib@8.9.1: + resolution: {integrity: sha512-gSXAazmeX+CCpFCsNQQqHRO/nn01kMnCoB0v+7AM0Bip2iDXRl+LmUEJGNcnFaiJG3liaZ8+S5/qCDbza010VQ==} engines: {node: '>=18'} dependencies: - '@cspell/cspell-types': 8.8.1 + '@cspell/cspell-types': 8.9.1 comment-json: 4.2.3 - yaml: 2.4.2 + yaml: 2.4.5 - /cspell-dictionary@8.8.1: - resolution: {integrity: sha512-WJqCLR/icyZc0rphEO6dZZDlSIaWIXd95QjZu3agL7a1LRLjorqhVJty6WZrV4zkOLT6PPB+qcjMxcCCxIlWiw==} + /cspell-dictionary@8.9.1: + resolution: {integrity: sha512-sJy9gApLxJNE+YqWeulCTj3XC/ME4aacOHEl/SZ5bsaxkGx3KzBlzCMG7LfqUjOM8rwfBPsYO7zWPCiJQgxGPg==} engines: {node: '>=18'} dependencies: - '@cspell/cspell-pipe': 8.8.1 - '@cspell/cspell-types': 8.8.1 - cspell-trie-lib: 8.8.1 + '@cspell/cspell-pipe': 8.9.1 + '@cspell/cspell-types': 8.9.1 + cspell-trie-lib: 8.9.1 fast-equals: 5.0.1 gensequence: 7.0.0 - /cspell-gitignore@8.8.1: - resolution: {integrity: sha512-j7wbz/VT/uZ+7oL8xwtxfA05FCv41ZrEKh1aNuMa4BI1xv/VRBmv6thOTz7aq7UcDYPNr8K5VVfBlXT/SvkEvA==} + /cspell-gitignore@8.9.1: + resolution: {integrity: sha512-5RL0mnptiSlF0e+nnJBTlfyN3V/ECsig7jJ0Vw0AImaR7UdFmfxbeQmiZmealapcjhBJ7hnn9ILtemID4y4wxg==} engines: {node: '>=18'} hasBin: true dependencies: - cspell-glob: 8.8.1 + cspell-glob: 8.9.1 find-up-simple: 1.0.0 - /cspell-glob@8.8.1: - resolution: {integrity: sha512-x2rS6gJzaF3KZB6FuNkuS3Kb3ynYns0zfC0uG/QJb9V/xc0DmAjQGQhiLIDx6XmvvDvowKmyQ/kBjY/K4VjCvQ==} + /cspell-glob@8.9.1: + resolution: {integrity: sha512-b60WfczgG3NgGp5pyS4NfwSu7FEF7AmkP1btJqj17UAWsm/idUdGdOgaZazZuPgQJbcQvOlpBQP0+SEi8Jo3QA==} engines: {node: '>=18'} dependencies: - micromatch: 4.0.5 + micromatch: 4.0.7 - /cspell-grammar@8.8.1: - resolution: {integrity: sha512-YTyrutwIkiPH9t255l+BQtneGAkgE3uZXmnRHeIi6X+qdmnf61i8XYaSaO66VKQJX6VPZG18hBVMSUPZmYtoSw==} + /cspell-grammar@8.9.1: + resolution: {integrity: sha512-BqaDp3Z+baLZyb3A5h/zWESsO7e8vUaOlrDt1RRVEnpboIUnj7iNkcFmDp3s9PTpBCURlgHHs8SR/+c49aKDGg==} engines: {node: '>=18'} hasBin: true dependencies: - '@cspell/cspell-pipe': 8.8.1 - '@cspell/cspell-types': 8.8.1 + '@cspell/cspell-pipe': 8.9.1 + '@cspell/cspell-types': 8.9.1 - /cspell-io@8.8.1: - resolution: {integrity: sha512-qwKEV2kfwT9gbq6EpYt6gcEs0oe0sDPG1YJunt8niuX4YoBe7/9ZHBfUyqNOEA+sBmvI/tjY/Wy6g9mmSRaOYA==} + /cspell-io@8.9.1: + resolution: {integrity: sha512-O2F79Rzj28Mvmj4AQLkDWOXWaLnvkJhxPm/Yb3viKlbhwmL5BWUi0APbWA3dtyF+ImX1W27YrNFyvT/PGNZ5Dw==} engines: {node: '>=18'} dependencies: - '@cspell/cspell-service-bus': 8.8.1 + '@cspell/cspell-service-bus': 8.9.1 + '@cspell/url': 8.9.1 - /cspell-lib@8.8.1: - resolution: {integrity: sha512-xntkgDGwDtUehM+fZudp4GbB87a2tY29G6ZqDF7WBcQsg3eyDVK/nc9KzbIfCvdWUCrsB9p+SGBoOmjYTwcocg==} + /cspell-lib@8.9.1: + resolution: {integrity: sha512-xrtoXvSjkMcwE1yUcyjiqLFPZiK0CNQjOKKS9PQaaK7ZBoERPQ7grz05uFCYdboSXt0FhlP8tC9E5oEt+xtGCA==} engines: {node: '>=18'} dependencies: - '@cspell/cspell-bundled-dicts': 8.8.1 - '@cspell/cspell-pipe': 8.8.1 - '@cspell/cspell-resolver': 8.8.1 - '@cspell/cspell-types': 8.8.1 - '@cspell/dynamic-import': 8.8.1 - '@cspell/strong-weak-map': 8.8.1 + '@cspell/cspell-bundled-dicts': 8.9.1 + '@cspell/cspell-pipe': 8.9.1 + '@cspell/cspell-resolver': 8.9.1 + '@cspell/cspell-types': 8.9.1 + '@cspell/dynamic-import': 8.9.1 + '@cspell/strong-weak-map': 8.9.1 + '@cspell/url': 8.9.1 clear-module: 4.1.2 comment-json: 4.2.3 - cspell-config-lib: 8.8.1 - cspell-dictionary: 8.8.1 - cspell-glob: 8.8.1 - cspell-grammar: 8.8.1 - cspell-io: 8.8.1 - cspell-trie-lib: 8.8.1 + cspell-config-lib: 8.9.1 + cspell-dictionary: 8.9.1 + cspell-glob: 8.9.1 + cspell-grammar: 8.9.1 + cspell-io: 8.9.1 + cspell-trie-lib: 8.9.1 env-paths: 3.0.0 fast-equals: 5.0.1 gensequence: 7.0.0 @@ -11296,30 +11401,30 @@ packages: vscode-uri: 3.0.8 xdg-basedir: 5.1.0 - /cspell-trie-lib@8.8.1: - resolution: {integrity: sha512-S84XzQYGqKGApjVgamMp8tbHfKCeGZFxMwqedb4vxEJTYnUuCHaVPX2BK2SKaLSv/Vrd8mrJ/57sx5f8C44cFg==} + /cspell-trie-lib@8.9.1: + resolution: {integrity: sha512-rUED/lNlFcsRfkMal6+zLz7JW3/cV79KGhwxnwu1fjNS0nlLSAUGTTiAQBQSR+pU/UW+BTkmULHVuNh+DUN93w==} engines: {node: '>=18'} dependencies: - '@cspell/cspell-pipe': 8.8.1 - '@cspell/cspell-types': 8.8.1 + '@cspell/cspell-pipe': 8.9.1 + '@cspell/cspell-types': 8.9.1 gensequence: 7.0.0 - /cspell@8.8.1: - resolution: {integrity: sha512-YDJ62Q400LqxKTQV5Nk+Ub2IZGm5L0p832KbFUMy7FXDwkPLaxp3mfcLFV677FRiTcnGUtGYD+SnPkFJ2hiqsg==} + /cspell@8.9.1: + resolution: {integrity: sha512-tNUITJbyeX/JnhBtMtbZ5hDbkNIHB72iQx3Uw51sWvo8YmIhaP6ma1W8PPNteu8CSlI7r8Z412wpjyR0Mnsr6A==} engines: {node: '>=18'} hasBin: true dependencies: - '@cspell/cspell-json-reporter': 8.8.1 - '@cspell/cspell-pipe': 8.8.1 - '@cspell/cspell-types': 8.8.1 - '@cspell/dynamic-import': 8.8.1 + '@cspell/cspell-json-reporter': 8.9.1 + '@cspell/cspell-pipe': 8.9.1 + '@cspell/cspell-types': 8.9.1 + '@cspell/dynamic-import': 8.9.1 chalk: 5.3.0 chalk-template: 1.1.0 - commander: 12.0.0 - cspell-gitignore: 8.8.1 - cspell-glob: 8.8.1 - cspell-io: 8.8.1 - cspell-lib: 8.8.1 + commander: 12.1.0 + cspell-gitignore: 8.9.1 + cspell-glob: 8.9.1 + cspell-io: 8.9.1 + cspell-lib: 8.9.1 fast-glob: 3.3.2 fast-json-stable-stringify: 2.1.0 file-entry-cache: 8.0.0 @@ -11357,7 +11462,7 @@ packages: postcss-modules-values: 4.0.0(postcss@8.4.38) postcss-value-parser: 4.2.0 semver: 7.6.2 - webpack: 5.91.0(@swc/core@1.5.7) + webpack: 5.91.0(@swc/core@1.6.6) dev: false /css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(webpack@5.91.0): @@ -11392,7 +11497,7 @@ packages: postcss: 8.4.38 schema-utils: 4.2.0 serialize-javascript: 6.0.2 - webpack: 5.91.0(@swc/core@1.5.7) + webpack: 5.91.0(@swc/core@1.6.6) dev: false /css-select@4.3.0: @@ -11851,8 +11956,8 @@ packages: resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} dev: false - /debounce@2.0.0: - resolution: {integrity: sha512-xRetU6gL1VJbs85Mc4FoEGSjQxzpdxRyFhe3lmWFyy2EzydIcD4xzUvRJMD+NPDfMwKNhxa3PvsIOU32luIWeA==} + /debounce@2.1.0: + resolution: {integrity: sha512-OkL3+0pPWCqoBc/nhO9u6TIQNTK44fnBnzuVtJAbp13Naxw9R6u21x+8tVTka87AhDZ3htqZ2pSSsZl9fqL2Wg==} engines: {node: '>=18'} dev: false @@ -11914,30 +12019,6 @@ packages: type-detect: 4.0.8 dev: true - /deep-equal@2.2.3: - resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.1 - call-bind: 1.0.7 - es-get-iterator: 1.1.3 - get-intrinsic: 1.2.4 - is-arguments: 1.1.1 - is-array-buffer: 3.0.4 - is-date-object: 1.0.5 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.3 - isarray: 2.0.5 - object-is: 1.1.6 - object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.2 - side-channel: 1.0.6 - which-boxed-primitive: 1.0.2 - which-collection: 1.0.2 - which-typed-array: 1.1.15 - dev: true - /deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} @@ -12011,6 +12092,7 @@ packages: p-map: 4.0.0 rimraf: 3.0.2 slash: 3.0.0 + dev: false /delaunator@5.0.1: resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==} @@ -12020,6 +12102,7 @@ packages: /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} + dev: true /depd@1.1.2: resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} @@ -12257,8 +12340,8 @@ packages: escape-html: 1.0.3 dev: true - /ecmarkup@18.3.1: - resolution: {integrity: sha512-ouyfwgVjtvyF9AdAQnI9krCWNE5srK90XGPym8vs6WPtjUso6Pq887DwAYBDbga9lrfwezWo5n8hGu9amYYu1g==} + /ecmarkup@19.0.0: + resolution: {integrity: sha512-ncn5LXs46jPqcQSO/XdJCOOsdAvC8xT/Yebxted4qgpYWLisY4AEdOdZ4OXKgmPXGgWBqAgCSoV0obvEBEz8Hg==} engines: {node: '>= 12 || ^11.10.1 || ^10.13 || ^8.10'} hasBin: true dependencies: @@ -12457,22 +12540,8 @@ packages: get-intrinsic: 1.2.4 /es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - - /es-get-iterator@1.1.3: - resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - is-arguments: 1.1.1 - is-map: 2.0.3 - is-set: 2.0.3 - is-string: 1.0.7 - isarray: 2.0.5 - stop-iteration-iterator: 1.0.0 - dev: true + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} /es-module-lexer@1.5.0: resolution: {integrity: sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==} @@ -12557,6 +12626,37 @@ packages: '@esbuild/win32-x64': 0.20.2 dev: true + /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 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + dev: true + /escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} @@ -12611,7 +12711,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.1(@typescript-eslint/parser@7.9.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): + /eslint-module-utils@2.8.1(@typescript-eslint/parser@7.15.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} engines: {node: '>=4'} peerDependencies: @@ -12632,7 +12732,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 7.9.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.15.0(eslint@8.57.0)(typescript@5.5.3) debug: 3.2.7 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 @@ -12640,22 +12740,22 @@ packages: - supports-color dev: true - /eslint-plugin-deprecation@2.0.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-OAm9Ohzbj11/ZFyICyR5N6LbOIvQMp7ZU2zI7Ej0jIc8kiGUERXPNMfw2QqqHD1ZHtjMub3yPZILovYEYucgoQ==} + /eslint-plugin-deprecation@3.0.0(eslint@8.57.0)(typescript@5.5.3): + resolution: {integrity: sha512-JuVLdNg/uf0Adjg2tpTyYoYaMbwQNn/c78P1HcccokvhtRphgnRjZDKmhlxbxYptppex03zO76f97DD/yQHv7A==} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.0.0 typescript: ^4.2.4 || ^5.0.0 dependencies: - '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.15.0(eslint@8.57.0)(typescript@5.5.3) eslint: 8.57.0 + ts-api-utils: 1.3.0(typescript@5.5.3) tslib: 2.6.2 - tsutils: 3.21.0(typescript@5.4.5) - typescript: 5.4.5 + typescript: 5.5.3 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.9.0)(eslint@8.57.0): + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.15.0)(eslint@8.57.0): resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: @@ -12665,7 +12765,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 7.9.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.15.0(eslint@8.57.0)(typescript@5.5.3) array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.2 @@ -12674,7 +12774,7 @@ packages: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.9.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.15.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) hasown: 2.0.2 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -12690,15 +12790,15 @@ packages: - supports-color dev: true - /eslint-plugin-unicorn@53.0.0(eslint@8.57.0): - resolution: {integrity: sha512-kuTcNo9IwwUCfyHGwQFOK/HjJAYzbODHN3wP0PgqbW+jbXqpNWxNVpVhj2tO9SixBwuAdmal8rVcWKBxwFnGuw==} + /eslint-plugin-unicorn@54.0.0(eslint@8.57.0): + resolution: {integrity: sha512-XxYLRiYtAWiAjPv6z4JREby1TAE2byBC7wlh0V4vWDCpccOSU1KovWV//jqPXF6bq3WKxqX9rdjoRQ1EhdmNdQ==} engines: {node: '>=18.18'} peerDependencies: eslint: '>=8.56.0' dependencies: '@babel/helper-validator-identifier': 7.24.5 '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@eslint/eslintrc': 3.0.2 + '@eslint/eslintrc': 3.1.0 ci-info: 4.0.0 clean-regexp: 1.0.0 core-js-compat: 3.37.1 @@ -12717,7 +12817,7 @@ packages: - supports-color dev: true - /eslint-plugin-vitest@0.5.4(eslint@8.57.0)(typescript@5.4.5)(vitest@1.6.0): + /eslint-plugin-vitest@0.5.4(eslint@8.57.0)(typescript@5.5.3)(vitest@1.6.0): resolution: {integrity: sha512-um+odCkccAHU53WdKAw39MY61+1x990uXjSPguUCq3VcEHdqJrOb8OTMrbYlY6f9jAKx7x98kLVlIe3RJeJqoQ==} engines: {node: ^18.0.0 || >= 20.0.0} peerDependencies: @@ -12730,9 +12830,9 @@ packages: vitest: optional: true dependencies: - '@typescript-eslint/utils': 7.9.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.15.0(eslint@8.57.0)(typescript@5.5.3) eslint: 8.57.0 - vitest: 1.6.0(@types/node@18.11.19)(@vitest/ui@1.6.0)(happy-dom@14.11.0) + vitest: 1.6.0(@types/node@18.11.19)(@vitest/ui@1.6.0)(happy-dom@14.12.3) transitivePeerDependencies: - supports-color - typescript @@ -13038,7 +13138,7 @@ packages: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.5 + micromatch: 4.0.7 /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} @@ -13055,6 +13155,13 @@ packages: punycode: 1.4.1 dev: false + /fast-xml-parser@4.4.0: + resolution: {integrity: sha512-kLY3jFlwIYwBNDojclKsNAC12sfD6NwW74QB2CoNGPvtVxjliYehVunB3HYyNi+n4Tt1dAcgwYvmKF/Z18flqg==} + hasBin: true + dependencies: + strnum: 1.0.5 + dev: false + /fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} dependencies: @@ -13114,7 +13221,7 @@ packages: dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.91.0(@swc/core@1.5.7) + webpack: 5.91.0(@swc/core@1.6.6) /file-system-cache@2.3.0: resolution: {integrity: sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==} @@ -13140,6 +13247,12 @@ packages: dependencies: to-regex-range: 5.0.1 + /fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + /finalhandler@1.2.0: resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} engines: {node: '>= 0.8'} @@ -13273,9 +13386,8 @@ packages: dependencies: cross-spawn: 7.0.3 signal-exit: 4.1.0 - dev: true - /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.57.0)(typescript@5.4.5)(webpack@5.91.0): + /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.57.0)(typescript@5.5.3)(webpack@5.91.0): resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} engines: {node: '>=10', yarn: '>=1.0.0'} peerDependencies: @@ -13289,7 +13401,7 @@ packages: vue-template-compiler: optional: true dependencies: - '@babel/code-frame': 7.24.2 + '@babel/code-frame': 7.24.7 '@types/json-schema': 7.0.15 chalk: 4.1.2 chokidar: 3.6.0 @@ -13303,8 +13415,8 @@ packages: schema-utils: 2.7.0 semver: 7.6.2 tapable: 1.1.3 - typescript: 5.4.5 - webpack: 5.91.0(@swc/core@1.5.7) + typescript: 5.5.3 + webpack: 5.91.0(@swc/core@1.6.6) dev: false /form-data-encoder@2.1.4: @@ -13319,6 +13431,7 @@ packages: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 + dev: true /format@0.2.2: resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} @@ -13566,6 +13679,18 @@ packages: path-scurry: 1.10.2 dev: true + /glob@10.4.2: + resolution: {integrity: sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==} + engines: {node: '>=16 || 14 >=14.18'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 3.4.0 + minimatch: 9.0.4 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 1.11.1 + /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: @@ -13576,16 +13701,6 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 - /glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.6 - once: 1.4.0 - /global-directory@4.0.1: resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} engines: {node: '>=18'} @@ -13669,6 +13784,18 @@ packages: path-type: 5.0.0 slash: 5.1.0 unicorn-magic: 0.1.0 + dev: true + + /globby@14.0.2: + resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} + engines: {node: '>=18'} + dependencies: + '@sindresorhus/merge-streams': 2.3.0 + fast-glob: 3.3.2 + ignore: 5.3.1 + path-type: 5.0.0 + slash: 5.1.0 + unicorn-magic: 0.1.0 /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} @@ -13756,8 +13883,8 @@ packages: uglify-js: 3.17.4 dev: true - /happy-dom@14.11.0: - resolution: {integrity: sha512-vu25dY7YJqLuTG/3ADC0FZRRF0yNBp3q2K0YTN08opXdZi8V/YzIJDNJWFiCnDIuyc+RrCIE093+H5fa9Trlxg==} + /happy-dom@14.12.3: + resolution: {integrity: sha512-vsYlEs3E9gLwA1Hp+w3qzu+RUDFf4VTT8cyKqVICoZ2k7WM++Qyd2LwzyTi5bqMJFiIC/vNpTDYuxdreENRK/g==} engines: {node: '>=16.0.0'} dependencies: entities: 4.5.0 @@ -14046,7 +14173,7 @@ packages: lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.91.0(@swc/core@1.5.7) + webpack: 5.91.0(@swc/core@1.6.6) dev: false /htmlparser2@6.1.0: @@ -14131,7 +14258,7 @@ packages: http-proxy: 1.18.1 is-glob: 4.0.3 is-plain-obj: 3.0.0 - micromatch: 4.0.5 + micromatch: 4.0.7 transitivePeerDependencies: - debug dev: false @@ -14335,10 +14462,6 @@ packages: sprintf-js: 1.1.3 dev: true - /ip@2.0.1: - resolution: {integrity: sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==} - dev: true - /ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} @@ -14501,11 +14624,6 @@ packages: resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} dev: true - /is-map@2.0.3: - resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} - engines: {node: '>= 0.4'} - dev: true - /is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} @@ -14551,6 +14669,7 @@ packages: /is-path-cwd@2.2.0: resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} engines: {node: '>=6'} + dev: false /is-path-inside@3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} @@ -14611,11 +14730,6 @@ packages: engines: {node: '>=6'} dev: false - /is-set@2.0.3: - resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} - engines: {node: '>= 0.4'} - dev: true - /is-shared-array-buffer@1.0.3: resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} engines: {node: '>= 0.4'} @@ -14678,25 +14792,12 @@ packages: engines: {node: '>=18'} dev: true - /is-weakmap@2.0.2: - resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} - engines: {node: '>= 0.4'} - dev: true - /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.7 dev: true - /is-weakset@2.0.3: - resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - dev: true - /is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} @@ -14777,6 +14878,14 @@ packages: '@pkgjs/parseargs': 0.11.0 dev: true + /jackspeak@3.4.0: + resolution: {integrity: sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + /jake@10.9.1: resolution: {integrity: sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==} engines: {node: '>=10'} @@ -14869,22 +14978,22 @@ packages: '@babel/preset-env': optional: true dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/parser': 7.24.5 - '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.5) - '@babel/preset-env': 7.24.5(@babel/core@7.24.5) - '@babel/preset-flow': 7.24.1(@babel/core@7.24.5) - '@babel/preset-typescript': 7.24.1(@babel/core@7.24.5) - '@babel/register': 7.23.7(@babel/core@7.24.5) - babel-core: 7.0.0-bridge.0(@babel/core@7.24.5) + '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.24.7) + '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.7) + '@babel/preset-env': 7.24.5(@babel/core@7.24.7) + '@babel/preset-flow': 7.24.1(@babel/core@7.24.7) + '@babel/preset-typescript': 7.24.1(@babel/core@7.24.7) + '@babel/register': 7.23.7(@babel/core@7.24.7) + babel-core: 7.0.0-bridge.0(@babel/core@7.24.7) chalk: 4.1.2 flow-parser: 0.236.0 graceful-fs: 4.2.11 - micromatch: 4.0.5 + micromatch: 4.0.7 neo-async: 2.6.2 node-dir: 0.1.17 recast: 0.23.7 @@ -15143,6 +15252,12 @@ packages: uc.micro: 1.0.6 dev: true + /linkify-it@5.0.0: + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + dependencies: + uc.micro: 2.1.0 + dev: true + /load-json-file@6.2.0: resolution: {integrity: sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==} engines: {node: '>=8'} @@ -15302,7 +15417,6 @@ packages: /lru-cache@10.2.0: resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} engines: {node: 14 || >=16.14} - dev: true /lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -15426,16 +15540,22 @@ packages: uc.micro: 1.0.6 dev: true + /markdown-it@14.1.0: + resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} + hasBin: true + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.0 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 + dev: true + /markdown-table@3.0.3: resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} dev: false - /marked@4.3.0: - resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} - engines: {node: '>= 12'} - hasBin: true - dev: true - /matched@5.0.1: resolution: {integrity: sha512-E1fhSTPRyhAlNaNvGXAgZQlq1hL0bgYMTk/6bktVlIhzUnX/SZs7296ACdVeNJE8xFNGSuvd9IpI7vSnmcqLvw==} engines: {node: '>=10'} @@ -15693,6 +15813,10 @@ packages: resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} dev: true + /mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + dev: true + /media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} @@ -16238,11 +16362,11 @@ packages: transitivePeerDependencies: - supports-color - /micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + /micromatch@4.0.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} engines: {node: '>=8.6'} dependencies: - braces: 3.0.2 + braces: 3.0.3 picomatch: 2.3.1 /mime-db@1.33.0: @@ -16308,7 +16432,7 @@ packages: dependencies: schema-utils: 4.2.0 tapable: 2.2.1 - webpack: 5.91.0(@swc/core@1.5.7) + webpack: 5.91.0(@swc/core@1.6.6) dev: false /minimalistic-assert@1.0.1: @@ -16331,19 +16455,20 @@ packages: engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 + dev: true - /minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + /minimatch@9.0.4: + resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 - dev: true - /minimatch@9.0.4: - resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + /minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 + dev: true /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -16411,6 +16536,10 @@ packages: engines: {node: '>=16 || 14 >=14.17'} dev: true + /minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + /minizlib@2.1.2: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} @@ -16439,8 +16568,8 @@ packages: ufo: 1.5.3 dev: true - /monaco-editor-core@0.48.0: - resolution: {integrity: sha512-HaGsPuwG+2LA9Ya2lmU7zEh8TdA33E8kh94+RplFDq+4ZjW+pa3NlxOIZGyrNrBybvicitByY3Ys9c//NLaDVQ==} + /monaco-editor-core@0.50.0: + resolution: {integrity: sha512-XKdublTat9qDKwJhMbm6nnTUKA75MU7jWVooZeXcZKP0/y2jscNWQ9FpCiRtWk33Teemihx155WQ7o7xgf89eA==} dev: false /monaco-editor-webpack-plugin@7.1.0(monaco-editor@0.46.0)(webpack@5.91.0): @@ -16451,7 +16580,7 @@ packages: dependencies: loader-utils: 2.0.4 monaco-editor: 0.46.0 - webpack: 5.91.0(@swc/core@1.5.7) + webpack: 5.91.0(@swc/core@1.6.6) dev: true /monaco-editor@0.46.0: @@ -16580,6 +16709,7 @@ packages: optional: true dependencies: whatwg-url: 5.0.0 + dev: true /node-forge@1.3.1: resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} @@ -16707,7 +16837,7 @@ packages: dependencies: npm-install-checks: 6.3.0 npm-normalize-package-bin: 3.0.1 - npm-package-arg: 11.0.1 + npm-package-arg: 11.0.2 semver: 7.6.2 dev: true @@ -16721,7 +16851,7 @@ packages: minipass-fetch: 3.0.4 minipass-json-stream: 1.0.1 minizlib: 2.1.2 - npm-package-arg: 11.0.1 + npm-package-arg: 11.0.2 proc-log: 4.0.0 transitivePeerDependencies: - supports-color @@ -17022,6 +17152,9 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} + /package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + /package-json@8.1.1: resolution: {integrity: sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==} engines: {node: '>=14.16'} @@ -17098,7 +17231,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.24.2 + '@babel/code-frame': 7.24.7 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -17195,6 +17328,13 @@ packages: minipass: 7.0.4 dev: true + /path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + dependencies: + lru-cache: 10.2.0 + minipass: 7.1.2 + /path-temp@2.1.0: resolution: {integrity: sha512-cMMJTAZlion/RWRRC48UbrDymEIt+/YSD/l8NqjneyDw2rDOBQcP5yRkMB4CYGn47KMhZvbblBP7Z79OsMw72w==} engines: {node: '>=8.15'} @@ -17309,18 +17449,18 @@ packages: find-up: 3.0.0 dev: false - /playwright-core@1.44.0: - resolution: {integrity: sha512-ZTbkNpFfYcGWohvTTl+xewITm7EOuqIqex0c7dNZ+aXsbrLj0qI8XlGKfPpipjm0Wny/4Lt4CJsWJk1stVS5qQ==} - engines: {node: '>=16'} + /playwright-core@1.45.0: + resolution: {integrity: sha512-lZmHlFQ0VYSpAs43dRq1/nJ9G/6SiTI7VPqidld9TDefL9tX87bTKExWZZUF5PeRyqtXqd8fQi2qmfIedkwsNQ==} + engines: {node: '>=18'} hasBin: true dev: true - /playwright@1.44.0: - resolution: {integrity: sha512-F9b3GUCLQ3Nffrfb6dunPOkE5Mh68tR7zN32L4jCk4FjQamgesGay7/dAAe1WaMEGV04DkdJfcJzjoCKygUaRQ==} - engines: {node: '>=16'} + /playwright@1.45.0: + resolution: {integrity: sha512-4z3ac3plDfYzGB6r0Q3LF8POPR20Z8D0aXcxbJvmfMgSSq1hkcgvFRXJk9rUq5H/MJ0Ktal869hhOdI/zUTeLA==} + engines: {node: '>=18'} hasBin: true dependencies: - playwright-core: 1.44.0 + playwright-core: 1.45.0 optionalDependencies: fsevents: 2.3.2 dev: true @@ -17432,18 +17572,18 @@ packages: postcss-selector-parser: 6.0.16 dev: false - /postcss-loader@7.3.4(postcss@8.4.38)(typescript@5.4.5)(webpack@5.91.0): + /postcss-loader@7.3.4(postcss@8.4.38)(typescript@5.5.3)(webpack@5.91.0): resolution: {integrity: sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==} engines: {node: '>= 14.15.0'} peerDependencies: postcss: ^7.0.0 || ^8.0.1 webpack: ^5.0.0 dependencies: - cosmiconfig: 8.3.6(typescript@5.4.5) + cosmiconfig: 8.3.6(typescript@5.5.3) jiti: 1.21.0 postcss: 8.4.38 semver: 7.6.2 - webpack: 5.91.0(@swc/core@1.5.7) + webpack: 5.91.0(@swc/core@1.6.6) transitivePeerDependencies: - typescript dev: false @@ -17785,25 +17925,25 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - /prettier-plugin-organize-imports@3.2.4(prettier@3.2.5)(typescript@5.4.5): - resolution: {integrity: sha512-6m8WBhIp0dfwu0SkgfOxJqh+HpdyfqSSLfKKRZSFbDuEQXDDndb8fTpRWkUrX/uBenkex3MgnVk0J3b3Y5byog==} + /prettier-plugin-organize-imports@4.0.0(prettier@3.3.2)(typescript@5.5.3): + resolution: {integrity: sha512-vnKSdgv9aOlqKeEFGhf9SCBsTyzDSyScy1k7E0R1Uo4L0cTcOV7c1XQaT7jfXIOc/p08WLBfN2QUQA9zDSZMxA==} peerDependencies: - '@volar/vue-language-plugin-pug': ^1.0.4 - '@volar/vue-typescript': ^1.0.4 + '@vue/language-plugin-pug': ^2.0.24 prettier: '>=2.0' typescript: '>=2.9' + vue-tsc: ^2.0.24 peerDependenciesMeta: - '@volar/vue-language-plugin-pug': + '@vue/language-plugin-pug': optional: true - '@volar/vue-typescript': + vue-tsc: optional: true dependencies: - prettier: 3.2.5 - typescript: 5.4.5 + prettier: 3.3.2 + typescript: 5.5.3 dev: true - /prettier@3.2.5: - resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} + /prettier@3.3.2: + resolution: {integrity: sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==} engines: {node: '>=14'} hasBin: true @@ -17974,6 +18114,11 @@ packages: pump: 2.0.1 dev: true + /punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + dev: true + /punycode@1.4.1: resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} dev: false @@ -18063,7 +18208,7 @@ packages: dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.91.0(@swc/core@1.5.7) + webpack: 5.91.0(@swc/core@1.6.6) dev: true /rc@1.2.8: @@ -18075,7 +18220,7 @@ packages: minimist: 1.2.8 strip-json-comments: 2.0.1 - /react-dev-utils@12.0.1(eslint@8.57.0)(typescript@5.4.5)(webpack@5.91.0): + /react-dev-utils@12.0.1(eslint@8.57.0)(typescript@5.5.3)(webpack@5.91.0): resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} engines: {node: '>=14'} peerDependencies: @@ -18085,7 +18230,7 @@ packages: typescript: optional: true dependencies: - '@babel/code-frame': 7.24.2 + '@babel/code-frame': 7.24.7 address: 1.2.2 browserslist: 4.23.0 chalk: 4.1.2 @@ -18094,7 +18239,7 @@ packages: escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.57.0)(typescript@5.4.5)(webpack@5.91.0) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.57.0)(typescript@5.5.3)(webpack@5.91.0) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -18109,27 +18254,27 @@ packages: shell-quote: 1.8.1 strip-ansi: 6.0.1 text-table: 0.2.0 - typescript: 5.4.5 - webpack: 5.91.0(@swc/core@1.5.7) + typescript: 5.5.3 + webpack: 5.91.0(@swc/core@1.6.6) transitivePeerDependencies: - eslint - supports-color - vue-template-compiler dev: false - /react-docgen-typescript@2.2.2(typescript@5.4.5): + /react-docgen-typescript@2.2.2(typescript@5.5.3): resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==} peerDependencies: typescript: '>= 4.3.x' dependencies: - typescript: 5.4.5 + typescript: 5.5.3 dev: true /react-docgen@7.0.3: resolution: {integrity: sha512-i8aF1nyKInZnANZ4uZrH49qn1paRgBZ7wZiCNBMnenlPzEv0mRl+ShpTVEI6wZNl8sSc79xZkivtgLKQArcanQ==} engines: {node: '>=16.14.0'} dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 '@babel/traverse': 7.24.5 '@babel/types': 7.24.5 '@types/babel__core': 7.20.5 @@ -18238,11 +18383,11 @@ packages: dependencies: '@babel/runtime': 7.24.1 react-loadable: /@docusaurus/react-loadable@6.0.0(react@18.3.1) - webpack: 5.91.0(@swc/core@1.5.7) + webpack: 5.91.0(@swc/core@1.6.6) dev: false - /react-refresh@0.14.0: - resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} + /react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} dev: true @@ -18702,6 +18847,7 @@ packages: /rimraf@2.6.3: resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true dependencies: glob: 7.2.3 @@ -18709,6 +18855,7 @@ packages: /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 @@ -18740,29 +18887,29 @@ packages: yargs: 17.7.2 dev: true - /rollup@4.17.2: - resolution: {integrity: sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ==} + /rollup@4.18.0: + resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.17.2 - '@rollup/rollup-android-arm64': 4.17.2 - '@rollup/rollup-darwin-arm64': 4.17.2 - '@rollup/rollup-darwin-x64': 4.17.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.17.2 - '@rollup/rollup-linux-arm-musleabihf': 4.17.2 - '@rollup/rollup-linux-arm64-gnu': 4.17.2 - '@rollup/rollup-linux-arm64-musl': 4.17.2 - '@rollup/rollup-linux-powerpc64le-gnu': 4.17.2 - '@rollup/rollup-linux-riscv64-gnu': 4.17.2 - '@rollup/rollup-linux-s390x-gnu': 4.17.2 - '@rollup/rollup-linux-x64-gnu': 4.17.2 - '@rollup/rollup-linux-x64-musl': 4.17.2 - '@rollup/rollup-win32-arm64-msvc': 4.17.2 - '@rollup/rollup-win32-ia32-msvc': 4.17.2 - '@rollup/rollup-win32-x64-msvc': 4.17.2 + '@rollup/rollup-android-arm-eabi': 4.18.0 + '@rollup/rollup-android-arm64': 4.18.0 + '@rollup/rollup-darwin-arm64': 4.18.0 + '@rollup/rollup-darwin-x64': 4.18.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.18.0 + '@rollup/rollup-linux-arm-musleabihf': 4.18.0 + '@rollup/rollup-linux-arm64-gnu': 4.18.0 + '@rollup/rollup-linux-arm64-musl': 4.18.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.18.0 + '@rollup/rollup-linux-riscv64-gnu': 4.18.0 + '@rollup/rollup-linux-s390x-gnu': 4.18.0 + '@rollup/rollup-linux-x64-gnu': 4.18.0 + '@rollup/rollup-linux-x64-musl': 4.18.0 + '@rollup/rollup-win32-arm64-msvc': 4.18.0 + '@rollup/rollup-win32-ia32-msvc': 4.18.0 + '@rollup/rollup-win32-x64-msvc': 4.18.0 fsevents: 2.3.3 /rtl-css-js@1.16.1: @@ -18884,9 +19031,9 @@ packages: engines: {node: '>= 12.13.0'} dependencies: '@types/json-schema': 7.0.15 - ajv: 8.13.0 - ajv-formats: 2.1.1(ajv@8.13.0) - ajv-keywords: 5.1.0(ajv@8.13.0) + ajv: 8.16.0 + ajv-formats: 2.1.1(ajv@8.16.0) + ajv-keywords: 5.1.0(ajv@8.16.0) dev: false /search-insights@2.13.0: @@ -19075,13 +19222,10 @@ packages: rechoir: 0.6.2 dev: false - /shiki@0.14.7: - resolution: {integrity: sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg==} + /shiki@1.10.0: + resolution: {integrity: sha512-YD2sXQ+TMD/F9BimV9Jn0wj35pqOvywvOG/3PB6hGHyGKlM7TJ9tyJ02jOb2kF8F0HfJwKNYrh3sW7jEcuRlXA==} dependencies: - ansi-sequence-parser: 1.1.1 - jsonc-parser: 3.2.1 - vscode-oniguruma: 1.7.0 - vscode-textmate: 8.0.0 + '@shikijs/core': 1.10.0 dev: true /side-channel@1.0.6: @@ -19351,13 +19495,6 @@ packages: engines: {node: '>=18'} dev: true - /stop-iteration-iterator@1.0.0: - resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} - engines: {node: '>= 0.4'} - dependencies: - internal-slot: 1.0.7 - dev: true - /stoppable@1.1.0: resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} engines: {node: '>=4', npm: '>=6'} @@ -19531,6 +19668,10 @@ packages: js-tokens: 9.0.0 dev: true + /strnum@1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + dev: false + /style-to-object@0.4.4: resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} dependencies: @@ -19599,27 +19740,27 @@ packages: picocolors: 1.0.1 dev: false - /swagger-ui-dist@5.17.10: - resolution: {integrity: sha512-fp8SYeEK216KS1/noDvursUOGojEbkvtckOpOmAGZUjlx/ma7VLD2PLQwyermjlzFrlHI5uCt1V+M1C3qBvRyQ==} + /swagger-ui-dist@5.17.14: + resolution: {integrity: sha512-CVbSfaLpstV65OnSjbXfVd6Sta3q3F7Cj/yYuvHMp1P90LztOLs6PfUnKEVAeiIVQt9u2SaPwv0LiH/OyMjHRw==} dev: false - /swc-loader@0.2.6(@swc/core@1.5.7)(webpack@5.91.0): + /swc-loader@0.2.6(@swc/core@1.6.6)(webpack@5.91.0): resolution: {integrity: sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg==} peerDependencies: '@swc/core': ^1.2.147 webpack: '>=2' dependencies: - '@swc/core': 1.5.7 + '@swc/core': 1.6.6 '@swc/counter': 0.1.3 - webpack: 5.91.0(@swc/core@1.5.7) + webpack: 5.91.0(@swc/core@1.6.6) dev: true /symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true - /syncpack@12.3.2(typescript@5.4.5): - resolution: {integrity: sha512-ePvaDfasxF8mwaPItN6urmABaH6FPT3/vJU+2DHt24j8EIKjgz6NCxXDx2bTXJXZ4QcEFwvoiu3EqaJsVrHvUg==} + /syncpack@12.3.3(typescript@5.5.3): + resolution: {integrity: sha512-r154Rk8YtJA0My8Nu5v4e58n3y85atG4WlxekTQ/DT4toqiMtprqn5LrHuNVAhbpsOfUHPv6EFMj9k+FdDvgDA==} engines: {node: '>=16'} hasBin: true dependencies: @@ -19627,7 +19768,7 @@ packages: chalk: 5.3.0 chalk-template: 1.1.0 commander: 12.0.0 - cosmiconfig: 9.0.0(typescript@5.4.5) + cosmiconfig: 9.0.0(typescript@5.5.3) effect: 3.0.3 enquirer: 2.4.1 fast-check: 3.17.2 @@ -19654,8 +19795,8 @@ packages: wordwrapjs: 4.0.1 dev: true - /tabster@7.1.3: - resolution: {integrity: sha512-H8I4avK9+PqKCFEFIn5mu3Mz+yPntRrupz+O0LxkMJJ2NPyDj55pyiXwrErDhAm9kyrZFk55n7T0tycni85jmg==} + /tabster@8.0.0: + resolution: {integrity: sha512-82pqhDwH3uq7hVcy1nOo7lyYgCJcVUPqb30hvoHtX8DQ5pxEtRz9+FqVcW5w7J6kTjNBBu7cwKvuMy9qoeQt1g==} dependencies: keyborg: 2.6.0 tslib: 2.6.2 @@ -19710,9 +19851,9 @@ packages: memoizerific: 1.11.3 dev: true - /temp-dir@2.0.0: - resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} - engines: {node: '>=8'} + /temp-dir@3.0.0: + resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} + engines: {node: '>=14.16'} dev: true /temp@0.8.4: @@ -19722,18 +19863,17 @@ packages: rimraf: 2.6.3 dev: true - /tempy@1.0.1: - resolution: {integrity: sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==} - engines: {node: '>=10'} + /tempy@3.1.0: + resolution: {integrity: sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==} + engines: {node: '>=14.16'} dependencies: - del: 6.1.1 - is-stream: 2.0.1 - temp-dir: 2.0.0 - type-fest: 0.16.0 - unique-string: 2.0.0 + is-stream: 3.0.0 + temp-dir: 3.0.0 + type-fest: 2.19.0 + unique-string: 3.0.0 dev: true - /terser-webpack-plugin@5.3.10(@swc/core@1.5.7)(webpack@5.91.0): + /terser-webpack-plugin@5.3.10(@swc/core@1.6.6)(webpack@5.91.0): resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -19750,12 +19890,12 @@ packages: optional: true dependencies: '@jridgewell/trace-mapping': 0.3.25 - '@swc/core': 1.5.7 + '@swc/core': 1.6.6 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.30.0 - webpack: 5.91.0(@swc/core@1.5.7) + webpack: 5.91.0(@swc/core@1.6.6) /terser@5.30.0: resolution: {integrity: sha512-Y/SblUl5kEyEFzhMAQdsxVHh+utAxd4IuRNJzKywY/4uzSogh3G219jqbDDxYu4MXO9CzY3tSEqmZvW6AoEDJw==} @@ -19776,6 +19916,15 @@ packages: minimatch: 3.1.2 dev: true + /test-exclude@7.0.1: + resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} + engines: {node: '>=18'} + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 10.4.2 + minimatch: 9.0.4 + dev: true + /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} @@ -19856,6 +20005,7 @@ packages: /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: true /tr46@3.0.0: resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} @@ -19870,19 +20020,19 @@ packages: /trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - /ts-api-utils@1.3.0(typescript@5.4.5): + /ts-api-utils@1.3.0(typescript@5.5.3): resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' dependencies: - typescript: 5.4.5 + typescript: 5.5.3 /ts-dedent@2.2.0: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} - /ts-node@10.9.2(@types/node@18.11.19)(typescript@5.4.5): + /ts-node@10.9.2(@types/node@18.11.19)(typescript@5.5.3): resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: @@ -19908,7 +20058,7 @@ packages: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.4.5 + typescript: 5.5.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: true @@ -19942,22 +20092,12 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - /tsutils@3.21.0(typescript@5.4.5): - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - dependencies: - tslib: 1.14.1 - typescript: 5.4.5 - dev: true - - /tsx@4.10.5: - resolution: {integrity: sha512-twDSbf7Gtea4I2copqovUiNTEDrT8XNFXsuHpfGbdpW/z9ZW4fTghzzhAG0WfrCuJmJiOEY1nLIjq4u3oujRWQ==} + /tsx@4.16.0: + resolution: {integrity: sha512-MPgN+CuY+4iKxGoJNPv+1pyo5YWZAQ5XfsyobUG+zoKG7IkvCPLZDEyoIb8yLS2FcWci1nlxAqmvPlFWD5AFiQ==} engines: {node: '>=18.0.0'} hasBin: true dependencies: - esbuild: 0.20.2 + esbuild: 0.21.5 get-tsconfig: 4.7.5 optionalDependencies: fsevents: 2.3.3 @@ -19985,6 +20125,7 @@ packages: /tunnel@0.0.6: resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} + dev: true /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} @@ -19997,11 +20138,6 @@ packages: engines: {node: '>=4'} dev: true - /type-fest@0.16.0: - resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} - engines: {node: '>=10'} - dev: true - /type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} @@ -20023,7 +20159,6 @@ packages: /type-fest@1.4.0: resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} engines: {node: '>=10'} - dev: false /type-fest@2.19.0: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} @@ -20094,30 +20229,32 @@ packages: is-typedarray: 1.0.0 dev: false - /typedoc-plugin-markdown@4.0.2(typedoc@0.25.13): - resolution: {integrity: sha512-4MV3M+0lsmIaXuDBzeqLYemZqwTQDWQow+o8zdT9hC7KFu06GaFo2uUEbkjE6pgZA9hnkOTtzRVd0R9YJWcH8A==} + /typedoc-plugin-markdown@4.1.1(typedoc@0.26.3): + resolution: {integrity: sha512-ZQv8FXn1TBZAvhWMgOL8hE472rwv1dzSr/KIIUGPmdNXybeS6jmK7d1OwKhorLuGbPDQGl6U97BwfkFTcydAkw==} + engines: {node: '>= 18'} peerDependencies: - typedoc: 0.25.x + typedoc: 0.26.x dependencies: - typedoc: 0.25.13(typescript@5.4.5) + typedoc: 0.26.3(typescript@5.5.3) dev: true - /typedoc@0.25.13(typescript@5.4.5): - resolution: {integrity: sha512-pQqiwiJ+Z4pigfOnnysObszLiU3mVLWAExSPf+Mu06G/qsc3wzbuM56SZQvONhHLncLUhYzOVkjFFpFfL5AzhQ==} - engines: {node: '>= 16'} + /typedoc@0.26.3(typescript@5.5.3): + resolution: {integrity: sha512-6d2Sw9disvvpdk4K7VNjKr5/3hzijtfQVHRthhDqJgnhMHy1wQz4yPMJVKXElvnZhFr0nkzo+GzjXDTRV5yLpg==} + engines: {node: '>= 18'} hasBin: true peerDependencies: - typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x dependencies: lunr: 2.3.9 - marked: 4.3.0 - minimatch: 9.0.4 - shiki: 0.14.7 - typescript: 5.4.5 + markdown-it: 14.1.0 + minimatch: 9.0.5 + shiki: 1.10.0 + typescript: 5.5.3 + yaml: 2.4.5 dev: true - /typescript-eslint@7.9.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-7iTn9c10teHHCys5Ud/yaJntXZrjt3h2mrx3feJGBOLgQkF3TB1X89Xs3aVQ/GgdXRAXpk2bPTdpRwHP4YkUow==} + /typescript-eslint@7.15.0(eslint@8.57.0)(typescript@5.5.3): + resolution: {integrity: sha512-Ta40FhMXBCwHura4X4fncaCVkVcnJ9jnOq5+Lp4lN8F4DzHZtOwZdRvVBiNUGznUDHPwdGnrnwxmUOU2fFQqFA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -20126,11 +20263,11 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 7.9.0(@typescript-eslint/parser@7.9.0)(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/parser': 7.9.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.9.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/eslint-plugin': 7.15.0(@typescript-eslint/parser@7.15.0)(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/parser': 7.15.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/utils': 7.15.0(eslint@8.57.0)(typescript@5.5.3) eslint: 8.57.0 - typescript: 5.4.5 + typescript: 5.5.3 transitivePeerDependencies: - supports-color dev: true @@ -20141,8 +20278,8 @@ packages: hasBin: true dev: true - /typescript@5.4.5: - resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} + /typescript@5.5.3: + resolution: {integrity: sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==} engines: {node: '>=14.17'} hasBin: true @@ -20160,6 +20297,10 @@ packages: resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} dev: true + /uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + dev: true + /ufo@1.5.3: resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} dev: true @@ -20249,7 +20390,6 @@ packages: engines: {node: '>=12'} dependencies: crypto-random-string: 4.0.0 - dev: false /unist-util-is@6.0.0: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} @@ -20393,7 +20533,7 @@ packages: loader-utils: 2.0.4 mime-types: 2.1.35 schema-utils: 3.3.0 - webpack: 5.91.0(@swc/core@1.5.7) + webpack: 5.91.0(@swc/core@1.6.6) dev: false /url-parse@1.5.10: @@ -20403,7 +20543,7 @@ packages: requires-port: 1.0.0 dev: true - /use-disposable@1.0.2(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1): + /use-disposable@1.0.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-UMaXVlV77dWOu4GqAFNjRzHzowYKUKbJBQfCexvahrYeIz4OkUYUjna4Tjjdf92NH8Nm8J7wEfFRgTIwYjO5jg==} peerDependencies: '@types/react': '>=16.8.0 <19.0.0' @@ -20411,7 +20551,7 @@ packages: react: '>=16.8.0 <19.0.0' react-dom: '>=16.8.0 <19.0.0' dependencies: - '@types/react': 18.3.2 + '@types/react': 18.3.3 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -20537,7 +20677,7 @@ packages: debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.1 - vite: 5.2.11(@types/node@18.11.19) + vite: 5.3.2(@types/node@18.11.19) transitivePeerDependencies: - '@types/node' - less @@ -20549,8 +20689,8 @@ packages: - terser dev: true - /vite-plugin-checker@0.6.4(eslint@8.57.0)(typescript@5.4.5)(vite@5.2.11): - resolution: {integrity: sha512-2zKHH5oxr+ye43nReRbC2fny1nyARwhxdm0uNYp/ERy4YvU9iZpNOsueoi/luXw5gnpqRSvjcEPxXbS153O2wA==} + /vite-plugin-checker@0.7.0(eslint@8.57.0)(typescript@5.5.3)(vite@5.3.2): + resolution: {integrity: sha512-F3MdUORNLcPC0oDB9zxmPDhUC8X/3fzDShU5Izk4bqE4uTgxbQdOuOCa99bS6OSyWVC0uhHG4yAtWUXM2jOx9A==} engines: {node: '>=14.16'} peerDependencies: eslint: '>=7' @@ -20561,7 +20701,7 @@ packages: vite: '>=2.0.0' vls: '*' vti: '*' - vue-tsc: '>=1.3.9' + vue-tsc: '>=2.0.0' peerDependenciesMeta: eslint: optional: true @@ -20580,7 +20720,8 @@ packages: vue-tsc: optional: true dependencies: - '@babel/code-frame': 7.24.2 + '@babel/code-frame': 7.24.7 + '@volar/typescript': 2.3.4 ansi-escapes: 4.3.2 chalk: 4.1.2 chokidar: 3.6.0 @@ -20589,18 +20730,17 @@ packages: fast-glob: 3.3.2 fs-extra: 11.2.0 npm-run-path: 4.0.1 - semver: 7.6.2 strip-ansi: 6.0.1 tiny-invariant: 1.3.3 - typescript: 5.4.5 - vite: 5.2.11(@types/node@18.11.19) + typescript: 5.5.3 + vite: 5.3.2(@types/node@18.11.19) vscode-languageclient: 7.0.0 vscode-languageserver: 7.0.0 vscode-languageserver-textdocument: 1.0.11 vscode-uri: 3.0.8 dev: true - /vite-plugin-dts@3.9.1(@types/node@18.11.19)(typescript@5.4.5)(vite@5.2.11): + /vite-plugin-dts@3.9.1(@types/node@18.11.19)(typescript@5.5.3)(vite@5.3.2): resolution: {integrity: sha512-rVp2KM9Ue22NGWB8dNtWEr+KekN3rIgz1tWD050QnRGlriUCmaDwa7qA5zDEjbXg5lAXhYMSBJtx3q3hQIJZSg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -20611,14 +20751,14 @@ packages: optional: true dependencies: '@microsoft/api-extractor': 7.43.0(@types/node@18.11.19) - '@rollup/pluginutils': 5.1.0(rollup@4.17.2) - '@vue/language-core': 1.8.27(typescript@5.4.5) + '@rollup/pluginutils': 5.1.0(rollup@4.18.0) + '@vue/language-core': 1.8.27(typescript@5.5.3) debug: 4.3.4 kolorist: 1.8.0 magic-string: 0.30.8 - typescript: 5.4.5 - vite: 5.2.11(@types/node@18.11.19) - vue-tsc: 1.8.27(typescript@5.4.5) + typescript: 5.5.3 + vite: 5.3.2(@types/node@18.11.19) + vue-tsc: 1.8.27(typescript@5.5.3) transitivePeerDependencies: - '@types/node' - rollup @@ -20656,12 +20796,48 @@ packages: '@types/node': 18.11.19 esbuild: 0.20.2 postcss: 8.4.38 - rollup: 4.17.2 + rollup: 4.18.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /vite@5.3.2(@types/node@18.11.19): + resolution: {integrity: sha512-6lA7OBHBlXUxiJxbO5aAY2fsHHzDr1q7DvXYnyZycRs2Dz+dXBWuhpWHvmljTRTpQC2uvGmUFFkSHF2vGo90MA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 18.11.19 + esbuild: 0.21.5 + postcss: 8.4.38 + rollup: 4.18.0 optionalDependencies: fsevents: 2.3.3 dev: true - /vitest@1.6.0(@types/node@18.11.19)(@vitest/ui@1.6.0)(happy-dom@14.11.0): + /vitest@1.6.0(@types/node@18.11.19)(@vitest/ui@1.6.0): resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -20697,7 +20873,6 @@ packages: chai: 4.4.1 debug: 4.3.4 execa: 8.0.1 - happy-dom: 14.11.0 local-pkg: 0.5.0 magic-string: 0.30.8 pathe: 1.1.2 @@ -20719,6 +20894,64 @@ packages: - terser dev: true + /vitest@1.6.0(@types/node@18.11.19)(@vitest/ui@1.6.0)(happy-dom@14.12.3): + resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 1.6.0 + '@vitest/ui': 1.6.0 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + dependencies: + '@types/node': 18.11.19 + '@vitest/expect': 1.6.0 + '@vitest/runner': 1.6.0 + '@vitest/snapshot': 1.6.0 + '@vitest/spy': 1.6.0 + '@vitest/ui': 1.6.0(vitest@1.6.0) + '@vitest/utils': 1.6.0 + acorn-walk: 8.3.2 + chai: 4.4.1 + debug: 4.3.4 + execa: 8.0.1 + happy-dom: 14.12.3 + local-pkg: 0.5.0 + magic-string: 0.30.8 + pathe: 1.1.2 + picocolors: 1.0.1 + std-env: 3.7.0 + strip-literal: 2.1.0 + tinybench: 2.6.0 + tinypool: 0.8.3 + vite: 5.3.2(@types/node@18.11.19) + vite-node: 1.6.0(@types/node@18.11.19) + why-is-node-running: 2.2.2 + transitivePeerDependencies: + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + /vscode-jsonrpc@6.0.0: resolution: {integrity: sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==} engines: {node: '>=8.0.0 || >=10.0.0'} @@ -20783,18 +21016,10 @@ packages: vscode-languageserver-protocol: 3.17.5 dev: false - /vscode-oniguruma@1.7.0: - resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} - dev: true - /vscode-oniguruma@2.0.1: resolution: {integrity: sha512-poJU8iHIWnC3vgphJnrLZyI3YdqRlR27xzqDmpPXYzA93R4Gk8z7T6oqDzDoHjoikA2aS82crdXFkjELCdJsjQ==} dev: true - /vscode-textmate@8.0.0: - resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} - dev: true - /vscode-textmate@9.0.0: resolution: {integrity: sha512-Cl65diFGxz7gpwbav10HqiY/eVYTO1sjQpmRmV991Bj7wAoOAjGQ97PpQcXorDE2Uc4hnGWLY17xme+5t6MlSg==} dev: true @@ -20809,16 +21034,16 @@ packages: he: 1.2.0 dev: true - /vue-tsc@1.8.27(typescript@5.4.5): + /vue-tsc@1.8.27(typescript@5.5.3): resolution: {integrity: sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==} hasBin: true peerDependencies: typescript: '*' dependencies: '@volar/typescript': 1.11.1 - '@vue/language-core': 1.8.27(typescript@5.4.5) + '@vue/language-core': 1.8.27(typescript@5.5.3) semver: 7.6.2 - typescript: 5.4.5 + typescript: 5.5.3 dev: true /w3c-hr-time@1.0.2: @@ -20863,6 +21088,7 @@ packages: /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: true /webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} @@ -20903,7 +21129,7 @@ packages: mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.2.0 - webpack: 5.91.0(@swc/core@1.5.7) + webpack: 5.91.0(@swc/core@1.6.6) dev: false /webpack-dev-server@4.15.2(webpack@5.91.0): @@ -20947,7 +21173,7 @@ packages: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack: 5.91.0(@swc/core@1.5.7) + webpack: 5.91.0(@swc/core@1.6.6) webpack-dev-middleware: 5.3.4(webpack@5.91.0) ws: 8.16.0 transitivePeerDependencies: @@ -20973,7 +21199,7 @@ packages: resolution: {integrity: sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==} dev: true - /webpack@5.91.0(@swc/core@1.5.7): + /webpack@5.91.0(@swc/core@1.6.6): resolution: {integrity: sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==} engines: {node: '>=10.13.0'} hasBin: true @@ -21004,7 +21230,7 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.5.7)(webpack@5.91.0) + terser-webpack-plugin: 5.3.10(@swc/core@1.6.6)(webpack@5.91.0) watchpack: 2.4.1 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -21022,7 +21248,7 @@ packages: consola: 2.15.3 pretty-time: 1.1.0 std-env: 3.7.0 - webpack: 5.91.0(@swc/core@1.5.7) + webpack: 5.91.0(@swc/core@1.6.6) dev: false /websocket-driver@0.7.4: @@ -21072,6 +21298,7 @@ packages: dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 + dev: true /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} @@ -21083,16 +21310,6 @@ packages: is-symbol: 1.0.4 dev: true - /which-collection@1.0.2: - resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} - engines: {node: '>= 0.4'} - dependencies: - is-map: 2.0.3 - is-set: 2.0.3 - is-weakmap: 2.0.2 - is-weakset: 2.0.3 - dev: true - /which-typed-array@1.1.15: resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} engines: {node: '>= 0.4'} @@ -21267,10 +21484,12 @@ packages: dependencies: sax: 1.3.0 xmlbuilder: 11.0.1 + dev: true /xmlbuilder@11.0.1: resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} engines: {node: '>=4.0'} + dev: true /xmlbuilder@15.1.1: resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} @@ -21301,8 +21520,8 @@ packages: engines: {node: '>= 6'} dev: false - /yaml@2.4.2: - resolution: {integrity: sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==} + /yaml@2.4.5: + resolution: {integrity: sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==} engines: {node: '>= 14'} hasBin: true