diff --git a/packages/http-client-csharp/emitter/src/lib/operation-converter.ts b/packages/http-client-csharp/emitter/src/lib/operation-converter.ts index 6210a2c7636..21d4fdbc3dd 100644 --- a/packages/http-client-csharp/emitter/src/lib/operation-converter.ts +++ b/packages/http-client-csharp/emitter/src/lib/operation-converter.ts @@ -19,6 +19,7 @@ import type { SdkQueryParameter, SdkServiceMethod, SdkServiceResponseHeader, + SdkStreamMetadata, SdkType, } from "@azure-tools/typespec-client-generator-core"; import { @@ -30,15 +31,18 @@ import { shouldGenerateConvenient, shouldGenerateProtocol, } from "@azure-tools/typespec-client-generator-core"; -import type { Diagnostic } from "@typespec/compiler"; +import type { Diagnostic, Union } from "@typespec/compiler"; import { + compilerAssert, createDiagnosticCollector, getDeprecated, isErrorModel, NoTarget, } from "@typespec/compiler"; +import { unsafe_getEventDefinitions } from "@typespec/events/experimental"; import type { HttpStatusCodeRange } from "@typespec/http"; import { getResourceOperation } from "@typespec/rest"; +import { isTerminalEvent } from "@typespec/sse"; import type { CSharpEmitterContext } from "../sdk-context.js"; import { collectionFormatToDelimMap } from "../type/collection-format.js"; import type { HttpResponseHeader } from "../type/http-response-header.js"; @@ -64,6 +68,7 @@ import type { InputMethodParameter, InputPathParameter, InputQueryParameter, + InputStreamingType, InputType, } from "../type/input-type.js"; import { convertLroFinalStateVia } from "../type/operation-final-state-via.js"; @@ -234,7 +239,9 @@ export function fromSdkServiceMethodOperation( path: method.operation.path, externalDocsUrl: getExternalDocs(sdkContext, method.operation.__raw.operation)?.url, requestMediaTypes: requestMediaTypes, - bufferResponse: true, + bufferResponse: !method.operation.responses.some((response) => + isSupportedStream(response.streamMetadata), + ), generateProtocolMethod: shouldGenerateProtocol(sdkContext, method.operation.__raw.operation), generateConvenienceMethod: generateConvenience, crossLanguageDefinitionId: method.crossLanguageDefinitionId, @@ -351,8 +358,23 @@ function fromSdkServiceMethodParameters( for (const p of method.parameters) { const methodInputParameter = diagnostics.pipe(fromMethodParameter(sdkContext, p, namespace)); const operationHttpParameter = getHttpOperationParameter(method, p); + const streamMetadata = method.operation.bodyParam?.streamMetadata; + const isStreamingBodyParameter = + isJsonLinesStream(streamMetadata) && + method.operation.bodyParam!.methodParameterSegments.some((segments) => + segments.some( + (segment) => + segment === p || segment.crossLanguageDefinitionId === p.crossLanguageDefinitionId, + ), + ); if (!operationHttpParameter) { + if (isStreamingBodyParameter) { + methodInputParameter.type = diagnostics.pipe( + fromSdkStreamMetadata(sdkContext, streamMetadata), + ); + methodInputParameter.location = RequestLocation.Body; + } parameters.push(methodInputParameter); continue; } @@ -365,6 +387,12 @@ function fromSdkServiceMethodParameters( rootApiVersions, diagnostics, ); + if (isStreamingBodyParameter) { + methodInputParameter.type = diagnostics.pipe( + fromSdkStreamMetadata(sdkContext, streamMetadata), + ); + methodInputParameter.location = RequestLocation.Body; + } parameters.push(methodInputParameter); } @@ -378,6 +406,15 @@ function updateMethodParameter( rootApiVersions: string[], diagnostics: ReturnType, ): void { + if ( + operationHttpParameter.kind === "body" && + isJsonLinesStream(operationHttpParameter.streamMetadata) + ) { + methodParameter.type = diagnostics.pipe( + fromSdkStreamMetadata(sdkContext, operationHttpParameter.streamMetadata), + ); + } + // for content type parameter if (isContentType(operationHttpParameter)) { methodParameter.type = diagnostics.pipe( @@ -408,7 +445,9 @@ function fromSdkServiceMethodResponse( const diagnostics = createDiagnosticCollector(); return diagnostics.wrap({ - type: diagnostics.pipe(getResponseType(sdkContext, methodResponse.type)), + type: isSupportedStream(methodResponse.streamMetadata) + ? diagnostics.pipe(fromSdkStreamMetadata(sdkContext, methodResponse.streamMetadata)) + : diagnostics.pipe(getResponseType(sdkContext, methodResponse.type)), resultSegments: methodResponse.resultSegments?.map((segment) => getResponseSegmentName(segment), ), @@ -607,7 +646,9 @@ function fromBodyParameter( rootApiVersions: string[], ): [InputBodyParameter, readonly Diagnostic[]] { const diagnostics = createDiagnosticCollector(); - const parameterType = diagnostics.pipe(fromSdkType(sdkContext, p.type, p)); + const parameterType = isJsonLinesStream(p.streamMetadata) + ? diagnostics.pipe(fromSdkStreamMetadata(sdkContext, p.streamMetadata)) + : diagnostics.pipe(fromSdkType(sdkContext, p.type, p)); const retVar: InputBodyParameter = { kind: "body", @@ -725,7 +766,9 @@ export function fromSdkHttpOperationResponse( const range = sdkResponse.statusCodes; retVar = { statusCodes: toStatusCodesArray(range), - bodyType: diagnostics.pipe(getResponseType(sdkContext, sdkResponse.type)), + bodyType: isSupportedStream(sdkResponse.streamMetadata) + ? diagnostics.pipe(fromSdkStreamMetadata(sdkContext, sdkResponse.streamMetadata)) + : diagnostics.pipe(getResponseType(sdkContext, sdkResponse.type)), headers: diagnostics.pipe(fromSdkServiceResponseHeaders(sdkContext, sdkResponse.headers)), isErrorResponse: sdkResponse.type !== undefined && isErrorModel(sdkContext.program, sdkResponse.type.__raw!), @@ -737,6 +780,70 @@ export function fromSdkHttpOperationResponse( return diagnostics.wrap(retVar); } +function fromSdkStreamMetadata( + sdkContext: CSharpEmitterContext, + streamMetadata: SdkStreamMetadata, +): [InputStreamingType, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); + const originalType = streamMetadata.originalType; + const streamKind = getStreamKind(streamMetadata); + compilerAssert( + streamKind !== undefined, + "Stream metadata must have a supported stream kind before it is converted.", + ); + let terminalEventType: string | undefined; + let terminalEventValue: string | undefined; + + if (streamKind === "sse" && streamMetadata.streamType.__raw?.kind === "Union") { + const eventDefinitions = diagnostics.pipe( + unsafe_getEventDefinitions(sdkContext.program, streamMetadata.streamType.__raw as Union), + ); + const terminalDefinition = eventDefinitions.find((definition) => + isTerminalEvent(sdkContext.program, definition.root), + ); + if (terminalDefinition?.payloadType.kind === "String") { + terminalEventType = terminalDefinition.eventType; + terminalEventValue = terminalDefinition.payloadType.value; + } + } + + return diagnostics.wrap({ + kind: "streaming", + name: originalType.kind === "model" ? originalType.name : "Stream", + valueType: diagnostics.pipe(fromSdkType(sdkContext, streamMetadata.streamType)), + streamKind, + contentTypes: streamMetadata.contentTypes, + terminalEventType, + terminalEventValue, + crossLanguageDefinitionId: + originalType.kind === "model" ? originalType.crossLanguageDefinitionId : "", + }); +} + +function getStreamKind( + streamMetadata: SdkStreamMetadata | undefined, +): InputStreamingType["streamKind"] | undefined { + if (streamMetadata?.contentTypes.includes("application/jsonl")) { + return "jsonl"; + } + if (streamMetadata?.contentTypes.includes("text/event-stream")) { + return "sse"; + } + return undefined; +} + +function isSupportedStream( + streamMetadata: SdkStreamMetadata | undefined, +): streamMetadata is SdkStreamMetadata { + return getStreamKind(streamMetadata) !== undefined; +} + +function isJsonLinesStream( + streamMetadata: SdkStreamMetadata | undefined, +): streamMetadata is SdkStreamMetadata { + return getStreamKind(streamMetadata) === "jsonl"; +} + function fromSdkServiceResponseHeaders( sdkContext: CSharpEmitterContext, headers: SdkServiceResponseHeader[], 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 168a3da2809..9942fa9d5f2 100644 --- a/packages/http-client-csharp/emitter/src/type/input-type.ts +++ b/packages/http-client-csharp/emitter/src/type/input-type.ts @@ -79,6 +79,7 @@ export type InputType = | InputEnumType | InputEnumValueType | InputArrayType + | InputStreamingType | InputDictionaryType | InputNullableType; @@ -305,6 +306,17 @@ export interface InputArrayType extends InputTypeBase { crossLanguageDefinitionId: string; } +export interface InputStreamingType extends InputTypeBase { + kind: "streaming"; + name: string; + valueType: InputType; + streamKind: "jsonl" | "sse"; + contentTypes: string[]; + terminalEventType?: string; + terminalEventValue?: string; + crossLanguageDefinitionId: string; +} + export interface InputDictionaryType extends InputTypeBase { kind: "dict"; keyType: InputType; diff --git a/packages/http-client-csharp/emitter/test/Unit/operation-converter.test.ts b/packages/http-client-csharp/emitter/test/Unit/operation-converter.test.ts index 2bf4691df6c..c5d503bd45b 100644 --- a/packages/http-client-csharp/emitter/test/Unit/operation-converter.test.ts +++ b/packages/http-client-csharp/emitter/test/Unit/operation-converter.test.ts @@ -215,6 +215,95 @@ describe("Operation Converter", () => { }); describe("Operation response type conversion", () => { + it("preserves JSONL stream item types", async () => { + const program = await typeSpecCompile( + ` + model Info { + desc: string; + } + + @post op send(stream: JsonlStream): void; + op receive(): JsonlStream; + `, + runner, + ); + const context = createEmitterContext(program); + const sdkContext = await createCSharpSdkContext(context); + const [root] = createModel(sdkContext); + + const send = root.clients[0].methods.find((method) => method.name === "send"); + ok(send); + const sendParameter = send.parameters.find((parameter) => parameter.name === "stream"); + ok(sendParameter); + ok(sendParameter.type.kind === "streaming"); + ok(sendParameter.type.valueType.kind === "model"); + strictEqual(sendParameter.type.valueType.name, "Info"); + + const bodyParameter = send.operation.parameters.find( + (parameter) => parameter.kind === "body", + ); + ok(bodyParameter); + ok(bodyParameter.type.kind === "streaming"); + ok(bodyParameter.type.valueType.kind === "model"); + strictEqual(bodyParameter.type.valueType.name, "Info"); + + const receive = root.clients[0].methods.find((method) => method.name === "receive"); + ok(receive); + ok(receive.response.type?.kind === "streaming"); + ok(receive.response.type.valueType.kind === "model"); + strictEqual(receive.response.type.valueType.name, "Info"); + ok(receive.operation.responses[0].bodyType?.kind === "streaming"); + ok(receive.operation.responses[0].bodyType.valueType.kind === "model"); + strictEqual(receive.operation.responses[0].bodyType.valueType.name, "Info"); + strictEqual(receive.operation.bufferResponse, false); + }); + + it("preserves SSE event unions and terminal events", async () => { + const program = await typeSpecCompile( + ` + model ResponseCreated { + id: string; + } + + model ResponseDelta { + delta: string; + } + + @events + union ResponseEvents { + @Events.contentType("application/json") + responseCreated: ResponseCreated, + + @Events.contentType("application/json") + responseDelta: ResponseDelta, + + @Events.contentType("text/plain") + @terminalEvent + "[DONE]", + } + + op receive(): SSEStream; + `, + runner, + { IsSseNeeded: true }, + ); + const context = createEmitterContext(program); + const sdkContext = await createCSharpSdkContext(context); + const [root] = createModel(sdkContext); + + const receive = root.clients[0].methods.find((method) => method.name === "receive"); + ok(receive); + ok(receive.response.type?.kind === "streaming"); + strictEqual(receive.response.type.streamKind, "sse"); + ok(receive.response.type.valueType.kind === "union"); + strictEqual(receive.response.type.valueType.name, "ResponseEvents"); + strictEqual(receive.response.type.terminalEventType, undefined); + strictEqual(receive.response.type.terminalEventValue, "[DONE]"); + ok(receive.operation.responses[0].bodyType?.kind === "streaming"); + strictEqual(receive.operation.responses[0].bodyType.streamKind, "sse"); + strictEqual(receive.operation.bufferResponse, false); + }); + describe("With anonymous union enum response type", () => { it("should convert anonymous union enum response type to value type", async () => { const program = await typeSpecCompile( diff --git a/packages/http-client-csharp/emitter/test/Unit/utils/test-util.ts b/packages/http-client-csharp/emitter/test/Unit/utils/test-util.ts index 53ea0b15f77..59e17d91097 100644 --- a/packages/http-client-csharp/emitter/test/Unit/utils/test-util.ts +++ b/packages/http-client-csharp/emitter/test/Unit/utils/test-util.ts @@ -4,8 +4,11 @@ import { SdkTestLibrary } from "@azure-tools/typespec-client-generator-core/test import type { CompilerOptions, EmitContext, Program } from "@typespec/compiler"; import type { TestHost } from "@typespec/compiler/testing"; import { createTestHost } from "@typespec/compiler/testing"; +import { EventsTestLibrary } from "@typespec/events/testing"; import { HttpTestLibrary } from "@typespec/http/testing"; import { RestTestLibrary } from "@typespec/rest/testing"; +import { SSETestLibrary } from "@typespec/sse/testing"; +import { StreamsTestLibrary } from "@typespec/streams/testing"; import { VersioningTestLibrary } from "@typespec/versioning/testing"; import { XmlTestLibrary } from "@typespec/xml/testing"; import { LoggerLevel } from "../../../src/lib/logger-level.js"; @@ -18,6 +21,9 @@ export async function createEmitterTestHost(): Promise { libraries: [ RestTestLibrary, HttpTestLibrary, + EventsTestLibrary, + SSETestLibrary, + StreamsTestLibrary, VersioningTestLibrary, AzureCoreTestLibrary, SdkTestLibrary, @@ -45,6 +51,7 @@ export interface TypeSpecCompileOptions { AuthDecorator?: string; NoEmit?: boolean; IsVersionNeeded?: boolean; + IsSseNeeded?: boolean; } export async function typeSpecCompile( @@ -57,6 +64,7 @@ export async function typeSpecCompile( const needTCGC = options?.IsTCGCNeeded ?? false; const needXml = options?.IsXmlNeeded ?? false; const needVersion = options?.IsVersionNeeded ?? true; + const needSse = options?.IsSseNeeded ?? false; const authDecorator = options?.AuthDecorator ?? `@useAuth(ApiKeyAuth)`; const versions = `enum Versions { @@ -77,12 +85,16 @@ export async function typeSpecCompile( const fileContent = ` import "@typespec/rest"; import "@typespec/http"; + import "@typespec/http/streams"; + ${needSse ? 'import "@typespec/events";\nimport "@typespec/sse";' : ""} import "@typespec/versioning"; ${needXml ? 'import "@typespec/xml";' : ""} ${needAzureCore ? 'import "@azure-tools/typespec-azure-core";' : ""} ${needTCGC ? 'import "@azure-tools/typespec-client-generator-core";' : ""} using TypeSpec.Rest; using TypeSpec.Http; + using TypeSpec.Http.Streams; + ${needSse ? "using TypeSpec.Events;\nusing TypeSpec.SSE;" : ""} using TypeSpec.Versioning; ${needXml ? "using TypeSpec.Xml;" : ""} ${needAzureCore ? "using Azure.Core;\nusing Azure.Core.Traits;" : ""} diff --git a/packages/http-client-csharp/eng/scripts/Spector-Helper.psm1 b/packages/http-client-csharp/eng/scripts/Spector-Helper.psm1 index 4cc8b7db67b..addc61d373f 100644 --- a/packages/http-client-csharp/eng/scripts/Spector-Helper.psm1 +++ b/packages/http-client-csharp/eng/scripts/Spector-Helper.psm1 @@ -5,7 +5,6 @@ $failingSpecs = @( Join-Path 'http' 'type' 'model' 'templated' Join-Path 'http' 'type' 'file' Join-Path 'http' 'client' 'naming' # pending until https://github.com/microsoft/typespec/issues/5653 is resolved - Join-Path 'http' 'streaming' 'jsonl' Join-Path 'http' 'type' 'union' 'discriminated' # pending design Join-Path 'http' 'authentication' 'noauth' 'union' # pending design ) diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/ClientProvider.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/ClientProvider.cs index b3eec2a1aa7..edcdbc4ab21 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/ClientProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/ClientProvider.cs @@ -95,6 +95,18 @@ protected override FormattableString BuildDescription() return $"The {Name} sub-client."; } + protected override SuppressionStatement[] BuildDisabledFileWarnings() + => _inputClient.Methods.Any(method => + method.Operation.Responses.Any(response => response.BodyType is InputStreamingType)) + ? + [ + new SuppressionStatement( + null, + Literal(ScmMethodProviderCollection.StreamingResultDiagnosticId), + ScmMethodProviderCollection.StreamingResultSuppressionJustification) + ] + : []; + // for mocking #pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. protected ClientProvider() diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/JsonLinesBinaryContentDefinition.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/JsonLinesBinaryContentDefinition.cs new file mode 100644 index 00000000000..2ee83aff02f --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/JsonLinesBinaryContentDefinition.cs @@ -0,0 +1,324 @@ +// 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.Text.Json; +using System.Threading.Tasks; +using Microsoft.TypeSpec.Generator.ClientModel.Snippets; +using Microsoft.TypeSpec.Generator.Expressions; +using Microsoft.TypeSpec.Generator.Primitives; +using Microsoft.TypeSpec.Generator.Providers; +using Microsoft.TypeSpec.Generator.Snippets; +using Microsoft.TypeSpec.Generator.Statements; +using static Microsoft.TypeSpec.Generator.Snippets.Snippet; + +namespace Microsoft.TypeSpec.Generator.ClientModel.Providers +{ + internal sealed class JsonLinesBinaryContentDefinition : TypeProvider + { + private sealed class JsonLinesBinaryContentTemplate { } + + private readonly CSharpType _t; + private readonly CSharpType _valuesType; + private readonly FieldProvider _valuesField; + private readonly FieldProvider _newLineField; + private readonly FieldProvider _spaceField; + private readonly ParameterProvider _streamParameter = new("stream", FormattableStringHelpers.Empty, typeof(Stream)); + + public JsonLinesBinaryContentDefinition() + { + _t = typeof(JsonLinesBinaryContentTemplate<>).GetGenericArguments()[0]; + _valuesType = new CSharpType(typeof(IAsyncEnumerable<>), _t); + _valuesField = new FieldProvider( + FieldModifiers.Private | FieldModifiers.ReadOnly, + _valuesType, + "_values", + this); + _newLineField = new FieldProvider( + FieldModifiers.Private | FieldModifiers.Static | FieldModifiers.ReadOnly, + typeof(byte[]), + "_newLine", + this, + initializationValue: New.Array(typeof(byte), false, false, [Literal(10)])); + _spaceField = new FieldProvider( + FieldModifiers.Private | FieldModifiers.Static | FieldModifiers.ReadOnly, + typeof(byte[]), + "_space", + this, + initializationValue: New.Array(typeof(byte), false, false, [Literal(32)])); + } + + protected override CSharpType[] GetTypeArguments() => [_t]; + + protected override string BuildName() => "JsonLinesBinaryContent"; + + protected override string BuildNamespace() => ScmCodeModelGenerator.Instance.TypeFactory.PrimaryNamespace; + + protected override TypeSignatureModifiers BuildDeclarationModifiers() + => TypeSignatureModifiers.Internal | TypeSignatureModifiers.Sealed | TypeSignatureModifiers.Class; + + protected override string BuildRelativeFilePath() + => Path.Combine("src", "Generated", "Internal", $"{Name}.cs"); + + protected override CSharpType BuildBaseType() + => ScmCodeModelGenerator.Instance.TypeFactory.RequestContentApi.RequestContentType; + + protected override FieldProvider[] BuildFields() => [_valuesField, _newLineField, _spaceField]; + + protected override ConstructorProvider[] BuildConstructors() + { + var values = new ParameterProvider("values", FormattableStringHelpers.Empty, _valuesType); + return + [ + new ConstructorProvider( + new ConstructorSignature(Type, null, MethodSignatureModifiers.Public, [values]), + new MethodBodyStatement[] { _valuesField.Assign(values).Terminate() }, + this) + ]; + } + + protected override MethodProvider[] BuildMethods() + => + [ + BuildWriteToAsyncMethod(), + BuildWriteJsonAsyncMethod(), + BuildWriteToMethod(), + BuildTryComputeLengthMethod(), + BuildDisposeMethod(), + BuildDeserializeModelMethod(), + BuildDeserializeValueMethod() + ]; + + private MethodProvider BuildWriteToAsyncMethod() + { + var cancellationToken = KnownParameters.CancellationTokenParameter; + var values = _valuesField.AsValueExpression.Invoke( + "WithCancellation", + [cancellationToken], + null, + false, + false, + typeof(TaskAsyncEnumerableExtensions)); + var loop = new ForEachStatement(_t, "value", values, true, out var value); + ValueExpression stream = _streamParameter; + var wireOptions = Static(ScmCodeModelGenerator.Instance.ModelSerializationExtensionsDefinition.Type) + .Property(ScmCodeModelGenerator.Instance.ModelSerializationExtensionsDefinition.WireOptionsField.Name); + var firstDeclaration = Declare("first", typeof(bool), True, out var first); + loop.Add(new IfStatement(first.Equal(False)) + { + stream.Invoke( + nameof(Stream.WriteAsync), + [_newLineField, Literal(0), Literal(1), cancellationToken], + null, + true).Terminate() + }); + loop.Add(UsingDeclare( + "buffer", + typeof(MemoryStream), + New.Instance(), + out var buffer)); + loop.Add(UsingDeclare( + "writer", + typeof(Utf8JsonWriter), + New.Instance(buffer), + out var writer)); + loop.Add(writer.As().WriteObjectValue(value.As(_t), wireOptions)); + loop.Add(writer.As().FlushAsync(cancellationToken).Terminate()); + loop.Add(Declare("bytes", typeof(byte[]), buffer.As().ToArray(), out var bytes)); + loop.Add(Static(Type).Invoke( + "WriteJsonAsync", + [stream, bytes, cancellationToken], + null, + true).Terminate()); + loop.Add(first.Assign(False).Terminate()); + + var signature = new MethodSignature( + nameof(BinaryContent.WriteToAsync), + null, + MethodSignatureModifiers.Public | MethodSignatureModifiers.Override | MethodSignatureModifiers.Async, + typeof(Task), + null, + [_streamParameter, cancellationToken]); + return new MethodProvider(signature, new MethodBodyStatement[] { firstDeclaration, loop }, this); + } + + private MethodProvider BuildWriteJsonAsyncMethod() + { + var bytesParameter = new ParameterProvider("bytes", FormattableStringHelpers.Empty, typeof(byte[])); + var cancellationToken = KnownParameters.CancellationTokenParameter; + ValueExpression stream = _streamParameter; + ValueExpression bytes = bytesParameter; + var indexableBytes = new IndexableExpression(bytes); + var inStringDeclaration = Declare("inString", typeof(bool), False, out var inString); + var escapedDeclaration = Declare("escaped", typeof(bool), False, out var escaped); + var startDeclaration = Declare("start", typeof(int), Literal(0), out var start); + var indexDeclaration = Declare("i", typeof(int), Literal(0), out var index); + var loop = new ForStatement(null, index.LessThan(bytes.Property("Length")), index.Increment()); + loop.Add(Declare("current", typeof(byte), indexableBytes[index], out var current)); + loop.Add(new IfElseStatement( + new IfStatement(inString) + { + new IfElseStatement( + new IfStatement(escaped) + { + escaped.Assign(False).Terminate() + }, + new IfElseStatement( + new IfStatement(current.Equal(Literal('\\'))) + { + escaped.Assign(True).Terminate() + }, + new IfStatement(current.Equal(Literal('"'))) + { + inString.Assign(False).Terminate() + })) + }, + new IfElseStatement( + new IfStatement(current.Equal(Literal('"'))) + { + inString.Assign(True).Terminate() + }, + new IfStatement(current.Equal(Literal(':'))) + { + stream.Invoke( + nameof(Stream.WriteAsync), + [ + bytes, + start, + new BinaryOperatorExpression( + "+", + new BinaryOperatorExpression("-", index, start), + Literal(1)), + cancellationToken + ], + null, + true).Terminate(), + stream.Invoke( + nameof(Stream.WriteAsync), + [_spaceField, Literal(0), Literal(1), cancellationToken], + null, + true).Terminate(), + start.Assign(new BinaryOperatorExpression("+", index, Literal(1))).Terminate() + }))); + + var signature = new MethodSignature( + "WriteJsonAsync", + null, + MethodSignatureModifiers.Private | MethodSignatureModifiers.Static | MethodSignatureModifiers.Async, + typeof(Task), + null, + [_streamParameter, bytesParameter, cancellationToken]); + return new MethodProvider( + signature, + new MethodBodyStatement[] + { + inStringDeclaration, + escapedDeclaration, + startDeclaration, + indexDeclaration, + loop, + stream.Invoke( + nameof(Stream.WriteAsync), + [ + bytes, + start, + new BinaryOperatorExpression("-", bytes.Property("Length"), start), + cancellationToken + ], + null, + true).Terminate() + }, + this); + } + + private MethodProvider BuildWriteToMethod() + { + var signature = new MethodSignature( + nameof(BinaryContent.WriteTo), + null, + MethodSignatureModifiers.Public | MethodSignatureModifiers.Override, + null, + null, + [_streamParameter, KnownParameters.CancellationTokenParameter]); + return new MethodProvider( + signature, + new MethodBodyStatement[] { Throw(New.NotSupportedException(Literal("JSON Lines content can only be written asynchronously."))) }, + this); + } + + private MethodProvider BuildTryComputeLengthMethod() + { + var length = new ParameterProvider("length", FormattableStringHelpers.Empty, typeof(long), isOut: true); + var signature = new MethodSignature( + nameof(BinaryContent.TryComputeLength), + null, + MethodSignatureModifiers.Public | MethodSignatureModifiers.Override, + typeof(bool), + null, + [length]); + return new MethodProvider( + signature, + new MethodBodyStatement[] { length.Assign(Literal(0)).Terminate(), Return(False) }, + this); + } + + private MethodProvider BuildDisposeMethod() + { + var signature = new MethodSignature( + nameof(IDisposable.Dispose), + null, + MethodSignatureModifiers.Public | MethodSignatureModifiers.Override, + null, + null, + []); + return new MethodProvider(signature, Array.Empty(), this); + } + + private MethodProvider BuildDeserializeModelMethod() + { + var data = new ParameterProvider("data", FormattableStringHelpers.Empty, typeof(BinaryData)); + var wireOptions = Static(ScmCodeModelGenerator.Instance.ModelSerializationExtensionsDefinition.Type) + .Property(ScmCodeModelGenerator.Instance.ModelSerializationExtensionsDefinition.WireOptionsField.Name); + var signature = new MethodSignature( + "DeserializeModel", + null, + MethodSignatureModifiers.Public | MethodSignatureModifiers.Static, + _t, + null, + [data]); + return new MethodProvider( + signature, + new MethodBodyStatement[] + { + Return(Static(typeof(ModelReaderWriter)).Invoke( + nameof(ModelReaderWriter.Read), + [data, wireOptions], + [_t])) + }, + this); + } + + private MethodProvider BuildDeserializeValueMethod() + { + var data = new ParameterProvider("data", FormattableStringHelpers.Empty, typeof(BinaryData)); + var signature = new MethodSignature( + "DeserializeValue", + null, + MethodSignatureModifiers.Public | MethodSignatureModifiers.Static, + _t, + null, + [data]); + return new MethodProvider( + signature, + new MethodBodyStatement[] + { + Return(data.As().ToObjectFromJson(_t)) + }, + this); + } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/ScmMethodProviderCollection.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/ScmMethodProviderCollection.cs index 2ccade53ab7..3376d0ed303 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/ScmMethodProviderCollection.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/ScmMethodProviderCollection.cs @@ -2,12 +2,14 @@ // Licensed under the MIT License. using System; +using System.ClientModel; using System.ClientModel.Primitives; using System.Collections; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.IO; using System.Linq; +using System.Net.ServerSentEvents; using System.Text.Json; using System.Threading.Tasks; using System.Xml.Linq; @@ -32,6 +34,9 @@ public class ScmMethodProviderCollection : IReadOnlyList private static readonly CancellationTokenExtensionsDefinition _cancellationTokenExtensionsDefinition = new(); private const string JsonMediaType = "application/json"; private const string XmlMediaType = "application/xml"; + internal const string StreamingResultDiagnosticId = "SCME0005"; + internal const string StreamingResultSuppressionJustification = + "Type is for evaluation purposes only and is subject to change or removal in future updates."; private IList ProtocolMethodParameters => _protocolMethodParameters ??= RestClientProvider.GetMethodParameters(ServiceMethod, ScmMethodKind.Protocol, Client); private IList? _protocolMethodParameters; @@ -40,6 +45,7 @@ public class ScmMethodProviderCollection : IReadOnlyList private readonly InputPagingServiceMethod? _pagingServiceMethod; private IReadOnlyList? _methods; private readonly bool _generateConvenienceMethod; + private readonly Lazy _streamingResponse; private ClientProvider Client { get; } protected InputServiceMethod ServiceMethod { get; } @@ -74,6 +80,7 @@ public ScmMethodProviderCollection(InputServiceMethod serviceMethod, TypeProvide Client = enclosingType as ClientProvider ?? throw new InvalidOperationException("Scm methods can only be built for client types."); _createRequestMethod = Client.RestClient.GetCreateRequestMethod(ServiceMethod.Operation); _generateConvenienceMethod = ServiceMethod.Operation.GenerateConvenienceMethod; + _streamingResponse = new(GetStreamingResponseCore); if (serviceMethod is InputPagingServiceMethod pagingServiceMethod) { @@ -85,8 +92,22 @@ protected virtual IReadOnlyList BuildMethods() { bool shouldMakeParametersRequired = ShouldMakeProtocolMethodParametersRequired(); - var syncProtocol = BuildProtocolMethod(_createRequestMethod, false, shouldMakeParametersRequired); var asyncProtocol = BuildProtocolMethod(_createRequestMethod, true, shouldMakeParametersRequired); + if (_streamingResponse.Value != null) + { + if (_generateConvenienceMethod && ProtocolMethodExists(asyncProtocol)) + { + return + [ + asyncProtocol, + BuildConvenienceMethod(asyncProtocol, true) + ]; + } + + return [asyncProtocol]; + } + + var syncProtocol = BuildProtocolMethod(_createRequestMethod, false, shouldMakeParametersRequired); if (_generateConvenienceMethod) { @@ -103,7 +124,7 @@ protected virtual IReadOnlyList BuildMethods() } else { - if (ProtocolMethodExists(syncProtocol)) + if (!HasStreamingRequestOrResponse() && ProtocolMethodExists(syncProtocol)) { methods.Add(BuildConvenienceMethod(syncProtocol, false)); } @@ -201,6 +222,7 @@ private ScmMethodProvider BuildConvenienceMethod(MethodProvider protocolMethod, // Recompute the response body type so we can branch the body accordingly. GetResponseType(ServiceMethod.Operation.Responses, true, isAsync, out var responseBodyType); + var streamingResponse = _streamingResponse.Value; MethodBodyStatement[] methodBody; TypeProvider? collection = null; @@ -218,6 +240,32 @@ .. GetPagingMethodBody( [.. protocolMethod.Signature.Parameters]) ]; } + else if (streamingResponse != null) + { + var conversionStatements = GetStackVariablesForProtocolParamConversion( + convenienceBodyParameters, + out var declarations); + var protocolArguments = GetProtocolMethodArguments(declarations); + var requestOptions = protocolArguments[^1]; + methodBody = + [ + .. conversionStatements, + UsingDeclare( + "message", + ScmCodeModelGenerator.Instance.TypeFactory.HttpMessageApi.HttpMessageType, + This.Invoke(_createRequestMethod.Signature, protocolArguments), + out var message), + message.ToApi().BufferResponse().Assign(False).Terminate(), + Return(CreateStreamingResultExpression( + streamingResponse, + client.PipelineProperty.ToApi().ProcessMessage( + message, + requestOptions.ToApi(), + true), + signatureParameters[^1], + useConvenienceType: true)) + ]; + } else if (responseBodyType is null) { methodBody = @@ -320,7 +368,22 @@ void AddUtf8JsonContent(CSharpType serializationType, ValueExpression value) if (parameter.Location == ParameterLocation.Body) { - if (parameter.Type.IsReadOnlyMemory) + if (parameter.Type.IsIAsyncEnumerableOfT) + { + var contentType = new JsonLinesBinaryContentDefinition().Type.MakeGenericType([parameter.Type.Arguments[0]]); + var inputParameter = ServiceMethod.Parameters.FirstOrDefault(p => + p.Location == InputRequestLocation.Body && + string.Equals(p.Name, parameter.Name, StringComparison.OrdinalIgnoreCase)); + ValueExpression contentExpression = inputParameter is { IsRequired: false } + ? new TernaryConditionalExpression( + parameter.Equal(Null), + Null, + New.Instance(contentType, parameter)) + : New.Instance(contentType, parameter); + statements.Add(UsingDeclare("content", requestContentType, contentExpression, out var content)); + declarations["content"] = content; + } + else if (parameter.Type.IsReadOnlyMemory) { statements.Add(UsingDeclare("content", requestContentType, BinaryContentHelperSnippets.FromEnumerable(parameter.Property("Span")), out var content)); declarations["content"] = content; @@ -905,14 +968,25 @@ private IReadOnlyList GetProtocolMethodArguments(Dictionary 1 } && nonBodyProperties?.ContainsKey(protocolParam.Name) != true) + if (protocolParam.InputParameter?.MethodParameterSegments is { Count: > 1 } + && nonBodyProperties?.ContainsKey(protocolParam.Name) != true) { // The MethodParameterSegments represents a path (e.g., ['Params', 'foo'] means params.foo) var rootParameterName = protocolParam.InputParameter.MethodParameterSegments[0].Name; - if (!convenienceParamsMap.TryGetValue(rootParameterName, out var convenienceParam) || - // Body parameters are handled separately - convenienceParam.Location == ParameterLocation.Body) + if (!convenienceParamsMap.TryGetValue(rootParameterName, out var convenienceParam)) + { + continue; + } + + // Body parameters are handled separately. + if (convenienceParam.Location == ParameterLocation.Body) { + if (protocolParam.IsContentParameter + && convenienceParam.Type.IsIAsyncEnumerableOfT + && declarations.TryGetValue("content", out var streamingContent)) + { + AddArgument(protocolParam, streamingContent); + } continue; } @@ -999,7 +1073,7 @@ private IReadOnlyList GetProtocolMethodArguments(Dictionary().BufferResponse().Assign(False).Terminate() }, + Return(streamingResponse != null + ? CreateStreamingResultExpression( + streamingResponse, + client.PipelineProperty.ToApi().ProcessMessage( + message, + requestOptionsParameter.ToApi(), + isAsync), + cancellationToken: null, + useConvenienceType: false) + : ScmCodeModelGenerator.Instance.TypeFactory.ClientResponseApi.ToExpression().FromResponse(client + .PipelineProperty.ToApi().ProcessMessage( + message, + requestOptionsParameter.ToApi(), + isAsync))) ]; } @@ -1518,6 +1607,14 @@ private CSharpType GetResponseType(IReadOnlyList respons : ScmCodeModelGenerator.Instance.TypeFactory.ClientResponseApi.ClientCollectionResponseType; } + var streamingResponse = responses.FirstOrDefault(r => !r.IsErrorResponse)?.BodyType as InputStreamingType; + if (streamingResponse != null) + { + responseBodyType = GetRawStreamingItemType(streamingResponse); + var resultType = AsyncStreamingClientResultSnippets.Of(responseBodyType); + return new CSharpType(typeof(Task<>), resultType); + } + var returnType = ScmCodeModelGenerator.Instance.TypeFactory.ClientResponseApi.ClientResponseType; return isAsync ? new CSharpType(typeof(Task<>), returnType) : returnType; @@ -1526,6 +1623,13 @@ private CSharpType GetResponseType(IReadOnlyList respons private CSharpType GetConvenienceReturnType(IReadOnlyList responses, bool isAsync, out CSharpType? responseBodyType) { var response = responses.FirstOrDefault(r => !r.IsErrorResponse); + if (response?.BodyType is InputStreamingType streamingType) + { + responseBodyType = GetConvenienceStreamingItemType(streamingType); + var resultType = AsyncStreamingClientResultSnippets.Of(responseBodyType); + return isAsync ? new CSharpType(typeof(Task<>), resultType) : resultType; + } + responseBodyType = GetResponseBodyType(response?.BodyType); if (_pagingServiceMethod != null) @@ -1551,6 +1655,176 @@ private CSharpType GetConvenienceReturnType(IReadOnlyList), returnType) : returnType; } + private static CSharpType GetRawStreamingItemType(InputStreamingType streamingType) + { + var binaryDataType = CreateRequiredCSharpType( + InputPrimitiveType.Any, + streamingType, + "Unable to resolve the raw streaming item type."); + return streamingType.StreamKind == InputStreamingType.SseStreamKind + ? new CSharpType(typeof(SseItem<>), binaryDataType) + : binaryDataType; + } + + private static CSharpType GetConvenienceStreamingItemType(InputStreamingType streamingType) + { + if (streamingType.StreamKind != InputStreamingType.SseStreamKind) + { + return CreateRequiredCSharpType( + streamingType.ValueType, + streamingType, + "Unable to resolve JSON Lines stream item type."); + } + + var payloadType = GetSseConveniencePayloadType(streamingType); + var payloadCSharpType = payloadType is null + ? CreateRequiredCSharpType( + InputPrimitiveType.Any, + streamingType, + "Unable to resolve the raw SSE stream item type.") + : CreateRequiredCSharpType( + payloadType, + streamingType, + "Unable to resolve SSE stream item type."); + return new CSharpType(typeof(SseItem<>), payloadCSharpType); + } + + private static InputType? GetSseConveniencePayloadType(InputStreamingType streamingType) + { + if (streamingType.ValueType is not InputUnionType unionType) + { + return streamingType.ValueType; + } + + var payloadTypes = unionType.VariantTypes + .Where(type => type is not InputLiteralType literal || + !Equals(literal.Value, streamingType.TerminalEventValue)) + .ToArray(); + if (payloadTypes.Length == 0) + { + return null; + } + + var firstCSharpType = ScmCodeModelGenerator.Instance.TypeFactory.CreateCSharpType(payloadTypes[0]); + return firstCSharpType != null && + payloadTypes.Skip(1).All(type => + firstCSharpType.Equals( + ScmCodeModelGenerator.Instance.TypeFactory.CreateCSharpType(type))) + ? payloadTypes[0] + : null; + } + + private static ValueExpression CreateStreamingResultExpression( + InputStreamingType streamingType, + ValueExpression response, + ValueExpression? cancellationToken, + bool useConvenienceType) + { + if (streamingType.StreamKind == InputStreamingType.SseStreamKind) + { + var terminalPredicate = CreateSseTerminalPredicate(streamingType); + var payloadType = useConvenienceType + ? GetSseConveniencePayloadType(streamingType) + : null; + if (payloadType != null) + { + var payloadCSharpType = CreateRequiredCSharpType( + payloadType, + streamingType, + "Unable to resolve SSE stream item type."); + var parser = CreateSseParser(payloadType, payloadCSharpType); + var arguments = cancellationToken != null + ? new ValueExpression[] { response, parser, terminalPredicate, cancellationToken } + : [response, parser, terminalPredicate]; + return AsyncStreamingClientResultSnippets.CreateSse( + response, + arguments[1..], + payloadCSharpType); + } + + var rawArguments = cancellationToken != null + ? new ValueExpression[] { response, terminalPredicate, cancellationToken } + : terminalPredicate == Null + ? [response] + : [response, terminalPredicate]; + return AsyncStreamingClientResultSnippets.CreateSse(response, rawArguments[1..]); + } + + if (!useConvenienceType) + { + return AsyncStreamingClientResultSnippets.CreateJsonLines( + response, + cancellationToken != null + ? [cancellationToken] + : []); + } + + var itemType = CreateRequiredCSharpType( + streamingType.ValueType, + streamingType, + "Unable to resolve JSON Lines stream item type."); + var jsonLinesContentType = new JsonLinesBinaryContentDefinition().Type.MakeGenericType([itemType]); + var deserializeMethod = streamingType.ValueType is InputModelType + ? "DeserializeModel" + : "DeserializeValue"; + var jsonLinesArguments = cancellationToken != null + ? new ValueExpression[] + { + response, + Static(jsonLinesContentType).Property(deserializeMethod), + cancellationToken + } + : + [ + response, + Static(jsonLinesContentType).Property(deserializeMethod) + ]; + return AsyncStreamingClientResultSnippets.CreateJsonLines( + response, + jsonLinesArguments[1..], + itemType); + } + + private static ValueExpression CreateSseTerminalPredicate(InputStreamingType streamingType) + { + if (streamingType.TerminalEventValue is null) + { + return Null; + } + + var sseItemType = new CSharpType(typeof(SseItem<>), typeof(BinaryData)); + var item = new VariableExpression(sseItemType, "item"); + ValueExpression isTerminal = item.Property("Data") + .Invoke("ToString") + .Equal(Literal(streamingType.TerminalEventValue)); + if (streamingType.TerminalEventType != null) + { + isTerminal = item.Property("EventType") + .Equal(Literal(streamingType.TerminalEventType)) + .And(isTerminal); + } + return new FuncExpression([item.Declaration], isTerminal); + } + + private static ValueExpression CreateSseParser( + InputType payloadType, + CSharpType payloadCSharpType) + { + var eventType = new VariableExpression(typeof(string), "_"); + var data = new VariableExpression(typeof(ReadOnlySpan), "data"); + var binaryData = Static(typeof(BinaryData)).Invoke( + "FromBytes", + [data.Invoke("ToArray")]); + var helperType = new JsonLinesBinaryContentDefinition().Type.MakeGenericType( + [payloadCSharpType]); + var deserializeMethod = payloadType is InputModelType + ? "DeserializeModel" + : "DeserializeValue"; + return new FuncExpression( + [eventType.Declaration, data.Declaration], + Static(helperType).Invoke(deserializeMethod, [binaryData])); + } + private CSharpType? GetResponseBodyType(InputType? responseType) { if (responseType is null) @@ -1597,6 +1871,33 @@ private CSharpType GetConvenienceReturnType(IReadOnlyList ServiceMethod.Operation.Responses + .FirstOrDefault(response => !response.IsErrorResponse)?.BodyType as InputStreamingType; + + private bool HasStreamingRequestOrResponse() + => _streamingResponse.Value != null || + ServiceMethod.Parameters.Any(parameter => parameter.Type is InputStreamingType); + private bool ShouldMakeProtocolMethodParametersRequired() { var convenienceMethodParameterCount = ConvenienceMethodParameters.Count; diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/ScmOutputLibrary.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/ScmOutputLibrary.cs index e7d755c0239..a8294950def 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/ScmOutputLibrary.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/ScmOutputLibrary.cs @@ -98,6 +98,7 @@ protected override TypeProvider[] BuildTypeProviders() new ErrorResultDefinition(), new ClientUriBuilderDefinition(), new Utf8JsonBinaryContentDefinition(), + new JsonLinesBinaryContentDefinition(), new BinaryContentHelperDefinition(), ScmCodeModelGenerator.Instance.ClientPipelineExtensionsDefinition, new CancellationTokenExtensionsDefinition(), diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/ScmTypeFactory.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/ScmTypeFactory.cs index 15596c96918..129af4c4f72 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/ScmTypeFactory.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/ScmTypeFactory.cs @@ -129,6 +129,9 @@ private static void PopulateRootOutputModelsFromTypeRecursive(InputType? type, H case InputNullableType nullableType: PopulateRootOutputModelsFromTypeRecursive(nullableType.Type, targetSet, visited); break; + case InputStreamingType streamingType: + PopulateRootOutputModelsFromTypeRecursive(streamingType.ValueType, targetSet, visited); + break; case InputUnionType unionType: foreach (var variantType in unionType.VariantTypes) { diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Snippets/AsyncStreamingClientResultSnippets.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Snippets/AsyncStreamingClientResultSnippets.cs new file mode 100644 index 00000000000..c2421a49309 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Snippets/AsyncStreamingClientResultSnippets.cs @@ -0,0 +1,37 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System.ClientModel; +using System.Collections.Generic; +using Microsoft.TypeSpec.Generator.Expressions; +using Microsoft.TypeSpec.Generator.Primitives; +using static Microsoft.TypeSpec.Generator.Snippets.Snippet; + +namespace Microsoft.TypeSpec.Generator.ClientModel.Snippets +{ +#pragma warning disable SCME0005 // Type is for evaluation purposes only and is subject to change or removal in future updates. + internal static class AsyncStreamingClientResultSnippets + { + public static CSharpType Of(CSharpType itemType) + => new(typeof(AsyncStreamingClientResult<>), itemType); + + public static ValueExpression CreateSse( + ValueExpression response, + IReadOnlyList arguments, + CSharpType? payloadType = null) + => Static(typeof(AsyncStreamingClientResult)).Invoke( + "CreateSse", + [response, .. arguments], + payloadType is null ? [] : [payloadType]); + + public static ValueExpression CreateJsonLines( + ValueExpression response, + IReadOnlyList arguments, + CSharpType? itemType = null) + => Static(typeof(AsyncStreamingClientResult)).Invoke( + "CreateJsonLines", + [response, .. arguments], + itemType is null ? [] : [itemType]); + } +#pragma warning restore SCME0005 +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Utilities/DiagnosticCodes.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Utilities/DiagnosticCodes.cs index 0e2c7d48fa6..cfe1f392c88 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Utilities/DiagnosticCodes.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Utilities/DiagnosticCodes.cs @@ -10,5 +10,6 @@ internal static class DiagnosticCodes public const string NoMatchingItemsProperty = "no-matching-items-property"; public const string UnsupportedSerialization = "unsupported-serialization"; public const string UnsupportedFrameworkType = "unsupported-framework-type"; + public const string UnsupportedStreamingType = "unsupported-streaming-type"; } } diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestMultipartClient_UploadMethods_OptionalBody.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestMultipartClient_UploadMethods_OptionalBody.cs index 2ead02254cf..7fdbf8b8979 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestMultipartClient_UploadMethods_OptionalBody.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestMultipartClient_UploadMethods_OptionalBody.cs @@ -13,13 +13,13 @@ namespace Sample { public partial class MultipartClient { - public virtual global::System.ClientModel.ClientResult Upload(string contentType, global::System.ClientModel.BinaryContent content, global::System.ClientModel.Primitives.RequestOptions options = null) + public virtual global::System.ClientModel.ClientResult Upload(global::System.ClientModel.BinaryContent content, string contentType, global::System.ClientModel.Primitives.RequestOptions options = null) { using global::System.ClientModel.Primitives.PipelineMessage message = this.CreateUploadRequest(content, contentType, options); return global::System.ClientModel.ClientResult.FromResponse(Pipeline.ProcessMessage(message, options)); } - public virtual async global::System.Threading.Tasks.Task UploadAsync(global::System.ClientModel.BinaryContent content, string contentType, global::System.ClientModel.Primitives.RequestOptions options = null) + public virtual async global::System.Threading.Tasks.Task UploadAsync(string contentType, global::System.ClientModel.BinaryContent content, global::System.ClientModel.Primitives.RequestOptions options = null) { using global::System.ClientModel.Primitives.PipelineMessage message = this.CreateUploadRequest(content, contentType, options); return global::System.ClientModel.ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false)); diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ScmMethodProviderCollectionTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ScmMethodProviderCollectionTests.cs index 4ef1a0610f3..fca2d661e4e 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ScmMethodProviderCollectionTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ScmMethodProviderCollectionTests.cs @@ -6,6 +6,7 @@ using System.ClientModel.Primitives; using System.Collections.Generic; using System.Linq; +using System.Net.ServerSentEvents; using System.Threading; using System.Threading.Tasks; using Microsoft.CodeAnalysis; @@ -20,6 +21,7 @@ namespace Microsoft.TypeSpec.Generator.ClientModel.Tests.Providers { +#pragma warning disable SCME0005 // Type is for evaluation purposes only and is subject to change or removal in future updates. internal class ScmMethodProviderCollectionTests { private static readonly InputModelType _spreadModel = InputFactory.Model( @@ -30,6 +32,271 @@ internal class ScmMethodProviderCollectionTests InputFactory.Property("p2", InputPrimitiveType.String, isRequired: true), ]); + [Test] + public void JsonLinesRequestGeneratesAsyncStreamingConvenienceMethod() + { + var itemType = InputFactory.Model( + "Info", + properties: [InputFactory.Property("desc", InputPrimitiveType.String, isRequired: true)]); + var streamType = new InputStreamingType( + "JsonlStream", + "Streaming.Jsonl.JsonlStream", + itemType, + ["application/jsonl"]); + var operation = InputFactory.Operation( + "Send", + parameters: [InputFactory.BodyParameter("stream", streamType, isRequired: true)], + responses: [InputFactory.OperationResponse([204])], + requestMediaTypes: ["application/jsonl"], + httpMethod: "POST"); + var serviceMethod = InputFactory.BasicServiceMethod( + "Send", + operation, + parameters: + [ + InputFactory.MethodParameter( + "stream", + streamType, + location: InputRequestLocation.Body, + isRequired: true) + ]); + var inputClient = InputFactory.Client("TestClient", methods: [serviceMethod]); + + MockHelpers.LoadMockGenerator(inputModels: () => [itemType], clients: () => [inputClient]); + var client = ScmCodeModelGenerator.Instance.TypeFactory.CreateClient(inputClient); + Assert.IsNotNull(client); + + var methodCollection = new ScmMethodProviderCollection(serviceMethod, client!); + Assert.AreEqual(3, methodCollection.Count); + Assert.IsFalse(methodCollection.Any(method => + method.Signature.Name == "Send" && + method.Signature.Parameters.All(parameter => parameter.Name != "content"))); + + var convenienceMethod = methodCollection.Single(method => + method.Signature.Name == "SendAsync" && + method.Signature.Parameters.All(parameter => parameter.Name != "content")); + Assert.IsTrue(convenienceMethod.Signature.Parameters[0].Type.IsIAsyncEnumerableOfT); + StringAssert.Contains( + "using global::System.ClientModel.BinaryContent content = new global::Sample.JsonLinesBinaryContent(stream);", + convenienceMethod.BodyStatements!.ToDisplayString()); + StringAssert.Contains( + "return await this.SendAsync(content, cancellationToken.ToRequestOptions()).ConfigureAwait(false);", + convenienceMethod.BodyStatements!.ToDisplayString()); + } + + [Test] + public void JsonLinesResponseGeneratesUnbufferedAsyncStreamingResult() + { + var itemType = InputFactory.Model( + "Info", + properties: [InputFactory.Property("desc", InputPrimitiveType.String, isRequired: true)]); + var streamType = new InputStreamingType( + "JsonlStream", + "Streaming.Jsonl.JsonlStream", + itemType, + ["application/jsonl"]); + var operation = InputFactory.Operation( + "Receive", + responses: [InputFactory.OperationResponse([200], streamType)], + bufferResponse: false); + var serviceMethod = InputFactory.BasicServiceMethod( + "Receive", + operation, + response: InputFactory.ServiceMethodResponse(streamType, null)); + var inputClient = InputFactory.Client("TestClient", methods: [serviceMethod]); + + MockHelpers.LoadMockGenerator(inputModels: () => [itemType], clients: () => [inputClient]); + var client = ScmCodeModelGenerator.Instance.TypeFactory.CreateClient(inputClient); + Assert.IsNotNull(client); + StringAssert.Contains( + ScmMethodProviderCollection.StreamingResultDiagnosticId, + client!.DisabledFileWarnings.Single().DisableStatement.ToDisplayString()); + + var methodCollection = new ScmMethodProviderCollection(serviceMethod, client); + Assert.AreEqual(2, methodCollection.Count); + Assert.IsFalse(methodCollection.Any(method => + method.Signature.Name == "Receive" && + method.Signature.Parameters.Any(parameter => parameter.Name == "options"))); + + var rawProtocolMethod = methodCollection.Single(method => + method.Signature.Name == "ReceiveAsync" && + method.Signature.Parameters.Any(parameter => parameter.Name == "options")); + var expectedProtocolReturnType = new CSharpType( + typeof(Task<>), + new CSharpType(typeof(AsyncStreamingClientResult<>), typeof(BinaryData))); + Assert.IsTrue(rawProtocolMethod.Signature.ReturnType!.Equals(expectedProtocolReturnType)); + StringAssert.Contains( + "return global::System.ClientModel.AsyncStreamingClientResult.CreateJsonLines", + rawProtocolMethod.BodyStatements!.ToDisplayString()); + + var convenienceMethod = methodCollection.Single(method => + method.Signature.Name == "ReceiveAsync" && + method.Signature.Parameters.All(parameter => parameter.Name != "options")); + var expectedReturnType = new CSharpType( + typeof(Task<>), + new CSharpType( + typeof(AsyncStreamingClientResult<>), + ScmCodeModelGenerator.Instance.TypeFactory.CreateCSharpType(itemType)!)); + Assert.IsTrue(convenienceMethod.Signature.ReturnType!.Equals(expectedReturnType)); + StringAssert.Contains( + "return global::System.ClientModel.AsyncStreamingClientResult.CreateJsonLines", + convenienceMethod.BodyStatements!.ToDisplayString()); + + foreach (var protocolMethod in methodCollection.Where(method => + method.Signature.Parameters.Any(parameter => parameter.Name == "options"))) + { + StringAssert.Contains( + "message.BufferResponse = false;", + protocolMethod.BodyStatements!.ToDisplayString()); + } + } + + [Test] + public void SseResponseGeneratesUnbufferedAsyncStreamingResult() + { + var eventType = InputFactory.Model( + "Info", + properties: [InputFactory.Property("desc", InputPrimitiveType.String, isRequired: true)]); + var eventUnion = InputFactory.Union([eventType], "SseEvents"); + var streamType = new InputStreamingType( + "SseStream", + "Streaming.Sse.SseStream", + eventUnion, + ["text/event-stream"], + streamKind: "sse", + terminalEventValue: "[DONE]"); + var operation = InputFactory.Operation( + "Receive", + responses: [InputFactory.OperationResponse([200], streamType)], + bufferResponse: false); + var serviceMethod = InputFactory.BasicServiceMethod( + "Receive", + operation, + response: InputFactory.ServiceMethodResponse(streamType, null)); + var inputClient = InputFactory.Client("TestClient", methods: [serviceMethod]); + MockHelpers.LoadMockGenerator(inputModels: () => [eventType], clients: () => [inputClient]); + var client = ScmCodeModelGenerator.Instance.TypeFactory.CreateClient(inputClient); + Assert.IsNotNull(client); + + var methodCollection = new ScmMethodProviderCollection(serviceMethod, client!); + Assert.AreEqual(2, methodCollection.Count); + Assert.IsFalse(methodCollection.Any(method => method.Signature.Name == "Receive")); + + var rawProtocolMethod = methodCollection.Single(method => + method.Signature.Name == "ReceiveAsync" && + method.Signature.Parameters.Any(parameter => parameter.Name == "options")); + var expectedProtocolReturnType = new CSharpType( + typeof(Task<>), + new CSharpType( + typeof(AsyncStreamingClientResult<>), + new CSharpType(typeof(SseItem<>), typeof(BinaryData)))); + Assert.IsTrue(rawProtocolMethod.Signature.ReturnType!.Equals(expectedProtocolReturnType)); + StringAssert.Contains( + "return global::System.ClientModel.AsyncStreamingClientResult.CreateSse", + rawProtocolMethod.BodyStatements!.ToDisplayString()); + + var convenienceMethod = methodCollection.Single(method => + method.Signature.Name == "ReceiveAsync" && + method.Signature.Parameters.All(parameter => parameter.Name != "options")); + var expectedReturnType = new CSharpType( + typeof(Task<>), + new CSharpType( + typeof(AsyncStreamingClientResult<>), + new CSharpType( + typeof(SseItem<>), + ScmCodeModelGenerator.Instance.TypeFactory.CreateCSharpType(eventType)!))); + Assert.IsTrue(convenienceMethod.Signature.ReturnType!.Equals(expectedReturnType)); + var body = convenienceMethod.BodyStatements!.ToDisplayString(); + StringAssert.Contains( + "return global::System.ClientModel.AsyncStreamingClientResult.CreateSse", + body); + StringAssert.Contains( + "global::Sample.JsonLinesBinaryContent.DeserializeModel", + body); + StringAssert.Contains( + "item.Data.ToString() == \"[DONE]\"", + body); + + foreach (var protocolMethod in methodCollection.Where(method => + method.Signature.Parameters.Any(parameter => parameter.Name == "options"))) + { + StringAssert.Contains( + "message.BufferResponse = false;", + protocolMethod.BodyStatements!.ToDisplayString()); + } + } + + [Test] + public void JsonLinesPrimitiveResponseUsesValueDeserializer() + { + var streamType = new InputStreamingType( + "JsonlStream", + "Streaming.Jsonl.JsonlStream", + InputPrimitiveType.String, + ["application/jsonl"]); + var operation = InputFactory.Operation( + "Receive", + responses: [InputFactory.OperationResponse([200], streamType)], + bufferResponse: false); + var serviceMethod = InputFactory.BasicServiceMethod( + "Receive", + operation, + response: InputFactory.ServiceMethodResponse(streamType, null)); + var inputClient = InputFactory.Client("TestClient", methods: [serviceMethod]); + + MockHelpers.LoadMockGenerator(clients: () => [inputClient]); + var client = ScmCodeModelGenerator.Instance.TypeFactory.CreateClient(inputClient); + Assert.IsNotNull(client); + + var methodCollection = new ScmMethodProviderCollection(serviceMethod, client!); + var convenienceMethod = methodCollection.Single(method => + method.Signature.Name == "ReceiveAsync" && + method.Signature.Parameters.All(parameter => parameter.Name != "options")); + StringAssert.Contains( + "global::Sample.JsonLinesBinaryContent.DeserializeValue", + convenienceMethod.BodyStatements!.ToDisplayString()); + } + + [Test] + public void OptionalJsonLinesRequestPreservesNullBody() + { + var streamType = new InputStreamingType( + "JsonlStream", + "Streaming.Jsonl.JsonlStream", + InputPrimitiveType.String, + ["application/jsonl"]); + var operation = InputFactory.Operation( + "Send", + parameters: [InputFactory.BodyParameter("stream", streamType, isRequired: false)], + responses: [InputFactory.OperationResponse([204])], + requestMediaTypes: ["application/jsonl"], + httpMethod: "POST"); + var serviceMethod = InputFactory.BasicServiceMethod( + "Send", + operation, + parameters: + [ + InputFactory.MethodParameter( + "stream", + streamType, + location: InputRequestLocation.Body, + isRequired: false) + ]); + var inputClient = InputFactory.Client("TestClient", methods: [serviceMethod]); + + MockHelpers.LoadMockGenerator(clients: () => [inputClient]); + var client = ScmCodeModelGenerator.Instance.TypeFactory.CreateClient(inputClient); + Assert.IsNotNull(client); + + var methodCollection = new ScmMethodProviderCollection(serviceMethod, client!); + var convenienceMethod = methodCollection.Single(method => + method.Signature.Name == "SendAsync" && + method.Signature.Parameters.All(parameter => parameter.Name != "content")); + StringAssert.Contains( + "(stream == null) ? null : new global::Sample.JsonLinesBinaryContent(stream)", + convenienceMethod.BodyStatements!.ToDisplayString()); + } + // Validate that the default method collection consists of the expected method kind(s) [TestCaseSource(nameof(DefaultCSharpMethodCollectionTestCases))] public void TestDefaultCSharpMethodCollection(InputServiceMethod serviceMethod) @@ -485,6 +752,7 @@ public void ListMethodWithEnumParameter(bool isExtensible, InputRequestLocation convenienceMethod.BodyStatements!.ToDisplayString()); } } + #pragma warning restore SCME0005 } // Enum bodies must be serialized via Utf8JsonWriter (not BinaryData.FromObjectAsJson) to stay AOT/trim safe (IL2026/IL3050). diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/InputTypes/InputStreamingType.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/InputTypes/InputStreamingType.cs new file mode 100644 index 00000000000..c4b01d59d29 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/InputTypes/InputStreamingType.cs @@ -0,0 +1,41 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System.Collections.Generic; + +namespace Microsoft.TypeSpec.Generator.Input +{ + /// + /// Represents a sequence of values streamed over the wire. + /// + public sealed class InputStreamingType : InputType + { + public const string JsonLinesStreamKind = "jsonl"; + public const string SseStreamKind = "sse"; + + public InputStreamingType( + string name, + string crossLanguageDefinitionId, + InputType valueType, + IReadOnlyList contentTypes, + string streamKind = JsonLinesStreamKind, + string? terminalEventType = null, + string? terminalEventValue = null) + : base(name) + { + CrossLanguageDefinitionId = crossLanguageDefinitionId; + ValueType = valueType; + ContentTypes = contentTypes; + StreamKind = streamKind; + TerminalEventType = terminalEventType; + TerminalEventValue = terminalEventValue; + } + + public string CrossLanguageDefinitionId { get; internal set; } + public InputType ValueType { get; internal set; } + public IReadOnlyList ContentTypes { get; internal set; } + public string StreamKind { get; internal set; } + public string? TerminalEventType { get; internal set; } + public string? TerminalEventValue { get; internal set; } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/InputTypes/Serialization/InputStreamingTypeConverter.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/InputTypes/Serialization/InputStreamingTypeConverter.cs new file mode 100644 index 00000000000..c11a4d6ac06 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/InputTypes/Serialization/InputStreamingTypeConverter.cs @@ -0,0 +1,77 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace Microsoft.TypeSpec.Generator.Input +{ + internal sealed class InputStreamingTypeConverter : JsonConverter + { + private readonly TypeSpecReferenceHandler _referenceHandler; + + public InputStreamingTypeConverter(TypeSpecReferenceHandler referenceHandler) + { + _referenceHandler = referenceHandler; + } + + public override InputStreamingType? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + => reader.ReadReferenceAndResolve(_referenceHandler.CurrentResolver) + ?? CreateStreamingType(ref reader, null, null, options, _referenceHandler.CurrentResolver); + + public override void Write(Utf8JsonWriter writer, InputStreamingType value, JsonSerializerOptions options) + => throw new NotSupportedException("Writing not supported"); + + public static InputStreamingType CreateStreamingType( + ref Utf8JsonReader reader, + string? id, + string? name, + JsonSerializerOptions options, + ReferenceResolver resolver) + { + string? crossLanguageDefinitionId = null; + InputType? valueType = null; + IReadOnlyList? contentTypes = null; + string? streamKind = null; + string? terminalEventType = null; + string? terminalEventValue = null; + + if (id == null) + { + reader.TryReadReferenceId(ref id); + } + + id = id ?? throw new JsonException(); + var streamingType = new InputStreamingType(name ?? "Stream", string.Empty, null!, []); + resolver.AddReference(id, streamingType); + + while (reader.TokenType != JsonTokenType.EndObject) + { + var isKnownProperty = reader.TryReadReferenceId(ref id) + || reader.TryReadString("name", ref name) + || reader.TryReadString("crossLanguageDefinitionId", ref crossLanguageDefinitionId) + || reader.TryReadComplexType("valueType", options, ref valueType) + || reader.TryReadComplexType("contentTypes", options, ref contentTypes) + || reader.TryReadString("streamKind", ref streamKind) + || reader.TryReadString("terminalEventType", ref terminalEventType) + || reader.TryReadString("terminalEventValue", ref terminalEventValue); + + if (!isKnownProperty) + { + reader.SkipProperty(); + } + } + + streamingType.Name = name ?? "Stream"; + streamingType.CrossLanguageDefinitionId = crossLanguageDefinitionId ?? string.Empty; + streamingType.ValueType = valueType ?? throw new JsonException("InputStreamingType must have a valueType."); + streamingType.ContentTypes = contentTypes ?? []; + streamingType.StreamKind = streamKind ?? InputStreamingType.JsonLinesStreamKind; + streamingType.TerminalEventType = terminalEventType; + streamingType.TerminalEventValue = terminalEventValue; + return streamingType; + } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/InputTypes/Serialization/InputTypeConverter.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/InputTypes/Serialization/InputTypeConverter.cs index eef96ae8571..81bd3e5dce3 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/InputTypes/Serialization/InputTypeConverter.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/InputTypes/Serialization/InputTypeConverter.cs @@ -52,6 +52,7 @@ private static InputType CreateInputType(ref Utf8JsonReader reader, JsonSerializ private const string EnumKind = "enum"; private const string EnumValueKind = "enumvalue"; private const string ArrayKind = "array"; + private const string StreamingKind = "streaming"; private const string DictionaryKind = "dict"; private const string NullableKind = "nullable"; private const string UtcDateTimeKind = "utcDateTime"; @@ -67,6 +68,7 @@ private static InputType CreateInputType(ref Utf8JsonReader reader, JsonSerializ EnumKind => InputEnumTypeConverter.CreateEnumType(ref reader, id, name, options, resolver), EnumValueKind => InputEnumTypeValueConverter.CreateEnumTypeValue(ref reader, id, name, options, resolver), ArrayKind => InputArrayTypeConverter.CreateListType(ref reader, id, name, options, resolver), + StreamingKind => InputStreamingTypeConverter.CreateStreamingType(ref reader, id, name, options, resolver), DictionaryKind => InputDictionaryTypeConverter.CreateDictionaryType(ref reader, id, options, resolver), UtcDateTimeKind or OffsetDateTimeKind => InputDateTimeTypeConverter.CreateDateTimeType(ref reader, id, name, options, resolver), DurationKind => InputDurationTypeConverter.CreateDurationType(ref reader, id, name, options, resolver), diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/InputTypes/Serialization/TypeSpecSerialization.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/InputTypes/Serialization/TypeSpecSerialization.cs index 7a9df1f37bd..36893cf6c44 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/InputTypes/Serialization/TypeSpecSerialization.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/InputTypes/Serialization/TypeSpecSerialization.cs @@ -27,6 +27,7 @@ public static class TypeSpecSerialization new JsonStringEnumConverter(JsonNamingPolicy.CamelCase), new InputTypeConverter(referenceHandler), new InputArrayTypeConverter(referenceHandler), + new InputStreamingTypeConverter(referenceHandler), new InputDictionaryTypeConverter(referenceHandler), new InputEnumTypeConverter(referenceHandler), new InputEnumTypeValueConverter(referenceHandler), diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/test/TypeSpecInputConverterTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/test/TypeSpecInputConverterTests.cs index 7e5ec1c3c84..1d9c03613e7 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/test/TypeSpecInputConverterTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/test/TypeSpecInputConverterTests.cs @@ -185,6 +185,50 @@ public void LoadsInputDurationTypeWithConstantEncoding() Assert.AreEqual(DurationKnownEncoding.Constant, inputDuration!.Encode); } + [Test] + public void LoadsInputStreamingType() + { + const string content = """ + { + "$id": "1", + "kind": "streaming", + "name": "Events", + "crossLanguageDefinitionId": "Test.Events", + "valueType": { + "$id": "2", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "contentTypes": ["text/event-stream"], + "streamKind": "sse", + "terminalEventType": "done", + "terminalEventValue": "[DONE]" + } + """; + var referenceHandler = new TypeSpecReferenceHandler(); + var options = new JsonSerializerOptions + { + Converters = + { + new InputTypeConverter(referenceHandler), + new InputPrimitiveTypeConverter(referenceHandler), + }, + }; + + var streamingType = JsonSerializer.Deserialize(content, options) as InputStreamingType; + + Assert.IsNotNull(streamingType); + Assert.AreEqual("Events", streamingType!.Name); + Assert.AreEqual("Test.Events", streamingType.CrossLanguageDefinitionId); + Assert.AreEqual(InputPrimitiveTypeKind.String, ((InputPrimitiveType)streamingType.ValueType).Kind); + CollectionAssert.AreEqual(new[] { "text/event-stream" }, streamingType.ContentTypes); + Assert.AreEqual("sse", streamingType.StreamKind); + Assert.AreEqual("done", streamingType.TerminalEventType); + Assert.AreEqual("[DONE]", streamingType.TerminalEventValue); + } + [Test] public void LoadsDynamicModel() { diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Primitives/CSharpType.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Primitives/CSharpType.cs index 2ec3c86dc41..84450de0525 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Primitives/CSharpType.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Primitives/CSharpType.cs @@ -56,7 +56,7 @@ public class CSharpType public bool IsReadOnlyDictionary => _isReadOnlyDictionary ??= TypeIsReadOnlyDictionary(); internal bool IsReadWriteDictionary => _isReadWriteDictionary ??= TypeIsReadWriteDictionary(); internal bool IsIEnumerableOfT => _isIEnumerableOfT ??= TypeIsIEnumerableOfT(); - internal bool IsIAsyncEnumerableOfT => _isIAsyncEnumerableOfT ??= TypeIsIAsyncEnumerableOfT(); + public bool IsIAsyncEnumerableOfT => _isIAsyncEnumerableOfT ??= TypeIsIAsyncEnumerableOfT(); internal bool ContainsBinaryData => _containsBinaryData ??= TypeContainsBinaryData(); /// diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Primitives/NewProjectScaffolding.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Primitives/NewProjectScaffolding.cs index b3221710da4..2216da9cd7b 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Primitives/NewProjectScaffolding.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Primitives/NewProjectScaffolding.cs @@ -104,7 +104,7 @@ protected virtual string GetSourceProjectFileContent() private static readonly IReadOnlyList _unbrandedDependencyPackages = new CSharpProjectWriter.CSProjDependencyPackage[] { - new("System.ClientModel", "1.14.0"), + new("System.ClientModel", "1.15.0"), }; protected virtual string GetSolutionFileContent() diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Properties/launchSettings.json b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Properties/launchSettings.json index 004ecdd12e8..9427460fad8 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Properties/launchSettings.json +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Properties/launchSettings.json @@ -220,6 +220,16 @@ "commandName": "Executable", "executablePath": "$(SolutionDir)/../dist/generator/Microsoft.TypeSpec.Generator.exe" }, + "http-streaming-jsonl": { + "commandLineArgs": "$(SolutionDir)/TestProjects/Spector/http/streaming/jsonl -g StubLibraryGenerator", + "commandName": "Executable", + "executablePath": "$(SolutionDir)/../dist/generator/Microsoft.TypeSpec.Generator.exe" + }, + "http-streaming-sse": { + "commandLineArgs": "$(SolutionDir)/TestProjects/Spector/http/streaming/sse -g StubLibraryGenerator", + "commandName": "Executable", + "executablePath": "$(SolutionDir)/../dist/generator/Microsoft.TypeSpec.Generator.exe" + }, "http-type-array": { "commandLineArgs": "$(SolutionDir)/TestProjects/Spector/http/type/array -g StubLibraryGenerator", "commandName": "Executable", diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Snippets/MemoryStreamSnippets.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Snippets/MemoryStreamSnippets.cs index e2480095eb5..1bd2bf4ffef 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Snippets/MemoryStreamSnippets.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Snippets/MemoryStreamSnippets.cs @@ -16,6 +16,9 @@ public static ScopedApi New(ValueExpression capacity) public static ScopedApi GetBuffer(this ScopedApi stream) => stream.Invoke(nameof(MemoryStream.GetBuffer)).As(); + public static ScopedApi ToArray(this ScopedApi stream) + => stream.Invoke(nameof(MemoryStream.ToArray)).As(); + public static ScopedApi Position(this ScopedApi stream) => stream.Property(nameof(MemoryStream.Position)).As(); diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/TypeFactory.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/TypeFactory.cs index f1d05ed6adc..79bfbb5d3d9 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/TypeFactory.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/TypeFactory.cs @@ -110,6 +110,12 @@ protected internal TypeFactory() var arrayInput = CreateCSharpType(listType.ValueType); type = arrayInput != null ? new CSharpType(typeof(IList<>), arrayInput) : null; break; + case InputStreamingType streamingType: + var streamingValueType = CreateCSharpType(streamingType.ValueType); + type = streamingValueType != null + ? new CSharpType(typeof(IAsyncEnumerable<>), streamingValueType) + : null; + break; case InputDictionaryType dictionaryType: var inputValueType = CreateCSharpType(dictionaryType.ValueType); type = inputValueType != null ? new CSharpType(typeof(IDictionary<,>), typeof(string), inputValueType) : null; diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Utilities/ExternalTypeReferenceResolver.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Utilities/ExternalTypeReferenceResolver.cs index 4fd2bb69ce3..e66fbdc2c5a 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Utilities/ExternalTypeReferenceResolver.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Utilities/ExternalTypeReferenceResolver.cs @@ -392,68 +392,80 @@ private static void CollectExternalTypes(InputLibrary library, IDictionary visited, IDictionary collected) { - if (type == null || !visited.Add(type)) + while (true) { - return; - } - - if (type.External != null - && !string.IsNullOrEmpty(type.External.Identity) - && !string.IsNullOrEmpty(type.External.Package)) - { - var key = $"{type.External.Package}|{type.External.Identity}|{type.External.MinVersion ?? string.Empty}"; - if (!collected.ContainsKey(key)) + if (type == null || !visited.Add(type)) { - collected[key] = type.External; + return; } - } - switch (type) - { - case InputModelType model: - foreach (var prop in model.Properties) - { - VisitType(prop.Type, visited, collected); - } - if (model.AdditionalProperties != null) - { - VisitType(model.AdditionalProperties, visited, collected); - } - if (model.BaseModel != null) - { - VisitType(model.BaseModel, visited, collected); - } - foreach (var derived in model.DerivedModels) - { - VisitType(derived, visited, collected); - } - foreach (var subtype in model.DiscriminatedSubtypes.Values) - { - VisitType(subtype, visited, collected); - } - break; - case InputArrayType array: - VisitType(array.ValueType, visited, collected); - break; - case InputDictionaryType dictionary: - VisitType(dictionary.KeyType, visited, collected); - VisitType(dictionary.ValueType, visited, collected); - break; - case InputUnionType union: - foreach (var variant in union.VariantTypes) + if (type.External != null && !string.IsNullOrEmpty(type.External.Identity) && !string.IsNullOrEmpty(type.External.Package)) + { + var key = $"{type.External.Package}|{type.External.Identity}|{type.External.MinVersion ?? string.Empty}"; + if (!collected.ContainsKey(key)) { - VisitType(variant, visited, collected); + collected[key] = type.External; } - break; - case InputNullableType nullable: - VisitType(nullable.Type, visited, collected); - break; - case InputLiteralType literal: - VisitType(literal.ValueType, visited, collected); - break; - case InputEnumType enumType: - VisitType(enumType.ValueType, visited, collected); - break; + } + + switch (type) + { + case InputModelType model: + foreach (var prop in model.Properties) + { + VisitType(prop.Type, visited, collected); + } + + if (model.AdditionalProperties != null) + { + VisitType(model.AdditionalProperties, visited, collected); + } + + if (model.BaseModel != null) + { + VisitType(model.BaseModel, visited, collected); + } + + foreach (var derived in model.DerivedModels) + { + VisitType(derived, visited, collected); + } + + foreach (var subtype in model.DiscriminatedSubtypes.Values) + { + VisitType(subtype, visited, collected); + } + + break; + case InputArrayType array: + type = array.ValueType; + continue; + case InputStreamingType streaming: + type = streaming.ValueType; + continue; + case InputDictionaryType dictionary: + VisitType(dictionary.KeyType, visited, collected); + type = dictionary.ValueType; + continue; + case InputUnionType union: + foreach (var variant in union.VariantTypes) + { + VisitType(variant, visited, collected); + } + + break; + case InputNullableType nullable: + type = nullable.Type; + continue; + case InputLiteralType literal: + type = literal.ValueType; + continue; + case InputEnumType enumType: + type = enumType.ValueType; + continue; + } + + break; } } } diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/common/InputFactory.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/common/InputFactory.cs index a61d51467b0..3bd508eb2e7 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/common/InputFactory.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/common/InputFactory.cs @@ -732,7 +732,8 @@ public static InputOperation Operation( bool generateConvenienceMethod = true, string? ns = null, bool isExactName = false, - bool generateProtocolMethod = true) + bool generateProtocolMethod = true, + bool bufferResponse = true) { var operation = new InputOperation( name, @@ -748,7 +749,7 @@ public static InputOperation Operation( path, null, requestMediaTypes is null ? null : [.. requestMediaTypes], - false, + bufferResponse, generateProtocolMethod, generateConvenienceMethod, name, diff --git a/packages/http-client-csharp/generator/Packages.Data.props b/packages/http-client-csharp/generator/Packages.Data.props index 28d56b347a2..c3a6a9336dd 100644 --- a/packages/http-client-csharp/generator/Packages.Data.props +++ b/packages/http-client-csharp/generator/Packages.Data.props @@ -14,9 +14,9 @@ - - + + - + diff --git a/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/SampleTypeSpec.csproj b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/SampleTypeSpec.csproj index 1ae5814b698..13ed0863919 100644 --- a/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/SampleTypeSpec.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/SampleTypeSpec.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Http/Streaming/Jsonl/JsonlTests.cs b/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Http/Streaming/Jsonl/JsonlTests.cs new file mode 100644 index 00000000000..d7b21f04f4a --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Http/Streaming/Jsonl/JsonlTests.cs @@ -0,0 +1,44 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System.Collections.Generic; +using System.Threading.Tasks; +using NUnit.Framework; +using Streaming.Jsonl; +using Streaming.Jsonl._Basic; + +namespace TestProjects.Spector.Tests.Http.Streaming.Jsonl +{ + public class JsonlTests : SpectorTestBase + { + [SpectorTest] + public Task Send() => Test(async (host) => + { + var client = new JsonlClient(host, null).GetBasicClient(); + var response = await client.SendAsync(GetValues()); + Assert.AreEqual(204, response.GetRawResponse().Status); + }); + + [SpectorTest] + public Task Receive() => Test(async (host) => + { + var client = new JsonlClient(host, null).GetBasicClient(); + await using var response = await client.ReceiveAsync(); + var descriptions = new List(); + await foreach (var value in response) + { + descriptions.Add(value.Desc); + } + + CollectionAssert.AreEqual(new[] { "one", "two", "three" }, descriptions); + }); + + private static async IAsyncEnumerable GetValues() + { + await Task.Yield(); + yield return new Info("one"); + yield return new Info("two"); + yield return new Info("three"); + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Http/Streaming/Sse/SseTests.cs b/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Http/Streaming/Sse/SseTests.cs new file mode 100644 index 00000000000..bb06e9d5aeb --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Http/Streaming/Sse/SseTests.cs @@ -0,0 +1,86 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System.Collections.Generic; +using System.Linq; +using System.Text.Json; +using System.Threading.Tasks; +using NUnit.Framework; +using Streaming.Sse; +using Streaming.Sse._Retrieve; + +namespace TestProjects.Spector.Tests.Http.Streaming.Sse +{ + public class SseTests : SpectorTestBase + { + [SpectorTest] + public Task Unnamed() => Test(async (host) => + { + var client = new SseClient(host, null).GetUnnamedClient(); + await using var response = await client.ReceiveAsync(); + var descriptions = new List(); + await foreach (var item in response) + { + Assert.AreEqual("message", item.EventType); + descriptions.Add(item.Data.Desc); + } + + CollectionAssert.AreEqual(new[] { "one", "two", "three" }, descriptions); + }); + + [SpectorTest] + public Task Named() => Test(async (host) => + { + var client = new SseClient(host, null).GetNamedClient(); + await using var response = await client.ReceiveAsync(); + var events = new List<(string Type, string Value)>(); + await foreach (var item in response) + { + using var document = JsonDocument.Parse(item.Data.ToMemory()); + var value = item.EventType == "responseCreated" + ? document.RootElement.GetProperty("id").GetString()! + : document.RootElement.GetProperty("delta").GetString()!; + events.Add((item.EventType, value)); + } + + CollectionAssert.AreEqual( + new[] + { + ("responseCreated", "resp_1"), + ("responseDelta", "Hello"), + ("responseDelta", " world"), + }, + events); + }); + + [SpectorTest] + public Task Retrieve() => Test(async (host) => + { + var client = new SseClient(host, null).GetRetrieveClient(); + await using var response = await client.StreamAsync( + new RetrievalRequest("what is typespec?")); + var events = new List<(string Type, string Value)>(); + await foreach (var item in response) + { + using var document = JsonDocument.Parse(item.Data.ToMemory()); + var value = item.EventType == "partialResult" + ? document.RootElement.GetProperty("text").GetString()! + : string.Join( + ",", + document.RootElement.GetProperty("references") + .EnumerateArray() + .Select(element => element.GetString())); + events.Add((item.EventType, value)); + } + + CollectionAssert.AreEqual( + new[] + { + ("partialResult", "partial one"), + ("partialResult", "partial two"), + ("finalResult", "doc1,doc2"), + }, + events); + }); + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Infrastructure/TestServerBase.cs b/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Infrastructure/TestServerBase.cs index f033e7f811d..229ee024b49 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Infrastructure/TestServerBase.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Infrastructure/TestServerBase.cs @@ -41,8 +41,11 @@ public TestServerBase(string processPath, string processArguments) var indexOfPort = s?.IndexOf(portPhrase); if (indexOfPort > 0) { - Port = s!.Substring(indexOfPort.Value + portPhrase.Length).Trim(); - Host = new Uri($"http://localhost:{Port}"); + var address = s!.Substring(indexOfPort.Value + portPhrase.Length).Trim(); + Host = int.TryParse(address, out var port) + ? new Uri($"http://localhost:{port}") + : new Uri($"http://{address}"); + Port = Host.Port.ToString(); Client = new HttpClient { BaseAddress = Host diff --git a/packages/http-client-csharp/generator/TestProjects/Spector.Tests/TestProjects.Spector.Tests.csproj b/packages/http-client-csharp/generator/TestProjects/Spector.Tests/TestProjects.Spector.Tests.csproj index 8692c20c097..b3e10449ea3 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector.Tests/TestProjects.Spector.Tests.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector.Tests/TestProjects.Spector.Tests.csproj @@ -62,6 +62,8 @@ + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/api-key/src/Authentication.ApiKey.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/api-key/src/Authentication.ApiKey.csproj index 6afc19b12b6..00ee0db4c1a 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/api-key/src/Authentication.ApiKey.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/api-key/src/Authentication.ApiKey.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/http/custom/src/Authentication.Http.Custom.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/http/custom/src/Authentication.Http.Custom.csproj index da32df2384d..ce5a4d78a6a 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/http/custom/src/Authentication.Http.Custom.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/http/custom/src/Authentication.Http.Custom.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/oauth2/src/Authentication.OAuth2.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/oauth2/src/Authentication.OAuth2.csproj index e49a2f273c9..2fa1892078d 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/oauth2/src/Authentication.OAuth2.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/oauth2/src/Authentication.OAuth2.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/union/src/Authentication.Union.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/union/src/Authentication.Union.csproj index 20d5d1ee4e5..5fc8301b99e 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/union/src/Authentication.Union.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/union/src/Authentication.Union.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Client.Structure.Service.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Client.Structure.Service.csproj index 098b264a2db..9c06f57fac1 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Client.Structure.Service.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Client.Structure.Service.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Client.Structure.Service.Default.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Client.Structure.Service.Default.csproj index 1e3efad871f..0ec93532d5a 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Client.Structure.Service.Default.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Client.Structure.Service.Default.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/src/Client.Structure.Service.Multi.Client.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/src/Client.Structure.Service.Multi.Client.csproj index 6be93f84deb..33e99154cc3 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/src/Client.Structure.Service.Multi.Client.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/src/Client.Structure.Service.Multi.Client.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/renamed-operation/src/Client.Structure.Service.Renamed.Operation.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/renamed-operation/src/Client.Structure.Service.Renamed.Operation.csproj index f42ee447848..28c62c8adaf 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/renamed-operation/src/Client.Structure.Service.Renamed.Operation.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/renamed-operation/src/Client.Structure.Service.Renamed.Operation.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/src/Client.Structure.Service.TwoOperationGroup.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/src/Client.Structure.Service.TwoOperationGroup.csproj index 6983797acd3..9ae5fc7b589 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/src/Client.Structure.Service.TwoOperationGroup.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/src/Client.Structure.Service.TwoOperationGroup.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/src/Documentation.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/src/Documentation.csproj index 1b50bcabfcd..d113b7c755c 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/src/Documentation.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/src/Documentation.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/array/src/Encode.Array.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/array/src/Encode.Array.csproj index 0df568f3eb0..3a75bcc3050 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/array/src/Encode.Array.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/array/src/Encode.Array.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/boolean/src/Encode.Boolean.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/boolean/src/Encode.Boolean.csproj index 5f2e7713e76..b17f67dffd4 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/boolean/src/Encode.Boolean.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/boolean/src/Encode.Boolean.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Encode.Bytes.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Encode.Bytes.csproj index f76f26640d3..887c7852ea2 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Encode.Bytes.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Encode.Bytes.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/src/Encode.Datetime.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/src/Encode.Datetime.csproj index b36c24f5145..646c15fc64c 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/src/Encode.Datetime.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/src/Encode.Datetime.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/src/Encode.Duration.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/src/Encode.Duration.csproj index bc1e0785155..f69f6833a4c 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/src/Encode.Duration.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/src/Encode.Duration.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/numeric/src/Encode.Numeric.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/numeric/src/Encode.Numeric.csproj index 8aad7aa37f9..00afbefa69b 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/numeric/src/Encode.Numeric.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/numeric/src/Encode.Numeric.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/src/Parameters.Basic.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/src/Parameters.Basic.csproj index 886b60bde4c..6d405d3911c 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/src/Parameters.Basic.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/src/Parameters.Basic.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-optionality/src/Parameters.BodyOptionality.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-optionality/src/Parameters.BodyOptionality.csproj index 2e73ecb18f8..77c9ee2b849 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-optionality/src/Parameters.BodyOptionality.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-optionality/src/Parameters.BodyOptionality.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-root/src/Parameters.BodyRoot.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-root/src/Parameters.BodyRoot.csproj index dc8fb18480d..c39c492440e 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-root/src/Parameters.BodyRoot.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-root/src/Parameters.BodyRoot.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/src/Parameters.CollectionFormat.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/src/Parameters.CollectionFormat.csproj index 7a3109a76a4..07720b89778 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/src/Parameters.CollectionFormat.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/src/Parameters.CollectionFormat.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/path/src/Parameters.Path.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/path/src/Parameters.Path.csproj index 59c0aa38e81..e8e7b9ae158 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/path/src/Parameters.Path.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/path/src/Parameters.Path.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/src/Parameters.Query.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/src/Parameters.Query.csproj index f673d20ac63..5d13a639551 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/src/Parameters.Query.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/src/Parameters.Query.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/src/Parameters.Spread.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/src/Parameters.Spread.csproj index cd59356befa..b5fe8ee12ad 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/src/Parameters.Spread.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/src/Parameters.Spread.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/src/Payload.ContentNegotiation.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/src/Payload.ContentNegotiation.csproj index 619d41348c9..221271f64c8 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/src/Payload.ContentNegotiation.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/src/Payload.ContentNegotiation.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/head/src/Payload.Head.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/head/src/Payload.Head.csproj index f6b4124caef..66d549488ae 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/head/src/Payload.Head.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/head/src/Payload.Head.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/json-merge-patch/src/Payload.JsonMergePatch.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/json-merge-patch/src/Payload.JsonMergePatch.csproj index d817f50ca6c..e21e5dac7ae 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/json-merge-patch/src/Payload.JsonMergePatch.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/json-merge-patch/src/Payload.JsonMergePatch.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/src/Payload.MediaType.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/src/Payload.MediaType.csproj index b08e4bb9297..cf49cb141d8 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/src/Payload.MediaType.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/src/Payload.MediaType.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Payload.MultiPart.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Payload.MultiPart.csproj index 56cbcd39aac..52694ab467d 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Payload.MultiPart.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Payload.MultiPart.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Payload.Pageable.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Payload.Pageable.csproj index 508be6c4541..9b167fa2a9a 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Payload.Pageable.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Payload.Pageable.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Payload.Xml.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Payload.Xml.csproj index c8fd11efc71..da07d608ea6 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Payload.Xml.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Payload.Xml.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v1/src/Resiliency.SrvDriven.V1.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v1/src/Resiliency.SrvDriven.V1.csproj index bd26620e222..988c0c1846b 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v1/src/Resiliency.SrvDriven.V1.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v1/src/Resiliency.SrvDriven.V1.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v2/src/Resiliency.SrvDriven.V2.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v2/src/Resiliency.SrvDriven.V2.csproj index d6d174fdb2d..af812d39d4e 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v2/src/Resiliency.SrvDriven.V2.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v2/src/Resiliency.SrvDriven.V2.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/response/status-code-range/src/Response.StatusCodeRange.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/response/status-code-range/src/Response.StatusCodeRange.csproj index a7aad20dde0..704f1301cb5 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/response/status-code-range/src/Response.StatusCodeRange.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/response/status-code-range/src/Response.StatusCodeRange.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Routes.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Routes.csproj index a8458bfe1a0..7a5577dd4f0 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Routes.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Routes.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/serialization/encoded-name/json/src/Serialization.EncodedName.Json.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/serialization/encoded-name/json/src/Serialization.EncodedName.Json.csproj index 91bd0670954..e1bc57adae4 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/serialization/encoded-name/json/src/Serialization.EncodedName.Json.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/serialization/encoded-name/json/src/Serialization.EncodedName.Json.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/endpoint/not-defined/src/Server.Endpoint.NotDefined.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/endpoint/not-defined/src/Server.Endpoint.NotDefined.csproj index 2cf24e67d0f..5a20a587fae 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/endpoint/not-defined/src/Server.Endpoint.NotDefined.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/endpoint/not-defined/src/Server.Endpoint.NotDefined.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/multiple/src/Server.Path.Multiple.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/multiple/src/Server.Path.Multiple.csproj index 129b74d6ca0..c7cc0cd442e 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/multiple/src/Server.Path.Multiple.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/multiple/src/Server.Path.Multiple.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/single/src/Server.Path.Single.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/single/src/Server.Path.Single.csproj index 4877707f9cf..caf9d44d422 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/single/src/Server.Path.Single.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/single/src/Server.Path.Single.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/not-versioned/src/Server.Versions.NotVersioned.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/not-versioned/src/Server.Versions.NotVersioned.csproj index 7cd6f2e93a8..ad6bbdc4a68 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/not-versioned/src/Server.Versions.NotVersioned.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/not-versioned/src/Server.Versions.NotVersioned.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/versioned/src/Server.Versions.Versioned.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/versioned/src/Server.Versions.Versioned.csproj index 09782bca360..80aa6f52407 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/versioned/src/Server.Versions.Versioned.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/versioned/src/Server.Versions.Versioned.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/service/multiple-services/src/Service.MultipleServices.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/service/multiple-services/src/Service.MultipleServices.csproj index 6f1fd8177e0..cdb056b9981 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/service/multiple-services/src/Service.MultipleServices.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/service/multiple-services/src/Service.MultipleServices.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/conditional-request/src/SpecialHeaders.ConditionalRequest.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/conditional-request/src/SpecialHeaders.ConditionalRequest.csproj index 48aef20165f..4c0083c9745 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/conditional-request/src/SpecialHeaders.ConditionalRequest.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/conditional-request/src/SpecialHeaders.ConditionalRequest.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/repeatability/src/SpecialHeaders.Repeatability.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/repeatability/src/SpecialHeaders.Repeatability.csproj index 2a10e361969..f03b41f8789 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/repeatability/src/SpecialHeaders.Repeatability.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/repeatability/src/SpecialHeaders.Repeatability.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/SpecialWords.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/SpecialWords.csproj index 20668ae1449..4fb33ffa377 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/SpecialWords.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/SpecialWords.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/Configuration.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/Configuration.json new file mode 100644 index 00000000000..6759355fc55 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/Configuration.json @@ -0,0 +1,3 @@ +{ + "package-name": "Streaming.Jsonl" +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/Streaming.Jsonl.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/Streaming.Jsonl.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/Streaming.Jsonl.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/Streaming.Jsonl.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/Streaming.Jsonl.slnx new file mode 100644 index 00000000000..1bed5659651 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/Streaming.Jsonl.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/src/Generated/Basic.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/src/Generated/Basic.cs new file mode 100644 index 00000000000..3d49412b7d2 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/src/Generated/Basic.cs @@ -0,0 +1,34 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; + +#pragma warning disable SCME0005 // Type is for evaluation purposes only and is subject to change or removal in future updates. +namespace Streaming.Jsonl._Basic +{ + public partial class Basic + { + protected Basic() => throw null; + + internal Basic(ClientPipeline pipeline, Uri endpoint) => throw null; + + public ClientPipeline Pipeline => throw null; + + public virtual ClientResult Send(BinaryContent content, RequestOptions options = null) => throw null; + + public virtual Task SendAsync(BinaryContent content, RequestOptions options = null) => throw null; + + public virtual Task SendAsync(IAsyncEnumerable stream, CancellationToken cancellationToken = default) => throw null; + + public virtual Task> ReceiveAsync(RequestOptions options) => throw null; + + public virtual Task> ReceiveAsync(CancellationToken cancellationToken = default) => throw null; + } +} +#pragma warning restore SCME0005 // Type is for evaluation purposes only and is subject to change or removal in future updates. diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/src/Generated/JsonlClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/src/Generated/JsonlClient.cs new file mode 100644 index 00000000000..c3631096e25 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/src/Generated/JsonlClient.cs @@ -0,0 +1,27 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Streaming.Jsonl._Basic; + +namespace Streaming.Jsonl +{ + public partial class JsonlClient + { + public JsonlClient() : this(new Uri("http://localhost:3000"), new JsonlClientOptions()) => throw null; + + internal JsonlClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, JsonlClientOptions options) => throw null; + + public JsonlClient(Uri endpoint, JsonlClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public JsonlClient(JsonlClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; + + public ClientPipeline Pipeline => throw null; + + public virtual Basic GetBasicClient() => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/src/Generated/JsonlClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/src/Generated/JsonlClientOptions.cs new file mode 100644 index 00000000000..ca587048a82 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/src/Generated/JsonlClientOptions.cs @@ -0,0 +1,18 @@ +// + +#nullable disable + +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Streaming.Jsonl +{ + public partial class JsonlClientOptions : ClientPipelineOptions + { + public JsonlClientOptions() => throw null; + + [Experimental("SCME0002")] + internal JsonlClientOptions(IConfigurationSection section) : base(section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/src/Generated/JsonlClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/src/Generated/JsonlClientSettings.cs new file mode 100644 index 00000000000..2a2ff69d3f2 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/src/Generated/JsonlClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Streaming.Jsonl +{ + [Experimental("SCME0002")] + public partial class JsonlClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public JsonlClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/src/Generated/Models/Info.Serialization.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/src/Generated/Models/Info.Serialization.cs new file mode 100644 index 00000000000..ede90d504a2 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/src/Generated/Models/Info.Serialization.cs @@ -0,0 +1,36 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Text.Json; + +namespace Streaming.Jsonl._Basic +{ + public partial class Info : IJsonModel + { + internal Info() => throw null; + + protected virtual Info PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options) => throw null; + + protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options) => throw null; + + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) => throw null; + + Info IPersistableModel.Create(BinaryData data, ModelReaderWriterOptions options) => throw null; + + string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => throw null; + + public static explicit operator Info(ClientResult result) => throw null; + + void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) => throw null; + + protected virtual void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options) => throw null; + + Info IJsonModel.Create(ref Utf8JsonReader reader, ModelReaderWriterOptions options) => throw null; + + protected virtual Info JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/src/Generated/Models/Info.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/src/Generated/Models/Info.cs new file mode 100644 index 00000000000..7c0a717336e --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/src/Generated/Models/Info.cs @@ -0,0 +1,17 @@ +// + +#nullable disable + +namespace Streaming.Jsonl._Basic +{ + public partial class Info + { + public Info(string desc) => throw null; + + public string Desc + { + get => throw null; + set => throw null; + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/src/Generated/Models/StreamingJsonlContext.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/src/Generated/Models/StreamingJsonlContext.cs new file mode 100644 index 00000000000..26545300903 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/src/Generated/Models/StreamingJsonlContext.cs @@ -0,0 +1,14 @@ +// + +#nullable disable + +using System.ClientModel.Primitives; +using Streaming.Jsonl._Basic; + +namespace Streaming.Jsonl +{ + [ModelReaderWriterBuildable(typeof(Info))] + public partial class StreamingJsonlContext : ModelReaderWriterContext + { + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/src/Generated/StreamingJsonlModelFactory.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/src/Generated/StreamingJsonlModelFactory.cs new file mode 100644 index 00000000000..94a23b9ffff --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/src/Generated/StreamingJsonlModelFactory.cs @@ -0,0 +1,13 @@ +// + +#nullable disable + +using Streaming.Jsonl._Basic; + +namespace Streaming.Jsonl +{ + public static partial class StreamingJsonlModelFactory + { + public static Info Info(string desc = default) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/src/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/src/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..cd18484e8b4 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/src/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "JsonlClient": { + "type": "object", + "description": "Configuration for JsonlClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/jsonlClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "jsonlClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/src/Streaming.Jsonl.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/src/Streaming.Jsonl.csproj new file mode 100644 index 00000000000..5b2d6ccd0c0 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/src/Streaming.Jsonl.csproj @@ -0,0 +1,20 @@ + + + This is the Streaming.Jsonl client library for developing .NET applications with rich experience. + SDK Code Generation Streaming.Jsonl + 1.0.0-beta.1 + Streaming.Jsonl + netstandard2.0;net8.0 + latest + true + + + + + + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/tspCodeModel.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/tspCodeModel.json new file mode 100644 index 00000000000..e7789a2b3fa --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/jsonl/tspCodeModel.json @@ -0,0 +1,561 @@ +{ + "name": "Streaming.Jsonl", + "apiVersions": [], + "enums": [], + "constants": [ + { + "$id": "1", + "kind": "constant", + "name": "SendRequestContentType", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "2", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/jsonl", + "decorators": [], + "isExactName": false + }, + { + "$id": "3", + "kind": "constant", + "name": "JsonlStreamInfoContentType", + "namespace": "TypeSpec.Http.Streams", + "usage": "None", + "valueType": { + "$id": "4", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/jsonl", + "decorators": [], + "isExactName": false + }, + { + "$id": "5", + "kind": "constant", + "name": "SendRequestContentType1", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "6", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/jsonl", + "decorators": [], + "isExactName": false + }, + { + "$id": "7", + "kind": "constant", + "name": "SendRequestContentType2", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "8", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/jsonl", + "decorators": [], + "isExactName": false + } + ], + "models": [ + { + "$id": "9", + "kind": "model", + "name": "Info", + "namespace": "Streaming.Jsonl.Basic", + "crossLanguageDefinitionId": "Streaming.Jsonl.Basic.Info", + "usage": "Input,Output,Json", + "decorators": [], + "serializationOptions": {}, + "isExactName": false, + "properties": [ + { + "$id": "10", + "kind": "property", + "name": "desc", + "type": { + "$id": "11", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Streaming.Jsonl.Basic.Info.desc", + "serializationOptions": {}, + "isHttpMetadata": false, + "isExactName": false + } + ] + }, + { + "$id": "12", + "kind": "model", + "name": "JsonlStreamInfo", + "namespace": "TypeSpec.Http.Streams", + "crossLanguageDefinitionId": "TypeSpec.Http.Streams.JsonlStream", + "usage": "None", + "doc": "", + "decorators": [], + "serializationOptions": {}, + "isExactName": false, + "properties": [ + { + "$id": "13", + "kind": "property", + "name": "contentType", + "type": { + "$ref": "3" + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "TypeSpec.Http.Streams.JsonlStream.contentType", + "serializationOptions": {}, + "isHttpMetadata": true, + "isExactName": false + }, + { + "$id": "14", + "kind": "property", + "name": "body", + "type": { + "$id": "15", + "kind": "bytes", + "name": "bytes", + "crossLanguageDefinitionId": "", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "TypeSpec.Http.Streams.JsonlStream.body", + "serializationOptions": {}, + "isHttpMetadata": false, + "isExactName": false + } + ] + } + ], + "clients": [ + { + "$id": "16", + "kind": "client", + "name": "JsonlClient", + "isExactName": false, + "namespace": "Streaming.Jsonl", + "doc": "Test of jsonl streaming.", + "methods": [], + "parameters": [ + { + "$id": "17", + "kind": "endpoint", + "name": "endpoint", + "serializedName": "endpoint", + "doc": "Service host", + "type": { + "$id": "18", + "kind": "url", + "name": "endpoint", + "crossLanguageDefinitionId": "TypeSpec.url" + }, + "isApiVersion": false, + "optional": false, + "scope": "Client", + "isEndpoint": true, + "defaultValue": { + "type": { + "$id": "19", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string" + }, + "value": "http://localhost:3000" + }, + "serverUrlTemplate": "{endpoint}", + "skipUrlEncoding": false, + "readOnly": false, + "crossLanguageDefinitionId": "Streaming.Jsonl.endpoint", + "isExactName": false + } + ], + "initializedBy": 1, + "decorators": [], + "crossLanguageDefinitionId": "Streaming.Jsonl", + "apiVersions": [], + "children": [ + { + "$id": "20", + "kind": "client", + "name": "Basic", + "isExactName": false, + "namespace": "Streaming.Jsonl.Basic", + "methods": [ + { + "$id": "21", + "kind": "basic", + "name": "send", + "isExactName": false, + "accessibility": "public", + "apiVersions": [], + "operation": { + "$id": "22", + "name": "send", + "isExactName": false, + "resourceName": "Basic", + "accessibility": "public", + "parameters": [ + { + "$id": "23", + "kind": "header", + "name": "contentType", + "serializedName": "Content-Type", + "type": { + "$ref": "1" + }, + "isApiVersion": false, + "optional": false, + "isContentType": true, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "TypeSpec.Http.Streams.JsonlStream.contentType", + "methodParameterSegments": [ + { + "$id": "24", + "kind": "method", + "name": "stream", + "serializedName": "stream", + "type": { + "$id": "25", + "kind": "streaming", + "name": "JsonlStreamInfo", + "valueType": { + "$ref": "9" + }, + "streamKind": "jsonl", + "contentTypes": [ + "application/jsonl" + ], + "crossLanguageDefinitionId": "TypeSpec.Http.Streams.JsonlStream" + }, + "location": "Body", + "isApiVersion": false, + "optional": false, + "scope": "Method", + "crossLanguageDefinitionId": "Streaming.Jsonl.Basic.send.stream", + "readOnly": false, + "access": "public", + "decorators": [], + "isExactName": false + }, + { + "$id": "26", + "kind": "method", + "name": "contentType", + "serializedName": "contentType", + "type": { + "$ref": "3" + }, + "location": "", + "isApiVersion": false, + "optional": false, + "scope": "Method", + "crossLanguageDefinitionId": "TypeSpec.Http.Streams.JsonlStream.contentType", + "readOnly": false, + "access": "public", + "decorators": [], + "isExactName": false + } + ], + "isExactName": false + }, + { + "$id": "27", + "kind": "body", + "name": "body", + "serializedName": "body", + "type": { + "$id": "28", + "kind": "streaming", + "name": "JsonlStreamInfo", + "valueType": { + "$ref": "9" + }, + "streamKind": "jsonl", + "contentTypes": [ + "application/jsonl" + ], + "crossLanguageDefinitionId": "TypeSpec.Http.Streams.JsonlStream" + }, + "isApiVersion": false, + "contentTypes": [ + "application/jsonl" + ], + "defaultContentType": "application/jsonl", + "optional": false, + "scope": "Method", + "decorators": [], + "readOnly": false, + "crossLanguageDefinitionId": "TypeSpec.Http.Streams.JsonlStream.body", + "methodParameterSegments": [ + { + "$ref": "24" + }, + { + "$id": "29", + "kind": "method", + "name": "body", + "serializedName": "body", + "type": { + "$ref": "15" + }, + "location": "", + "isApiVersion": false, + "optional": false, + "scope": "Method", + "crossLanguageDefinitionId": "TypeSpec.Http.Streams.JsonlStream.body", + "readOnly": false, + "access": "public", + "decorators": [], + "isExactName": false + } + ], + "isExactName": false, + "serializationOptions": { + "json": { + "name": "body" + } + } + } + ], + "responses": [ + { + "statusCodes": [ + 204 + ], + "headers": [], + "isErrorResponse": false, + "serializationOptions": {} + } + ], + "httpMethod": "POST", + "uri": "{endpoint}", + "path": "/streaming/jsonl/basic/send", + "requestMediaTypes": [ + "application/jsonl" + ], + "bufferResponse": true, + "generateProtocolMethod": true, + "generateConvenienceMethod": true, + "crossLanguageDefinitionId": "Streaming.Jsonl.Basic.send", + "decorators": [], + "namespace": "Streaming.Jsonl.Basic" + }, + "parameters": [ + { + "$ref": "24" + } + ], + "response": {}, + "isOverride": false, + "generateConvenient": true, + "generateProtocol": true, + "crossLanguageDefinitionId": "Streaming.Jsonl.Basic.send" + }, + { + "$id": "30", + "kind": "basic", + "name": "receive", + "isExactName": false, + "accessibility": "public", + "apiVersions": [], + "operation": { + "$id": "31", + "name": "receive", + "isExactName": false, + "resourceName": "Basic", + "accessibility": "public", + "parameters": [ + { + "$id": "32", + "kind": "header", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "5" + }, + "isApiVersion": false, + "optional": false, + "isContentType": false, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "Streaming.Jsonl.Basic.receive.accept", + "methodParameterSegments": [ + { + "$id": "33", + "kind": "method", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "5" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "Streaming.Jsonl.Basic.receive.accept", + "readOnly": false, + "access": "public", + "decorators": [], + "isExactName": false + } + ], + "isExactName": false + } + ], + "responses": [ + { + "statusCodes": [ + 200 + ], + "bodyType": { + "$id": "34", + "kind": "streaming", + "name": "JsonlStreamInfo", + "valueType": { + "$ref": "9" + }, + "streamKind": "jsonl", + "contentTypes": [ + "application/jsonl" + ], + "crossLanguageDefinitionId": "TypeSpec.Http.Streams.JsonlStream" + }, + "headers": [ + { + "name": "contentType", + "nameInResponse": "content-type", + "type": { + "$ref": "7" + } + } + ], + "isErrorResponse": false, + "contentTypes": [ + "application/jsonl" + ], + "serializationOptions": { + "json": { + "name": "" + } + } + } + ], + "httpMethod": "GET", + "uri": "{endpoint}", + "path": "/streaming/jsonl/basic/receive", + "bufferResponse": false, + "generateProtocolMethod": true, + "generateConvenienceMethod": true, + "crossLanguageDefinitionId": "Streaming.Jsonl.Basic.receive", + "decorators": [], + "namespace": "Streaming.Jsonl.Basic" + }, + "parameters": [ + { + "$ref": "33" + } + ], + "response": { + "type": { + "$id": "35", + "kind": "streaming", + "name": "JsonlStreamInfo", + "valueType": { + "$ref": "9" + }, + "streamKind": "jsonl", + "contentTypes": [ + "application/jsonl" + ], + "crossLanguageDefinitionId": "TypeSpec.Http.Streams.JsonlStream" + } + }, + "isOverride": false, + "generateConvenient": true, + "generateProtocol": true, + "crossLanguageDefinitionId": "Streaming.Jsonl.Basic.receive" + } + ], + "parameters": [ + { + "$id": "36", + "kind": "endpoint", + "name": "endpoint", + "serializedName": "endpoint", + "doc": "Service host", + "type": { + "$id": "37", + "kind": "url", + "name": "endpoint", + "crossLanguageDefinitionId": "TypeSpec.url" + }, + "isApiVersion": false, + "optional": false, + "scope": "Client", + "isEndpoint": true, + "defaultValue": { + "type": { + "$id": "38", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string" + }, + "value": "http://localhost:3000" + }, + "serverUrlTemplate": "{endpoint}", + "skipUrlEncoding": false, + "readOnly": false, + "crossLanguageDefinitionId": "Streaming.Jsonl.Basic.endpoint", + "isExactName": false + } + ], + "initializedBy": 0, + "decorators": [], + "crossLanguageDefinitionId": "Streaming.Jsonl.Basic", + "apiVersions": [], + "parent": { + "$ref": "16" + }, + "isMultiServiceClient": false + } + ], + "isMultiServiceClient": false + } + ] +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/Configuration.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/Configuration.json new file mode 100644 index 00000000000..eb95a563412 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/Configuration.json @@ -0,0 +1,3 @@ +{ + "package-name": "Streaming.Sse" +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/Streaming.Sse.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/Streaming.Sse.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/Streaming.Sse.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/Streaming.Sse.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/Streaming.Sse.slnx new file mode 100644 index 00000000000..cbc7b200ee6 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/Streaming.Sse.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/Models/Info.Serialization.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/Models/Info.Serialization.cs new file mode 100644 index 00000000000..c2968a95c9e --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/Models/Info.Serialization.cs @@ -0,0 +1,36 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Text.Json; + +namespace Streaming.Sse._Unnamed +{ + public partial class Info : IJsonModel + { + internal Info() => throw null; + + protected virtual Info PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options) => throw null; + + protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options) => throw null; + + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) => throw null; + + Info IPersistableModel.Create(BinaryData data, ModelReaderWriterOptions options) => throw null; + + string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => throw null; + + public static explicit operator Info(ClientResult result) => throw null; + + void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) => throw null; + + protected virtual void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options) => throw null; + + Info IJsonModel.Create(ref Utf8JsonReader reader, ModelReaderWriterOptions options) => throw null; + + protected virtual Info JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/Models/Info.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/Models/Info.cs new file mode 100644 index 00000000000..ad15d80be14 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/Models/Info.cs @@ -0,0 +1,11 @@ +// + +#nullable disable + +namespace Streaming.Sse._Unnamed +{ + public partial class Info + { + public string Desc => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/Models/RetrievalRequest.Serialization.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/Models/RetrievalRequest.Serialization.cs new file mode 100644 index 00000000000..0aae2e14311 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/Models/RetrievalRequest.Serialization.cs @@ -0,0 +1,36 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Text.Json; + +namespace Streaming.Sse._Retrieve +{ + public partial class RetrievalRequest : IJsonModel + { + internal RetrievalRequest() => throw null; + + protected virtual RetrievalRequest PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options) => throw null; + + protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options) => throw null; + + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) => throw null; + + RetrievalRequest IPersistableModel.Create(BinaryData data, ModelReaderWriterOptions options) => throw null; + + string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => throw null; + + public static implicit operator BinaryContent(RetrievalRequest retrievalRequest) => throw null; + + void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) => throw null; + + protected virtual void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options) => throw null; + + RetrievalRequest IJsonModel.Create(ref Utf8JsonReader reader, ModelReaderWriterOptions options) => throw null; + + protected virtual RetrievalRequest JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/Models/RetrievalRequest.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/Models/RetrievalRequest.cs new file mode 100644 index 00000000000..883e937d320 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/Models/RetrievalRequest.cs @@ -0,0 +1,13 @@ +// + +#nullable disable + +namespace Streaming.Sse._Retrieve +{ + public partial class RetrievalRequest + { + public RetrievalRequest(string query) => throw null; + + public string Query => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/Models/StreamingSseContext.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/Models/StreamingSseContext.cs new file mode 100644 index 00000000000..9f2a25d8a49 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/Models/StreamingSseContext.cs @@ -0,0 +1,16 @@ +// + +#nullable disable + +using System.ClientModel.Primitives; +using Streaming.Sse._Retrieve; +using Streaming.Sse._Unnamed; + +namespace Streaming.Sse +{ + [ModelReaderWriterBuildable(typeof(Info))] + [ModelReaderWriterBuildable(typeof(RetrievalRequest))] + public partial class StreamingSseContext : ModelReaderWriterContext + { + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/Named.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/Named.cs new file mode 100644 index 00000000000..3509957e235 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/Named.cs @@ -0,0 +1,28 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Net.ServerSentEvents; +using System.Threading; +using System.Threading.Tasks; + +#pragma warning disable SCME0005 // Type is for evaluation purposes only and is subject to change or removal in future updates. +namespace Streaming.Sse._Named +{ + public partial class Named + { + protected Named() => throw null; + + internal Named(ClientPipeline pipeline, Uri endpoint) => throw null; + + public ClientPipeline Pipeline => throw null; + + public virtual Task>> ReceiveAsync(RequestOptions options) => throw null; + + public virtual Task>> ReceiveAsync(CancellationToken cancellationToken = default) => throw null; + } +} +#pragma warning restore SCME0005 // Type is for evaluation purposes only and is subject to change or removal in future updates. diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/Retrieve.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/Retrieve.cs new file mode 100644 index 00000000000..5f43c56f266 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/Retrieve.cs @@ -0,0 +1,28 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Net.ServerSentEvents; +using System.Threading; +using System.Threading.Tasks; + +#pragma warning disable SCME0005 // Type is for evaluation purposes only and is subject to change or removal in future updates. +namespace Streaming.Sse._Retrieve +{ + public partial class Retrieve + { + protected Retrieve() => throw null; + + internal Retrieve(ClientPipeline pipeline, Uri endpoint) => throw null; + + public ClientPipeline Pipeline => throw null; + + public virtual Task>> StreamAsync(BinaryContent content, RequestOptions options = null) => throw null; + + public virtual Task>> StreamAsync(RetrievalRequest request, CancellationToken cancellationToken = default) => throw null; + } +} +#pragma warning restore SCME0005 // Type is for evaluation purposes only and is subject to change or removal in future updates. diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/SseClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/SseClient.cs new file mode 100644 index 00000000000..ad7867309e0 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/SseClient.cs @@ -0,0 +1,33 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Streaming.Sse._Named; +using Streaming.Sse._Retrieve; +using Streaming.Sse._Unnamed; + +namespace Streaming.Sse +{ + public partial class SseClient + { + public SseClient() : this(new Uri("http://localhost:3000"), new SseClientOptions()) => throw null; + + internal SseClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, SseClientOptions options) => throw null; + + public SseClient(Uri endpoint, SseClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public SseClient(SseClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; + + public ClientPipeline Pipeline => throw null; + + public virtual Unnamed GetUnnamedClient() => throw null; + + public virtual Named GetNamedClient() => throw null; + + public virtual Retrieve GetRetrieveClient() => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/SseClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/SseClientOptions.cs new file mode 100644 index 00000000000..49fc6d62de3 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/SseClientOptions.cs @@ -0,0 +1,18 @@ +// + +#nullable disable + +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Streaming.Sse +{ + public partial class SseClientOptions : ClientPipelineOptions + { + public SseClientOptions() => throw null; + + [Experimental("SCME0002")] + internal SseClientOptions(IConfigurationSection section) : base(section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/SseClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/SseClientSettings.cs new file mode 100644 index 00000000000..951713d7154 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/SseClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Streaming.Sse +{ + [Experimental("SCME0002")] + public partial class SseClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public SseClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/StreamingSseModelFactory.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/StreamingSseModelFactory.cs new file mode 100644 index 00000000000..323ddf4742d --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/StreamingSseModelFactory.cs @@ -0,0 +1,16 @@ +// + +#nullable disable + +using Streaming.Sse._Retrieve; +using Streaming.Sse._Unnamed; + +namespace Streaming.Sse +{ + public static partial class StreamingSseModelFactory + { + public static Info Info(string desc = default) => throw null; + + public static RetrievalRequest RetrievalRequest(string query = default) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/Unnamed.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/Unnamed.cs new file mode 100644 index 00000000000..290d62257bf --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/Unnamed.cs @@ -0,0 +1,28 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Net.ServerSentEvents; +using System.Threading; +using System.Threading.Tasks; + +#pragma warning disable SCME0005 // Type is for evaluation purposes only and is subject to change or removal in future updates. +namespace Streaming.Sse._Unnamed +{ + public partial class Unnamed + { + protected Unnamed() => throw null; + + internal Unnamed(ClientPipeline pipeline, Uri endpoint) => throw null; + + public ClientPipeline Pipeline => throw null; + + public virtual Task>> ReceiveAsync(RequestOptions options) => throw null; + + public virtual Task>> ReceiveAsync(CancellationToken cancellationToken = default) => throw null; + } +} +#pragma warning restore SCME0005 // Type is for evaluation purposes only and is subject to change or removal in future updates. diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..85e07477d00 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "SseClient": { + "type": "object", + "description": "Configuration for SseClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/sseClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "sseClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Streaming.Sse.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Streaming.Sse.csproj new file mode 100644 index 00000000000..5407f02d669 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/src/Streaming.Sse.csproj @@ -0,0 +1,20 @@ + + + This is the Streaming.Sse client library for developing .NET applications with rich experience. + SDK Code Generation Streaming.Sse + 1.0.0-beta.1 + Streaming.Sse + netstandard2.0;net8.0 + latest + true + + + + + + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/tspCodeModel.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/tspCodeModel.json new file mode 100644 index 00000000000..8e08fa3705e --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/streaming/sse/tspCodeModel.json @@ -0,0 +1,1085 @@ +{ + "name": "Streaming.Sse", + "apiVersions": [], + "enums": [], + "constants": [ + { + "$id": "1", + "kind": "constant", + "name": "ReceiveResponseContentType", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "2", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "text/event-stream", + "decorators": [], + "isExactName": false + }, + { + "$id": "3", + "kind": "constant", + "name": "ReceiveResponseContentType1", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "4", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "text/event-stream", + "decorators": [], + "isExactName": false + }, + { + "$id": "5", + "kind": "constant", + "name": "ReceiveResponseContentType2", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "6", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "text/event-stream", + "decorators": [], + "isExactName": false + }, + { + "$id": "7", + "kind": "constant", + "name": "Receive", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "8", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "[DONE]", + "decorators": [], + "isExactName": false + }, + { + "$id": "9", + "kind": "constant", + "name": "ReceiveResponseContentType3", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "10", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "text/event-stream", + "decorators": [], + "isExactName": false + }, + { + "$id": "11", + "kind": "constant", + "name": "StreamContentType", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "12", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/json", + "decorators": [], + "isExactName": false + }, + { + "$id": "13", + "kind": "constant", + "name": "ReceiveResponseContentType4", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "14", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "text/event-stream", + "decorators": [], + "isExactName": false + }, + { + "$id": "15", + "kind": "constant", + "name": "Receive1", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "16", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "[DONE]", + "decorators": [], + "isExactName": false + }, + { + "$id": "17", + "kind": "constant", + "name": "ReceiveResponseContentType5", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "18", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "text/event-stream", + "decorators": [], + "isExactName": false + } + ], + "models": [ + { + "$id": "19", + "kind": "model", + "name": "Info", + "namespace": "Streaming.Sse.Unnamed", + "crossLanguageDefinitionId": "Streaming.Sse.Unnamed.Info", + "usage": "Output", + "decorators": [], + "serializationOptions": {}, + "isExactName": false, + "properties": [ + { + "$id": "20", + "kind": "property", + "name": "desc", + "type": { + "$id": "21", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Streaming.Sse.Unnamed.Info.desc", + "serializationOptions": {}, + "isHttpMetadata": false, + "isExactName": false + } + ] + }, + { + "$id": "22", + "kind": "model", + "name": "ResponseCreated", + "namespace": "Streaming.Sse.Named", + "crossLanguageDefinitionId": "Streaming.Sse.Named.ResponseCreated", + "usage": "Output", + "decorators": [], + "serializationOptions": {}, + "isExactName": false, + "properties": [ + { + "$id": "23", + "kind": "property", + "name": "id", + "type": { + "$id": "24", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Streaming.Sse.Named.ResponseCreated.id", + "serializationOptions": {}, + "isHttpMetadata": false, + "isExactName": false + } + ] + }, + { + "$id": "25", + "kind": "model", + "name": "ResponseDelta", + "namespace": "Streaming.Sse.Named", + "crossLanguageDefinitionId": "Streaming.Sse.Named.ResponseDelta", + "usage": "Output", + "decorators": [], + "serializationOptions": {}, + "isExactName": false, + "properties": [ + { + "$id": "26", + "kind": "property", + "name": "delta", + "type": { + "$id": "27", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Streaming.Sse.Named.ResponseDelta.delta", + "serializationOptions": {}, + "isHttpMetadata": false, + "isExactName": false + } + ] + }, + { + "$id": "28", + "kind": "model", + "name": "RetrievalRequest", + "namespace": "Streaming.Sse.Retrieve", + "crossLanguageDefinitionId": "Streaming.Sse.Retrieve.RetrievalRequest", + "usage": "Input,Json", + "decorators": [], + "serializationOptions": { + "json": { + "name": "RetrievalRequest" + } + }, + "isExactName": false, + "properties": [ + { + "$id": "29", + "kind": "property", + "name": "query", + "serializedName": "query", + "type": { + "$id": "30", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Streaming.Sse.Retrieve.RetrievalRequest.query", + "serializationOptions": { + "json": { + "name": "query" + } + }, + "isHttpMetadata": false, + "isExactName": false + } + ] + }, + { + "$id": "31", + "kind": "model", + "name": "PartialResult", + "namespace": "Streaming.Sse.Retrieve", + "crossLanguageDefinitionId": "Streaming.Sse.Retrieve.PartialResult", + "usage": "Output", + "decorators": [], + "serializationOptions": {}, + "isExactName": false, + "properties": [ + { + "$id": "32", + "kind": "property", + "name": "text", + "type": { + "$id": "33", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Streaming.Sse.Retrieve.PartialResult.text", + "serializationOptions": {}, + "isHttpMetadata": false, + "isExactName": false + } + ] + }, + { + "$id": "34", + "kind": "model", + "name": "FinalResult", + "namespace": "Streaming.Sse.Retrieve", + "crossLanguageDefinitionId": "Streaming.Sse.Retrieve.FinalResult", + "usage": "Output", + "decorators": [], + "serializationOptions": {}, + "isExactName": false, + "properties": [ + { + "$id": "35", + "kind": "property", + "name": "references", + "type": { + "$id": "36", + "kind": "array", + "name": "Array", + "valueType": { + "$id": "37", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "crossLanguageDefinitionId": "TypeSpec.Array", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Streaming.Sse.Retrieve.FinalResult.references", + "serializationOptions": {}, + "isHttpMetadata": false, + "isExactName": false + } + ] + } + ], + "clients": [ + { + "$id": "38", + "kind": "client", + "name": "SseClient", + "isExactName": false, + "namespace": "Streaming.Sse", + "doc": "Test of server-sent events (SSE) streaming.", + "methods": [], + "parameters": [ + { + "$id": "39", + "kind": "endpoint", + "name": "endpoint", + "serializedName": "endpoint", + "doc": "Service host", + "type": { + "$id": "40", + "kind": "url", + "name": "endpoint", + "crossLanguageDefinitionId": "TypeSpec.url" + }, + "isApiVersion": false, + "optional": false, + "scope": "Client", + "isEndpoint": true, + "defaultValue": { + "type": { + "$id": "41", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string" + }, + "value": "http://localhost:3000" + }, + "serverUrlTemplate": "{endpoint}", + "skipUrlEncoding": false, + "readOnly": false, + "crossLanguageDefinitionId": "Streaming.Sse.endpoint", + "isExactName": false + } + ], + "initializedBy": 1, + "decorators": [], + "crossLanguageDefinitionId": "Streaming.Sse", + "apiVersions": [], + "children": [ + { + "$id": "42", + "kind": "client", + "name": "Unnamed", + "isExactName": false, + "namespace": "Streaming.Sse.Unnamed", + "methods": [ + { + "$id": "43", + "kind": "basic", + "name": "receive", + "isExactName": false, + "accessibility": "public", + "apiVersions": [], + "operation": { + "$id": "44", + "name": "receive", + "isExactName": false, + "resourceName": "Unnamed", + "accessibility": "public", + "parameters": [ + { + "$id": "45", + "kind": "header", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "1" + }, + "isApiVersion": false, + "optional": false, + "isContentType": false, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "Streaming.Sse.Unnamed.receive.accept", + "methodParameterSegments": [ + { + "$id": "46", + "kind": "method", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "1" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "Streaming.Sse.Unnamed.receive.accept", + "readOnly": false, + "access": "public", + "decorators": [], + "isExactName": false + } + ], + "isExactName": false + } + ], + "responses": [ + { + "statusCodes": [ + 200 + ], + "bodyType": { + "$id": "47", + "kind": "streaming", + "name": "SSEStreamUnnamedEvents", + "valueType": { + "$id": "48", + "kind": "union", + "name": "UnnamedEvents", + "variantTypes": [ + { + "$ref": "19" + } + ], + "namespace": "Streaming.Sse.Unnamed", + "decorators": [], + "isExactName": false + }, + "streamKind": "sse", + "contentTypes": [ + "text/event-stream" + ], + "crossLanguageDefinitionId": "TypeSpec.SSE.SSEStream" + }, + "headers": [ + { + "name": "contentType", + "nameInResponse": "content-type", + "type": { + "$ref": "3" + } + } + ], + "isErrorResponse": false, + "contentTypes": [ + "text/event-stream" + ], + "serializationOptions": {} + } + ], + "httpMethod": "GET", + "uri": "{endpoint}", + "path": "/streaming/sse/unnamed/receive", + "bufferResponse": false, + "generateProtocolMethod": true, + "generateConvenienceMethod": true, + "crossLanguageDefinitionId": "Streaming.Sse.Unnamed.receive", + "decorators": [], + "namespace": "Streaming.Sse.Unnamed" + }, + "parameters": [ + { + "$ref": "46" + } + ], + "response": { + "type": { + "$id": "49", + "kind": "streaming", + "name": "SSEStreamUnnamedEvents", + "valueType": { + "$ref": "48" + }, + "streamKind": "sse", + "contentTypes": [ + "text/event-stream" + ], + "crossLanguageDefinitionId": "TypeSpec.SSE.SSEStream" + } + }, + "isOverride": false, + "generateConvenient": true, + "generateProtocol": true, + "crossLanguageDefinitionId": "Streaming.Sse.Unnamed.receive" + } + ], + "parameters": [ + { + "$id": "50", + "kind": "endpoint", + "name": "endpoint", + "serializedName": "endpoint", + "doc": "Service host", + "type": { + "$id": "51", + "kind": "url", + "name": "endpoint", + "crossLanguageDefinitionId": "TypeSpec.url" + }, + "isApiVersion": false, + "optional": false, + "scope": "Client", + "isEndpoint": true, + "defaultValue": { + "type": { + "$id": "52", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string" + }, + "value": "http://localhost:3000" + }, + "serverUrlTemplate": "{endpoint}", + "skipUrlEncoding": false, + "readOnly": false, + "crossLanguageDefinitionId": "Streaming.Sse.Unnamed.endpoint", + "isExactName": false + } + ], + "initializedBy": 0, + "decorators": [], + "crossLanguageDefinitionId": "Streaming.Sse.Unnamed", + "apiVersions": [], + "parent": { + "$ref": "38" + }, + "isMultiServiceClient": false + }, + { + "$id": "53", + "kind": "client", + "name": "Named", + "isExactName": false, + "namespace": "Streaming.Sse.Named", + "methods": [ + { + "$id": "54", + "kind": "basic", + "name": "receive", + "isExactName": false, + "accessibility": "public", + "apiVersions": [], + "operation": { + "$id": "55", + "name": "receive", + "isExactName": false, + "resourceName": "Named", + "accessibility": "public", + "parameters": [ + { + "$id": "56", + "kind": "header", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "5" + }, + "isApiVersion": false, + "optional": false, + "isContentType": false, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "Streaming.Sse.Named.receive.accept", + "methodParameterSegments": [ + { + "$id": "57", + "kind": "method", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "5" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "Streaming.Sse.Named.receive.accept", + "readOnly": false, + "access": "public", + "decorators": [], + "isExactName": false + } + ], + "isExactName": false + } + ], + "responses": [ + { + "statusCodes": [ + 200 + ], + "bodyType": { + "$id": "58", + "kind": "streaming", + "name": "SSEStreamResponseEvents", + "valueType": { + "$id": "59", + "kind": "union", + "name": "ResponseEvents", + "variantTypes": [ + { + "$ref": "22" + }, + { + "$ref": "25" + }, + { + "$ref": "7" + } + ], + "namespace": "Streaming.Sse.Named", + "decorators": [], + "isExactName": false + }, + "streamKind": "sse", + "contentTypes": [ + "text/event-stream" + ], + "terminalEventValue": "[DONE]", + "crossLanguageDefinitionId": "TypeSpec.SSE.SSEStream" + }, + "headers": [ + { + "name": "contentType", + "nameInResponse": "content-type", + "type": { + "$ref": "9" + } + } + ], + "isErrorResponse": false, + "contentTypes": [ + "text/event-stream" + ], + "serializationOptions": {} + } + ], + "httpMethod": "GET", + "uri": "{endpoint}", + "path": "/streaming/sse/named/receive", + "bufferResponse": false, + "generateProtocolMethod": true, + "generateConvenienceMethod": true, + "crossLanguageDefinitionId": "Streaming.Sse.Named.receive", + "decorators": [], + "namespace": "Streaming.Sse.Named" + }, + "parameters": [ + { + "$ref": "57" + } + ], + "response": { + "type": { + "$id": "60", + "kind": "streaming", + "name": "SSEStreamResponseEvents", + "valueType": { + "$ref": "59" + }, + "streamKind": "sse", + "contentTypes": [ + "text/event-stream" + ], + "terminalEventValue": "[DONE]", + "crossLanguageDefinitionId": "TypeSpec.SSE.SSEStream" + } + }, + "isOverride": false, + "generateConvenient": true, + "generateProtocol": true, + "crossLanguageDefinitionId": "Streaming.Sse.Named.receive" + } + ], + "parameters": [ + { + "$id": "61", + "kind": "endpoint", + "name": "endpoint", + "serializedName": "endpoint", + "doc": "Service host", + "type": { + "$id": "62", + "kind": "url", + "name": "endpoint", + "crossLanguageDefinitionId": "TypeSpec.url" + }, + "isApiVersion": false, + "optional": false, + "scope": "Client", + "isEndpoint": true, + "defaultValue": { + "type": { + "$id": "63", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string" + }, + "value": "http://localhost:3000" + }, + "serverUrlTemplate": "{endpoint}", + "skipUrlEncoding": false, + "readOnly": false, + "crossLanguageDefinitionId": "Streaming.Sse.Named.endpoint", + "isExactName": false + } + ], + "initializedBy": 0, + "decorators": [], + "crossLanguageDefinitionId": "Streaming.Sse.Named", + "apiVersions": [], + "parent": { + "$ref": "38" + }, + "isMultiServiceClient": false + }, + { + "$id": "64", + "kind": "client", + "name": "Retrieve", + "isExactName": false, + "namespace": "Streaming.Sse.Retrieve", + "methods": [ + { + "$id": "65", + "kind": "basic", + "name": "stream", + "isExactName": false, + "accessibility": "public", + "apiVersions": [], + "operation": { + "$id": "66", + "name": "stream", + "isExactName": false, + "resourceName": "Retrieve", + "accessibility": "public", + "parameters": [ + { + "$id": "67", + "kind": "header", + "name": "contentType", + "serializedName": "Content-Type", + "doc": "Body parameter's content type. Known values are application/json", + "type": { + "$ref": "11" + }, + "isApiVersion": false, + "optional": false, + "isContentType": true, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "Streaming.Sse.Retrieve.stream.contentType", + "methodParameterSegments": [ + { + "$id": "68", + "kind": "method", + "name": "contentType", + "serializedName": "Content-Type", + "doc": "Body parameter's content type. Known values are application/json", + "type": { + "$ref": "11" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "Streaming.Sse.Retrieve.stream.contentType", + "readOnly": false, + "access": "public", + "decorators": [], + "isExactName": false + } + ], + "isExactName": false + }, + { + "$id": "69", + "kind": "header", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "13" + }, + "isApiVersion": false, + "optional": false, + "isContentType": false, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "Streaming.Sse.Retrieve.stream.accept", + "methodParameterSegments": [ + { + "$id": "70", + "kind": "method", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "13" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "Streaming.Sse.Retrieve.stream.accept", + "readOnly": false, + "access": "public", + "decorators": [], + "isExactName": false + } + ], + "isExactName": false + }, + { + "$id": "71", + "kind": "body", + "name": "request", + "serializedName": "request", + "type": { + "$ref": "28" + }, + "isApiVersion": false, + "contentTypes": [ + "application/json" + ], + "defaultContentType": "application/json", + "optional": false, + "scope": "Method", + "decorators": [], + "readOnly": false, + "crossLanguageDefinitionId": "Streaming.Sse.Retrieve.stream.request", + "methodParameterSegments": [ + { + "$id": "72", + "kind": "method", + "name": "request", + "serializedName": "request", + "type": { + "$ref": "28" + }, + "location": "Body", + "isApiVersion": false, + "optional": false, + "scope": "Method", + "crossLanguageDefinitionId": "Streaming.Sse.Retrieve.stream.request", + "readOnly": false, + "access": "public", + "decorators": [], + "isExactName": false + } + ], + "isExactName": false, + "serializationOptions": { + "json": { + "name": "request" + } + } + } + ], + "responses": [ + { + "statusCodes": [ + 200 + ], + "bodyType": { + "$id": "73", + "kind": "streaming", + "name": "SSEStreamRetrievalEvents", + "valueType": { + "$id": "74", + "kind": "union", + "name": "RetrievalEvents", + "variantTypes": [ + { + "$ref": "31" + }, + { + "$ref": "34" + }, + { + "$ref": "15" + } + ], + "namespace": "Streaming.Sse.Retrieve", + "decorators": [], + "isExactName": false + }, + "streamKind": "sse", + "contentTypes": [ + "text/event-stream" + ], + "terminalEventValue": "[DONE]", + "crossLanguageDefinitionId": "TypeSpec.SSE.SSEStream" + }, + "headers": [ + { + "name": "contentType", + "nameInResponse": "content-type", + "type": { + "$ref": "17" + } + } + ], + "isErrorResponse": false, + "contentTypes": [ + "text/event-stream" + ], + "serializationOptions": {} + } + ], + "httpMethod": "POST", + "uri": "{endpoint}", + "path": "/streaming/sse/retrieve/stream", + "requestMediaTypes": [ + "application/json" + ], + "bufferResponse": false, + "generateProtocolMethod": true, + "generateConvenienceMethod": true, + "crossLanguageDefinitionId": "Streaming.Sse.Retrieve.stream", + "decorators": [], + "namespace": "Streaming.Sse.Retrieve" + }, + "parameters": [ + { + "$ref": "72" + }, + { + "$ref": "68" + }, + { + "$ref": "70" + } + ], + "response": { + "type": { + "$id": "75", + "kind": "streaming", + "name": "SSEStreamRetrievalEvents", + "valueType": { + "$ref": "74" + }, + "streamKind": "sse", + "contentTypes": [ + "text/event-stream" + ], + "terminalEventValue": "[DONE]", + "crossLanguageDefinitionId": "TypeSpec.SSE.SSEStream" + } + }, + "isOverride": false, + "generateConvenient": true, + "generateProtocol": true, + "crossLanguageDefinitionId": "Streaming.Sse.Retrieve.stream" + } + ], + "parameters": [ + { + "$id": "76", + "kind": "endpoint", + "name": "endpoint", + "serializedName": "endpoint", + "doc": "Service host", + "type": { + "$id": "77", + "kind": "url", + "name": "endpoint", + "crossLanguageDefinitionId": "TypeSpec.url" + }, + "isApiVersion": false, + "optional": false, + "scope": "Client", + "isEndpoint": true, + "defaultValue": { + "type": { + "$id": "78", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string" + }, + "value": "http://localhost:3000" + }, + "serverUrlTemplate": "{endpoint}", + "skipUrlEncoding": false, + "readOnly": false, + "crossLanguageDefinitionId": "Streaming.Sse.Retrieve.endpoint", + "isExactName": false + } + ], + "initializedBy": 0, + "decorators": [], + "crossLanguageDefinitionId": "Streaming.Sse.Retrieve", + "apiVersions": [], + "parent": { + "$ref": "38" + }, + "isMultiServiceClient": false + } + ], + "isMultiServiceClient": false + } + ] +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Type.Array.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Type.Array.csproj index 282ee36d04e..af22f3f1b49 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Type.Array.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Type.Array.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Type.Dictionary.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Type.Dictionary.csproj index d648362b471..7d41b5b95d9 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Type.Dictionary.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Type.Dictionary.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/src/Type.Enum.Extensible.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/src/Type.Enum.Extensible.csproj index caf5e1002c3..04e3dacd16e 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/src/Type.Enum.Extensible.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/src/Type.Enum.Extensible.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/src/Type.Enum.Fixed.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/src/Type.Enum.Fixed.csproj index 4306db74243..7477ee9a63c 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/src/Type.Enum.Fixed.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/src/Type.Enum.Fixed.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/empty/src/Type.Model.Empty.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/empty/src/Type.Model.Empty.csproj index 3ca811ed780..a9634f1697b 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/empty/src/Type.Model.Empty.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/empty/src/Type.Model.Empty.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/enum-discriminator/src/Type.Model.Inheritance.EnumDiscriminator.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/enum-discriminator/src/Type.Model.Inheritance.EnumDiscriminator.csproj index f5904880175..d08e41f1d15 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/enum-discriminator/src/Type.Model.Inheritance.EnumDiscriminator.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/enum-discriminator/src/Type.Model.Inheritance.EnumDiscriminator.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/nested-discriminator/src/Type.Model.Inheritance.NestedDiscriminator.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/nested-discriminator/src/Type.Model.Inheritance.NestedDiscriminator.csproj index 163b67e7efd..ec3644acc19 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/nested-discriminator/src/Type.Model.Inheritance.NestedDiscriminator.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/nested-discriminator/src/Type.Model.Inheritance.NestedDiscriminator.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/not-discriminated/src/Type.Model.Inheritance.NotDiscriminated.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/not-discriminated/src/Type.Model.Inheritance.NotDiscriminated.csproj index f61e80ee60f..ef30f07daaa 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/not-discriminated/src/Type.Model.Inheritance.NotDiscriminated.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/not-discriminated/src/Type.Model.Inheritance.NotDiscriminated.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/recursive/src/Type.Model.Inheritance.Recursive.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/recursive/src/Type.Model.Inheritance.Recursive.csproj index 65907515600..2df480366e4 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/recursive/src/Type.Model.Inheritance.Recursive.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/recursive/src/Type.Model.Inheritance.Recursive.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/single-discriminator/src/Type.Model.Inheritance.SingleDiscriminator.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/single-discriminator/src/Type.Model.Inheritance.SingleDiscriminator.csproj index 2212640653b..f4c6d9a9882 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/single-discriminator/src/Type.Model.Inheritance.SingleDiscriminator.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/single-discriminator/src/Type.Model.Inheritance.SingleDiscriminator.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/usage/src/Type.Model.Usage.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/usage/src/Type.Model.Usage.csproj index 6b0709be701..003d61fe030 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/usage/src/Type.Model.Usage.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/usage/src/Type.Model.Usage.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/visibility/src/Type.Model.Visibility.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/visibility/src/Type.Model.Visibility.csproj index 5df6ffbf941..b7b753fd838 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/visibility/src/Type.Model.Visibility.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/visibility/src/Type.Model.Visibility.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Type.Property.AdditionalProperties.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Type.Property.AdditionalProperties.csproj index 7ff68f688d4..9abe63e606f 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Type.Property.AdditionalProperties.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Type.Property.AdditionalProperties.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Type.Property.Nullable.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Type.Property.Nullable.csproj index 83175f58ab6..ffeb10d34cf 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Type.Property.Nullable.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Type.Property.Nullable.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Type.Property.Optional.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Type.Property.Optional.csproj index 49518dbc1cb..be14f97ba68 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Type.Property.Optional.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Type.Property.Optional.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Type.Property.ValueTypes.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Type.Property.ValueTypes.csproj index aff69f63aae..a14ac7415e9 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Type.Property.ValueTypes.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Type.Property.ValueTypes.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Type.Scalar.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Type.Scalar.csproj index 85bb48347ca..511bee690f3 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Type.Scalar.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Type.Scalar.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Type.Union.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Type.Union.csproj index d4b2566618c..3999c0c446b 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Type.Union.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Type.Union.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v1/src/Versioning.Added.V1.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v1/src/Versioning.Added.V1.csproj index 2d24f7677a0..49211c4b5c7 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v1/src/Versioning.Added.V1.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v1/src/Versioning.Added.V1.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v2/src/Versioning.Added.V2.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v2/src/Versioning.Added.V2.csproj index e28289358b0..fcce1280247 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v2/src/Versioning.Added.V2.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v2/src/Versioning.Added.V2.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v1/src/Versioning.MadeOptional.V1.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v1/src/Versioning.MadeOptional.V1.csproj index 425e6427d85..8a578a85e01 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v1/src/Versioning.MadeOptional.V1.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v1/src/Versioning.MadeOptional.V1.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v2/src/Versioning.MadeOptional.V2.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v2/src/Versioning.MadeOptional.V2.csproj index b9ed3268a5c..d0cd6cb4930 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v2/src/Versioning.MadeOptional.V2.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v2/src/Versioning.MadeOptional.V2.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v1/src/Versioning.Removed.V1.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v1/src/Versioning.Removed.V1.csproj index a321beb505f..4eb6329e52a 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v1/src/Versioning.Removed.V1.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v1/src/Versioning.Removed.V1.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2/src/Versioning.Removed.V2.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2/src/Versioning.Removed.V2.csproj index da25a39a527..f6d66aa509a 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2/src/Versioning.Removed.V2.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2/src/Versioning.Removed.V2.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2Preview/src/Versioning.Removed.V2Preview.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2Preview/src/Versioning.Removed.V2Preview.csproj index cdae2ae4a5d..1057c02afac 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2Preview/src/Versioning.Removed.V2Preview.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2Preview/src/Versioning.Removed.V2Preview.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v1/src/Versioning.RenamedFrom.V1.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v1/src/Versioning.RenamedFrom.V1.csproj index 8a6c4fe684c..c25f6f4c6ef 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v1/src/Versioning.RenamedFrom.V1.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v1/src/Versioning.RenamedFrom.V1.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v2/src/Versioning.RenamedFrom.V2.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v2/src/Versioning.RenamedFrom.V2.csproj index cdb136acd64..d93183b7e2f 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v2/src/Versioning.RenamedFrom.V2.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v2/src/Versioning.RenamedFrom.V2.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v1/src/Versioning.ReturnTypeChangedFrom.V1.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v1/src/Versioning.ReturnTypeChangedFrom.V1.csproj index 535e8837878..0a3a2b0fe1f 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v1/src/Versioning.ReturnTypeChangedFrom.V1.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v1/src/Versioning.ReturnTypeChangedFrom.V1.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v2/src/Versioning.ReturnTypeChangedFrom.V2.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v2/src/Versioning.ReturnTypeChangedFrom.V2.csproj index 891cf9cea8a..53ec26e5559 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v2/src/Versioning.ReturnTypeChangedFrom.V2.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v2/src/Versioning.ReturnTypeChangedFrom.V2.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v1/src/Versioning.TypeChangedFrom.V1.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v1/src/Versioning.TypeChangedFrom.V1.csproj index 2501b19f393..27927c9f522 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v1/src/Versioning.TypeChangedFrom.V1.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v1/src/Versioning.TypeChangedFrom.V1.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v2/src/Versioning.TypeChangedFrom.V2.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v2/src/Versioning.TypeChangedFrom.V2.csproj index 315b0819d81..05a17871c00 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v2/src/Versioning.TypeChangedFrom.V2.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v2/src/Versioning.TypeChangedFrom.V2.csproj @@ -10,7 +10,7 @@ - + diff --git a/packages/http-client-csharp/package-lock.json b/packages/http-client-csharp/package-lock.json index af71426fae8..b9ac7c38daa 100644 --- a/packages/http-client-csharp/package-lock.json +++ b/packages/http-client-csharp/package-lock.json @@ -18,14 +18,15 @@ "@microsoft/api-extractor": "^7.52.2", "@types/node": "~22.12.0", "@typespec/compiler": "1.14.0", + "@typespec/events": "0.84.0", "@typespec/http": "1.14.0", - "@typespec/http-specs": "0.1.0-alpha.39", + "@typespec/http-specs": "0.1.0-alpha.40", "@typespec/json-schema": "1.14.0", "@typespec/library-linter": "0.84.0", "@typespec/openapi": "1.14.0", "@typespec/rest": "0.84.0", "@typespec/spec-api": "0.1.0-alpha.15", - "@typespec/spector": "0.1.0-alpha.26", + "@typespec/spector": "0.1.0-alpha.27", "@typespec/sse": "0.84.0", "@typespec/streams": "0.84.0", "@typespec/tspd": "0.76.0", @@ -42,6 +43,7 @@ "@azure-tools/typespec-azure-core": ">=0.70.0 <0.71.0 || ~0.71.0-0", "@azure-tools/typespec-client-generator-core": ">=0.70.0 <0.71.0 || ~0.71.0-0", "@typespec/compiler": "^1.14.0", + "@typespec/events": ">=0.84.0 <0.85.0 || ~0.85.0-0", "@typespec/http": "^1.14.0", "@typespec/openapi": "^1.14.0", "@typespec/rest": ">=0.84.0 <0.85.0 || ~0.85.0-0", @@ -52,8 +54,6 @@ }, "node_modules/@alloy-js/core": { "version": "0.24.1", - "resolved": "https://registry.npmjs.org/@alloy-js/core/-/core-0.24.1.tgz", - "integrity": "sha512-cye97/HGo0/G8XIc8UnS0PaSoSOj9DDPEiuKsXsn7xQgR1sbL+Nf0oTMZnL2fFb7mRnmULO84x5wK8R/YtReTg==", "dev": true, "license": "MIT", "dependencies": { @@ -68,8 +68,6 @@ }, "node_modules/@alloy-js/markdown": { "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@alloy-js/markdown/-/markdown-0.24.0.tgz", - "integrity": "sha512-gubCVcqm9OVVBBofADxy5eUS2LYNt1qo0oMvUR8ANyh0+2lKP7zx9D9Q9OXbF5TB9f+vod3OeTuX2F6QLtLKiQ==", "dev": true, "license": "MIT", "dependencies": { @@ -79,8 +77,6 @@ }, "node_modules/@alloy-js/typescript": { "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@alloy-js/typescript/-/typescript-0.24.0.tgz", - "integrity": "sha512-xpnWUa5gaPRg4eeTFp4Xg8GRXzUghIpOzAWuGujvihgksIAH92lLTvEcPL1JTICup8Jv2us0JHndc4a8LWG+Ow==", "dev": true, "license": "MIT", "dependencies": { @@ -91,8 +87,6 @@ }, "node_modules/@azure-tools/azure-http-specs": { "version": "0.1.0-alpha.43", - "resolved": "https://registry.npmjs.org/@azure-tools/azure-http-specs/-/azure-http-specs-0.1.0-alpha.43.tgz", - "integrity": "sha512-5FTIh21iGlMtVkQHZrbFPg7fIDYtIxjG1oYNbcxdirfQUm/XtWvCv8UAwr3OzEBrE1+YEC6c164x4+bINm5UHA==", "dev": true, "license": "MIT", "dependencies": { @@ -113,8 +107,6 @@ }, "node_modules/@azure-tools/typespec-azure-core": { "version": "0.70.0", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-core/-/typespec-azure-core-0.70.0.tgz", - "integrity": "sha512-8MojHWRtTLKycJJ98IMoXX/5b9tTo3F0d3Iu20OKoCsORnSDG2NfjOWHJVW63oxA2t8VTlqC6J8BDcnRihygQQ==", "dev": true, "license": "MIT", "engines": { @@ -128,8 +120,6 @@ }, "node_modules/@azure-tools/typespec-client-generator-core": { "version": "0.70.0", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.70.0.tgz", - "integrity": "sha512-8yxOYJfID3wp3FLQYNIa3kbmR5YLWjYtpB+i4u66quHTTQWWANHV1/o9f8xymAf+8fO9jbLo5tw1JerumxISWg==", "dev": true, "license": "MIT", "dependencies": { @@ -155,8 +145,6 @@ }, "node_modules/@azure/abort-controller": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", "license": "MIT", "dependencies": { "tslib": "^2.6.2" @@ -167,8 +155,6 @@ }, "node_modules/@azure/core-auth": { "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.10.1.tgz", - "integrity": "sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==", "license": "MIT", "dependencies": { "@azure/abort-controller": "^2.1.2", @@ -181,8 +167,6 @@ }, "node_modules/@azure/core-client": { "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.10.1.tgz", - "integrity": "sha512-Nh5PhEOeY6PrnxNPsEHRr9eimxLwgLlpmguQaHKBinFYA/RU9+kOYVOQqOrTsCL+KSxrLLl1gD8Dk5BFW/7l/w==", "license": "MIT", "dependencies": { "@azure/abort-controller": "^2.1.2", @@ -199,8 +183,6 @@ }, "node_modules/@azure/core-http-compat": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@azure/core-http-compat/-/core-http-compat-2.5.0.tgz", - "integrity": "sha512-BoSmXPx2er1Ai+wKlDvj29jIQespCNBwEmKyZVHO2kEFsWbGjAjwMCGzug3DJM5/QYIV3vej0S1zcU5bq9fa8w==", "dev": true, "license": "MIT", "dependencies": { @@ -216,8 +198,6 @@ }, "node_modules/@azure/core-lro": { "version": "2.7.2", - "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.7.2.tgz", - "integrity": "sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==", "dev": true, "license": "MIT", "dependencies": { @@ -232,8 +212,6 @@ }, "node_modules/@azure/core-paging": { "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.7.0.tgz", - "integrity": "sha512-7GEAoIsaoBr6KELNRb8nypowCqvk8dnCHFCYg4XD4lOQGY2GqjQg5IhkRjyBFRO18CGSMq05PaNqSOE9GQro3g==", "dev": true, "license": "MIT", "dependencies": { @@ -245,8 +223,6 @@ }, "node_modules/@azure/core-rest-pipeline": { "version": "1.25.0", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.25.0.tgz", - "integrity": "sha512-bMs8ekJLjX8wPV+9IPBges1SLPyuDtE9g5gLDWOpxzKcoOFQnpLGkbcT1tdw3FaAmDS1gnPmMmJ6y/T5B96kIA==", "license": "MIT", "dependencies": { "@azure/abort-controller": "^2.1.2", @@ -263,8 +239,6 @@ }, "node_modules/@azure/core-tracing": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.3.1.tgz", - "integrity": "sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ==", "license": "MIT", "dependencies": { "tslib": "^2.6.2" @@ -275,8 +249,6 @@ }, "node_modules/@azure/core-util": { "version": "1.13.1", - "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.13.1.tgz", - "integrity": "sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==", "license": "MIT", "dependencies": { "@azure/abort-controller": "^2.1.2", @@ -289,8 +261,6 @@ }, "node_modules/@azure/core-xml": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@azure/core-xml/-/core-xml-1.6.0.tgz", - "integrity": "sha512-e7lX/dk//F6Qf7BB6PTY4+p2yuOQtyOeHGyapYHNwqSp2OnYpwQt49A/Nin2XmKBQ69pwagR4k/lQBq8lbHQkA==", "dev": true, "license": "MIT", "dependencies": { @@ -303,8 +273,6 @@ }, "node_modules/@azure/identity": { "version": "4.13.1", - "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.13.1.tgz", - "integrity": "sha512-5C/2WD5Vb1lHnZS16dNQRPMjN6oV/Upba+C9nBIs15PmOi6A3ZGs4Lr2u60zw4S04gi+u3cEXiqTVP7M4Pz3kw==", "license": "MIT", "dependencies": { "@azure/abort-controller": "^2.0.0", @@ -325,8 +293,6 @@ }, "node_modules/@azure/logger": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.3.0.tgz", - "integrity": "sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==", "license": "MIT", "dependencies": { "@typespec/ts-http-runtime": "^0.3.0", @@ -338,8 +304,6 @@ }, "node_modules/@azure/msal-browser": { "version": "5.11.0", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-5.11.0.tgz", - "integrity": "sha512-zkGNYS3TwY8lUpPIafAmsFCYZbgFixY9y/LZB9GUg0IILoHTqpN26j5OrkL1AQThh/YdZsawe4iWXfp85lFVxg==", "license": "MIT", "dependencies": { "@azure/msal-common": "16.6.2" @@ -350,8 +314,6 @@ }, "node_modules/@azure/msal-common": { "version": "16.6.2", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-16.6.2.tgz", - "integrity": "sha512-hQjjsekAjB00cM1EmatWJlzhEoK2Qhz7Rj5gvM6tYf8iL7RM3tkxlpU9fG0+ofkulzg9AEEA6dIEnSmDr5ZqUA==", "license": "MIT", "engines": { "node": ">=0.8.0" @@ -359,8 +321,6 @@ }, "node_modules/@azure/msal-node": { "version": "5.2.2", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-5.2.2.tgz", - "integrity": "sha512-toS+2AePxqyzb0YOKttDOOiSl3jrkK9aiqIvpurpis0O34QcIS5gToqrgT39p04Dpxw3YoUU0lxJKTpSFFfA6Q==", "license": "MIT", "dependencies": { "@azure/msal-common": "16.6.2", @@ -372,8 +332,6 @@ }, "node_modules/@azure/storage-blob": { "version": "12.31.0", - "resolved": "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.31.0.tgz", - "integrity": "sha512-DBgNv10aCSxopt92DkTDD0o9xScXeBqPKGmR50FPZQaEcH4JLQ+GEOGEDv19V5BMkB7kxr+m4h6il/cCDPvmHg==", "dev": true, "license": "MIT", "dependencies": { @@ -398,8 +356,6 @@ }, "node_modules/@azure/storage-common": { "version": "12.4.1", - "resolved": "https://registry.npmjs.org/@azure/storage-common/-/storage-common-12.4.1.tgz", - "integrity": "sha512-t14unw/WofGDUi7TKJrsyXyPsN+NLgRm7hMaq0llxNmTIzt7f257+6LE6FKIJPh88zLj6M7LPvzve0fEYg/L3A==", "dev": true, "license": "MIT", "dependencies": { @@ -419,8 +375,6 @@ }, "node_modules/@babel/code-frame": { "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", - "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", "dev": true, "license": "MIT", "dependencies": { @@ -434,8 +388,6 @@ }, "node_modules/@babel/helper-string-parser": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", - "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", "dev": true, "license": "MIT", "engines": { @@ -444,8 +396,6 @@ }, "node_modules/@babel/helper-validator-identifier": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", - "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", "dev": true, "license": "MIT", "engines": { @@ -454,8 +404,6 @@ }, "node_modules/@babel/parser": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", - "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", "dev": true, "license": "MIT", "dependencies": { @@ -470,8 +418,6 @@ }, "node_modules/@babel/types": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", - "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", "dev": true, "license": "MIT", "dependencies": { @@ -484,8 +430,6 @@ }, "node_modules/@bcoe/v8-coverage": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", - "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", "dev": true, "license": "MIT", "engines": { @@ -494,8 +438,6 @@ }, "node_modules/@colors/colors": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "dev": true, "license": "MIT", "optional": true, @@ -539,8 +481,6 @@ }, "node_modules/@gerrit0/mini-shiki": { "version": "3.23.0", - "resolved": "https://registry.npmjs.org/@gerrit0/mini-shiki/-/mini-shiki-3.23.0.tgz", - "integrity": "sha512-bEMORlG0cqdjVyCEuU0cDQbORWX+kYCeo0kV1lbxF5bt4r7SID2l9bqsxJEM0zndaxpOUT7riCyIVEuqq/Ynxg==", "dev": true, "license": "MIT", "dependencies": { @@ -553,8 +493,6 @@ }, "node_modules/@inquirer/ansi": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-2.0.5.tgz", - "integrity": "sha512-doc2sWgJpbFQ64UflSVd17ibMGDuxO1yKgOgLMwavzESnXjFWJqUeG8saYosqKpHp4kWiM5x1nXvEjbpx90gzw==", "dev": true, "license": "MIT", "engines": { @@ -563,8 +501,6 @@ }, "node_modules/@inquirer/checkbox": { "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-5.1.5.tgz", - "integrity": "sha512-Jmf9tgBHIEK5SAOB7swYfStqmtkZb00xOTpSQmkoGEpdxOTpJi9RS0A8bkfDPHTTItZRJrRdZrEMu25wyj0VfQ==", "dev": true, "license": "MIT", "dependencies": { @@ -587,8 +523,6 @@ }, "node_modules/@inquirer/confirm": { "version": "6.0.13", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.0.13.tgz", - "integrity": "sha512-wkGPC7yJ5WJk1DJ5SX7fzk+gfj4BM8cf5dDDi71B/551xHrdsZVRJOC0WyikXd0pEsb/9cLniuE4atbsMqmFkw==", "dev": true, "license": "MIT", "dependencies": { @@ -609,8 +543,6 @@ }, "node_modules/@inquirer/core": { "version": "11.1.10", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-11.1.10.tgz", - "integrity": "sha512-a4Q5BXHQAHa9eO202sTaFCHFYVB3x5fauDuThEAdZ9gfn76pSxiKU7wWcEH0N1O0XmQvNfQNU6QXpiRxmYQx+A==", "dev": true, "license": "MIT", "dependencies": { @@ -636,8 +568,6 @@ }, "node_modules/@inquirer/editor": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-5.1.2.tgz", - "integrity": "sha512-Y3Nor7S/DhIPo+8Ym/dSY4efwKI4BsflKDwXh0jNeXJsSF3dteS/3Yf+z4wkibVZDvYMyCgknSTQlNahfunGHg==", "dev": true, "license": "MIT", "dependencies": { @@ -659,8 +589,6 @@ }, "node_modules/@inquirer/expand": { "version": "5.0.14", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-5.0.14.tgz", - "integrity": "sha512-qyY9zcIX2eKYwaAUiQo9zORd61Lc3sXeM72fVbeHkYnDkqfr8/armcRbmVAIrExeJhI2puk+uomeKtWrpUVUmQ==", "dev": true, "license": "MIT", "dependencies": { @@ -681,8 +609,6 @@ }, "node_modules/@inquirer/external-editor": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-3.0.0.tgz", - "integrity": "sha512-lDSwMgg+M5rq6JKBYaJwSX6T9e/HK2qqZ1oxmOwn4AQoJE5D+7TumsxLGC02PWS//rkIVqbZv3XA3ejsc9FYvg==", "dev": true, "license": "MIT", "dependencies": { @@ -703,8 +629,6 @@ }, "node_modules/@inquirer/figures": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-2.0.5.tgz", - "integrity": "sha512-NsSs4kzfm12lNetHwAn3GEuH317IzpwrMCbOuMIVytpjnJ90YYHNwdRgYGuKmVxwuIqSgqk3M5qqQt1cDk0tGQ==", "dev": true, "license": "MIT", "engines": { @@ -713,8 +637,6 @@ }, "node_modules/@inquirer/input": { "version": "5.0.13", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-5.0.13.tgz", - "integrity": "sha512-0l0jCHlJnXIV8CTxwQC0C+5Ziq8WP22edWgmciW2xYvoeoSck4v5FvCS1ctKdqLLR0dUo93uAHgWHywgBSoRyw==", "dev": true, "license": "MIT", "dependencies": { @@ -735,8 +657,6 @@ }, "node_modules/@inquirer/number": { "version": "4.0.13", - "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-4.0.13.tgz", - "integrity": "sha512-WHmkYnnJAou5gx7RgcvAfUggnHNM1zWfoh0dFPl3dxVssuqt+dK5rIbaOYQXNyOegvFnopbKupjnhw2O8gANNg==", "dev": true, "license": "MIT", "dependencies": { @@ -757,8 +677,6 @@ }, "node_modules/@inquirer/password": { "version": "5.0.13", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-5.0.13.tgz", - "integrity": "sha512-XDGu64ROHZjOOXLAANvJN7iIxWKhOSCG5VakrZ5kaScVR+snVJCFglD/hL3/677awtWcu4pXoWa280CDIYcBeg==", "dev": true, "license": "MIT", "dependencies": { @@ -780,8 +698,6 @@ }, "node_modules/@inquirer/prompts": { "version": "8.4.3", - "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-8.4.3.tgz", - "integrity": "sha512-ai5LseTw9HhegupIgmo4cn7RpnCGznjjXu4OI+7jMR8vu7T1ZCCNMzFFAovUCjL1fl0cceksIN1++yQE59SmZw==", "dev": true, "license": "MIT", "dependencies": { @@ -810,8 +726,6 @@ }, "node_modules/@inquirer/rawlist": { "version": "5.2.9", - "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-5.2.9.tgz", - "integrity": "sha512-a1ErXEfgjfPYpyQ89dp+7n2IISjH9oQg3ygvF5adz8B7aHn4n2PjEgu1wpVTp69K3bj3lVLxP0qJ2b1clk1Whw==", "dev": true, "license": "MIT", "dependencies": { @@ -832,8 +746,6 @@ }, "node_modules/@inquirer/search": { "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-4.1.9.tgz", - "integrity": "sha512-ZlbM28Q9lmLkFPNAIv+ZuY530n5Km8U1WW48oYEvDhe9yc2uL3m3t+JSdRUkQlk5fuIuskgiIVjcb7czFzQpuA==", "dev": true, "license": "MIT", "dependencies": { @@ -855,8 +767,6 @@ }, "node_modules/@inquirer/select": { "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-5.1.5.tgz", - "integrity": "sha512-6SRg6kHfK/sjLXOsuqNebuir+sjwrf/iWuRUnXgB2slzEewppI1WfzeS16XxDcOQmXBruMmmB9Cgrz7wsAxqMg==", "dev": true, "license": "MIT", "dependencies": { @@ -879,8 +789,6 @@ }, "node_modules/@inquirer/type": { "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-4.0.5.tgz", - "integrity": "sha512-aetVUNeKNc/VriqXlw1NRSW0zhMBB0W4bNbWRJgzRl/3d0QNDQFfk0GO5SDdtjMZVg6o8ZKEiadd7SCCzoOn5Q==", "dev": true, "license": "MIT", "engines": { @@ -897,8 +805,6 @@ }, "node_modules/@isaacs/cliui": { "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz", - "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -907,8 +813,6 @@ }, "node_modules/@isaacs/fs-minipass": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", - "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", "dev": true, "license": "ISC", "dependencies": { @@ -920,8 +824,6 @@ }, "node_modules/@istanbuljs/schema": { "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.6.tgz", - "integrity": "sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==", "dev": true, "license": "MIT", "engines": { @@ -930,8 +832,6 @@ }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "license": "MIT", "engines": { @@ -940,15 +840,11 @@ }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "dev": true, "license": "MIT", "dependencies": { @@ -958,8 +854,6 @@ }, "node_modules/@microsoft/api-extractor": { "version": "7.58.7", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.58.7.tgz", - "integrity": "sha512-yK6OycD46gIzLRpj6ueVUWPk1ACSpkN1LBo05gY1qPTylbWyUCanXfH7+VgkI5LJrJoRSQR5F04XuCffCXLOBw==", "dev": true, "license": "MIT", "dependencies": { @@ -983,8 +877,6 @@ }, "node_modules/@microsoft/api-extractor-model": { "version": "7.33.8", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.33.8.tgz", - "integrity": "sha512-aIcoQggPyer3B6Ze3usz0YWC/oBwUHfRH5ETUsr+oT2BRA6SfTJl7IKPcPZkX4UR+PohowzW4uMxsvjrn8vm+w==", "dev": true, "license": "MIT", "dependencies": { @@ -995,8 +887,6 @@ }, "node_modules/@microsoft/api-extractor/node_modules/typescript": { "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -1009,15 +899,11 @@ }, "node_modules/@microsoft/tsdoc": { "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.16.0.tgz", - "integrity": "sha512-xgAyonlVVS+q7Vc7qLW0UrJU7rSFcETRWsqdXZtjzRU8dF+6CkozTK4V4y1LwOX7j8r/vHphjDeMeGI4tNGeGA==", "dev": true, "license": "MIT" }, "node_modules/@microsoft/tsdoc-config": { "version": "0.18.1", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.18.1.tgz", - "integrity": "sha512-9brPoVdfN9k9g0dcWkFeA7IH9bbcttzDJlXvkf8b2OBzd5MueR1V2wkKBL0abn0otvmkHJC6aapBOTJDDeMCZg==", "dev": true, "license": "MIT", "dependencies": { @@ -1047,9 +933,7 @@ } }, "node_modules/@nodable/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@nodable/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-9uGyhaQavEUMC8AIddIjau4NsnsXhou+j5sBAGojCM1oxmQpVKTWR/9JxABD6UAv12vpIms55fPZKFQEhG6uBg==", + "version": "3.0.0", "dev": true, "funding": [ { @@ -1061,8 +945,6 @@ }, "node_modules/@oxc-project/types": { "version": "0.133.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.133.0.tgz", - "integrity": "sha512-KzkdCd6Uxqnf6l3HOw1xfatAlUURA0g14cvBYFyJ5SaNOQbOUvBr9PKArcPcrNIeRsBdgcUzOGrhKveVpvOIGA==", "dev": true, "license": "MIT", "funding": { @@ -1071,8 +953,6 @@ }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, "license": "MIT", "optional": true, @@ -1082,8 +962,6 @@ }, "node_modules/@polka/url": { "version": "1.0.0-next.29", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", - "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", "dev": true, "license": "MIT" }, @@ -1329,8 +1207,6 @@ }, "node_modules/@rolldown/binding-win32-x64-msvc": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.3.tgz", - "integrity": "sha512-eXB7CHuaQdqmJcc3koCNtNPmT/bj2gc999kUFgBxG8Ac0NdgXc4rkCHhqrgrhN3zddvvvrgzj1e90SuSfmyIXA==", "cpu": [ "x64" ], @@ -1346,15 +1222,11 @@ }, "node_modules/@rolldown/pluginutils": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", - "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", "dev": true, "license": "MIT" }, "node_modules/@rushstack/node-core-library": { "version": "5.23.1", - "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.23.1.tgz", - "integrity": "sha512-wlKmIKIYCKuCASbITvOxLZXepPbwXvrv7S6ig6XNWFchSyhL/E2txmVXspHY49Wu2dzf7nI27a2k/yV5BA3EiA==", "dev": true, "license": "MIT", "dependencies": { @@ -1378,8 +1250,6 @@ }, "node_modules/@rushstack/problem-matcher": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@rushstack/problem-matcher/-/problem-matcher-0.2.1.tgz", - "integrity": "sha512-gulfhBs6n+I5b7DvjKRfhMGyUejtSgOHTclF/eONr8hcgF1APEDjhxIsfdUYYMzC3rvLwGluqLjbwCFZ8nxrog==", "dev": true, "license": "MIT", "peerDependencies": { @@ -1393,8 +1263,6 @@ }, "node_modules/@rushstack/rig-package": { "version": "0.7.3", - "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.7.3.tgz", - "integrity": "sha512-aAA518n6wxxjCfnTAOjQnm7ngNE0FVHxHAw2pxKlIhxrMn0XQjGcXKF0oKWpjBgJOmsaJpVob/v+zr3zxgPWuA==", "dev": true, "license": "MIT", "dependencies": { @@ -1404,8 +1272,6 @@ }, "node_modules/@rushstack/terminal": { "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.24.0.tgz", - "integrity": "sha512-8ZQS4MMaGsv27EXCBiH7WMPkRZrffeDoIevs6z9TM5dzqiY6+Hn4evfK/G+gvgBTjfvfkHIZPQQmalmI2sM4TQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1424,8 +1290,6 @@ }, "node_modules/@rushstack/ts-command-line": { "version": "5.3.9", - "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-5.3.9.tgz", - "integrity": "sha512-GIHqU+sRGQ3LGWAZu1O+9Yh++qwtyNIIGuNbcWHJjBTm2qRez0cwINUHZ+pQLR8UuzZDcMajrDaNbUYoaL/XtQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1437,8 +1301,6 @@ }, "node_modules/@shikijs/engine-oniguruma": { "version": "3.23.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.23.0.tgz", - "integrity": "sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==", "dev": true, "license": "MIT", "dependencies": { @@ -1448,8 +1310,6 @@ }, "node_modules/@shikijs/langs": { "version": "3.23.0", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.23.0.tgz", - "integrity": "sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==", "dev": true, "license": "MIT", "dependencies": { @@ -1458,8 +1318,6 @@ }, "node_modules/@shikijs/themes": { "version": "3.23.0", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.23.0.tgz", - "integrity": "sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==", "dev": true, "license": "MIT", "dependencies": { @@ -1468,8 +1326,6 @@ }, "node_modules/@shikijs/types": { "version": "3.23.0", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.23.0.tgz", - "integrity": "sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1479,15 +1335,11 @@ }, "node_modules/@shikijs/vscode-textmate": { "version": "10.0.2", - "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", - "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", "dev": true, "license": "MIT" }, "node_modules/@standard-schema/spec": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", - "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", "dev": true, "license": "MIT" }, @@ -1504,15 +1356,11 @@ }, "node_modules/@types/argparse": { "version": "1.0.38", - "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz", - "integrity": "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==", "dev": true, "license": "MIT" }, "node_modules/@types/chai": { "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", - "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", "dev": true, "license": "MIT", "dependencies": { @@ -1522,22 +1370,16 @@ }, "node_modules/@types/deep-eql": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", - "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", "dev": true, "license": "MIT" }, "node_modules/@types/estree": { "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", - "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", "dev": true, "license": "MIT" }, "node_modules/@types/hast": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", - "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1546,15 +1388,11 @@ }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", "dev": true, "license": "MIT" }, "node_modules/@types/node": { "version": "22.12.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.12.0.tgz", - "integrity": "sha512-Fll2FZ1riMjNmlmJOdAyY5pUbkftXslB5DgEzlIuNaiWhXd00FhWxVC/r4yV/4wBb9JfImTu+jiSvXTkJ7F/gA==", "dev": true, "license": "MIT", "dependencies": { @@ -1563,22 +1401,16 @@ }, "node_modules/@types/semver": { "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==", "dev": true, "license": "MIT" }, "node_modules/@types/unist": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", "dev": true, "license": "MIT" }, "node_modules/@types/ws": { "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", - "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", "dev": true, "license": "MIT", "dependencies": { @@ -1587,8 +1419,6 @@ }, "node_modules/@typespec/asset-emitter": { "version": "0.79.1", - "resolved": "https://registry.npmjs.org/@typespec/asset-emitter/-/asset-emitter-0.79.1.tgz", - "integrity": "sha512-53s3GLu5BwNkl7Itr/OizfhymTV2u7k5/cwjUOAt03AUDfiKlwbsp+iCIsq1vccJuoDOiXOceJOfL8rAf4/9LQ==", "dev": true, "license": "MIT", "engines": { @@ -1600,8 +1430,6 @@ }, "node_modules/@typespec/compiler": { "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-1.14.0.tgz", - "integrity": "sha512-RRN0LGVDlonG/IbB2b4mvRjdCo6LywwB9/J8lOp6UaH7vtaFnKe5FL+rpxhof4rXx/zI/4OWnQO6c01bTCz4/Q==", "dev": true, "license": "MIT", "dependencies": { @@ -1632,11 +1460,8 @@ }, "node_modules/@typespec/events": { "version": "0.84.0", - "resolved": "https://registry.npmjs.org/@typespec/events/-/events-0.84.0.tgz", - "integrity": "sha512-UroDIu6t6Z+cOLyX8I+GJWhSFmYGrp1L93F7ZVt0Ypmj0ndmC9YYa4cpeEyS5PDDIC8u49WfCIwfGegxt4rPVQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=22.0.0" }, @@ -1646,8 +1471,6 @@ }, "node_modules/@typespec/http": { "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@typespec/http/-/http-1.14.0.tgz", - "integrity": "sha512-W+heCzu8K63AVcoX8MachVWaRxSAMFWOI1yBTc2Kq8QHaJeDiLL5JbU8VfTZ4tL/6EoGSdKfIT5ZNRW7oVCzhg==", "dev": true, "license": "MIT", "engines": { @@ -1664,30 +1487,28 @@ } }, "node_modules/@typespec/http-specs": { - "version": "0.1.0-alpha.39", - "resolved": "https://registry.npmjs.org/@typespec/http-specs/-/http-specs-0.1.0-alpha.39.tgz", - "integrity": "sha512-x3ORyF/qLSLt+QDyievKT90STB0tT9J4s0Yu/Isio8zK16U+eRbCFHi69T7FZ94ZrRpPDWJ2u9+dEZv/SCPj+w==", + "version": "0.1.0-alpha.40", "dev": true, "license": "MIT", "dependencies": { "@typespec/spec-api": "^0.1.0-alpha.15", - "@typespec/spector": "^0.1.0-alpha.26" + "@typespec/spector": "^0.1.0-alpha.27" }, "engines": { "node": ">=22.0.0" }, "peerDependencies": { "@typespec/compiler": "^1.14.0", + "@typespec/events": "^0.84.0", "@typespec/http": "^1.14.0", "@typespec/rest": "^0.84.0", + "@typespec/sse": "^0.84.0", "@typespec/versioning": "^0.84.0", "@typespec/xml": "^0.84.0" } }, "node_modules/@typespec/json-schema": { "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@typespec/json-schema/-/json-schema-1.14.0.tgz", - "integrity": "sha512-YNp0k+HV5eXzzXbAgxOGj01h+Asg1Ljo2EeaqQWFgS6o1Hxg7M4nQZeLs59v9IUxYvtJCHSkmeMADRjpCatrPw==", "dev": true, "license": "MIT", "dependencies": { @@ -1703,8 +1524,6 @@ }, "node_modules/@typespec/library-linter": { "version": "0.84.0", - "resolved": "https://registry.npmjs.org/@typespec/library-linter/-/library-linter-0.84.0.tgz", - "integrity": "sha512-ZhtPhQd03uzzfFOxDxzM1qN2X+vfHQszNCLnn2cF2r/12l0gFw03OHFeotLBmrpcclSI+sEu4iG9ZoBx7hTsHQ==", "dev": true, "license": "MIT", "engines": { @@ -1716,8 +1535,6 @@ }, "node_modules/@typespec/openapi": { "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@typespec/openapi/-/openapi-1.14.0.tgz", - "integrity": "sha512-KL7kImPhCXRmxpHVt1k7TWaa4bb3NbSeUx2rxyxeq7lYZFllI6/NYRCTOI/5JOrbElWmmSxrajU9K9IAKI6PkQ==", "dev": true, "license": "MIT", "engines": { @@ -1730,8 +1547,6 @@ }, "node_modules/@typespec/rest": { "version": "0.84.0", - "resolved": "https://registry.npmjs.org/@typespec/rest/-/rest-0.84.0.tgz", - "integrity": "sha512-9s5dDfRoHRPdtbVvkBasUx/RnMvwWMTuXRieSQDEji4gWGgxVu4Zt4MiEEKSfQrkMr3Aw0QjRCSxBxjMCHIOmA==", "dev": true, "license": "MIT", "engines": { @@ -1744,8 +1559,6 @@ }, "node_modules/@typespec/spec-api": { "version": "0.1.0-alpha.15", - "resolved": "https://registry.npmjs.org/@typespec/spec-api/-/spec-api-0.1.0-alpha.15.tgz", - "integrity": "sha512-rVPcA3KFJEBYpXq9BJkmtOk0SmF/pHUXv4m1FJNbXX8YW7eo3/NUKwB2Tc3TQVZB9zEIfBmf3BtLWpwvmVMAUQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1758,8 +1571,6 @@ }, "node_modules/@typespec/spec-coverage-sdk": { "version": "0.1.0-alpha.16", - "resolved": "https://registry.npmjs.org/@typespec/spec-coverage-sdk/-/spec-coverage-sdk-0.1.0-alpha.16.tgz", - "integrity": "sha512-qwSnuE+CXjv4mn2uhioTVlaO4GjypR4ZtbkSoLmWA677ggYmoAjIDpyNgT1tjsc1lDKVtSiPvGhM9XFKExVmbQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1775,8 +1586,6 @@ }, "node_modules/@typespec/spec-coverage-sdk/node_modules/@types/node": { "version": "25.3.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", - "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", "dev": true, "license": "MIT", "dependencies": { @@ -1785,15 +1594,11 @@ }, "node_modules/@typespec/spec-coverage-sdk/node_modules/undici-types": { "version": "7.18.2", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", - "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", "dev": true, "license": "MIT" }, "node_modules/@typespec/spector": { - "version": "0.1.0-alpha.26", - "resolved": "https://registry.npmjs.org/@typespec/spector/-/spector-0.1.0-alpha.26.tgz", - "integrity": "sha512-WtaWIJE+Xh80G11Bi/3zC1GIrK4EVYBSCnkmSvm9bEYcBMH8QuryPDbUeTXYUyozcCrMYXaKnBboHN91IEi8ug==", + "version": "0.1.0-alpha.27", "dev": true, "license": "MIT", "dependencies": { @@ -1823,8 +1628,6 @@ }, "node_modules/@typespec/sse": { "version": "0.84.0", - "resolved": "https://registry.npmjs.org/@typespec/sse/-/sse-0.84.0.tgz", - "integrity": "sha512-9joNgVisRCWDFfV1d79iTAuR1W/6r+AKJrKUfcjsaTrq5A8OWW3v5TTsfxbHAZArn7n2WxQkqhNGgNyc8LjEng==", "dev": true, "license": "MIT", "engines": { @@ -1839,8 +1642,6 @@ }, "node_modules/@typespec/streams": { "version": "0.84.0", - "resolved": "https://registry.npmjs.org/@typespec/streams/-/streams-0.84.0.tgz", - "integrity": "sha512-SDneR8+zY+ueOpzg9yJtttfDe/ikB99JgddZSXKPwiDPlAIEeEvI8auipcYfB58EEOB21h8Oq0tEm8HqiAAWdQ==", "dev": true, "license": "MIT", "engines": { @@ -1852,8 +1653,6 @@ }, "node_modules/@typespec/ts-http-runtime": { "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.5.tgz", - "integrity": "sha512-yURCknZhvywvQItHMMmFSo+fq5arCUIyz/CVk7jD89MSai7dkaX8ufjCWp3NttLojoTVbcE72ri+be/TnEbMHw==", "license": "MIT", "dependencies": { "http-proxy-agent": "^7.0.0", @@ -1866,8 +1665,6 @@ }, "node_modules/@typespec/tspd": { "version": "0.76.0", - "resolved": "https://registry.npmjs.org/@typespec/tspd/-/tspd-0.76.0.tgz", - "integrity": "sha512-3HH2VPZeDWLoQshfRzESubOzsOtljfFD5akOCFG/RhxO3hcfYW8iaHHjPw2ZzxPjpoAoCEc0ypsaxNYJgnLu+Q==", "dev": true, "license": "MIT", "dependencies": { @@ -1895,8 +1692,6 @@ }, "node_modules/@typespec/versioning": { "version": "0.84.0", - "resolved": "https://registry.npmjs.org/@typespec/versioning/-/versioning-0.84.0.tgz", - "integrity": "sha512-ZoDasTDj4z0mgFK+0cJL2+7DduCaTjvICHL2nQ/RBWc7nLgObaIYCjvXLno8WneDXnpxCAr7larN4/nlHEv9fg==", "dev": true, "license": "MIT", "engines": { @@ -1908,8 +1703,6 @@ }, "node_modules/@typespec/xml": { "version": "0.84.0", - "resolved": "https://registry.npmjs.org/@typespec/xml/-/xml-0.84.0.tgz", - "integrity": "sha512-3x0spgIrr4u3azkYaOxrlumtjoqPiUnJ/G5RwGBmUCAeE5F413MHf/AeIkmZ2ULT1gY3myabfZp8bOijTbMk7A==", "dev": true, "license": "MIT", "engines": { @@ -1921,8 +1714,6 @@ }, "node_modules/@vitest/coverage-v8": { "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.1.8.tgz", - "integrity": "sha512-lt3kovsyHwYe00wq4D1ti0Z974fWj4NLp6siqiyEufUpyFwK9Yhi7rBhac9JL5aA0zoMrJqc4vYPZRUnI7l7nw==", "dev": true, "license": "MIT", "dependencies": { @@ -1952,8 +1743,6 @@ }, "node_modules/@vitest/expect": { "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.8.tgz", - "integrity": "sha512-h3nDO677RDLEGlBxyQ5CW8RlMThSKSRLUePLOx09gNIWRL40edgA1GCZSZgf1W55MFAG6/Sw14KeaAnqv0NKdQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1970,8 +1759,6 @@ }, "node_modules/@vitest/mocker": { "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.8.tgz", - "integrity": "sha512-LEiN/xe4OSIbKe9HQIp5OC24agGD9J5CnmMgsLohVVoOPWL9a2sBoR6VBx43jQZb7Kr1l4RCuyCJzcAa0+dojw==", "dev": true, "license": "MIT", "dependencies": { @@ -1997,8 +1784,6 @@ }, "node_modules/@vitest/pretty-format": { "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.8.tgz", - "integrity": "sha512-9GasEBxpZ1VYIpqHf/0+YGg121uSNwCKOJqIrTwWP/TB7DmFCiaBpNl3aPZzoLWfWkuqhbH8vJIVobZkvdo2cA==", "dev": true, "license": "MIT", "dependencies": { @@ -2010,8 +1795,6 @@ }, "node_modules/@vitest/runner": { "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.8.tgz", - "integrity": "sha512-EmVxeBAfMJvycdjd6Hm+RbFBbA9fKvo0Kx37hNpBYoYeavH3RNsBXWDooR1mgD52dCrxIIuP7UotpfiwOikvcg==", "dev": true, "license": "MIT", "dependencies": { @@ -2024,8 +1807,6 @@ }, "node_modules/@vitest/snapshot": { "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.8.tgz", - "integrity": "sha512-acfZboRmAIf05DEKcBQy33VXojFJjtUdLyo7oOmV9kebb2xdU01UknNiPuPZoJZQyO7DF0gZdTGTpeAzET9QPQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2040,8 +1821,6 @@ }, "node_modules/@vitest/spy": { "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.8.tgz", - "integrity": "sha512-6EevtBp6OZOPF7bmz36HrGMeP3txgVSrgebWxHOafDXGkhIzfXK14f8KF6MuFfgXXUeHxmpD3BQxkV00/3s5mA==", "dev": true, "license": "MIT", "funding": { @@ -2050,8 +1829,6 @@ }, "node_modules/@vitest/ui": { "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-4.1.8.tgz", - "integrity": "sha512-RUS2ZU2TsduVrI+9c12uTNaKrNUTsm6yFt3fueEUB9iKvyC2UP83F+sqIz00HQIah4UOL1TMoDAki8K0NjGvsA==", "dev": true, "license": "MIT", "dependencies": { @@ -2072,8 +1849,6 @@ }, "node_modules/@vitest/utils": { "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.8.tgz", - "integrity": "sha512-uOJamYALNhfJ6iolExyQM40yIQwDqYnkKtQ5VCiSe17E33H0aQ/u+1GlRuz4LZBk6Mm3sg90G9hEbmEt37C1Zg==", "dev": true, "license": "MIT", "dependencies": { @@ -2086,26 +1861,20 @@ } }, "node_modules/@vue/reactivity": { - "version": "3.5.39", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.39.tgz", - "integrity": "sha512-TpsuBJ9gGlZa5d23XcM2y8EXanz9dZeVDQBXRwzy46ItgvM+rWpzs+UVM0wcRLxGvcav0HE5jz2gNL53xlRAog==", + "version": "3.5.40", "dev": true, "license": "MIT", "dependencies": { - "@vue/shared": "3.5.39" + "@vue/shared": "3.5.40" } }, "node_modules/@vue/shared": { - "version": "3.5.39", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.39.tgz", - "integrity": "sha512-l1rrBtBfTnmxvtsvdQDXltUUy8S1Y+ZaqdfUzmAnJkTd8Z8rv5v/ytW+TKiqEOWyHPoqtPlNFSs0lhRmYVSHVA==", + "version": "3.5.40", "dev": true, "license": "MIT" }, "node_modules/accepts": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", - "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", "dev": true, "license": "MIT", "dependencies": { @@ -2118,8 +1887,6 @@ }, "node_modules/agent-base": { "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", "license": "MIT", "engines": { "node": ">= 14" @@ -2127,8 +1894,6 @@ }, "node_modules/ajv": { "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dev": true, "license": "MIT", "dependencies": { @@ -2144,8 +1909,6 @@ }, "node_modules/ajv-draft-04": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", - "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", "dev": true, "license": "MIT", "peerDependencies": { @@ -2159,8 +1922,6 @@ }, "node_modules/ajv-formats": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", - "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2177,8 +1938,6 @@ }, "node_modules/ansi-regex": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "license": "MIT", "engines": { @@ -2187,8 +1946,6 @@ }, "node_modules/ansi-styles": { "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", "dev": true, "license": "MIT", "engines": { @@ -2200,8 +1957,6 @@ }, "node_modules/anynum": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/anynum/-/anynum-1.0.1.tgz", - "integrity": "sha512-N6//FLET/tXYNM/F6ABca1oH6fWB+KlTt909Le28WMDBk8oaT4vY17DCrwg2MvmuqUKt3Ni4N5dGJ/EoBgcO6A==", "dev": true, "funding": [ { @@ -2213,15 +1968,11 @@ }, "node_modules/append-field": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", - "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==", "dev": true, "license": "MIT" }, "node_modules/argparse": { "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "license": "MIT", "dependencies": { @@ -2230,8 +1981,6 @@ }, "node_modules/assertion-error": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", - "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", "dev": true, "license": "MIT", "engines": { @@ -2240,8 +1989,6 @@ }, "node_modules/ast-v8-to-istanbul": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-1.0.3.tgz", - "integrity": "sha512-jCMQ6ZylLPudp0CDfBmQBZUsrh1/8psbmu9ibeVWKuHWD0YrH9YABwlKu5kVEFoT0GCQQW9Z/SxfuEbbkGQCRg==", "dev": true, "license": "MIT", "dependencies": { @@ -2252,15 +1999,11 @@ }, "node_modules/ast-v8-to-istanbul/node_modules/js-tokens": { "version": "10.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz", - "integrity": "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==", "dev": true, "license": "MIT" }, "node_modules/balanced-match": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", "dev": true, "license": "MIT", "engines": { @@ -2269,8 +2012,6 @@ }, "node_modules/basic-auth": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", "dev": true, "license": "MIT", "dependencies": { @@ -2282,15 +2023,11 @@ }, "node_modules/basic-auth/node_modules/safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true, "license": "MIT" }, "node_modules/body-parser": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.3.0.tgz", - "integrity": "sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw==", "dev": true, "license": "MIT", "dependencies": { @@ -2314,8 +2051,6 @@ }, "node_modules/body-parser/node_modules/content-type": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.0.0.tgz", - "integrity": "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==", "dev": true, "license": "MIT", "engines": { @@ -2328,8 +2063,6 @@ }, "node_modules/brace-expansion": { "version": "5.0.6", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", - "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", "dev": true, "license": "MIT", "dependencies": { @@ -2341,8 +2074,6 @@ }, "node_modules/braces": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "license": "MIT", "dependencies": { @@ -2354,21 +2085,15 @@ }, "node_modules/buffer-equal-constant-time": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", "license": "BSD-3-Clause" }, "node_modules/buffer-from": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true, "license": "MIT" }, "node_modules/bundle-name": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", - "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", "license": "MIT", "dependencies": { "run-applescript": "^7.0.0" @@ -2382,8 +2107,6 @@ }, "node_modules/busboy": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", "dev": true, "dependencies": { "streamsearch": "^1.1.0" @@ -2394,8 +2117,6 @@ }, "node_modules/bytes": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, "license": "MIT", "engines": { @@ -2404,8 +2125,6 @@ }, "node_modules/c8": { "version": "10.1.3", - "resolved": "https://registry.npmjs.org/c8/-/c8-10.1.3.tgz", - "integrity": "sha512-LvcyrOAaOnrrlMpW22n690PUvxiq4Uf9WMhQwNJ9vgagkL/ph1+D4uvjvDA5XCbykrc0sx+ay6pVi9YZ1GnhyA==", "dev": true, "license": "ISC", "dependencies": { @@ -2438,8 +2157,6 @@ }, "node_modules/c8/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { @@ -2454,8 +2171,6 @@ }, "node_modules/c8/node_modules/cliui": { "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "license": "ISC", "dependencies": { @@ -2469,8 +2184,6 @@ }, "node_modules/c8/node_modules/wrap-ansi": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "license": "MIT", "dependencies": { @@ -2487,8 +2200,6 @@ }, "node_modules/c8/node_modules/yargs": { "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "license": "MIT", "dependencies": { @@ -2506,8 +2217,6 @@ }, "node_modules/call-bind-apply-helpers": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2520,8 +2229,6 @@ }, "node_modules/call-bound": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "dev": true, "license": "MIT", "dependencies": { @@ -2537,8 +2244,6 @@ }, "node_modules/chai": { "version": "6.2.2", - "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", - "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", "dev": true, "license": "MIT", "engines": { @@ -2547,22 +2252,16 @@ }, "node_modules/change-case": { "version": "5.4.4", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz", - "integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==", "dev": true, "license": "MIT" }, "node_modules/chardet": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", - "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", "dev": true, "license": "MIT" }, "node_modules/chownr": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", - "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -2571,8 +2270,6 @@ }, "node_modules/cli-table3": { "version": "0.6.5", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", - "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2587,8 +2284,6 @@ }, "node_modules/cli-width": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", - "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", "dev": true, "license": "ISC", "engines": { @@ -2597,8 +2292,6 @@ }, "node_modules/cliui": { "version": "9.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", - "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", "dev": true, "license": "ISC", "dependencies": { @@ -2612,8 +2305,6 @@ }, "node_modules/cliui/node_modules/ansi-regex": { "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, "license": "MIT", "engines": { @@ -2625,15 +2316,11 @@ }, "node_modules/cliui/node_modules/emoji-regex": { "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", "dev": true, "license": "MIT" }, "node_modules/cliui/node_modules/string-width": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2650,8 +2337,6 @@ }, "node_modules/cliui/node_modules/strip-ansi": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", - "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "dev": true, "license": "MIT", "dependencies": { @@ -2666,8 +2351,6 @@ }, "node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2679,15 +2362,11 @@ }, "node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, "license": "MIT" }, "node_modules/concat-stream": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", "dev": true, "engines": [ "node >= 6.0" @@ -2702,8 +2381,6 @@ }, "node_modules/content-disposition": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz", - "integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==", "dev": true, "license": "MIT", "engines": { @@ -2716,8 +2393,6 @@ }, "node_modules/content-type": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true, "license": "MIT", "engines": { @@ -2726,15 +2401,11 @@ }, "node_modules/convert-source-map": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true, "license": "MIT" }, "node_modules/cookie": { "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "dev": true, "license": "MIT", "engines": { @@ -2743,8 +2414,6 @@ }, "node_modules/cookie-signature": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", - "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", "dev": true, "license": "MIT", "engines": { @@ -2753,8 +2422,6 @@ }, "node_modules/cross-spawn": { "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { @@ -2768,8 +2435,6 @@ }, "node_modules/debug": { "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -2785,8 +2450,6 @@ }, "node_modules/default-browser": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz", - "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==", "license": "MIT", "dependencies": { "bundle-name": "^4.1.0", @@ -2801,8 +2464,6 @@ }, "node_modules/default-browser-id": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", - "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", "license": "MIT", "engines": { "node": ">=18" @@ -2813,8 +2474,6 @@ }, "node_modules/define-lazy-prop": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", "license": "MIT", "engines": { "node": ">=12" @@ -2825,8 +2484,6 @@ }, "node_modules/depd": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, "license": "MIT", "engines": { @@ -2835,8 +2492,6 @@ }, "node_modules/detect-libc": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", - "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -2844,16 +2499,12 @@ } }, "node_modules/devalue": { - "version": "5.8.1", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.8.1.tgz", - "integrity": "sha512-4CXDYRBGqN+57wVJkuXBYmpAVUSg3L6JAQa/DFqm238G73E1wuyc/JhGQJzN7vUf/CMphYau2zXbfWzDR5aTEw==", + "version": "5.8.2", "dev": true, "license": "MIT" }, "node_modules/diff": { "version": "8.0.4", - "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz", - "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -2862,8 +2513,6 @@ }, "node_modules/dunder-proto": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "dev": true, "license": "MIT", "dependencies": { @@ -2877,15 +2526,11 @@ }, "node_modules/eastasianwidth": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true, "license": "MIT" }, "node_modules/ecdsa-sig-formatter": { "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", "license": "Apache-2.0", "dependencies": { "safe-buffer": "^5.0.1" @@ -2893,22 +2538,16 @@ }, "node_modules/ee-first": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "dev": true, "license": "MIT" }, "node_modules/emoji-regex": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true, "license": "MIT" }, "node_modules/encodeurl": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true, "license": "MIT", "engines": { @@ -2917,8 +2556,6 @@ }, "node_modules/entities": { "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -2930,8 +2567,6 @@ }, "node_modules/env-paths": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-4.0.0.tgz", - "integrity": "sha512-pxP8eL2SwwaTRi/KHYwLYXinDs7gL3jxFcBYmEdYfZmZXbaVDvdppd0XBU8qVz03rDfKZMXg1omHCbsJjZrMsw==", "dev": true, "license": "MIT", "dependencies": { @@ -2946,8 +2581,6 @@ }, "node_modules/es-define-property": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "dev": true, "license": "MIT", "engines": { @@ -2956,8 +2589,6 @@ }, "node_modules/es-errors": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, "license": "MIT", "engines": { @@ -2966,15 +2597,11 @@ }, "node_modules/es-module-lexer": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.1.0.tgz", - "integrity": "sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==", "dev": true, "license": "MIT" }, "node_modules/es-object-atoms": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", - "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", "dev": true, "license": "MIT", "dependencies": { @@ -2986,8 +2613,6 @@ }, "node_modules/escalade": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, "license": "MIT", "engines": { @@ -2996,15 +2621,11 @@ }, "node_modules/escape-html": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "dev": true, "license": "MIT" }, "node_modules/estree-walker": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dev": true, "license": "MIT", "dependencies": { @@ -3013,8 +2634,6 @@ }, "node_modules/etag": { "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, "license": "MIT", "engines": { @@ -3023,8 +2642,6 @@ }, "node_modules/events": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, "license": "MIT", "engines": { @@ -3033,8 +2650,6 @@ }, "node_modules/expect-type": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", - "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -3043,8 +2658,6 @@ }, "node_modules/express": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", - "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", "dev": true, "license": "MIT", "dependencies": { @@ -3087,22 +2700,16 @@ }, "node_modules/fast-deep-equal": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true, "license": "MIT" }, "node_modules/fast-string-truncated-width": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fast-string-truncated-width/-/fast-string-truncated-width-3.0.3.tgz", - "integrity": "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==", "dev": true, "license": "MIT" }, "node_modules/fast-string-width": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fast-string-width/-/fast-string-width-3.0.2.tgz", - "integrity": "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==", "dev": true, "license": "MIT", "dependencies": { @@ -3111,8 +2718,6 @@ }, "node_modules/fast-uri": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz", - "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==", "dev": true, "funding": [ { @@ -3128,8 +2733,6 @@ }, "node_modules/fast-wrap-ansi": { "version": "0.2.2", - "resolved": "https://registry.npmjs.org/fast-wrap-ansi/-/fast-wrap-ansi-0.2.2.tgz", - "integrity": "sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==", "dev": true, "license": "MIT", "dependencies": { @@ -3138,8 +2741,6 @@ }, "node_modules/fast-xml-builder": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.3.0.tgz", - "integrity": "sha512-F74cZEdCvuw9P41GAC3rod4X04jjWGM1JPEv/GWSqFTWLsdyMSBMBMlm9Hk3GLBgLBbdBNY8yee0pQh2RBVESQ==", "dev": true, "funding": [ { @@ -3154,9 +2755,7 @@ } }, "node_modules/fast-xml-parser": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.10.0.tgz", - "integrity": "sha512-SLhnTEqE5QpJHq/6zl9bsmImEP2adv+y6Wy+cJa7nVTRzQh1OZfCe9k29M5xN74LWnu0xa1zrUrq3KnOKl92Fg==", + "version": "5.10.1", "dev": true, "funding": [ { @@ -3166,7 +2765,7 @@ ], "license": "MIT", "dependencies": { - "@nodable/entities": "^2.2.0", + "@nodable/entities": "^3.0.0", "fast-xml-builder": "^1.2.0", "is-unsafe": "^2.0.0", "path-expression-matcher": "^1.6.2", @@ -3179,15 +2778,11 @@ }, "node_modules/fflate": { "version": "0.8.3", - "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.3.tgz", - "integrity": "sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==", "dev": true, "license": "MIT" }, "node_modules/fill-range": { "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "license": "MIT", "dependencies": { @@ -3199,8 +2794,6 @@ }, "node_modules/finalhandler": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", - "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", "dev": true, "license": "MIT", "dependencies": { @@ -3221,8 +2814,6 @@ }, "node_modules/find-up": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "license": "MIT", "dependencies": { @@ -3238,15 +2829,11 @@ }, "node_modules/flatted": { "version": "3.4.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", - "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "dev": true, "license": "ISC" }, "node_modules/foreground-child": { "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, "license": "ISC", "dependencies": { @@ -3262,8 +2849,6 @@ }, "node_modules/forwarded": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true, "license": "MIT", "engines": { @@ -3272,8 +2857,6 @@ }, "node_modules/fresh": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", - "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", "dev": true, "license": "MIT", "engines": { @@ -3282,8 +2865,6 @@ }, "node_modules/fs-extra": { "version": "11.3.5", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.5.tgz", - "integrity": "sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==", "dev": true, "license": "MIT", "dependencies": { @@ -3312,8 +2893,6 @@ }, "node_modules/function-bind": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, "license": "MIT", "funding": { @@ -3322,8 +2901,6 @@ }, "node_modules/get-caller-file": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, "license": "ISC", "engines": { @@ -3332,8 +2909,6 @@ }, "node_modules/get-east-asian-width": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz", - "integrity": "sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==", "dev": true, "license": "MIT", "engines": { @@ -3345,8 +2920,6 @@ }, "node_modules/get-intrinsic": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3370,8 +2943,6 @@ }, "node_modules/get-proto": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "dev": true, "license": "MIT", "dependencies": { @@ -3384,9 +2955,6 @@ }, "node_modules/glob": { "version": "11.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", - "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -3409,8 +2977,6 @@ }, "node_modules/gopd": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, "license": "MIT", "engines": { @@ -3422,15 +2988,11 @@ }, "node_modules/graceful-fs": { "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true, "license": "ISC" }, "node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", "engines": { @@ -3439,8 +3001,6 @@ }, "node_modules/has-symbols": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, "license": "MIT", "engines": { @@ -3452,8 +3012,6 @@ }, "node_modules/hasown": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", - "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", "dev": true, "license": "MIT", "dependencies": { @@ -3465,15 +3023,11 @@ }, "node_modules/html-escaper": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true, "license": "MIT" }, "node_modules/http-errors": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3493,8 +3047,6 @@ }, "node_modules/http-proxy-agent": { "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "license": "MIT", "dependencies": { "agent-base": "^7.1.0", @@ -3506,8 +3058,6 @@ }, "node_modules/https-proxy-agent": { "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "license": "MIT", "dependencies": { "agent-base": "^7.1.2", @@ -3519,8 +3069,6 @@ }, "node_modules/iconv-lite": { "version": "0.7.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", - "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", "dev": true, "license": "MIT", "dependencies": { @@ -3536,8 +3084,6 @@ }, "node_modules/import-lazy": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", - "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", "dev": true, "license": "MIT", "engines": { @@ -3546,15 +3092,11 @@ }, "node_modules/inherits": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true, "license": "ISC" }, "node_modules/ipaddr.js": { "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true, "license": "MIT", "engines": { @@ -3563,8 +3105,6 @@ }, "node_modules/is-core-module": { "version": "2.16.2", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz", - "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==", "dev": true, "license": "MIT", "dependencies": { @@ -3579,8 +3119,6 @@ }, "node_modules/is-docker": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", "license": "MIT", "bin": { "is-docker": "cli.js" @@ -3594,8 +3132,6 @@ }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "license": "MIT", "engines": { @@ -3604,8 +3140,6 @@ }, "node_modules/is-inside-container": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", "license": "MIT", "dependencies": { "is-docker": "^3.0.0" @@ -3622,8 +3156,6 @@ }, "node_modules/is-number": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, "license": "MIT", "engines": { @@ -3632,15 +3164,11 @@ }, "node_modules/is-promise": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", "dev": true, "license": "MIT" }, "node_modules/is-safe-filename": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-safe-filename/-/is-safe-filename-0.1.1.tgz", - "integrity": "sha512-4SrR7AdnY11LHfDKTZY1u6Ga3RuxZdl3YKWWShO5iyuG5h8QS4GD2tOb04peBJ5I7pXbR+CGBNEhTcwK+FzN3g==", "dev": true, "license": "MIT", "engines": { @@ -3652,8 +3180,6 @@ }, "node_modules/is-unicode-supported": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", - "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", "dev": true, "license": "MIT", "engines": { @@ -3665,8 +3191,6 @@ }, "node_modules/is-unsafe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-unsafe/-/is-unsafe-2.0.0.tgz", - "integrity": "sha512-2LdV822R+wmI86unXA93WCFpL6g+av8ynWk0nrHyJqGop5VoocYsSLFgN8jrfalT6iGeLNM4KXuVSsULP53kEA==", "dev": true, "funding": [ { @@ -3678,8 +3202,6 @@ }, "node_modules/is-wsl": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", - "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", "license": "MIT", "dependencies": { "is-inside-container": "^1.0.0" @@ -3693,15 +3215,11 @@ }, "node_modules/isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true, "license": "ISC" }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -3710,8 +3228,6 @@ }, "node_modules/istanbul-lib-report": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -3725,8 +3241,6 @@ }, "node_modules/istanbul-lib-report/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { @@ -3738,8 +3252,6 @@ }, "node_modules/istanbul-reports": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", - "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -3752,8 +3264,6 @@ }, "node_modules/jackspeak": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", - "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -3768,29 +3278,21 @@ }, "node_modules/jju": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", - "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", "dev": true, "license": "MIT" }, "node_modules/js-tokens": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true, "license": "MIT" }, "node_modules/jsonfile": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", - "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -3802,8 +3304,6 @@ }, "node_modules/jsonwebtoken": { "version": "9.0.3", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz", - "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==", "license": "MIT", "dependencies": { "jws": "^4.0.1", @@ -3824,8 +3324,6 @@ }, "node_modules/jwa": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", - "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", "license": "MIT", "dependencies": { "buffer-equal-constant-time": "^1.0.1", @@ -3835,8 +3333,6 @@ }, "node_modules/jws": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", - "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", "license": "MIT", "dependencies": { "jwa": "^2.0.1", @@ -3845,8 +3341,6 @@ }, "node_modules/lightningcss": { "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", - "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", "dev": true, "license": "MPL-2.0", "dependencies": { @@ -4085,8 +3579,6 @@ }, "node_modules/lightningcss-win32-x64-msvc": { "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", - "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", "cpu": [ "x64" ], @@ -4126,8 +3618,6 @@ }, "node_modules/locate-path": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "license": "MIT", "dependencies": { @@ -4142,50 +3632,34 @@ }, "node_modules/lodash.includes": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", "license": "MIT" }, "node_modules/lodash.isboolean": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", "license": "MIT" }, "node_modules/lodash.isinteger": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", "license": "MIT" }, "node_modules/lodash.isnumber": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", "license": "MIT" }, "node_modules/lodash.isplainobject": { "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", "license": "MIT" }, "node_modules/lodash.isstring": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", "license": "MIT" }, "node_modules/lodash.once": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", "license": "MIT" }, "node_modules/lru-cache": { "version": "11.5.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.0.tgz", - "integrity": "sha512-5YgH9UJd7wVb9hIouI2adWpgqrrICkt070Dnj8EUY1+B4B2P9eRLPAkAAo6NICA7CEhOIeBHl46u9zSNpNu7zA==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -4194,15 +3668,11 @@ }, "node_modules/lunr": { "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", "dev": true, "license": "MIT" }, "node_modules/magic-string": { "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4211,8 +3681,6 @@ }, "node_modules/magicast": { "version": "0.5.3", - "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.3.tgz", - "integrity": "sha512-pVKE4UdSQ7DvHzivsCIFx2BJn1mHG6KsyrFcaxFx6tONdneEuThrDx0Cj3AMg58KyN4pzYT+LHOotxDQDjNvkw==", "dev": true, "license": "MIT", "dependencies": { @@ -4223,8 +3691,6 @@ }, "node_modules/make-dir": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, "license": "MIT", "dependencies": { @@ -4239,8 +3705,6 @@ }, "node_modules/markdown-it": { "version": "14.2.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.2.0.tgz", - "integrity": "sha512-1TGiQiJVRQ3NPmZH6sx5Cfnmg6GQm9jvC1ch4TK511NjSJvjzKLzn5pPfZRNZkRPZP0HqCioSndqH8v2nRaWVQ==", "dev": true, "funding": [ { @@ -4267,15 +3731,11 @@ }, "node_modules/markdown-it/node_modules/argparse": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, "license": "Python-2.0" }, "node_modules/math-intrinsics": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "dev": true, "license": "MIT", "engines": { @@ -4284,15 +3744,11 @@ }, "node_modules/mdurl": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", "dev": true, "license": "MIT" }, "node_modules/media-typer": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", - "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", "dev": true, "license": "MIT", "engines": { @@ -4301,8 +3757,6 @@ }, "node_modules/merge-descriptors": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", - "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", "dev": true, "license": "MIT", "engines": { @@ -4314,8 +3768,6 @@ }, "node_modules/micromatch": { "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "license": "MIT", "dependencies": { @@ -4328,8 +3780,6 @@ }, "node_modules/mime-db": { "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", "dev": true, "license": "MIT", "engines": { @@ -4338,8 +3788,6 @@ }, "node_modules/mime-types": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", - "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", "dev": true, "license": "MIT", "dependencies": { @@ -4355,8 +3803,6 @@ }, "node_modules/minimatch": { "version": "10.2.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.3.tgz", - "integrity": "sha512-Rwi3pnapEqirPSbWbrZaa6N3nmqq4Xer/2XooiOKyV3q12ML06f7MOuc5DVH8ONZIFhwIYQ3yzPH4nt7iWHaTg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -4371,8 +3817,6 @@ }, "node_modules/minipass": { "version": "7.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", - "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -4381,8 +3825,6 @@ }, "node_modules/minizlib": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", - "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", "dev": true, "license": "MIT", "dependencies": { @@ -4394,8 +3836,6 @@ }, "node_modules/morgan": { "version": "1.11.0", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.11.0.tgz", - "integrity": "sha512-zSkVu3t18r39pw4ixfBKvfZi3y2UOqr7d4WYwcj3m8nXpEQK4rPO6GLzs/CExoRgmX3y9EjmmcXqv6jq0SK46g==", "dev": true, "license": "MIT", "dependencies": { @@ -4415,8 +3855,6 @@ }, "node_modules/morgan/node_modules/debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "license": "MIT", "dependencies": { @@ -4425,15 +3863,11 @@ }, "node_modules/morgan/node_modules/ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, "license": "MIT" }, "node_modules/mrmime": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", - "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", "dev": true, "license": "MIT", "engines": { @@ -4442,14 +3876,10 @@ }, "node_modules/ms": { "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, "node_modules/multer": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/multer/-/multer-2.2.0.tgz", - "integrity": "sha512-6rdyFg2kLrMh9Jee7/BMPuV9lEAd7lLW2YUpF9/YxR7njyoUwwQ0ZPh3TaIY50Sw6vlyD2HW3wGOkTS4P79xrQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4468,8 +3898,6 @@ }, "node_modules/multer/node_modules/media-typer": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true, "license": "MIT", "engines": { @@ -4478,8 +3906,6 @@ }, "node_modules/multer/node_modules/mime-db": { "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, "license": "MIT", "engines": { @@ -4488,8 +3914,6 @@ }, "node_modules/multer/node_modules/mime-types": { "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "license": "MIT", "dependencies": { @@ -4501,8 +3925,6 @@ }, "node_modules/multer/node_modules/type-is": { "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, "license": "MIT", "dependencies": { @@ -4515,8 +3937,6 @@ }, "node_modules/mustache": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", - "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", "dev": true, "license": "MIT", "bin": { @@ -4525,8 +3945,6 @@ }, "node_modules/mute-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-3.0.0.tgz", - "integrity": "sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==", "dev": true, "license": "ISC", "engines": { @@ -4535,8 +3953,6 @@ }, "node_modules/nanoid": { "version": "3.3.12", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", - "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==", "dev": true, "funding": [ { @@ -4554,8 +3970,6 @@ }, "node_modules/negotiator": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", "dev": true, "license": "MIT", "engines": { @@ -4564,8 +3978,6 @@ }, "node_modules/object-inspect": { "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true, "license": "MIT", "engines": { @@ -4577,8 +3989,6 @@ }, "node_modules/obug": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", - "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", "dev": true, "funding": [ "https://github.com/sponsors/sxzz", @@ -4588,8 +3998,6 @@ }, "node_modules/on-finished": { "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, "license": "MIT", "dependencies": { @@ -4601,8 +4009,6 @@ }, "node_modules/on-headers": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", - "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", "dev": true, "license": "MIT", "engines": { @@ -4611,8 +4017,6 @@ }, "node_modules/once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "license": "ISC", "dependencies": { @@ -4621,8 +4025,6 @@ }, "node_modules/open": { "version": "10.2.0", - "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", - "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", "license": "MIT", "dependencies": { "default-browser": "^5.2.1", @@ -4639,8 +4041,6 @@ }, "node_modules/p-limit": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4655,8 +4055,6 @@ }, "node_modules/p-locate": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "license": "MIT", "dependencies": { @@ -4671,15 +4069,11 @@ }, "node_modules/package-json-from-dist": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", "dev": true, "license": "BlueOak-1.0.0" }, "node_modules/parseurl": { "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true, "license": "MIT", "engines": { @@ -4688,8 +4082,6 @@ }, "node_modules/path-exists": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "license": "MIT", "engines": { @@ -4698,8 +4090,6 @@ }, "node_modules/path-expression-matcher": { "version": "1.6.2", - "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.6.2.tgz", - "integrity": "sha512-enSlaiat05iasnzmgNxRj8reFdj3puY2QpNgP1aPIaVfT6nn9ICuPoFlKHk8EN22HcwewshO+mN2DGbkCEOtqQ==", "dev": true, "funding": [ { @@ -4714,8 +4104,6 @@ }, "node_modules/path-key": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, "license": "MIT", "engines": { @@ -4724,15 +4112,11 @@ }, "node_modules/path-parse": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true, "license": "MIT" }, "node_modules/path-scurry": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", - "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -4748,8 +4132,6 @@ }, "node_modules/path-to-regexp": { "version": "8.4.2", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz", - "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==", "dev": true, "license": "MIT", "funding": { @@ -4759,22 +4141,16 @@ }, "node_modules/pathe": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", "dev": true, "license": "MIT" }, "node_modules/picocolors": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true, "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, "license": "MIT", "engines": { @@ -4786,8 +4162,6 @@ }, "node_modules/pluralize": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", "dev": true, "license": "MIT", "engines": { @@ -4796,8 +4170,6 @@ }, "node_modules/postcss": { "version": "8.5.15", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.15.tgz", - "integrity": "sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==", "dev": true, "funding": [ { @@ -4825,8 +4197,6 @@ }, "node_modules/prettier": { "version": "3.8.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.3.tgz", - "integrity": "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==", "dev": true, "license": "MIT", "bin": { @@ -4841,8 +4211,6 @@ }, "node_modules/proxy-addr": { "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dev": true, "license": "MIT", "dependencies": { @@ -4855,8 +4223,6 @@ }, "node_modules/punycode.js": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", - "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", "dev": true, "license": "MIT", "engines": { @@ -4865,8 +4231,6 @@ }, "node_modules/qs": { "version": "6.15.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.3.tgz", - "integrity": "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -4882,8 +4246,6 @@ }, "node_modules/range-parser": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.3.0.tgz", - "integrity": "sha512-hek2mFQpPuI4E1BBKrSto+BU3e3x4xuarsbiwr3+lf7p44juvFMV0XFWQAP3xUyqXA4RrXLIoaSUGbSt056ZMw==", "dev": true, "license": "MIT", "engines": { @@ -4896,8 +4258,6 @@ }, "node_modules/raw-body": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", - "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", "dev": true, "license": "MIT", "dependencies": { @@ -4912,8 +4272,6 @@ }, "node_modules/readable-stream": { "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "license": "MIT", "dependencies": { @@ -4927,8 +4285,6 @@ }, "node_modules/require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, "license": "MIT", "engines": { @@ -4937,8 +4293,6 @@ }, "node_modules/require-from-string": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, "license": "MIT", "engines": { @@ -4947,8 +4301,6 @@ }, "node_modules/resolve": { "version": "1.22.12", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", - "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", "dev": true, "license": "MIT", "dependencies": { @@ -4969,8 +4321,6 @@ }, "node_modules/rimraf": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz", - "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==", "dev": true, "license": "ISC", "dependencies": { @@ -4989,8 +4339,6 @@ }, "node_modules/rolldown": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.3.tgz", - "integrity": "sha512-i00lAJ2ks1BYr7rjNjKC7BcqAS7nVfiT3QX1SI5aY+AFHblCmaUf9OE9dbdzDvW6dJxbi2ZCZiy9v3CcwOiX3g==", "dev": true, "license": "MIT", "dependencies": { @@ -5023,8 +4371,6 @@ }, "node_modules/router": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", - "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5040,8 +4386,6 @@ }, "node_modules/run-applescript": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", - "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", "license": "MIT", "engines": { "node": ">=18" @@ -5052,8 +4396,6 @@ }, "node_modules/safe-buffer": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "funding": [ { "type": "github", @@ -5072,15 +4414,11 @@ }, "node_modules/safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true, "license": "MIT" }, "node_modules/semver": { "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -5091,8 +4429,6 @@ }, "node_modules/send": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", - "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5118,8 +4454,6 @@ }, "node_modules/serve-static": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", - "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", "dev": true, "license": "MIT", "dependencies": { @@ -5138,15 +4472,11 @@ }, "node_modules/setprototypeof": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true, "license": "ISC" }, "node_modules/shebang-command": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "license": "MIT", "dependencies": { @@ -5158,8 +4488,6 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, "license": "MIT", "engines": { @@ -5168,8 +4496,6 @@ }, "node_modules/side-channel": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz", - "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5188,8 +4514,6 @@ }, "node_modules/side-channel-list": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", - "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", "dev": true, "license": "MIT", "dependencies": { @@ -5205,8 +4529,6 @@ }, "node_modules/side-channel-map": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", "dev": true, "license": "MIT", "dependencies": { @@ -5224,8 +4546,6 @@ }, "node_modules/side-channel-weakmap": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", "dev": true, "license": "MIT", "dependencies": { @@ -5244,15 +4564,11 @@ }, "node_modules/siginfo": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", - "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", "dev": true, "license": "ISC" }, "node_modules/signal-exit": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, "license": "ISC", "engines": { @@ -5264,8 +4580,6 @@ }, "node_modules/sirv": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz", - "integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==", "dev": true, "license": "MIT", "dependencies": { @@ -5279,8 +4593,6 @@ }, "node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -5289,8 +4601,6 @@ }, "node_modules/source-map-js": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -5299,8 +4609,6 @@ }, "node_modules/source-map-support": { "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "license": "MIT", "dependencies": { @@ -5310,22 +4618,16 @@ }, "node_modules/sprintf-js": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true, "license": "BSD-3-Clause" }, "node_modules/stackback": { "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", - "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", "dev": true, "license": "MIT" }, "node_modules/statuses": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", "dev": true, "license": "MIT", "engines": { @@ -5334,15 +4636,11 @@ }, "node_modules/std-env": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.1.0.tgz", - "integrity": "sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==", "dev": true, "license": "MIT" }, "node_modules/streamsearch": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", "dev": true, "engines": { "node": ">=10.0.0" @@ -5350,8 +4648,6 @@ }, "node_modules/string_decoder": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, "license": "MIT", "dependencies": { @@ -5360,8 +4656,6 @@ }, "node_modules/string-argv": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", - "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", "dev": true, "license": "MIT", "engines": { @@ -5370,8 +4664,6 @@ }, "node_modules/string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", "dependencies": { @@ -5386,8 +4678,6 @@ "node_modules/string-width-cjs": { "name": "string-width", "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", "dependencies": { @@ -5401,8 +4691,6 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "dependencies": { @@ -5415,8 +4703,6 @@ "node_modules/strip-ansi-cjs": { "name": "strip-ansi", "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "dependencies": { @@ -5428,8 +4714,6 @@ }, "node_modules/strnum": { "version": "2.4.1", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.4.1.tgz", - "integrity": "sha512-M9eUSMT2dCB2cTNPG7UYj6KuK7RJR2SN2+yCV/fTW3xzTCS6EaGZ5pSMgDIjB7r8zSfTGk+dvvn9rTjpVS9Mwg==", "dev": true, "funding": [ { @@ -5444,8 +4728,6 @@ }, "node_modules/supports-color": { "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", "dependencies": { @@ -5460,8 +4742,6 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, "license": "MIT", "engines": { @@ -5473,8 +4753,6 @@ }, "node_modules/tar": { "version": "7.5.19", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.19.tgz", - "integrity": "sha512-4LeEWl96twnS2Q7Bz4MGqgazLqO+hJN63GZxXoIqh1T3VweYD997gbU1ItNsQafqqXTXd5WFyFdReLtwvRBNiw==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -5490,8 +4768,6 @@ }, "node_modules/temporal-polyfill": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/temporal-polyfill/-/temporal-polyfill-1.0.1.tgz", - "integrity": "sha512-N2SoI9olnW7BUsU8RosDphZQl9s+WJ8O7PoJMFCr/e5/1rFkVI4GNOWaSeySG+UoP04foPYsnLWbJmbXOiShZg==", "dev": true, "license": "MIT", "dependencies": { @@ -5501,22 +4777,16 @@ }, "node_modules/temporal-spec": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/temporal-spec/-/temporal-spec-1.0.0.tgz", - "integrity": "sha512-00Ahj1e1ifaERTMOIIGpOCdOo9IEk2m6GGSMedsn9a2SIsGLdOTbmME1Htv6IM82b6VHrzSUTIVc7YHy6hdhFQ==", "dev": true, "license": "Apache-2.0" }, "node_modules/temporal-utils": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/temporal-utils/-/temporal-utils-1.0.1.tgz", - "integrity": "sha512-HAixuesxFQIUaQk3ptX2jhfO/FsOkgVkDDMawvp6n/fkB1q6BKfs3lURw9I+pK/2e2e/q/vrLrxmeqauBoyGMQ==", "dev": true, "license": "MIT" }, "node_modules/test-exclude": { "version": "7.0.2", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.2.tgz", - "integrity": "sha512-u9E6A+ZDYdp7a4WnarkXPZOx8Ilz46+kby6p1yZ8zsGTz9gYa6FIS7lj2oezzNKmtdyyJNNmmXDppga5GB7kSw==", "dev": true, "license": "ISC", "dependencies": { @@ -5530,8 +4800,6 @@ }, "node_modules/test-exclude/node_modules/@isaacs/cliui": { "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, "license": "ISC", "dependencies": { @@ -5548,8 +4816,6 @@ }, "node_modules/test-exclude/node_modules/ansi-regex": { "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, "license": "MIT", "engines": { @@ -5561,15 +4827,11 @@ }, "node_modules/test-exclude/node_modules/balanced-match": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, "license": "MIT" }, "node_modules/test-exclude/node_modules/brace-expansion": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", - "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", "dev": true, "license": "MIT", "dependencies": { @@ -5578,16 +4840,11 @@ }, "node_modules/test-exclude/node_modules/emoji-regex": { "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true, "license": "MIT" }, "node_modules/test-exclude/node_modules/glob": { "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", "dependencies": { @@ -5607,8 +4864,6 @@ }, "node_modules/test-exclude/node_modules/glob/node_modules/minimatch": { "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, "license": "ISC", "dependencies": { @@ -5623,8 +4878,6 @@ }, "node_modules/test-exclude/node_modules/jackspeak": { "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -5639,15 +4892,11 @@ }, "node_modules/test-exclude/node_modules/lru-cache": { "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, "license": "ISC" }, "node_modules/test-exclude/node_modules/path-scurry": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -5663,8 +4912,6 @@ }, "node_modules/test-exclude/node_modules/string-width": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, "license": "MIT", "dependencies": { @@ -5681,8 +4928,6 @@ }, "node_modules/test-exclude/node_modules/strip-ansi": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", - "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "dev": true, "license": "MIT", "dependencies": { @@ -5697,8 +4942,6 @@ }, "node_modules/test-exclude/node_modules/wrap-ansi": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5715,15 +4958,11 @@ }, "node_modules/tinybench": { "version": "2.9.0", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", - "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", "dev": true, "license": "MIT" }, "node_modules/tinyexec": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.2.4.tgz", - "integrity": "sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==", "dev": true, "license": "MIT", "engines": { @@ -5732,8 +4971,6 @@ }, "node_modules/tinyglobby": { "version": "0.2.17", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", - "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", "dev": true, "license": "MIT", "dependencies": { @@ -5749,8 +4986,6 @@ }, "node_modules/tinyglobby/node_modules/fdir": { "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, "license": "MIT", "engines": { @@ -5767,8 +5002,6 @@ }, "node_modules/tinyglobby/node_modules/picomatch": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", "engines": { @@ -5780,8 +5013,6 @@ }, "node_modules/tinyrainbow": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.0.tgz", - "integrity": "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==", "dev": true, "license": "MIT", "engines": { @@ -5790,8 +5021,6 @@ }, "node_modules/to-regex-range": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5803,8 +5032,6 @@ }, "node_modules/toidentifier": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, "license": "MIT", "engines": { @@ -5813,8 +5040,6 @@ }, "node_modules/totalist": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", - "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", "dev": true, "license": "MIT", "engines": { @@ -5823,14 +5048,10 @@ }, "node_modules/tslib": { "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, "node_modules/type-is": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.1.0.tgz", - "integrity": "sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==", "dev": true, "license": "MIT", "dependencies": { @@ -5848,8 +5069,6 @@ }, "node_modules/type-is/node_modules/content-type": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.0.0.tgz", - "integrity": "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==", "dev": true, "license": "MIT", "engines": { @@ -5862,15 +5081,11 @@ }, "node_modules/typedarray": { "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", "dev": true, "license": "MIT" }, "node_modules/typedoc": { "version": "0.28.19", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.28.19.tgz", - "integrity": "sha512-wKh+lhdmMFivMlc6vRRcMGXeGEHGU2g8a2CkPTJjJlwRf1iXbimWIPcFolCqe4E0d/FRtGszpIrsp3WLpDB8Pw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -5893,8 +5108,6 @@ }, "node_modules/typedoc-plugin-markdown": { "version": "4.11.0", - "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-4.11.0.tgz", - "integrity": "sha512-2iunh2ALyfyh204OF7h2u0kuQ84xB3jFZtFyUr01nThJkLvR8oGGSSDlyt2gyO4kXhvUxDcVbO0y43+qX+wFbw==", "dev": true, "license": "MIT", "engines": { @@ -5906,8 +5119,6 @@ }, "node_modules/typedoc/node_modules/minimatch": { "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -5922,8 +5133,6 @@ }, "node_modules/typescript": { "version": "5.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", - "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "dev": true, "license": "Apache-2.0", "bin": { @@ -5936,22 +5145,16 @@ }, "node_modules/uc.micro": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", - "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", "dev": true, "license": "MIT" }, "node_modules/undici-types": { "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", "dev": true, "license": "MIT" }, "node_modules/universalify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { @@ -5960,8 +5163,6 @@ }, "node_modules/unpipe": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true, "license": "MIT", "engines": { @@ -5970,15 +5171,11 @@ }, "node_modules/util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true, "license": "MIT" }, "node_modules/v8-to-istanbul": { "version": "9.3.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", - "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", "dev": true, "license": "ISC", "dependencies": { @@ -5992,8 +5189,6 @@ }, "node_modules/vary": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, "license": "MIT", "engines": { @@ -6002,8 +5197,6 @@ }, "node_modules/vite": { "version": "8.0.16", - "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.16.tgz", - "integrity": "sha512-h9bXPmJichP5fLmVQo3PyaGSDE2n3aPuomeAlVRm0JLmt4rY6zmPKd59HYI4LNW8oTK7tlTsuC7l/m7awx9Jcw==", "dev": true, "license": "MIT", "dependencies": { @@ -6080,8 +5273,6 @@ }, "node_modules/vite/node_modules/picomatch": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", "engines": { @@ -6093,8 +5284,6 @@ }, "node_modules/vitest": { "version": "4.1.8", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.8.tgz", - "integrity": "sha512-flY6ScbCIt9HThs+C5HS7jvGOB560DJtk/Z15IQROTA6zEy49Nh8T/dofWTQL+n3vswqn87sbJNiuqw1SDp5Ig==", "dev": true, "license": "MIT", "dependencies": { @@ -6183,8 +5372,6 @@ }, "node_modules/vitest/node_modules/picomatch": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", "engines": { @@ -6196,8 +5383,6 @@ }, "node_modules/vscode-jsonrpc": { "version": "9.0.1", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-9.0.1.tgz", - "integrity": "sha512-rfuA6T75H6m5EkbhtEPzre9pT0HPcDI2MMy4+nPFIBks5J8JBAUHD4tRYSgaBOijIEC7SRkC1kKyXTLqbmh9jw==", "dev": true, "license": "MIT", "engines": { @@ -6206,8 +5391,6 @@ }, "node_modules/vscode-languageserver": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-10.1.0.tgz", - "integrity": "sha512-9gEWpXkYGXoqG7pBnE8O8hx/yP7+Aabn4+peQ3KDicQv6qunHSWyLTud3OF0w4S2+HfDD+5HqYKiXQW9HAU6mA==", "dev": true, "license": "MIT", "dependencies": { @@ -6219,8 +5402,6 @@ }, "node_modules/vscode-languageserver-protocol": { "version": "3.18.2", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.18.2.tgz", - "integrity": "sha512-XRyDbT0Pp3sSNti3JmxVEUMySWCSi1hhM+/KUlCy1hV1zmrqpM1OwO12EAki8blhmLuIMpaJrYbo0OzGVfK2Qg==", "dev": true, "license": "MIT", "dependencies": { @@ -6230,22 +5411,16 @@ }, "node_modules/vscode-languageserver-textdocument": { "version": "1.0.12", - "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", - "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==", "dev": true, "license": "MIT" }, "node_modules/vscode-languageserver-types": { "version": "3.18.0", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.18.0.tgz", - "integrity": "sha512-8TsGPNMIMiiBdkORgRSvLjuiEIiAFtO+KssmYWxQ+uSVvlf7RjK8YKCOjPzZ+YA04jXEV7+7LvkSmHkhpNS99g==", "dev": true, "license": "MIT" }, "node_modules/which": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "license": "ISC", "dependencies": { @@ -6260,8 +5435,6 @@ }, "node_modules/why-is-node-running": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", - "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", "dev": true, "license": "MIT", "dependencies": { @@ -6277,8 +5450,6 @@ }, "node_modules/wrap-ansi": { "version": "9.0.2", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", - "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", "dev": true, "license": "MIT", "dependencies": { @@ -6296,8 +5467,6 @@ "node_modules/wrap-ansi-cjs": { "name": "wrap-ansi", "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "license": "MIT", "dependencies": { @@ -6314,8 +5483,6 @@ }, "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { @@ -6330,8 +5497,6 @@ }, "node_modules/wrap-ansi/node_modules/ansi-regex": { "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, "license": "MIT", "engines": { @@ -6343,15 +5508,11 @@ }, "node_modules/wrap-ansi/node_modules/emoji-regex": { "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", "dev": true, "license": "MIT" }, "node_modules/wrap-ansi/node_modules/string-width": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6368,8 +5529,6 @@ }, "node_modules/wrap-ansi/node_modules/strip-ansi": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", - "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "dev": true, "license": "MIT", "dependencies": { @@ -6384,15 +5543,11 @@ }, "node_modules/wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true, "license": "ISC" }, "node_modules/ws": { "version": "8.21.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.1.tgz", - "integrity": "sha512-+0NTnW77fFN/DjQi6k/Sq/Yvk4Sgajw7urW8V+asjXnRgDs9gyGkdb7EzgfhA4goXsRIZKE28fzIXBHEzhuiWw==", "dev": true, "license": "MIT", "engines": { @@ -6413,8 +5568,6 @@ }, "node_modules/wsl-utils": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", - "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", "license": "MIT", "dependencies": { "is-wsl": "^3.1.0" @@ -6428,8 +5581,6 @@ }, "node_modules/xml-naming": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/xml-naming/-/xml-naming-0.3.0.tgz", - "integrity": "sha512-ghig2TBE/H11aOVgmahA3MhimvkBr6JIYknH/Dhdk10nXwdbIqBJsbfMxpvFPG8bAw77gN29aQWvKpmVoPlvPQ==", "dev": true, "funding": [ { @@ -6444,8 +5595,6 @@ }, "node_modules/y18n": { "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, "license": "ISC", "engines": { @@ -6454,8 +5603,6 @@ }, "node_modules/yallist": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", - "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -6464,8 +5611,6 @@ }, "node_modules/yaml": { "version": "2.9.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", - "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", "dev": true, "license": "ISC", "bin": { @@ -6480,8 +5625,6 @@ }, "node_modules/yargs": { "version": "18.0.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz", - "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==", "dev": true, "license": "MIT", "dependencies": { @@ -6498,8 +5641,6 @@ }, "node_modules/yargs-parser": { "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, "license": "ISC", "engines": { @@ -6508,8 +5649,6 @@ }, "node_modules/yargs/node_modules/ansi-regex": { "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, "license": "MIT", "engines": { @@ -6521,15 +5660,11 @@ }, "node_modules/yargs/node_modules/emoji-regex": { "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", "dev": true, "license": "MIT" }, "node_modules/yargs/node_modules/string-width": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6546,8 +5681,6 @@ }, "node_modules/yargs/node_modules/strip-ansi": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", - "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "dev": true, "license": "MIT", "dependencies": { @@ -6562,8 +5695,6 @@ }, "node_modules/yargs/node_modules/yargs-parser": { "version": "22.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", - "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", "dev": true, "license": "ISC", "engines": { @@ -6572,8 +5703,6 @@ }, "node_modules/yocto-queue": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, "license": "MIT", "engines": { diff --git a/packages/http-client-csharp/package.json b/packages/http-client-csharp/package.json index 5fd52d9377e..e3db970764a 100644 --- a/packages/http-client-csharp/package.json +++ b/packages/http-client-csharp/package.json @@ -61,6 +61,7 @@ "@azure-tools/typespec-azure-core": ">=0.70.0 <0.71.0 || ~0.71.0-0", "@azure-tools/typespec-client-generator-core": ">=0.70.0 <0.71.0 || ~0.71.0-0", "@typespec/compiler": "^1.14.0", + "@typespec/events": ">=0.84.0 <0.85.0 || ~0.85.0-0", "@typespec/http": "^1.14.0", "@typespec/openapi": "^1.14.0", "@typespec/rest": ">=0.84.0 <0.85.0 || ~0.85.0-0", @@ -75,14 +76,15 @@ "@microsoft/api-extractor": "^7.52.2", "@types/node": "~22.12.0", "@typespec/compiler": "1.14.0", + "@typespec/events": "0.84.0", "@typespec/http": "1.14.0", - "@typespec/http-specs": "0.1.0-alpha.39", + "@typespec/http-specs": "0.1.0-alpha.40", "@typespec/json-schema": "1.14.0", "@typespec/library-linter": "0.84.0", "@typespec/openapi": "1.14.0", "@typespec/rest": "0.84.0", "@typespec/spec-api": "0.1.0-alpha.15", - "@typespec/spector": "0.1.0-alpha.26", + "@typespec/spector": "0.1.0-alpha.27", "@typespec/sse": "0.84.0", "@typespec/streams": "0.84.0", "@typespec/tspd": "0.76.0",