diff --git a/packages/http-client-java/emitter/src/code-model-builder.ts b/packages/http-client-java/emitter/src/code-model-builder.ts index fe0d0c6ddcd..ef5bd0894e4 100644 --- a/packages/http-client-java/emitter/src/code-model-builder.ts +++ b/packages/http-client-java/emitter/src/code-model-builder.ts @@ -108,6 +108,7 @@ import { fail } from "assert"; import pkg from "lodash"; import { Client as CodeModelClient, + EncodedProperty, EncodedSchema, PageableContinuationToken, Serializable, @@ -2865,6 +2866,18 @@ export class CodeModelBuilder { serializedName: getPropertySerializedName(modelProperty), extensions: extensions, }); + if (modelProperty.encode) { + if (schema instanceof ArraySchema) { + const elementSchema = schema.elementType; + if (!(elementSchema instanceof StringSchema)) { + reportDiagnostic(this.program, { + code: "non-string-array-encoding-element-notsupported", + target: modelProperty.__raw ?? NoTarget, + }); + } + } + (codeModelProperty as EncodedProperty).arrayEncoding = modelProperty.encode; + } // xml if (modelProperty.serializationOptions.xml) { diff --git a/packages/http-client-java/emitter/src/common/client.ts b/packages/http-client-java/emitter/src/common/client.ts index 193727115a0..d5d26f13963 100644 --- a/packages/http-client-java/emitter/src/common/client.ts +++ b/packages/http-client-java/emitter/src/common/client.ts @@ -9,6 +9,7 @@ import { Security, } from "@autorest/codemodel"; import { DeepPartial } from "@azure-tools/codegen"; +import { ArrayKnownEncoding } from "@azure-tools/typespec-client-generator-core"; import { XmlSerializationFormat } from "./formats/xml.js"; export interface Client extends Aspect { @@ -103,6 +104,14 @@ export interface EncodedSchema { encode?: string; } +export interface EncodedProperty { + /** + * The encoding of array items. + * The type for SDK would "SdkArrayType" with a "valueType", the type on wire be "string". + */ + arrayEncoding?: ArrayKnownEncoding; +} + export class PageableContinuationToken { /** * The parameter of the operation as continuationToken in API request. diff --git a/packages/http-client-java/emitter/src/lib.ts b/packages/http-client-java/emitter/src/lib.ts index a7e5491c184..d2221445b79 100644 --- a/packages/http-client-java/emitter/src/lib.ts +++ b/packages/http-client-java/emitter/src/lib.ts @@ -119,6 +119,12 @@ export const $lib = createTypeSpecLibrary({ default: paramMessage`Constant header '${"headerName"}' is removed from response headers.`, }, }, + "non-string-array-encoding-element-notsupported": { + severity: "error", + messages: { + default: "Element of type other than 'string' is not supported for 'ArrayEncoding'.", + }, + }, }, emitter: { options: EmitterOptionsSchema, diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/package.json b/packages/http-client-java/generator/http-client-generator-clientcore-test/package.json index c11c0a1a842..2655f182441 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/package.json +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/package.json @@ -20,7 +20,7 @@ "@typespec/http-client-java-tests": "file:" }, "overrides": { - "@typespec/compiler": "1.7.0", + "@typespec/compiler": "1.7.1", "@typespec/http": "1.7.0", "@typespec/rest": "0.77.0", "@typespec/versioning": "0.77.0", diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/encode/array/CommaDelimitedArrayProperty.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/encode/array/CommaDelimitedArrayProperty.java index 76d0e3a5e47..77176e44514 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/encode/array/CommaDelimitedArrayProperty.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/encode/array/CommaDelimitedArrayProperty.java @@ -7,7 +7,10 @@ import io.clientcore.core.serialization.json.JsonToken; import io.clientcore.core.serialization.json.JsonWriter; import java.io.IOException; +import java.util.Arrays; +import java.util.LinkedList; import java.util.List; +import java.util.stream.Collectors; /** * The CommaDelimitedArrayProperty model. @@ -47,7 +50,10 @@ public List getValue() { @Override public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { jsonWriter.writeStartObject(); - jsonWriter.writeArrayField("value", this.value, (writer, element) -> writer.writeString(element)); + if (this.value != null) { + jsonWriter.writeStringField("value", + this.value.stream().map(element -> element == null ? "" : element).collect(Collectors.joining(","))); + } return jsonWriter.writeEndObject(); } @@ -69,7 +75,12 @@ public static CommaDelimitedArrayProperty fromJson(JsonReader jsonReader) throws reader.nextToken(); if ("value".equals(fieldName)) { - value = reader.readArray(reader1 -> reader1.getString()); + String valueEncodedAsString = reader.getString(); + value = valueEncodedAsString == null + ? null + : valueEncodedAsString.isEmpty() + ? new LinkedList<>() + : new LinkedList<>(Arrays.asList(valueEncodedAsString.split(",", -1))); } else { reader.skipChildren(); } diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/encode/array/NewlineDelimitedArrayProperty.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/encode/array/NewlineDelimitedArrayProperty.java index 9c4e02945fc..a5f6d1d0b4a 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/encode/array/NewlineDelimitedArrayProperty.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/encode/array/NewlineDelimitedArrayProperty.java @@ -7,7 +7,10 @@ import io.clientcore.core.serialization.json.JsonToken; import io.clientcore.core.serialization.json.JsonWriter; import java.io.IOException; +import java.util.Arrays; +import java.util.LinkedList; import java.util.List; +import java.util.stream.Collectors; /** * The NewlineDelimitedArrayProperty model. @@ -47,7 +50,10 @@ public List getValue() { @Override public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { jsonWriter.writeStartObject(); - jsonWriter.writeArrayField("value", this.value, (writer, element) -> writer.writeString(element)); + if (this.value != null) { + jsonWriter.writeStringField("value", + this.value.stream().map(element -> element == null ? "" : element).collect(Collectors.joining("\n"))); + } return jsonWriter.writeEndObject(); } @@ -69,7 +75,12 @@ public static NewlineDelimitedArrayProperty fromJson(JsonReader jsonReader) thro reader.nextToken(); if ("value".equals(fieldName)) { - value = reader.readArray(reader1 -> reader1.getString()); + String valueEncodedAsString = reader.getString(); + value = valueEncodedAsString == null + ? null + : valueEncodedAsString.isEmpty() + ? new LinkedList<>() + : new LinkedList<>(Arrays.asList(valueEncodedAsString.split("\n", -1))); } else { reader.skipChildren(); } diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/encode/array/PipeDelimitedArrayProperty.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/encode/array/PipeDelimitedArrayProperty.java index 591c83021e5..e5cc35a4960 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/encode/array/PipeDelimitedArrayProperty.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/encode/array/PipeDelimitedArrayProperty.java @@ -7,7 +7,10 @@ import io.clientcore.core.serialization.json.JsonToken; import io.clientcore.core.serialization.json.JsonWriter; import java.io.IOException; +import java.util.Arrays; +import java.util.LinkedList; import java.util.List; +import java.util.stream.Collectors; /** * The PipeDelimitedArrayProperty model. @@ -47,7 +50,10 @@ public List getValue() { @Override public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { jsonWriter.writeStartObject(); - jsonWriter.writeArrayField("value", this.value, (writer, element) -> writer.writeString(element)); + if (this.value != null) { + jsonWriter.writeStringField("value", + this.value.stream().map(element -> element == null ? "" : element).collect(Collectors.joining("|"))); + } return jsonWriter.writeEndObject(); } @@ -69,7 +75,12 @@ public static PipeDelimitedArrayProperty fromJson(JsonReader jsonReader) throws reader.nextToken(); if ("value".equals(fieldName)) { - value = reader.readArray(reader1 -> reader1.getString()); + String valueEncodedAsString = reader.getString(); + value = valueEncodedAsString == null + ? null + : valueEncodedAsString.isEmpty() + ? new LinkedList<>() + : new LinkedList<>(Arrays.asList(valueEncodedAsString.split("\\|", -1))); } else { reader.skipChildren(); } diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/encode/array/SpaceDelimitedArrayProperty.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/encode/array/SpaceDelimitedArrayProperty.java index 5b98f94f20a..4e514f16ecf 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/encode/array/SpaceDelimitedArrayProperty.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/encode/array/SpaceDelimitedArrayProperty.java @@ -7,7 +7,10 @@ import io.clientcore.core.serialization.json.JsonToken; import io.clientcore.core.serialization.json.JsonWriter; import java.io.IOException; +import java.util.Arrays; +import java.util.LinkedList; import java.util.List; +import java.util.stream.Collectors; /** * The SpaceDelimitedArrayProperty model. @@ -47,7 +50,10 @@ public List getValue() { @Override public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { jsonWriter.writeStartObject(); - jsonWriter.writeArrayField("value", this.value, (writer, element) -> writer.writeString(element)); + if (this.value != null) { + jsonWriter.writeStringField("value", + this.value.stream().map(element -> element == null ? "" : element).collect(Collectors.joining(" "))); + } return jsonWriter.writeEndObject(); } @@ -69,7 +75,12 @@ public static SpaceDelimitedArrayProperty fromJson(JsonReader jsonReader) throws reader.nextToken(); if ("value".equals(fieldName)) { - value = reader.readArray(reader1 -> reader1.getString()); + String valueEncodedAsString = reader.getString(); + value = valueEncodedAsString == null + ? null + : valueEncodedAsString.isEmpty() + ? new LinkedList<>() + : new LinkedList<>(Arrays.asList(valueEncodedAsString.split(" ", -1))); } else { reader.skipChildren(); } diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/test/java/encode/array/EncodeArrayTests.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/test/java/encode/array/EncodeArrayTests.java new file mode 100644 index 00000000000..fb616b74df7 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/test/java/encode/array/EncodeArrayTests.java @@ -0,0 +1,39 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package encode.array; + +import java.util.List; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public final class EncodeArrayTests { + + private static final List COLORS = List.of("blue", "red", "green"); + + private final ArrayClient client = new ArrayClientBuilder().buildArrayClient(); + + @Test + public void commaDelimitedProperty() { + CommaDelimitedArrayProperty response = client.commaDelimited(new CommaDelimitedArrayProperty(COLORS)); + Assertions.assertEquals(COLORS, response.getValue()); + } + + @Test + public void spaceDelimitedProperty() { + SpaceDelimitedArrayProperty response = client.spaceDelimited(new SpaceDelimitedArrayProperty(COLORS)); + Assertions.assertEquals(COLORS, response.getValue()); + } + + @Test + public void pipeDelimitedProperty() { + PipeDelimitedArrayProperty response = client.pipeDelimited(new PipeDelimitedArrayProperty(COLORS)); + Assertions.assertEquals(COLORS, response.getValue()); + } + + @Test + public void newlineDelimitedProperty() { + NewlineDelimitedArrayProperty response = client.newlineDelimited(new NewlineDelimitedArrayProperty(COLORS)); + Assertions.assertEquals(COLORS, response.getValue()); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/extension/model/codemodel/Property.java b/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/extension/model/codemodel/Property.java index 8bade836e7b..2248fcdf351 100644 --- a/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/extension/model/codemodel/Property.java +++ b/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/extension/model/codemodel/Property.java @@ -18,6 +18,7 @@ public class Property extends Value { private String summary; // TypeSpec only private SerializationFormats serialization; + private String arrayEncoding; // internal use, not from modelerfour private ObjectSchema parentSchema; @@ -161,6 +162,24 @@ public void setSerialization(SerializationFormats serialization) { this.serialization = serialization; } + /** + * Gets the array encoding style of this property. + * + * @return The array encoding style of this property. + */ + public String getArrayEncoding() { + return arrayEncoding; + } + + /** + * Sets the array encoding style of this property. + * + * @param arrayEncoding The array encoding style of this property. + */ + public void setArrayEncoding(String arrayEncoding) { + this.arrayEncoding = arrayEncoding; + } + @Override public String getSummary() { return summary; diff --git a/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/mapper/ModelPropertyMapper.java b/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/mapper/ModelPropertyMapper.java index c3b46ea1e23..44484d50143 100644 --- a/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/mapper/ModelPropertyMapper.java +++ b/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/mapper/ModelPropertyMapper.java @@ -10,6 +10,7 @@ import com.microsoft.typespec.http.client.generator.core.extension.model.codemodel.Schema; import com.microsoft.typespec.http.client.generator.core.extension.model.codemodel.XmlSerializationFormat; import com.microsoft.typespec.http.client.generator.core.extension.plugin.JavaSettings; +import com.microsoft.typespec.http.client.generator.core.model.clientmodel.ArrayEncoding; import com.microsoft.typespec.http.client.generator.core.model.clientmodel.ClassType; import com.microsoft.typespec.http.client.generator.core.model.clientmodel.ClientModelProperty; import com.microsoft.typespec.http.client.generator.core.model.clientmodel.EnumType; @@ -242,6 +243,11 @@ public ClientModelProperty map(Property property, boolean mutableAsOptional) { builder.defaultValue(autoRestPropertyDefaultValueExpression); } + // array encoding + if (property.getArrayEncoding() != null) { + builder.arrayEncoding(ArrayEncoding.fromValue(property.getArrayEncoding())); + } + return builder.build(); } } diff --git a/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/model/clientmodel/ArrayEncoding.java b/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/model/clientmodel/ArrayEncoding.java new file mode 100644 index 00000000000..d26cbbf38e8 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/model/clientmodel/ArrayEncoding.java @@ -0,0 +1,60 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.microsoft.typespec.http.client.generator.core.model.clientmodel; + +/** + * Known array encoding strategies supported by the generator. + */ +public enum ArrayEncoding { + PIPE_DELIMITED("pipeDelimited", "|", "\\\\|"), + SPACE_DELIMITED("spaceDelimited", " "), + COMMA_DELIMITED("commaDelimited", ","), + NEWLINE_DELIMITED("newlineDelimited", "\\n"); + + private final String value; + private final String delimiter; + private final String escapedDelimiter; + + ArrayEncoding(String value, String delimiter) { + this.value = value; + this.delimiter = delimiter; + this.escapedDelimiter = delimiter; + } + + ArrayEncoding(String value, String delimiter, String escapedDelimiter) { + this.value = value; + this.delimiter = delimiter; + this.escapedDelimiter = escapedDelimiter; + } + + public String value() { + return this.value; + } + + public String getDelimiter() { + return this.delimiter; + } + + public String getEscapedDelimiter() { + return escapedDelimiter; + } + + @Override + public String toString() { + return this.value(); + } + + public static ArrayEncoding fromValue(String value) { + if (value == null) { + return null; + } + + for (ArrayEncoding v : values()) { + if (v.value().equalsIgnoreCase(value)) { + return v; + } + } + return null; + } +} diff --git a/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/model/clientmodel/ClientModelProperty.java b/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/model/clientmodel/ClientModelProperty.java index 8ef97bc3134..0bc39246b65 100644 --- a/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/model/clientmodel/ClientModelProperty.java +++ b/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/model/clientmodel/ClientModelProperty.java @@ -91,6 +91,7 @@ public class ClientModelProperty implements ClientModelPropertyAccess { private final String xmlPrefix; private final Boolean requiredForCreate; + private final ArrayEncoding arrayEncoding; /** * Create a new ClientModelProperty with the provided properties. @@ -115,13 +116,16 @@ public class ClientModelProperty implements ClientModelPropertyAccess { * @param polymorphicDiscriminator Whether this property is a polymorphic discriminator. * @param isXmlText Whether this property uses the value of an XML tag. * @param xmlPrefix The prefix of the XML attribute or element this property represents. + * @param requiredForCreate Whether this property is required when create the resource. + * @param arrayEncoding The array encoding metadata of this property. */ private ClientModelProperty(String name, String description, String annotationArguments, boolean isXmlAttribute, String xmlName, String xmlNamespace, String serializedName, boolean isXmlWrapper, String xmlListElementName, String xmlListElementNamespace, String xmlListElementPrefix, IType wireType, IType clientType, boolean isConstant, String defaultValue, boolean isReadOnly, List mutabilities, boolean isRequired, String headerCollectionPrefix, boolean isAdditionalProperties, boolean needsFlatten, boolean clientFlatten, - boolean polymorphicDiscriminator, boolean isXmlText, String xmlPrefix, Boolean requiredForCreate) { + boolean polymorphicDiscriminator, boolean isXmlText, String xmlPrefix, Boolean requiredForCreate, + ArrayEncoding arrayEncoding) { this.name = name; this.description = description; this.annotationArguments = annotationArguments; @@ -148,6 +152,7 @@ private ClientModelProperty(String name, String description, String annotationAr this.isXmlText = isXmlText; this.xmlPrefix = xmlPrefix; this.requiredForCreate = requiredForCreate; + this.arrayEncoding = arrayEncoding; } public final String getName() { @@ -282,6 +287,10 @@ public boolean isRequiredForCreate() { return requiredForCreate == null ? this.isRequired() : requiredForCreate; } + public ArrayEncoding getArrayEncoding() { + return arrayEncoding; + } + /** * Add this ServiceModelProperty's imports to the provided set of imports. * @@ -393,6 +402,7 @@ public static class Builder { private boolean isXmlText = false; private String xmlPrefix; private Boolean requiredForCreate; + private ArrayEncoding arrayEncoding; /** * Sets the name of this property. @@ -684,6 +694,11 @@ public Builder xmlPrefix(String xmlPrefix) { return this; } + public Builder arrayEncoding(ArrayEncoding arrayEncoding) { + this.arrayEncoding = arrayEncoding; + return this; + } + /** * Creates a new instance of Builder. */ @@ -717,6 +732,7 @@ private Builder(ClientModelProperty property) { this.isXmlText = property.isXmlText(); this.xmlPrefix = property.getXmlPrefix(); this.requiredForCreate = property.requiredForCreate; + this.arrayEncoding = property.getArrayEncoding(); } public ClientModelProperty build() { @@ -724,7 +740,7 @@ public ClientModelProperty build() { xmlNamespace, serializedName, isXmlWrapper, xmlListElementName, xmlListElementNamespace, xmlListElementPrefix, wireType, clientType, isConstant, defaultValue, isReadOnly, mutabilities, isRequired, headerCollectionPrefix, isAdditionalProperties, needsFlatten, clientFlatten, - polymorphicDiscriminator, isXmlText, xmlPrefix, requiredForCreate); + polymorphicDiscriminator, isXmlText, xmlPrefix, requiredForCreate, arrayEncoding); } } } diff --git a/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/template/StreamSerializationModelTemplate.java b/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/template/StreamSerializationModelTemplate.java index 65efe095082..25f70a12618 100644 --- a/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/template/StreamSerializationModelTemplate.java +++ b/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/template/StreamSerializationModelTemplate.java @@ -29,10 +29,12 @@ import io.clientcore.core.utils.CoreUtils; import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; import java.util.Base64; import java.util.Collections; import java.util.HashMap; import java.util.LinkedHashMap; +import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Objects; @@ -93,6 +95,9 @@ protected void addSerializationImports(Set imports, ClientModel model, J imports.add(Base64.class.getName()); imports.add(LinkedHashMap.class.getName()); imports.add(List.class.getName()); + imports.add(LinkedList.class.getName()); + imports.add(Arrays.class.getName()); + imports.add(Collectors.class.getName()); imports.add(Map.class.getName()); imports.add(Objects.class.getName()); } @@ -742,9 +747,21 @@ private void serializeJsonProperty(JavaBlock methodBlock, ClientModelProperty pr .line("jsonWriter.writeUntypedField(\"" + serializedName + "\", " + propertyValueGetter + ");"); } } else if (wireType instanceof IterableType) { - serializeJsonContainerProperty(methodBlock, "writeArrayField", wireType, - ((IterableType) wireType).getElementType(), serializedName, propertyValueGetter, 0, - isJsonMergePatch); + if (property.getArrayEncoding() == null) { + serializeJsonContainerProperty(methodBlock, "writeArrayField", wireType, + ((IterableType) wireType).getElementType(), serializedName, propertyValueGetter, 0, + isJsonMergePatch); + } else { + // wireType is String + // at present, only String element is supported. this check is in ts code. + methodBlock.ifBlock(propertyValueGetter + " != null", ifBlock -> { + String serializeExpression = propertyValueGetter + + ".stream().map(element -> element == null ? \"\" : element).collect(Collectors.joining(\"" + + property.getArrayEncoding().getDelimiter() + "\"))"; + methodBlock.line("jsonWriter.writeStringField(\"%s\", %s);", serializedName, + serializeExpression); + }); + } } else if (wireType instanceof MapType) { // Assumption is that the key type for the Map is a String. This may not always hold true and when that // becomes reality this will need to be reworked to handle that case. @@ -1587,13 +1604,29 @@ private void generateJsonDeserializationLogic(JavaBlock deserializationBlock, Cl deserializationBlock.line(property.getName() + " = reader.readUntyped();"); } } else if (wireType instanceof IterableType) { + final String propertyStringVariableName = property.getName() + "EncodedAsString"; + if (property.getArrayEncoding() != null) { + // need to prepare the expression for propertyStringVariableName, + // to be used in "if (property.getArrayEncoding() == null)" block + deserializationBlock.line("String " + propertyStringVariableName + " = reader.getString();"); + } + if (!propertiesManager.hasConstructorArguments()) { deserializationBlock.text(property.getClientType() + " "); } deserializationBlock.text(property.getName() + " = "); - deserializeJsonContainerProperty(deserializationBlock, "readArray", wireType, - ((IterableType) wireType).getElementType(), ((IterableType) clientType).getElementType(), 0); + if (property.getArrayEncoding() == null) { + deserializeJsonContainerProperty(deserializationBlock, "readArray", wireType, + ((IterableType) wireType).getElementType(), ((IterableType) clientType).getElementType(), 0); + } else { + // wireType is String + // at present, only String element is supported. this check is in ts code. + // LinkedList is used to be consistent with internal code of core, e.g. "readArray" API + deserializationBlock.line( + "%1$s == null ? null : %1$s.isEmpty() ? new LinkedList<>() : new LinkedList<>(Arrays.asList(%1$s.split(\"%2$s\", -1)));", + propertyStringVariableName, property.getArrayEncoding().getEscapedDelimiter()); + } if (!propertiesManager.hasConstructorArguments()) { handleSettingDeserializedValue(deserializationBlock, property, property.getName(), fromSuper); diff --git a/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/util/ModelExampleUtil.java b/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/util/ModelExampleUtil.java index a504b443aa7..bb2d8da54e0 100644 --- a/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/util/ModelExampleUtil.java +++ b/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/util/ModelExampleUtil.java @@ -71,6 +71,19 @@ public static ExampleNode parseNode(IType type, IType wireType, Object objectVal ExampleNode childNode = parseNode(elementType, childObjectValue); node.getChildNodes().add(childNode); } + } else if (objectValue instanceof String) { + // there is ArrayEncoding that serializes array to string + // for simplicity, treat it as CSV + ListNode listNode = new ListNode(elementType, objectValue); + if (!((String) objectValue).isEmpty()) { + String value = (String) objectValue; + String[] elements = value.split(",", -1); + for (String childObjectValue : elements) { + ExampleNode childNode = parseNode(elementType, childObjectValue); + listNode.getChildNodes().add(childNode); + } + } + node = listNode; } else { throw new IllegalStateException("Example value is not List type: " + objectValue); } diff --git a/packages/http-client-java/generator/http-client-generator-test/package.json b/packages/http-client-java/generator/http-client-generator-test/package.json index 1285ccb6134..9eb627fdfd7 100644 --- a/packages/http-client-java/generator/http-client-generator-test/package.json +++ b/packages/http-client-java/generator/http-client-generator-test/package.json @@ -20,7 +20,7 @@ "@typespec/http-client-java-tests": "file:" }, "overrides": { - "@typespec/compiler": "1.7.0", + "@typespec/compiler": "1.7.1", "@typespec/http": "1.7.0", "@typespec/rest": "0.77.0", "@typespec/versioning": "0.77.0", diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/encode/array/models/CommaDelimitedArrayProperty.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/encode/array/models/CommaDelimitedArrayProperty.java index 1e3a6406b61..25747bc7fe0 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/encode/array/models/CommaDelimitedArrayProperty.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/encode/array/models/CommaDelimitedArrayProperty.java @@ -11,7 +11,10 @@ import com.azure.json.JsonToken; import com.azure.json.JsonWriter; import java.io.IOException; +import java.util.Arrays; +import java.util.LinkedList; import java.util.List; +import java.util.stream.Collectors; /** * The CommaDelimitedArrayProperty model. @@ -51,7 +54,10 @@ public List getValue() { @Override public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { jsonWriter.writeStartObject(); - jsonWriter.writeArrayField("value", this.value, (writer, element) -> writer.writeString(element)); + if (this.value != null) { + jsonWriter.writeStringField("value", + this.value.stream().map(element -> element == null ? "" : element).collect(Collectors.joining(","))); + } return jsonWriter.writeEndObject(); } @@ -73,7 +79,12 @@ public static CommaDelimitedArrayProperty fromJson(JsonReader jsonReader) throws reader.nextToken(); if ("value".equals(fieldName)) { - value = reader.readArray(reader1 -> reader1.getString()); + String valueEncodedAsString = reader.getString(); + value = valueEncodedAsString == null + ? null + : valueEncodedAsString.isEmpty() + ? new LinkedList<>() + : new LinkedList<>(Arrays.asList(valueEncodedAsString.split(",", -1))); } else { reader.skipChildren(); } diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/encode/array/models/NewlineDelimitedArrayProperty.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/encode/array/models/NewlineDelimitedArrayProperty.java index 605c2f10f09..03acae4ccd1 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/encode/array/models/NewlineDelimitedArrayProperty.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/encode/array/models/NewlineDelimitedArrayProperty.java @@ -11,7 +11,10 @@ import com.azure.json.JsonToken; import com.azure.json.JsonWriter; import java.io.IOException; +import java.util.Arrays; +import java.util.LinkedList; import java.util.List; +import java.util.stream.Collectors; /** * The NewlineDelimitedArrayProperty model. @@ -51,7 +54,10 @@ public List getValue() { @Override public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { jsonWriter.writeStartObject(); - jsonWriter.writeArrayField("value", this.value, (writer, element) -> writer.writeString(element)); + if (this.value != null) { + jsonWriter.writeStringField("value", + this.value.stream().map(element -> element == null ? "" : element).collect(Collectors.joining("\n"))); + } return jsonWriter.writeEndObject(); } @@ -73,7 +79,12 @@ public static NewlineDelimitedArrayProperty fromJson(JsonReader jsonReader) thro reader.nextToken(); if ("value".equals(fieldName)) { - value = reader.readArray(reader1 -> reader1.getString()); + String valueEncodedAsString = reader.getString(); + value = valueEncodedAsString == null + ? null + : valueEncodedAsString.isEmpty() + ? new LinkedList<>() + : new LinkedList<>(Arrays.asList(valueEncodedAsString.split("\n", -1))); } else { reader.skipChildren(); } diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/encode/array/models/PipeDelimitedArrayProperty.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/encode/array/models/PipeDelimitedArrayProperty.java index 6f9b85082c1..37a143a7016 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/encode/array/models/PipeDelimitedArrayProperty.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/encode/array/models/PipeDelimitedArrayProperty.java @@ -11,7 +11,10 @@ import com.azure.json.JsonToken; import com.azure.json.JsonWriter; import java.io.IOException; +import java.util.Arrays; +import java.util.LinkedList; import java.util.List; +import java.util.stream.Collectors; /** * The PipeDelimitedArrayProperty model. @@ -51,7 +54,10 @@ public List getValue() { @Override public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { jsonWriter.writeStartObject(); - jsonWriter.writeArrayField("value", this.value, (writer, element) -> writer.writeString(element)); + if (this.value != null) { + jsonWriter.writeStringField("value", + this.value.stream().map(element -> element == null ? "" : element).collect(Collectors.joining("|"))); + } return jsonWriter.writeEndObject(); } @@ -73,7 +79,12 @@ public static PipeDelimitedArrayProperty fromJson(JsonReader jsonReader) throws reader.nextToken(); if ("value".equals(fieldName)) { - value = reader.readArray(reader1 -> reader1.getString()); + String valueEncodedAsString = reader.getString(); + value = valueEncodedAsString == null + ? null + : valueEncodedAsString.isEmpty() + ? new LinkedList<>() + : new LinkedList<>(Arrays.asList(valueEncodedAsString.split("\\|", -1))); } else { reader.skipChildren(); } diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/encode/array/models/SpaceDelimitedArrayProperty.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/encode/array/models/SpaceDelimitedArrayProperty.java index 8a0d3181c2e..1c270faa5b9 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/encode/array/models/SpaceDelimitedArrayProperty.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/encode/array/models/SpaceDelimitedArrayProperty.java @@ -11,7 +11,10 @@ import com.azure.json.JsonToken; import com.azure.json.JsonWriter; import java.io.IOException; +import java.util.Arrays; +import java.util.LinkedList; import java.util.List; +import java.util.stream.Collectors; /** * The SpaceDelimitedArrayProperty model. @@ -51,7 +54,10 @@ public List getValue() { @Override public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { jsonWriter.writeStartObject(); - jsonWriter.writeArrayField("value", this.value, (writer, element) -> writer.writeString(element)); + if (this.value != null) { + jsonWriter.writeStringField("value", + this.value.stream().map(element -> element == null ? "" : element).collect(Collectors.joining(" "))); + } return jsonWriter.writeEndObject(); } @@ -73,7 +79,12 @@ public static SpaceDelimitedArrayProperty fromJson(JsonReader jsonReader) throws reader.nextToken(); if ("value".equals(fieldName)) { - value = reader.readArray(reader1 -> reader1.getString()); + String valueEncodedAsString = reader.getString(); + value = valueEncodedAsString == null + ? null + : valueEncodedAsString.isEmpty() + ? new LinkedList<>() + : new LinkedList<>(Arrays.asList(valueEncodedAsString.split(" ", -1))); } else { reader.skipChildren(); } diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/builtin/BuiltinAsyncClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/builtin/BuiltinAsyncClient.java index 9443a552413..d5741af7c39 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/builtin/BuiltinAsyncClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/builtin/BuiltinAsyncClient.java @@ -97,6 +97,9 @@ public final class BuiltinAsyncClient { * unknownDurationFormat: String (Optional) * unknownDateTimeFormat: String (Optional) * unknownBytes: String (Optional) + * commaDeliminatedArray (Optional): [ + * String (Optional) + * ] * } * uuid: String (Required) * } @@ -159,6 +162,9 @@ public Mono> readWithResponse(String queryParam, String que * unknownDurationFormat: String (Optional) * unknownDateTimeFormat: String (Optional) * unknownBytes: String (Optional) + * commaDeliminatedArray (Optional): [ + * String (Optional) + * ] * } * uuid: String (Required) * } @@ -239,4 +245,24 @@ public Mono read(String queryParam, String queryParamEncoded) { return readWithResponse(queryParam, queryParamEncoded, requestOptions).flatMap(FluxUtil::toMono) .map(protocolMethodData -> protocolMethodData.toObject(Builtin.class)); } + + /** + * The write operation. + * + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return A {@link Mono} that completes when a successful response is received. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono write(Builtin body) { + // Generated convenience method for writeWithResponse + RequestOptions requestOptions = new RequestOptions(); + return writeWithResponse(BinaryData.fromObject(body), requestOptions).flatMap(FluxUtil::toMono); + } } diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/builtin/BuiltinClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/builtin/BuiltinClient.java index 4b13ab1ebef..bd2fb3d0c98 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/builtin/BuiltinClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/builtin/BuiltinClient.java @@ -95,6 +95,9 @@ public final class BuiltinClient { * unknownDurationFormat: String (Optional) * unknownDateTimeFormat: String (Optional) * unknownBytes: String (Optional) + * commaDeliminatedArray (Optional): [ + * String (Optional) + * ] * } * uuid: String (Required) * } @@ -157,6 +160,9 @@ public Response readWithResponse(String queryParam, String queryPara * unknownDurationFormat: String (Optional) * unknownDateTimeFormat: String (Optional) * unknownBytes: String (Optional) + * commaDeliminatedArray (Optional): [ + * String (Optional) + * ] * } * uuid: String (Required) * } @@ -235,4 +241,23 @@ public Builtin read(String queryParam, String queryParamEncoded) { RequestOptions requestOptions = new RequestOptions(); return readWithResponse(queryParam, queryParamEncoded, requestOptions).getValue().toObject(Builtin.class); } + + /** + * The write operation. + * + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public void write(Builtin body) { + // Generated convenience method for writeWithResponse + RequestOptions requestOptions = new RequestOptions(); + writeWithResponse(BinaryData.fromObject(body), requestOptions).getValue(); + } } diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/builtin/implementation/BuiltinOpsImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/builtin/implementation/BuiltinOpsImpl.java index a7db120b993..009b00691a7 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/builtin/implementation/BuiltinOpsImpl.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/builtin/implementation/BuiltinOpsImpl.java @@ -157,6 +157,9 @@ Response writeSync(@HostParam("endpoint") String endpoint, * unknownDurationFormat: String (Optional) * unknownDateTimeFormat: String (Optional) * unknownBytes: String (Optional) + * commaDeliminatedArray (Optional): [ + * String (Optional) + * ] * } * uuid: String (Required) * } @@ -236,6 +239,9 @@ public Mono> readWithResponseAsync(String queryParam, Strin * unknownDurationFormat: String (Optional) * unknownDateTimeFormat: String (Optional) * unknownBytes: String (Optional) + * commaDeliminatedArray (Optional): [ + * String (Optional) + * ] * } * uuid: String (Required) * } @@ -299,6 +305,9 @@ public Response readWithResponse(String queryParam, String queryPara * unknownDurationFormat: String (Optional) * unknownDateTimeFormat: String (Optional) * unknownBytes: String (Optional) + * commaDeliminatedArray (Optional): [ + * String (Optional) + * ] * } * uuid: String (Required) * } @@ -360,6 +369,9 @@ public Mono> writeWithResponseAsync(BinaryData body, RequestOptio * unknownDurationFormat: String (Optional) * unknownDateTimeFormat: String (Optional) * unknownBytes: String (Optional) + * commaDeliminatedArray (Optional): [ + * String (Optional) + * ] * } * uuid: String (Required) * } diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/builtin/models/Encoded.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/builtin/models/Encoded.java index 314dec46ae7..47297757eac 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/builtin/models/Encoded.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/builtin/models/Encoded.java @@ -19,7 +19,11 @@ import java.time.OffsetDateTime; import java.time.ZoneOffset; import java.time.format.DateTimeFormatter; +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; /** * The Encoded model. @@ -86,6 +90,12 @@ public final class Encoded implements JsonSerializable { @Generated private String unknownBytes; + /* + * The commaDeliminatedArray property. + */ + @Generated + private List commaDeliminatedArray; + /** * Creates an instance of Encoded class. */ @@ -348,6 +358,28 @@ public Encoded setUnknownBytes(String unknownBytes) { return this; } + /** + * Get the commaDeliminatedArray property: The commaDeliminatedArray property. + * + * @return the commaDeliminatedArray value. + */ + @Generated + public List getCommaDeliminatedArray() { + return this.commaDeliminatedArray; + } + + /** + * Set the commaDeliminatedArray property: The commaDeliminatedArray property. + * + * @param commaDeliminatedArray the commaDeliminatedArray value to set. + * @return the Encoded object itself. + */ + @Generated + public Encoded setCommaDeliminatedArray(List commaDeliminatedArray) { + this.commaDeliminatedArray = commaDeliminatedArray; + return this; + } + /** * {@inheritDoc} */ @@ -366,6 +398,12 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { jsonWriter.writeStringField("unknownDurationFormat", this.unknownDurationFormat); jsonWriter.writeStringField("unknownDateTimeFormat", this.unknownDateTimeFormat); jsonWriter.writeStringField("unknownBytes", this.unknownBytes); + if (this.commaDeliminatedArray != null) { + jsonWriter.writeStringField("commaDeliminatedArray", + this.commaDeliminatedArray.stream() + .map(element -> element == null ? "" : element) + .collect(Collectors.joining(","))); + } return jsonWriter.writeEndObject(); } @@ -408,6 +446,14 @@ public static Encoded fromJson(JsonReader jsonReader) throws IOException { deserializedEncoded.unknownDateTimeFormat = reader.getString(); } else if ("unknownBytes".equals(fieldName)) { deserializedEncoded.unknownBytes = reader.getString(); + } else if ("commaDeliminatedArray".equals(fieldName)) { + String commaDeliminatedArrayEncodedAsString = reader.getString(); + List commaDeliminatedArray = commaDeliminatedArrayEncodedAsString == null + ? null + : commaDeliminatedArrayEncodedAsString.isEmpty() + ? new LinkedList<>() + : new LinkedList<>(Arrays.asList(commaDeliminatedArrayEncodedAsString.split(",", -1))); + deserializedEncoded.commaDeliminatedArray = commaDeliminatedArray; } else { reader.skipChildren(); } diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/tsptest-builtin_apiview_properties.json b/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/tsptest-builtin_apiview_properties.json index 8862773b538..4f2f513124e 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/tsptest-builtin_apiview_properties.json +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/tsptest-builtin_apiview_properties.json @@ -4,9 +4,13 @@ "tsptest.builtin.BuiltinAsyncClient": "TspTest.Builtin.BuiltinOp", "tsptest.builtin.BuiltinAsyncClient.read": "TspTest.Builtin.BuiltinOp.read", "tsptest.builtin.BuiltinAsyncClient.readWithResponse": "TspTest.Builtin.BuiltinOp.read", + "tsptest.builtin.BuiltinAsyncClient.write": "TspTest.Builtin.BuiltinOp.write", + "tsptest.builtin.BuiltinAsyncClient.writeWithResponse": "TspTest.Builtin.BuiltinOp.write", "tsptest.builtin.BuiltinClient": "TspTest.Builtin.BuiltinOp", "tsptest.builtin.BuiltinClient.read": "TspTest.Builtin.BuiltinOp.read", "tsptest.builtin.BuiltinClient.readWithResponse": "TspTest.Builtin.BuiltinOp.read", + "tsptest.builtin.BuiltinClient.write": "TspTest.Builtin.BuiltinOp.write", + "tsptest.builtin.BuiltinClient.writeWithResponse": "TspTest.Builtin.BuiltinOp.write", "tsptest.builtin.BuiltinClientBuilder": "TspTest.Builtin", "tsptest.builtin.models.Builtin": "TspTest.Builtin.Builtin", "tsptest.builtin.models.Encoded": "TspTest.Builtin.Encoded" diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/tsptest-builtin_metadata.json b/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/tsptest-builtin_metadata.json index 5cbe7a748d1..8e0acdcd6f0 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/tsptest-builtin_metadata.json +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/tsptest-builtin_metadata.json @@ -1 +1 @@ -{"flavor":"Azure","crossLanguageDefinitions":{"tsptest.builtin.BuiltinAsyncClient":"TspTest.Builtin.BuiltinOp","tsptest.builtin.BuiltinAsyncClient.read":"TspTest.Builtin.BuiltinOp.read","tsptest.builtin.BuiltinAsyncClient.readWithResponse":"TspTest.Builtin.BuiltinOp.read","tsptest.builtin.BuiltinClient":"TspTest.Builtin.BuiltinOp","tsptest.builtin.BuiltinClient.read":"TspTest.Builtin.BuiltinOp.read","tsptest.builtin.BuiltinClient.readWithResponse":"TspTest.Builtin.BuiltinOp.read","tsptest.builtin.BuiltinClientBuilder":"TspTest.Builtin","tsptest.builtin.models.Builtin":"TspTest.Builtin.Builtin","tsptest.builtin.models.Encoded":"TspTest.Builtin.Encoded"},"generatedFiles":["src/main/java/module-info.java","src/main/java/tsptest/builtin/BuiltinAsyncClient.java","src/main/java/tsptest/builtin/BuiltinClient.java","src/main/java/tsptest/builtin/BuiltinClientBuilder.java","src/main/java/tsptest/builtin/implementation/BuiltinClientImpl.java","src/main/java/tsptest/builtin/implementation/BuiltinOpsImpl.java","src/main/java/tsptest/builtin/implementation/package-info.java","src/main/java/tsptest/builtin/models/Builtin.java","src/main/java/tsptest/builtin/models/Encoded.java","src/main/java/tsptest/builtin/models/package-info.java","src/main/java/tsptest/builtin/package-info.java"]} \ No newline at end of file +{"flavor":"Azure","crossLanguageDefinitions":{"tsptest.builtin.BuiltinAsyncClient":"TspTest.Builtin.BuiltinOp","tsptest.builtin.BuiltinAsyncClient.read":"TspTest.Builtin.BuiltinOp.read","tsptest.builtin.BuiltinAsyncClient.readWithResponse":"TspTest.Builtin.BuiltinOp.read","tsptest.builtin.BuiltinAsyncClient.write":"TspTest.Builtin.BuiltinOp.write","tsptest.builtin.BuiltinAsyncClient.writeWithResponse":"TspTest.Builtin.BuiltinOp.write","tsptest.builtin.BuiltinClient":"TspTest.Builtin.BuiltinOp","tsptest.builtin.BuiltinClient.read":"TspTest.Builtin.BuiltinOp.read","tsptest.builtin.BuiltinClient.readWithResponse":"TspTest.Builtin.BuiltinOp.read","tsptest.builtin.BuiltinClient.write":"TspTest.Builtin.BuiltinOp.write","tsptest.builtin.BuiltinClient.writeWithResponse":"TspTest.Builtin.BuiltinOp.write","tsptest.builtin.BuiltinClientBuilder":"TspTest.Builtin","tsptest.builtin.models.Builtin":"TspTest.Builtin.Builtin","tsptest.builtin.models.Encoded":"TspTest.Builtin.Encoded"},"generatedFiles":["src/main/java/module-info.java","src/main/java/tsptest/builtin/BuiltinAsyncClient.java","src/main/java/tsptest/builtin/BuiltinClient.java","src/main/java/tsptest/builtin/BuiltinClientBuilder.java","src/main/java/tsptest/builtin/implementation/BuiltinClientImpl.java","src/main/java/tsptest/builtin/implementation/BuiltinOpsImpl.java","src/main/java/tsptest/builtin/implementation/package-info.java","src/main/java/tsptest/builtin/models/Builtin.java","src/main/java/tsptest/builtin/models/Encoded.java","src/main/java/tsptest/builtin/models/package-info.java","src/main/java/tsptest/builtin/package-info.java"]} \ No newline at end of file diff --git a/packages/http-client-java/generator/http-client-generator-test/src/samples/java/tsptest/builtin/generated/BuiltinOpWrite.java b/packages/http-client-java/generator/http-client-generator-test/src/samples/java/tsptest/builtin/generated/BuiltinOpWrite.java new file mode 100644 index 00000000000..daabacae809 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-test/src/samples/java/tsptest/builtin/generated/BuiltinOpWrite.java @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package tsptest.builtin.generated; + +import com.azure.core.util.Configuration; +import java.time.Duration; +import java.time.LocalDate; +import java.time.OffsetDateTime; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; +import tsptest.builtin.BuiltinClient; +import tsptest.builtin.BuiltinClientBuilder; +import tsptest.builtin.models.Builtin; +import tsptest.builtin.models.Encoded; + +public class BuiltinOpWrite { + public static void main(String[] args) { + BuiltinClient builtinClient + = new BuiltinClientBuilder().endpoint(Configuration.getGlobalConfiguration().get("ENDPOINT")).buildClient(); + // BEGIN:tsptest.builtin.generated.builtin-op-write.builtin-op-write + builtinClient.write(new Builtin(true, "myString", null, 0, 32L, null, 64L, 32.0, 64.0, Duration.parse("PT15M"), + LocalDate.parse("2023-08-29"), OffsetDateTime.parse("2019-10-12T07:20:50.520Z"), + Arrays.asList("a", "b", "c"), null, "https://www.github.com", + mapOf("max", 15.0D, "min", 14.0D, "average", 14.3D), + new Encoded().setTimeInSeconds(Duration.parse("PT15M")) + .setTimeInSecondsFraction(Duration.parse("PT20M0.345S")) + .setDateTime(OffsetDateTime.parse("1966-03-03T00:06:56.52Z")) + .setDateTimeRfc7231(OffsetDateTime.parse("1994-11-06T08:49:37Z")) + .setUnixTimestamp(OffsetDateTime.parse("2023-08-30T02:35:03Z")) + .setBase64("aHR0cHM6Ly93d3cuZ2l0aHViLmNvbQ==".getBytes()) + .setBase64url("aHR0cHM6Ly93d3cuZ2l0aHViLmNvbQ==".getBytes()) + .setCommaDeliminatedArray(Arrays.asList("a", "b", "c")), + null)); + // END:tsptest.builtin.generated.builtin-op-write.builtin-op-write + } + + // Use "Map.of" if available + @SuppressWarnings("unchecked") + private static Map mapOf(Object... inputs) { + Map map = new HashMap<>(); + for (int i = 0; i < inputs.length; i += 2) { + String key = (String) inputs[i]; + T value = (T) inputs[i + 1]; + map.put(key, value); + } + return map; + } +} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/clientgenerator/core/clientlocation/ClientLocationClientTests.java b/packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/clientgenerator/core/clientlocation/ClientLocationClientTests.java deleted file mode 100644 index 0f7f299e599..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/clientgenerator/core/clientlocation/ClientLocationClientTests.java +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package azure.clientgenerator.core.clientlocation; - -import azure.clientgenerator.core.clientlocation.movemethodparametertoclient.models.Blob; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - -public final class ClientLocationClientTests { - - private final ClientLocationClientBuilder builder = new ClientLocationClientBuilder().storageAccount("testaccount"); - - @Test - public void testMoveToExistingSubClient() { - MoveToExistingSubUserOperationsClient userClient = builder.buildMoveToExistingSubUserOperationsClient(); - userClient.getUser(); - - MoveToExistingSubAdminOperationsClient adminClient = builder.buildMoveToExistingSubAdminOperationsClient(); - // deleteUser moved to MoveToExistingSubAdminOperationsClient - adminClient.deleteUser(); - adminClient.getAdminInfo(); - } - - @Test - public void testMoveToNewSubClient() { - MoveToNewSubProductOperationsClient productClient = builder.buildMoveToNewSubProductOperationsClient(); - productClient.listProducts(); - - ArchiveOperationsClient archiveClient = builder.buildArchiveOperationsClient(); - // archiveProduct moved to ArchiveOperationsClient - archiveClient.archiveProduct(); - } - - @Test - public void testMoveToRootClient() { - MoveToRootResourceOperationsClient resourceClient = builder.buildMoveToRootResourceOperationsClient(); - resourceClient.getResource(); - - ClientLocationClient rootClient = builder.buildClient(); - // getHealthStatus moved to root client - rootClient.getHealthStatus(); - } - - @Test - public void testMoveMethodParameterToClient() { - MoveMethodParameterToBlobOperationsClient blobClient = builder.buildMoveMethodParameterToBlobOperationsClient(); - - // Test the scenario: GET /blob?storageAccount=testaccount&container=testcontainer&blob=testblob.txt - // Expected response: {"id": "blob-001", "name": "testblob.txt", "size": 1024, "path": - // "/testcontainer/testblob.txt"} - // "testaccount" moved to client - Blob blob = blobClient.getBlob("testcontainer", "testblob.txt"); - - // Verify the Blob model structure - Assertions.assertNotNull(blob); - Assertions.assertNotNull(blob.getId()); - Assertions.assertNotNull(blob.getName()); - Assertions.assertTrue(blob.getSize() > 0); - Assertions.assertNotNull(blob.getPath()); - } -} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/test/java/encode/array/EncodeArraySerializationTests.java b/packages/http-client-java/generator/http-client-generator-test/src/test/java/encode/array/EncodeArraySerializationTests.java new file mode 100644 index 00000000000..c6a58209e5c --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-test/src/test/java/encode/array/EncodeArraySerializationTests.java @@ -0,0 +1,52 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package encode.array; + +import com.azure.core.util.BinaryData; +import encode.array.models.CommaDelimitedArrayProperty; +import java.util.LinkedList; +import java.util.List; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public final class EncodeArraySerializationTests { + + @Test + public void testNull() { + CommaDelimitedArrayProperty model = new CommaDelimitedArrayProperty(null); + Assertions.assertEquals("{}", BinaryData.fromObject(model).toString()); + + model = BinaryData.fromString("{}").toObject(CommaDelimitedArrayProperty.class); + Assertions.assertNull(model.getValue()); + } + + @Test + public void testEmptyStringOnWire() { + CommaDelimitedArrayProperty model = new CommaDelimitedArrayProperty(List.of()); + Assertions.assertEquals("{\"value\":\"\"}", BinaryData.fromObject(model).toString()); + + model = BinaryData.fromString("{\"value\":\"\"}").toObject(CommaDelimitedArrayProperty.class); + Assertions.assertEquals(0, model.getValue().size()); + } + + @Test + public void testEmptyElement() { + CommaDelimitedArrayProperty model = new CommaDelimitedArrayProperty(List.of("", "")); + Assertions.assertEquals("{\"value\":\",\"}", BinaryData.fromObject(model).toString()); + + model = BinaryData.fromString("{\"value\":\",\"}").toObject(CommaDelimitedArrayProperty.class); + Assertions.assertEquals(2, model.getValue().size()); + } + + @Test + public void testNullElement() { + List list = new LinkedList<>(); + list.add("data1"); + list.add(null); + list.add("data2"); + + CommaDelimitedArrayProperty model = new CommaDelimitedArrayProperty(list); + Assertions.assertEquals("{\"value\":\"data1,,data2\"}", BinaryData.fromObject(model).toString()); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/test/java/encode/array/EncodeArrayTests.java b/packages/http-client-java/generator/http-client-generator-test/src/test/java/encode/array/EncodeArrayTests.java new file mode 100644 index 00000000000..3e45e1c1f56 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-test/src/test/java/encode/array/EncodeArrayTests.java @@ -0,0 +1,43 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package encode.array; + +import encode.array.models.CommaDelimitedArrayProperty; +import encode.array.models.NewlineDelimitedArrayProperty; +import encode.array.models.PipeDelimitedArrayProperty; +import encode.array.models.SpaceDelimitedArrayProperty; +import java.util.List; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public final class EncodeArrayTests { + + private static final List COLORS = List.of("blue", "red", "green"); + + private final ArrayClient client = new ArrayClientBuilder().buildClient(); + + @Test + public void commaDelimitedProperty() { + CommaDelimitedArrayProperty response = client.commaDelimited(new CommaDelimitedArrayProperty(COLORS)); + Assertions.assertEquals(COLORS, response.getValue()); + } + + @Test + public void spaceDelimitedProperty() { + SpaceDelimitedArrayProperty response = client.spaceDelimited(new SpaceDelimitedArrayProperty(COLORS)); + Assertions.assertEquals(COLORS, response.getValue()); + } + + @Test + public void pipeDelimitedProperty() { + PipeDelimitedArrayProperty response = client.pipeDelimited(new PipeDelimitedArrayProperty(COLORS)); + Assertions.assertEquals(COLORS, response.getValue()); + } + + @Test + public void newlineDelimitedProperty() { + NewlineDelimitedArrayProperty response = client.newlineDelimited(new NewlineDelimitedArrayProperty(COLORS)); + Assertions.assertEquals(COLORS, response.getValue()); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/test/java/tsptest/builtin/generated/BuiltinOpReadTests.java b/packages/http-client-java/generator/http-client-generator-test/src/test/java/tsptest/builtin/generated/BuiltinOpReadTests.java index 46155f8c613..8fa08f909c1 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/test/java/tsptest/builtin/generated/BuiltinOpReadTests.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/test/java/tsptest/builtin/generated/BuiltinOpReadTests.java @@ -56,5 +56,6 @@ public void testBuiltinOpReadTests() { Assertions.assertNotNull(responseEncoded.getUnixTimestamp()); Assertions.assertNotNull(responseEncoded.getBase64()); Assertions.assertNotNull(responseEncoded.getBase64url()); + Assertions.assertNotNull(responseEncoded.getCommaDeliminatedArray()); } } diff --git a/packages/http-client-java/generator/http-client-generator-test/src/test/java/tsptest/builtin/generated/BuiltinOpWriteTests.java b/packages/http-client-java/generator/http-client-generator-test/src/test/java/tsptest/builtin/generated/BuiltinOpWriteTests.java new file mode 100644 index 00000000000..1f8e4e16d7a --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-test/src/test/java/tsptest/builtin/generated/BuiltinOpWriteTests.java @@ -0,0 +1,50 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package tsptest.builtin.generated; + +import java.time.Duration; +import java.time.LocalDate; +import java.time.OffsetDateTime; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import tsptest.builtin.models.Builtin; +import tsptest.builtin.models.Encoded; + +@Disabled +public final class BuiltinOpWriteTests extends BuiltinClientTestBase { + @Test + @Disabled + public void testBuiltinOpWriteTests() { + // method invocation + builtinClient.write(new Builtin(true, "myString", null, 0, 32L, null, 64L, 32.0, 64.0, Duration.parse("PT15M"), + LocalDate.parse("2023-08-29"), OffsetDateTime.parse("2019-10-12T07:20:50.520Z"), + Arrays.asList("a", "b", "c"), null, "https://www.github.com", + mapOf("max", 15.0D, "min", 14.0D, "average", 14.3D), + new Encoded().setTimeInSeconds(Duration.parse("PT15M")) + .setTimeInSecondsFraction(Duration.parse("PT20M0.345S")) + .setDateTime(OffsetDateTime.parse("1966-03-03T00:06:56.52Z")) + .setDateTimeRfc7231(OffsetDateTime.parse("1994-11-06T08:49:37Z")) + .setUnixTimestamp(OffsetDateTime.parse("2023-08-30T02:35:03Z")) + .setBase64("aHR0cHM6Ly93d3cuZ2l0aHViLmNvbQ==".getBytes()) + .setBase64url("aHR0cHM6Ly93d3cuZ2l0aHViLmNvbQ==".getBytes()) + .setCommaDeliminatedArray(Arrays.asList("a", "b", "c")), + null)); + } + + // Use "Map.of" if available + @SuppressWarnings("unchecked") + private static Map mapOf(Object... inputs) { + Map map = new HashMap<>(); + for (int i = 0; i < inputs.length; i += 2) { + String key = (String) inputs[i]; + T value = (T) inputs[i + 1]; + map.put(key, value); + } + return map; + } +} diff --git a/packages/http-client-java/generator/http-client-generator-test/tsp/builtin.tsp b/packages/http-client-java/generator/http-client-generator-test/tsp/builtin.tsp index b386874aa6f..a7e2ae798b2 100644 --- a/packages/http-client-java/generator/http-client-generator-test/tsp/builtin.tsp +++ b/packages/http-client-java/generator/http-client-generator-test/tsp/builtin.tsp @@ -61,6 +61,9 @@ model Encoded { @encode("unknown-bytes") unknownBytes?: bytes; + + @encode(ArrayEncoding.commaDelimited) + commaDeliminatedArray?: string[]; } model Request { @@ -89,6 +92,6 @@ interface BuiltinOp { @body body: Builtin; }; - @convenientAPI(false) + @post write(@body body: Builtin): OkResponse; } diff --git a/packages/http-client-java/generator/http-client-generator-test/tsp/examples/BuiltinOp_Read.json b/packages/http-client-java/generator/http-client-generator-test/tsp/examples/BuiltinOp_Read.json index fcee79fbb95..3d2808c0b4d 100644 --- a/packages/http-client-java/generator/http-client-generator-test/tsp/examples/BuiltinOp_Read.json +++ b/packages/http-client-java/generator/http-client-generator-test/tsp/examples/BuiltinOp_Read.json @@ -24,13 +24,14 @@ "url": "https://www.github.com", "stringList": ["a", "b", "c"], "encoded": { - "timeInSeconds": "PT15M", - "timeInSecondsFraction": "PT20.345S", + "timeInSeconds": "900", + "timeInSecondsFraction": "1200.345", "dateTime": "1966-03-03T00:06:56.52Z", "dateTimeRfc7231": "Sun, 06 Nov 1994 08:49:37 GMT", "unixTimestamp": "1693362903", "base64": "aHR0cHM6Ly93d3cuZ2l0aHViLmNvbQ==", - "base64url": "aHR0cHM6Ly93d3cuZ2l0aHViLmNvbQ==" + "base64url": "aHR0cHM6Ly93d3cuZ2l0aHViLmNvbQ==", + "commaDeliminatedArray": "a,b,c" } } }, diff --git a/packages/http-client-java/generator/http-client-generator-test/tsp/examples/BuiltinOp_Write.json b/packages/http-client-java/generator/http-client-generator-test/tsp/examples/BuiltinOp_Write.json new file mode 100644 index 00000000000..11dbdce71e2 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-test/tsp/examples/BuiltinOp_Write.json @@ -0,0 +1,48 @@ +{ + "operationId": "BuiltinOp_Write", + "title": "BuiltinOp Write", + "parameters": { + "body": { + "boolean": true, + "string": "myString", + "safeint": 32, + "long": 64, + "float": 32.0, + "double": 64.0, + "duration": "PT15M", + "date": "2023-08-29", + "dateTime": "2019-10-12T07:20:50.520Z", + "nullableFloatDict": { + "max": 15.0, + "min": 14.0, + "average": 14.3 + }, + "url": "https://www.github.com", + "stringList": ["a", "b", "c"], + "encoded": { + "timeInSeconds": "900", + "timeInSecondsFraction": "1200.345", + "dateTime": "1966-03-03T00:06:56.52Z", + "dateTimeRfc7231": "Sun, 06 Nov 1994 08:49:37 GMT", + "unixTimestamp": "1693362903", + "base64": "aHR0cHM6Ly93d3cuZ2l0aHViLmNvbQ==", + "base64url": "aHR0cHM6Ly93d3cuZ2l0aHViLmNvbQ==", + "commaDeliminatedArray": "a,b,c" + } + } + }, + "responses": { + "200": { + }, + "default": { + "headers": { + "Content-Type": "application/json", + "x-ms-error-code": "Error Code" + }, + "body": { + "code": "Error Code", + "message": "Error Message" + } + } + } +} diff --git a/packages/http-client-java/package-lock.json b/packages/http-client-java/package-lock.json index 710a31da7e6..c60eeb53be9 100644 --- a/packages/http-client-java/package-lock.json +++ b/packages/http-client-java/package-lock.json @@ -19,12 +19,12 @@ "@azure-tools/typespec-azure-resource-manager": "0.63.0", "@azure-tools/typespec-azure-rulesets": "0.63.0", "@azure-tools/typespec-client-generator-core": "0.63.0", - "@microsoft/api-extractor": "^7.55.1", - "@microsoft/api-extractor-model": "^7.32.1", + "@microsoft/api-extractor": "^7.55.2", + "@microsoft/api-extractor-model": "^7.32.2", "@types/js-yaml": "~4.0.9", "@types/lodash": "~4.17.21", - "@types/node": "~24.10.1", - "@typespec/compiler": "1.7.0", + "@types/node": "~25.0.2", + "@typespec/compiler": "1.7.1", "@typespec/events": "0.77.0", "@typespec/http": "1.7.0", "@typespec/openapi": "1.7.0", @@ -34,12 +34,12 @@ "@typespec/streams": "0.77.0", "@typespec/versioning": "0.77.0", "@typespec/xml": "0.77.0", - "@vitest/coverage-v8": "^4.0.14", - "@vitest/ui": "^4.0.14", + "@vitest/coverage-v8": "^4.0.15", + "@vitest/ui": "^4.0.15", "c8": "~10.1.3", "rimraf": "~6.1.2", "typescript": "~5.9.3", - "vitest": "^4.0.14" + "vitest": "^4.0.15" }, "engines": { "node": ">=20.0.0" @@ -49,7 +49,7 @@ "@azure-tools/typespec-azure-core": ">=0.63.0 <1.0.0", "@azure-tools/typespec-azure-resource-manager": ">=0.63.0 <1.0.0", "@azure-tools/typespec-client-generator-core": ">=0.63.0 <1.0.0", - "@typespec/compiler": "^1.7.0", + "@typespec/compiler": "^1.7.1", "@typespec/events": ">=0.77.0 <1.0.0", "@typespec/http": "^1.7.0", "@typespec/openapi": "^1.7.0", @@ -141,6 +141,7 @@ "integrity": "sha512-FbEmpZSQENzBt/Y8qSF1b98T8CqT3bV7IRV8AGGm/73NQZiWQCm2LvQzR0/lbqGntS2EnSBrt394Kt69wM4ifA==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=20.0.0" }, @@ -156,6 +157,7 @@ "integrity": "sha512-QXHryXgV9Rh7lBW9hrehjdGVM/W8eBN6wnfRRZtAAyfTc1AkRGDKOMFBtRtfbEkQpur16mgQTd7EyH2tpqfuSw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "change-case": "~5.4.4", "pluralize": "^8.0.0" @@ -194,6 +196,7 @@ "integrity": "sha512-zpvFvjCjNW+GWzHBV7vJ2E1PKXrmyNqp7FQiYo/D7PJBVTXNtOyIKqqo043ktAaWihbr8cl5QguuNSoBAKL0+Q==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "change-case": "~5.4.4", "pluralize": "^8.0.0", @@ -565,9 +568,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", - "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.1.tgz", + "integrity": "sha512-HHB50pdsBX6k47S4u5g/CaLjqS3qwaOVE5ILsq64jyzgMhLuCuZ8rGzM9yhsAjfjkbgUPMzZEPa7DAp7yz6vuA==", "cpu": [ "ppc64" ], @@ -582,9 +585,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", - "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.1.tgz", + "integrity": "sha512-kFqa6/UcaTbGm/NncN9kzVOODjhZW8e+FRdSeypWe6j33gzclHtwlANs26JrupOntlcWmB0u8+8HZo8s7thHvg==", "cpu": [ "arm" ], @@ -599,9 +602,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", - "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.1.tgz", + "integrity": "sha512-45fuKmAJpxnQWixOGCrS+ro4Uvb4Re9+UTieUY2f8AEc+t7d4AaZ6eUJ3Hva7dtrxAAWHtlEFsXFMAgNnGU9uQ==", "cpu": [ "arm64" ], @@ -616,9 +619,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", - "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.1.tgz", + "integrity": "sha512-LBEpOz0BsgMEeHgenf5aqmn/lLNTFXVfoWMUox8CtWWYK9X4jmQzWjoGoNb8lmAYml/tQ/Ysvm8q7szu7BoxRQ==", "cpu": [ "x64" ], @@ -633,9 +636,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", - "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.1.tgz", + "integrity": "sha512-veg7fL8eMSCVKL7IW4pxb54QERtedFDfY/ASrumK/SbFsXnRazxY4YykN/THYqFnFwJ0aVjiUrVG2PwcdAEqQQ==", "cpu": [ "arm64" ], @@ -650,9 +653,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", - "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.1.tgz", + "integrity": "sha512-+3ELd+nTzhfWb07Vol7EZ+5PTbJ/u74nC6iv4/lwIU99Ip5uuY6QoIf0Hn4m2HoV0qcnRivN3KSqc+FyCHjoVQ==", "cpu": [ "x64" ], @@ -667,9 +670,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", - "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.1.tgz", + "integrity": "sha512-/8Rfgns4XD9XOSXlzUDepG8PX+AVWHliYlUkFI3K3GB6tqbdjYqdhcb4BKRd7C0BhZSoaCxhv8kTcBrcZWP+xg==", "cpu": [ "arm64" ], @@ -684,9 +687,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", - "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.1.tgz", + "integrity": "sha512-GITpD8dK9C+r+5yRT/UKVT36h/DQLOHdwGVwwoHidlnA168oD3uxA878XloXebK4Ul3gDBBIvEdL7go9gCUFzQ==", "cpu": [ "x64" ], @@ -701,9 +704,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", - "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.1.tgz", + "integrity": "sha512-ieMID0JRZY/ZeCrsFQ3Y3NlHNCqIhTprJfDgSB3/lv5jJZ8FX3hqPyXWhe+gvS5ARMBJ242PM+VNz/ctNj//eA==", "cpu": [ "arm" ], @@ -718,9 +721,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", - "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.1.tgz", + "integrity": "sha512-W9//kCrh/6in9rWIBdKaMtuTTzNj6jSeG/haWBADqLLa9P8O5YSRDzgD5y9QBok4AYlzS6ARHifAb75V6G670Q==", "cpu": [ "arm64" ], @@ -735,9 +738,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", - "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.1.tgz", + "integrity": "sha512-VIUV4z8GD8rtSVMfAj1aXFahsi/+tcoXXNYmXgzISL+KB381vbSTNdeZHHHIYqFyXcoEhu9n5cT+05tRv13rlw==", "cpu": [ "ia32" ], @@ -752,9 +755,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", - "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.1.tgz", + "integrity": "sha512-l4rfiiJRN7sTNI//ff65zJ9z8U+k6zcCg0LALU5iEWzY+a1mVZ8iWC1k5EsNKThZ7XCQ6YWtsZ8EWYm7r1UEsg==", "cpu": [ "loong64" ], @@ -769,9 +772,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", - "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.1.tgz", + "integrity": "sha512-U0bEuAOLvO/DWFdygTHWY8C067FXz+UbzKgxYhXC0fDieFa0kDIra1FAhsAARRJbvEyso8aAqvPdNxzWuStBnA==", "cpu": [ "mips64el" ], @@ -786,9 +789,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", - "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.1.tgz", + "integrity": "sha512-NzdQ/Xwu6vPSf/GkdmRNsOfIeSGnh7muundsWItmBsVpMoNPVpM61qNzAVY3pZ1glzzAxLR40UyYM23eaDDbYQ==", "cpu": [ "ppc64" ], @@ -803,9 +806,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", - "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.1.tgz", + "integrity": "sha512-7zlw8p3IApcsN7mFw0O1Z1PyEk6PlKMu18roImfl3iQHTnr/yAfYv6s4hXPidbDoI2Q0pW+5xeoM4eTCC0UdrQ==", "cpu": [ "riscv64" ], @@ -820,9 +823,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", - "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.1.tgz", + "integrity": "sha512-cGj5wli+G+nkVQdZo3+7FDKC25Uh4ZVwOAK6A06Hsvgr8WqBBuOy/1s+PUEd/6Je+vjfm6stX0kmib5b/O2Ykw==", "cpu": [ "s390x" ], @@ -837,9 +840,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", - "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.1.tgz", + "integrity": "sha512-z3H/HYI9MM0HTv3hQZ81f+AKb+yEoCRlUby1F80vbQ5XdzEMyY/9iNlAmhqiBKw4MJXwfgsh7ERGEOhrM1niMA==", "cpu": [ "x64" ], @@ -854,9 +857,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", - "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.1.tgz", + "integrity": "sha512-wzC24DxAvk8Em01YmVXyjl96Mr+ecTPyOuADAvjGg+fyBpGmxmcr2E5ttf7Im8D0sXZihpxzO1isus8MdjMCXQ==", "cpu": [ "arm64" ], @@ -871,9 +874,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", - "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.1.tgz", + "integrity": "sha512-1YQ8ybGi2yIXswu6eNzJsrYIGFpnlzEWRl6iR5gMgmsrR0FcNoV1m9k9sc3PuP5rUBLshOZylc9nqSgymI+TYg==", "cpu": [ "x64" ], @@ -888,9 +891,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", - "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.1.tgz", + "integrity": "sha512-5Z+DzLCrq5wmU7RDaMDe2DVXMRm2tTDvX2KU14JJVBN2CT/qov7XVix85QoJqHltpvAOZUAc3ndU56HSMWrv8g==", "cpu": [ "arm64" ], @@ -905,9 +908,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", - "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.1.tgz", + "integrity": "sha512-Q73ENzIdPF5jap4wqLtsfh8YbYSZ8Q0wnxplOlZUOyZy7B4ZKW8DXGWgTCZmF8VWD7Tciwv5F4NsRf6vYlZtqg==", "cpu": [ "x64" ], @@ -922,9 +925,9 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", - "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.1.tgz", + "integrity": "sha512-ajbHrGM/XiK+sXM0JzEbJAen+0E+JMQZ2l4RR4VFwvV9JEERx+oxtgkpoKv1SevhjavK2z2ReHk32pjzktWbGg==", "cpu": [ "arm64" ], @@ -939,9 +942,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", - "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.1.tgz", + "integrity": "sha512-IPUW+y4VIjuDVn+OMzHc5FV4GubIwPnsz6ubkvN8cuhEqH81NovB53IUlrlBkPMEPxvNnf79MGBoz8rZ2iW8HA==", "cpu": [ "x64" ], @@ -956,9 +959,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", - "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.1.tgz", + "integrity": "sha512-RIVRWiljWA6CdVu8zkWcRmGP7iRRIIwvhDKem8UMBjPql2TXM5PkDVvvrzMtj1V+WFPB4K7zkIGM7VzRtFkjdg==", "cpu": [ "arm64" ], @@ -973,9 +976,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", - "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.1.tgz", + "integrity": "sha512-2BR5M8CPbptC1AK5JbJT1fWrHLvejwZidKx3UMSF0ecHMa+smhi16drIrCEggkgviBwLYd5nwrFLSl5Kho96RQ==", "cpu": [ "ia32" ], @@ -990,9 +993,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", - "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.1.tgz", + "integrity": "sha512-d5X6RMYv6taIymSk8JBP+nxv8DQAMY6A51GPgusqLdK9wBz5wWIXy1KjTck6HnjE9hqJzJRdk+1p/t5soSbCtw==", "cpu": [ "x64" ], @@ -1604,19 +1607,19 @@ } }, "node_modules/@microsoft/api-extractor": { - "version": "7.55.1", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.55.1.tgz", - "integrity": "sha512-l8Z+8qrLkZFM3HM95Dbpqs6G39fpCa7O5p8A7AkA6hSevxkgwsOlLrEuPv0ADOyj5dI1Af5WVDiwpKG/ya5G3w==", + "version": "7.55.2", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.55.2.tgz", + "integrity": "sha512-1jlWO4qmgqYoVUcyh+oXYRztZde/pAi7cSVzBz/rc+S7CoVzDasy8QE13dx6sLG4VRo8SfkkLbFORR6tBw4uGQ==", "dev": true, "license": "MIT", "dependencies": { - "@microsoft/api-extractor-model": "7.32.1", + "@microsoft/api-extractor-model": "7.32.2", "@microsoft/tsdoc": "~0.16.0", "@microsoft/tsdoc-config": "~0.18.0", - "@rushstack/node-core-library": "5.19.0", + "@rushstack/node-core-library": "5.19.1", "@rushstack/rig-package": "0.6.0", - "@rushstack/terminal": "0.19.4", - "@rushstack/ts-command-line": "5.1.4", + "@rushstack/terminal": "0.19.5", + "@rushstack/ts-command-line": "5.1.5", "diff": "~8.0.2", "lodash": "~4.17.15", "minimatch": "10.0.3", @@ -1630,15 +1633,15 @@ } }, "node_modules/@microsoft/api-extractor-model": { - "version": "7.32.1", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.32.1.tgz", - "integrity": "sha512-u4yJytMYiUAnhcNQcZDTh/tVtlrzKlyKrQnLOV+4Qr/5gV+cpufWzCYAB1Q23URFqD6z2RoL2UYncM9xJVGNKA==", + "version": "7.32.2", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.32.2.tgz", + "integrity": "sha512-Ussc25rAalc+4JJs9HNQE7TuO9y6jpYQX9nWD1DhqUzYPBr3Lr7O9intf+ZY8kD5HnIqeIRJX7ccCT0QyBy2Ww==", "dev": true, "license": "MIT", "dependencies": { "@microsoft/tsdoc": "~0.16.0", "@microsoft/tsdoc-config": "~0.18.0", - "@rushstack/node-core-library": "5.19.0" + "@rushstack/node-core-library": "5.19.1" } }, "node_modules/@microsoft/api-extractor/node_modules/lru-cache": { @@ -1758,9 +1761,9 @@ "license": "MIT" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.3.tgz", - "integrity": "sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==", + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.5.tgz", + "integrity": "sha512-iDGS/h7D8t7tvZ1t6+WPK04KD0MwzLZrG0se1hzBjSi5fyxlsiggoJHwh18PCFNn7tG43OWb6pdZ6Y+rMlmyNQ==", "cpu": [ "arm" ], @@ -1772,9 +1775,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.3.tgz", - "integrity": "sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==", + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.5.tgz", + "integrity": "sha512-wrSAViWvZHBMMlWk6EJhvg8/rjxzyEhEdgfMMjREHEq11EtJ6IP6yfcCH57YAEca2Oe3FNCE9DSTgU70EIGmVw==", "cpu": [ "arm64" ], @@ -1786,9 +1789,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.3.tgz", - "integrity": "sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==", + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.5.tgz", + "integrity": "sha512-S87zZPBmRO6u1YXQLwpveZm4JfPpAa6oHBX7/ghSiGH3rz/KDgAu1rKdGutV+WUI6tKDMbaBJomhnT30Y2t4VQ==", "cpu": [ "arm64" ], @@ -1800,9 +1803,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.3.tgz", - "integrity": "sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==", + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.5.tgz", + "integrity": "sha512-YTbnsAaHo6VrAczISxgpTva8EkfQus0VPEVJCEaboHtZRIb6h6j0BNxRBOwnDciFTZLDPW5r+ZBmhL/+YpTZgA==", "cpu": [ "x64" ], @@ -1814,9 +1817,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.3.tgz", - "integrity": "sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==", + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.5.tgz", + "integrity": "sha512-1T8eY2J8rKJWzaznV7zedfdhD1BqVs1iqILhmHDq/bqCUZsrMt+j8VCTHhP0vdfbHK3e1IQ7VYx3jlKqwlf+vw==", "cpu": [ "arm64" ], @@ -1828,9 +1831,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.3.tgz", - "integrity": "sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==", + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.5.tgz", + "integrity": "sha512-sHTiuXyBJApxRn+VFMaw1U+Qsz4kcNlxQ742snICYPrY+DDL8/ZbaC4DVIB7vgZmp3jiDaKA0WpBdP0aqPJoBQ==", "cpu": [ "x64" ], @@ -1842,9 +1845,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.3.tgz", - "integrity": "sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==", + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.5.tgz", + "integrity": "sha512-dV3T9MyAf0w8zPVLVBptVlzaXxka6xg1f16VAQmjg+4KMSTWDvhimI/Y6mp8oHwNrmnmVl9XxJ/w/mO4uIQONA==", "cpu": [ "arm" ], @@ -1856,9 +1859,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.3.tgz", - "integrity": "sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==", + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.5.tgz", + "integrity": "sha512-wIGYC1x/hyjP+KAu9+ewDI+fi5XSNiUi9Bvg6KGAh2TsNMA3tSEs+Sh6jJ/r4BV/bx/CyWu2ue9kDnIdRyafcQ==", "cpu": [ "arm" ], @@ -1870,9 +1873,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.3.tgz", - "integrity": "sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==", + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.5.tgz", + "integrity": "sha512-Y+qVA0D9d0y2FRNiG9oM3Hut/DgODZbU9I8pLLPwAsU0tUKZ49cyV1tzmB/qRbSzGvY8lpgGkJuMyuhH7Ma+Vg==", "cpu": [ "arm64" ], @@ -1884,9 +1887,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.3.tgz", - "integrity": "sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==", + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.5.tgz", + "integrity": "sha512-juaC4bEgJsyFVfqhtGLz8mbopaWD+WeSOYr5E16y+1of6KQjc0BpwZLuxkClqY1i8sco+MdyoXPNiCkQou09+g==", "cpu": [ "arm64" ], @@ -1898,9 +1901,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.3.tgz", - "integrity": "sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==", + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.5.tgz", + "integrity": "sha512-rIEC0hZ17A42iXtHX+EPJVL/CakHo+tT7W0pbzdAGuWOt2jxDFh7A/lRhsNHBcqL4T36+UiAgwO8pbmn3dE8wA==", "cpu": [ "loong64" ], @@ -1912,9 +1915,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.3.tgz", - "integrity": "sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==", + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.5.tgz", + "integrity": "sha512-T7l409NhUE552RcAOcmJHj3xyZ2h7vMWzcwQI0hvn5tqHh3oSoclf9WgTl+0QqffWFG8MEVZZP1/OBglKZx52Q==", "cpu": [ "ppc64" ], @@ -1926,9 +1929,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.3.tgz", - "integrity": "sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==", + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.5.tgz", + "integrity": "sha512-7OK5/GhxbnrMcxIFoYfhV/TkknarkYC1hqUw1wU2xUN3TVRLNT5FmBv4KkheSG2xZ6IEbRAhTooTV2+R5Tk0lQ==", "cpu": [ "riscv64" ], @@ -1940,9 +1943,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.3.tgz", - "integrity": "sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==", + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.5.tgz", + "integrity": "sha512-GwuDBE/PsXaTa76lO5eLJTyr2k8QkPipAyOrs4V/KJufHCZBJ495VCGJol35grx9xryk4V+2zd3Ri+3v7NPh+w==", "cpu": [ "riscv64" ], @@ -1954,9 +1957,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.3.tgz", - "integrity": "sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==", + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.5.tgz", + "integrity": "sha512-IAE1Ziyr1qNfnmiQLHBURAD+eh/zH1pIeJjeShleII7Vj8kyEm2PF77o+lf3WTHDpNJcu4IXJxNO0Zluro8bOw==", "cpu": [ "s390x" ], @@ -1968,9 +1971,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.3.tgz", - "integrity": "sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==", + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.5.tgz", + "integrity": "sha512-Pg6E+oP7GvZ4XwgRJBuSXZjcqpIW3yCBhK4BcsANvb47qMvAbCjR6E+1a/U2WXz1JJxp9/4Dno3/iSJLcm5auw==", "cpu": [ "x64" ], @@ -1982,9 +1985,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.3.tgz", - "integrity": "sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==", + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.5.tgz", + "integrity": "sha512-txGtluxDKTxaMDzUduGP0wdfng24y1rygUMnmlUJ88fzCCULCLn7oE5kb2+tRB+MWq1QDZT6ObT5RrR8HFRKqg==", "cpu": [ "x64" ], @@ -1996,9 +1999,9 @@ ] }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.3.tgz", - "integrity": "sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==", + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.5.tgz", + "integrity": "sha512-3DFiLPnTxiOQV993fMc+KO8zXHTcIjgaInrqlG8zDp1TlhYl6WgrOHuJkJQ6M8zHEcntSJsUp1XFZSY8C1DYbg==", "cpu": [ "arm64" ], @@ -2010,9 +2013,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.3.tgz", - "integrity": "sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==", + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.5.tgz", + "integrity": "sha512-nggc/wPpNTgjGg75hu+Q/3i32R00Lq1B6N1DO7MCU340MRKL3WZJMjA9U4K4gzy3dkZPXm9E1Nc81FItBVGRlA==", "cpu": [ "arm64" ], @@ -2024,9 +2027,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.3.tgz", - "integrity": "sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==", + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.5.tgz", + "integrity": "sha512-U/54pTbdQpPLBdEzCT6NBCFAfSZMvmjr0twhnD9f4EIvlm9wy3jjQ38yQj1AGznrNO65EWQMgm/QUjuIVrYF9w==", "cpu": [ "ia32" ], @@ -2038,9 +2041,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.3.tgz", - "integrity": "sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==", + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.5.tgz", + "integrity": "sha512-2NqKgZSuLH9SXBBV2dWNRCZmocgSOx8OJSdpRaEcRlIfX8YrKxUT6z0F1NpvDVhOsl190UFTRh2F2WDWWCYp3A==", "cpu": [ "x64" ], @@ -2052,9 +2055,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.3.tgz", - "integrity": "sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==", + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.5.tgz", + "integrity": "sha512-JRpZUhCfhZ4keB5v0fe02gQJy05GqboPOaxvjugW04RLSYYoB/9t2lx2u/tMs/Na/1NXfY8QYjgRljRpN+MjTQ==", "cpu": [ "x64" ], @@ -2066,9 +2069,9 @@ ] }, "node_modules/@rushstack/node-core-library": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.19.0.tgz", - "integrity": "sha512-BxAopbeWBvNJ6VGiUL+5lbJXywTdsnMeOS8j57Cn/xY10r6sV/gbsTlfYKjzVCUBZATX2eRzJHSMCchsMTGN6A==", + "version": "5.19.1", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.19.1.tgz", + "integrity": "sha512-ESpb2Tajlatgbmzzukg6zyAhH+sICqJR2CNXNhXcEbz6UGCQfrKCtkxOpJTftWc8RGouroHG0Nud1SJAszvpmA==", "dev": true, "license": "MIT", "dependencies": { @@ -2163,13 +2166,13 @@ } }, "node_modules/@rushstack/terminal": { - "version": "0.19.4", - "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.19.4.tgz", - "integrity": "sha512-f4XQk02CrKfrMgyOfhYd3qWI944dLC21S4I/LUhrlAP23GTMDNG6EK5effQtFkISwUKCgD9vMBrJZaPSUquxWQ==", + "version": "0.19.5", + "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.19.5.tgz", + "integrity": "sha512-6k5tpdB88G0K7QrH/3yfKO84HK9ggftfUZ51p7fePyCE7+RLLHkWZbID9OFWbXuna+eeCFE7AkKnRMHMxNbz7Q==", "dev": true, "license": "MIT", "dependencies": { - "@rushstack/node-core-library": "5.19.0", + "@rushstack/node-core-library": "5.19.1", "@rushstack/problem-matcher": "0.1.1", "supports-color": "~8.1.1" }, @@ -2183,13 +2186,13 @@ } }, "node_modules/@rushstack/ts-command-line": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-5.1.4.tgz", - "integrity": "sha512-H0I6VdJ6sOUbktDFpP2VW5N29w8v4hRoNZOQz02vtEi6ZTYL1Ju8u+TcFiFawUDrUsx/5MQTUhd79uwZZVwVlA==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-5.1.5.tgz", + "integrity": "sha512-YmrFTFUdHXblYSa+Xc9OO9FsL/XFcckZy0ycQ6q7VSBsVs5P0uD9vcges5Q9vctGlVdu27w+Ct6IuJ458V0cTQ==", "dev": true, "license": "MIT", "dependencies": { - "@rushstack/terminal": "0.19.4", + "@rushstack/terminal": "0.19.5", "@types/argparse": "1.0.38", "argparse": "~1.0.9", "string-argv": "~0.3.1" @@ -2219,9 +2222,9 @@ } }, "node_modules/@standard-schema/spec": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", - "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", + "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" }, @@ -2277,21 +2280,23 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", - "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", + "version": "25.0.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.2.tgz", + "integrity": "sha512-gWEkeiyYE4vqjON/+Obqcoeffmk0NF15WSBwSs7zwVA2bAbTaE0SJ7P0WNGoJn8uE7fiaV5a7dKYIJriEqOrmA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "undici-types": "~7.16.0" } }, "node_modules/@typespec/compiler": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-1.7.0.tgz", - "integrity": "sha512-KE2t5I7u/33M/nsIxdng06FUPrqaGSbMsSEsv51eMwYnj3v1+Z3qTTX/dxHAXRXHcfadNlX/NtyAKju+pkMTFQ==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-1.7.1.tgz", + "integrity": "sha512-sb3MEsKjFlAx8ZG484exs5Ec+JwmYf2anJqLjMusrV3rRMUhv3fbEulk9MD+l4eOkBS46VMNGqRu0wTn8suVVA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "~7.27.1", "@inquirer/prompts": "^8.0.1", @@ -2469,6 +2474,7 @@ "integrity": "sha512-NbOzi7axEt/xGgXaLjcGGV2HjQKNFjbvsQpCeDA6loUghZDK5+5ik/jwMumeUDunoBsAKF78ZxVF5qhQh56dGA==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=20.0.0" }, @@ -2482,6 +2488,7 @@ "integrity": "sha512-4cGkcMiob3bedWbFkRcq614TDH7WPEI3YMgrg44mBarj903arpEniAESIhNUbLQzQFFc5rOJagexQDl4agVDyA==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=20.0.0" }, @@ -2501,6 +2508,7 @@ "integrity": "sha512-tEAIgGnjLvOjbGAoCfkBudvpe/tXaOXkzy5nVFXs4921/jAaMTwzcJIt0bTXZpp5cExdlL7w9ZrnehARHiposQ==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=20.0.0" }, @@ -2515,6 +2523,7 @@ "integrity": "sha512-DEUMD9zYqUVUhKCGktV7Z+sFkzj+bcSpJRhEXxOrJxupWM4I3N4deMop+ulxezxlLxIRUz7ELc+6WucYXgOnAA==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=20.0.0" }, @@ -2553,6 +2562,16 @@ "node": ">=16.0.0" } }, + "node_modules/@typespec/spec-coverage-sdk/node_modules/@types/node": { + "version": "24.10.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.4.tgz", + "integrity": "sha512-vnDVpYPMzs4wunl27jHrfmwojOGKya0xyM3sH+UE5iv5uPS6vX7UIoh6m+vQc5LGBq52HBKPIn/zcSZVzeDEZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" + } + }, "node_modules/@typespec/spector": { "version": "0.1.0-alpha.21", "resolved": "https://registry.npmjs.org/@typespec/spector/-/spector-0.1.0-alpha.21.tgz", @@ -2739,6 +2758,7 @@ "integrity": "sha512-rVML/sPNj+MomKXftko/eUNM5OhHlIevoit3Dbtaf1aWS5pcJ5jKX05Prz53VIyeUP7ra5ocmPE/iIEPb8ZbCA==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=20.0.0" }, @@ -2755,6 +2775,7 @@ "integrity": "sha512-qqfJW4n19Jgi5FxQhsEgoIc5zD9o47AAoZxLKUX91z6aB/YWrLSTrrrIAvhNCESXuB89zlJPwlZ/j4YmpxZ/jw==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=20.0.0" }, @@ -2783,6 +2804,7 @@ "integrity": "sha512-eAInPZYPkxpBUS8IKQfNZ5eZsLfkWqEX0d6YM/AfooGYbxcKdHQBfYOWBvRC4NkKEMub4ROaD5GcPLYTyWQIWw==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=20.0.0" }, @@ -2796,6 +2818,7 @@ "integrity": "sha512-DNVAOMaRUPGpLEsqf3sn7UAWuAE1rs8Jf1FIAU7DF/sVmzeXs4OBanxSSsVmbcdfPRHPbjPuRnW6e+QS2Sjk3Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=20.0.0" }, @@ -2804,14 +2827,14 @@ } }, "node_modules/@vitest/coverage-v8": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.0.14.tgz", - "integrity": "sha512-EYHLqN/BY6b47qHH7gtMxAg++saoGmsjWmAq9MlXxAz4M0NcHh9iOyKhBZyU4yxZqOd8Xnqp80/5saeitz4Cng==", + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.0.15.tgz", + "integrity": "sha512-FUJ+1RkpTFW7rQITdgTi93qOCWJobWhBirEPCeXh2SW2wsTlFxy51apDz5gzG+ZEYt/THvWeNmhdAoS9DTwpCw==", "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^1.0.2", - "@vitest/utils": "4.0.14", + "@vitest/utils": "4.0.15", "ast-v8-to-istanbul": "^0.3.8", "istanbul-lib-coverage": "^3.2.2", "istanbul-lib-report": "^3.0.1", @@ -2826,8 +2849,8 @@ "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@vitest/browser": "4.0.14", - "vitest": "4.0.14" + "@vitest/browser": "4.0.15", + "vitest": "4.0.15" }, "peerDependenciesMeta": { "@vitest/browser": { @@ -2836,16 +2859,16 @@ } }, "node_modules/@vitest/expect": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.14.tgz", - "integrity": "sha512-RHk63V3zvRiYOWAV0rGEBRO820ce17hz7cI2kDmEdfQsBjT2luEKB5tCOc91u1oSQoUOZkSv3ZyzkdkSLD7lKw==", + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.15.tgz", + "integrity": "sha512-Gfyva9/GxPAWXIWjyGDli9O+waHDC0Q0jaLdFP1qPAUUfo1FEXPXUfUkp3eZA0sSq340vPycSyOlYUeM15Ft1w==", "dev": true, "license": "MIT", "dependencies": { "@standard-schema/spec": "^1.0.0", "@types/chai": "^5.2.2", - "@vitest/spy": "4.0.14", - "@vitest/utils": "4.0.14", + "@vitest/spy": "4.0.15", + "@vitest/utils": "4.0.15", "chai": "^6.2.1", "tinyrainbow": "^3.0.3" }, @@ -2854,13 +2877,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.14.tgz", - "integrity": "sha512-RzS5NujlCzeRPF1MK7MXLiEFpkIXeMdQ+rN3Kk3tDI9j0mtbr7Nmuq67tpkOJQpgyClbOltCXMjLZicJHsH5Cg==", + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.15.tgz", + "integrity": "sha512-CZ28GLfOEIFkvCFngN8Sfx5h+Se0zN+h4B7yOsPVCcgtiO7t5jt9xQh2E1UkFep+eb9fjyMfuC5gBypwb07fvQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "4.0.14", + "@vitest/spy": "4.0.15", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, @@ -2881,9 +2904,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.14.tgz", - "integrity": "sha512-SOYPgujB6TITcJxgd3wmsLl+wZv+fy3av2PpiPpsWPZ6J1ySUYfScfpIt2Yv56ShJXR2MOA6q2KjKHN4EpdyRQ==", + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.15.tgz", + "integrity": "sha512-SWdqR8vEv83WtZcrfLNqlqeQXlQLh2iilO1Wk1gv4eiHKjEzvgHb2OVc3mIPyhZE6F+CtfYjNlDJwP5MN6Km7A==", "dev": true, "license": "MIT", "dependencies": { @@ -2894,13 +2917,13 @@ } }, "node_modules/@vitest/runner": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.14.tgz", - "integrity": "sha512-BsAIk3FAqxICqREbX8SetIteT8PiaUL/tgJjmhxJhCsigmzzH8xeadtp7LRnTpCVzvf0ib9BgAfKJHuhNllKLw==", + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.15.tgz", + "integrity": "sha512-+A+yMY8dGixUhHmNdPUxOh0la6uVzun86vAbuMT3hIDxMrAOmn5ILBHm8ajrqHE0t8R9T1dGnde1A5DTnmi3qw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "4.0.14", + "@vitest/utils": "4.0.15", "pathe": "^2.0.3" }, "funding": { @@ -2908,13 +2931,13 @@ } }, "node_modules/@vitest/snapshot": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.14.tgz", - "integrity": "sha512-aQVBfT1PMzDSA16Y3Fp45a0q8nKexx6N5Amw3MX55BeTeZpoC08fGqEZqVmPcqN0ueZsuUQ9rriPMhZ3Mu19Ag==", + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.15.tgz", + "integrity": "sha512-A7Ob8EdFZJIBjLjeO0DZF4lqR6U7Ydi5/5LIZ0xcI+23lYlsYJAfGn8PrIWTYdZQRNnSRlzhg0zyGu37mVdy5g==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.0.14", + "@vitest/pretty-format": "4.0.15", "magic-string": "^0.30.21", "pathe": "^2.0.3" }, @@ -2923,9 +2946,9 @@ } }, "node_modules/@vitest/spy": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.14.tgz", - "integrity": "sha512-JmAZT1UtZooO0tpY3GRyiC/8W7dCs05UOq9rfsUUgEZEdq+DuHLmWhPsrTt0TiW7WYeL/hXpaE07AZ2RCk44hg==", + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.15.tgz", + "integrity": "sha512-+EIjOJmnY6mIfdXtE/bnozKEvTC4Uczg19yeZ2vtCz5Yyb0QQ31QWVQ8hswJ3Ysx/K2EqaNsVanjr//2+P3FHw==", "dev": true, "license": "MIT", "funding": { @@ -2933,13 +2956,14 @@ } }, "node_modules/@vitest/ui": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-4.0.14.tgz", - "integrity": "sha512-fvDz8o7SQpFLoSBo6Cudv+fE85/fPCkwTnLAN85M+Jv7k59w2mSIjT9Q5px7XwGrmYqqKBEYxh/09IBGd1E7AQ==", + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-4.0.15.tgz", + "integrity": "sha512-sxSyJMaKp45zI0u+lHrPuZM1ZJQ8FaVD35k+UxVrha1yyvQ+TZuUYllUixwvQXlB7ixoDc7skf3lQPopZIvaQw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "@vitest/utils": "4.0.14", + "@vitest/utils": "4.0.15", "fflate": "^0.8.2", "flatted": "^3.3.3", "pathe": "^2.0.3", @@ -2951,17 +2975,17 @@ "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "vitest": "4.0.14" + "vitest": "4.0.15" } }, "node_modules/@vitest/utils": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.14.tgz", - "integrity": "sha512-hLqXZKAWNg8pI+SQXyXxWCTOpA3MvsqcbVeNgSi8x/CSN2wi26dSzn1wrOhmCmFjEvN9p8/kLFRHa6PI8jHazw==", + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.15.tgz", + "integrity": "sha512-HXjPW2w5dxhTD0dLwtYHDnelK3j8sR8cWIaLxr22evTyY6q8pRCjZSmhRWVjBaOVXChQd6AwMzi9pucorXCPZA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.0.14", + "@vitest/pretty-format": "4.0.15", "tinyrainbow": "^3.0.3" }, "funding": { @@ -3787,9 +3811,9 @@ } }, "node_modules/esbuild": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", - "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.1.tgz", + "integrity": "sha512-yY35KZckJJuVVPXpvjgxiCuVEJT67F6zDeVTv4rizyPrfGBUpZQsvmxnN+C371c2esD/hNMjj4tpBhuueLN7aA==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -3800,32 +3824,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.12", - "@esbuild/android-arm": "0.25.12", - "@esbuild/android-arm64": "0.25.12", - "@esbuild/android-x64": "0.25.12", - "@esbuild/darwin-arm64": "0.25.12", - "@esbuild/darwin-x64": "0.25.12", - "@esbuild/freebsd-arm64": "0.25.12", - "@esbuild/freebsd-x64": "0.25.12", - "@esbuild/linux-arm": "0.25.12", - "@esbuild/linux-arm64": "0.25.12", - "@esbuild/linux-ia32": "0.25.12", - "@esbuild/linux-loong64": "0.25.12", - "@esbuild/linux-mips64el": "0.25.12", - "@esbuild/linux-ppc64": "0.25.12", - "@esbuild/linux-riscv64": "0.25.12", - "@esbuild/linux-s390x": "0.25.12", - "@esbuild/linux-x64": "0.25.12", - "@esbuild/netbsd-arm64": "0.25.12", - "@esbuild/netbsd-x64": "0.25.12", - "@esbuild/openbsd-arm64": "0.25.12", - "@esbuild/openbsd-x64": "0.25.12", - "@esbuild/openharmony-arm64": "0.25.12", - "@esbuild/sunos-x64": "0.25.12", - "@esbuild/win32-arm64": "0.25.12", - "@esbuild/win32-ia32": "0.25.12", - "@esbuild/win32-x64": "0.25.12" + "@esbuild/aix-ppc64": "0.27.1", + "@esbuild/android-arm": "0.27.1", + "@esbuild/android-arm64": "0.27.1", + "@esbuild/android-x64": "0.27.1", + "@esbuild/darwin-arm64": "0.27.1", + "@esbuild/darwin-x64": "0.27.1", + "@esbuild/freebsd-arm64": "0.27.1", + "@esbuild/freebsd-x64": "0.27.1", + "@esbuild/linux-arm": "0.27.1", + "@esbuild/linux-arm64": "0.27.1", + "@esbuild/linux-ia32": "0.27.1", + "@esbuild/linux-loong64": "0.27.1", + "@esbuild/linux-mips64el": "0.27.1", + "@esbuild/linux-ppc64": "0.27.1", + "@esbuild/linux-riscv64": "0.27.1", + "@esbuild/linux-s390x": "0.27.1", + "@esbuild/linux-x64": "0.27.1", + "@esbuild/netbsd-arm64": "0.27.1", + "@esbuild/netbsd-x64": "0.27.1", + "@esbuild/openbsd-arm64": "0.27.1", + "@esbuild/openbsd-x64": "0.27.1", + "@esbuild/openharmony-arm64": "0.27.1", + "@esbuild/sunos-x64": "0.27.1", + "@esbuild/win32-arm64": "0.27.1", + "@esbuild/win32-ia32": "0.27.1", + "@esbuild/win32-x64": "0.27.1" } }, "node_modules/escalade": { @@ -3875,9 +3899,9 @@ } }, "node_modules/expect-type": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz", - "integrity": "sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==", + "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": { @@ -6030,9 +6054,9 @@ } }, "node_modules/rollup": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.3.tgz", - "integrity": "sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==", + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.5.tgz", + "integrity": "sha512-iTNAbFSlRpcHeeWu73ywU/8KuU/LZmNCSxp6fjQkJBD3ivUb8tpDrXhIxEzA05HlYMEwmtaUnb3RP+YNv162OQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6046,28 +6070,28 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.53.3", - "@rollup/rollup-android-arm64": "4.53.3", - "@rollup/rollup-darwin-arm64": "4.53.3", - "@rollup/rollup-darwin-x64": "4.53.3", - "@rollup/rollup-freebsd-arm64": "4.53.3", - "@rollup/rollup-freebsd-x64": "4.53.3", - "@rollup/rollup-linux-arm-gnueabihf": "4.53.3", - "@rollup/rollup-linux-arm-musleabihf": "4.53.3", - "@rollup/rollup-linux-arm64-gnu": "4.53.3", - "@rollup/rollup-linux-arm64-musl": "4.53.3", - "@rollup/rollup-linux-loong64-gnu": "4.53.3", - "@rollup/rollup-linux-ppc64-gnu": "4.53.3", - "@rollup/rollup-linux-riscv64-gnu": "4.53.3", - "@rollup/rollup-linux-riscv64-musl": "4.53.3", - "@rollup/rollup-linux-s390x-gnu": "4.53.3", - "@rollup/rollup-linux-x64-gnu": "4.53.3", - "@rollup/rollup-linux-x64-musl": "4.53.3", - "@rollup/rollup-openharmony-arm64": "4.53.3", - "@rollup/rollup-win32-arm64-msvc": "4.53.3", - "@rollup/rollup-win32-ia32-msvc": "4.53.3", - "@rollup/rollup-win32-x64-gnu": "4.53.3", - "@rollup/rollup-win32-x64-msvc": "4.53.3", + "@rollup/rollup-android-arm-eabi": "4.53.5", + "@rollup/rollup-android-arm64": "4.53.5", + "@rollup/rollup-darwin-arm64": "4.53.5", + "@rollup/rollup-darwin-x64": "4.53.5", + "@rollup/rollup-freebsd-arm64": "4.53.5", + "@rollup/rollup-freebsd-x64": "4.53.5", + "@rollup/rollup-linux-arm-gnueabihf": "4.53.5", + "@rollup/rollup-linux-arm-musleabihf": "4.53.5", + "@rollup/rollup-linux-arm64-gnu": "4.53.5", + "@rollup/rollup-linux-arm64-musl": "4.53.5", + "@rollup/rollup-linux-loong64-gnu": "4.53.5", + "@rollup/rollup-linux-ppc64-gnu": "4.53.5", + "@rollup/rollup-linux-riscv64-gnu": "4.53.5", + "@rollup/rollup-linux-riscv64-musl": "4.53.5", + "@rollup/rollup-linux-s390x-gnu": "4.53.5", + "@rollup/rollup-linux-x64-gnu": "4.53.5", + "@rollup/rollup-linux-x64-musl": "4.53.5", + "@rollup/rollup-openharmony-arm64": "4.53.5", + "@rollup/rollup-win32-arm64-msvc": "4.53.5", + "@rollup/rollup-win32-ia32-msvc": "4.53.5", + "@rollup/rollup-win32-x64-gnu": "4.53.5", + "@rollup/rollup-win32-x64-msvc": "4.53.5", "fsevents": "~2.3.2" } }, @@ -6766,11 +6790,14 @@ "license": "MIT" }, "node_modules/tinyexec": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", - "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", + "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=18" + } }, "node_modules/tinyglobby": { "version": "0.2.15", @@ -6813,6 +6840,7 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -6998,13 +7026,14 @@ } }, "node_modules/vite": { - "version": "7.2.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.4.tgz", - "integrity": "sha512-NL8jTlbo0Tn4dUEXEsUg8KeyG/Lkmc4Fnzb8JXN/Ykm9G4HNImjtABMJgkQoVjOBN/j2WAwDTRytdqJbZsah7w==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.0.tgz", + "integrity": "sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "esbuild": "^0.25.0", + "esbuild": "^0.27.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", @@ -7096,6 +7125,7 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -7104,19 +7134,20 @@ } }, "node_modules/vitest": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.14.tgz", - "integrity": "sha512-d9B2J9Cm9dN9+6nxMnnNJKJCtcyKfnHj15N6YNJfaFHRLua/d3sRKU9RuKmO9mB0XdFtUizlxfz/VPbd3OxGhw==", + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.15.tgz", + "integrity": "sha512-n1RxDp8UJm6N0IbJLQo+yzLZ2sQCDyl1o0LeugbPWf8+8Fttp29GghsQBjYJVmWq3gBFfe9Hs1spR44vovn2wA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "@vitest/expect": "4.0.14", - "@vitest/mocker": "4.0.14", - "@vitest/pretty-format": "4.0.14", - "@vitest/runner": "4.0.14", - "@vitest/snapshot": "4.0.14", - "@vitest/spy": "4.0.14", - "@vitest/utils": "4.0.14", + "@vitest/expect": "4.0.15", + "@vitest/mocker": "4.0.15", + "@vitest/pretty-format": "4.0.15", + "@vitest/runner": "4.0.15", + "@vitest/snapshot": "4.0.15", + "@vitest/spy": "4.0.15", + "@vitest/utils": "4.0.15", "es-module-lexer": "^1.7.0", "expect-type": "^1.2.2", "magic-string": "^0.30.21", @@ -7125,7 +7156,7 @@ "picomatch": "^4.0.3", "std-env": "^3.10.0", "tinybench": "^2.9.0", - "tinyexec": "^0.3.2", + "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.0.3", "vite": "^6.0.0 || ^7.0.0", @@ -7144,10 +7175,10 @@ "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", - "@vitest/browser-playwright": "4.0.14", - "@vitest/browser-preview": "4.0.14", - "@vitest/browser-webdriverio": "4.0.14", - "@vitest/ui": "4.0.14", + "@vitest/browser-playwright": "4.0.15", + "@vitest/browser-preview": "4.0.15", + "@vitest/browser-webdriverio": "4.0.15", + "@vitest/ui": "4.0.15", "happy-dom": "*", "jsdom": "*" }, diff --git a/packages/http-client-java/package.json b/packages/http-client-java/package.json index 061c137213c..f5e9237a270 100644 --- a/packages/http-client-java/package.json +++ b/packages/http-client-java/package.json @@ -53,7 +53,7 @@ "@azure-tools/typespec-azure-core": ">=0.63.0 <1.0.0", "@azure-tools/typespec-azure-resource-manager": ">=0.63.0 <1.0.0", "@azure-tools/typespec-client-generator-core": ">=0.63.0 <1.0.0", - "@typespec/compiler": "^1.7.0", + "@typespec/compiler": "^1.7.1", "@typespec/events": ">=0.77.0 <1.0.0", "@typespec/http": "^1.7.0", "@typespec/openapi": "^1.7.0", @@ -74,12 +74,12 @@ "@azure-tools/typespec-azure-resource-manager": "0.63.0", "@azure-tools/typespec-azure-rulesets": "0.63.0", "@azure-tools/typespec-client-generator-core": "0.63.0", - "@microsoft/api-extractor": "^7.55.1", - "@microsoft/api-extractor-model": "^7.32.1", + "@microsoft/api-extractor": "^7.55.2", + "@microsoft/api-extractor-model": "^7.32.2", "@types/js-yaml": "~4.0.9", "@types/lodash": "~4.17.21", - "@types/node": "~24.10.1", - "@typespec/compiler": "1.7.0", + "@types/node": "~25.0.2", + "@typespec/compiler": "1.7.1", "@typespec/events": "0.77.0", "@typespec/http": "1.7.0", "@typespec/openapi": "1.7.0", @@ -89,11 +89,11 @@ "@typespec/streams": "0.77.0", "@typespec/versioning": "0.77.0", "@typespec/xml": "0.77.0", - "@vitest/coverage-v8": "^4.0.14", - "@vitest/ui": "^4.0.14", + "@vitest/coverage-v8": "^4.0.15", + "@vitest/ui": "^4.0.15", "c8": "~10.1.3", "rimraf": "~6.1.2", "typescript": "~5.9.3", - "vitest": "^4.0.14" + "vitest": "^4.0.15" } }