diff --git a/playground/TypeScriptAppHost/apphost.ts b/playground/TypeScriptAppHost/apphost.ts index b169215d431..b7fa2419bda 100644 --- a/playground/TypeScriptAppHost/apphost.ts +++ b/playground/TypeScriptAppHost/apphost.ts @@ -10,7 +10,7 @@ console.log("Aspire TypeScript AppHost starting...\n"); // Create the distributed application builder const builder = await createBuilder(); -var ec = await builder.executionContext.get(); +const ec = await builder.executionContext.get(); const isPublishMode = await ec.isPublishMode.get(); console.log(`isRunMode: ${await ec.isRunMode.get()}`); @@ -19,20 +19,18 @@ console.log(`isPublishMode: ${isPublishMode}`); // Add Docker Compose environment for publishing await builder.addDockerComposeEnvironment("compose"); -var dir = await builder.appHostDirectory.get(); +const dir = await builder.appHostDirectory.get(); console.log(`AppHost directory: ${dir}`); // Add PostgreSQL server and database -const postgres = await builder.addPostgres("postgres"); -const db = await postgres.addDatabase("db"); -const localCancellation = new AbortController(); -const dbUriExpression = await db.uriExpression.get(); -const _dbUri = await dbUriExpression.getValue(localCancellation.signal); +const postgres = builder.addPostgres("postgres"); +const db = postgres.addDatabase("db"); console.log("Added PostgreSQL server with database 'db'"); // Add Express API that connects to PostgreSQL (uses npm run dev with tsx) -const api = await builder +// No await needed — withReference/waitFor accept promises directly +const api = builder .addNodeApp("api", "./express-api", "src/server.ts") .withRunScript("dev") .withHttpEndpoint({ env: "PORT" }) @@ -41,26 +39,26 @@ const api = await builder console.log("Added Express API with reference to PostgreSQL database"); -// Also keep Redis as an example of another service with persistent lifetime -const cache = await builder +// Redis +builder .addRedis("cache") .withLifetime(ContainerLifetime.Persistent); console.log("Added Redis cache"); -// Add Vite frontend that connects to the API using the unified reference API -await builder +// Vite frontend — withReference/waitFor accept the un-awaited 'api' promise +builder .addViteApp("frontend", "./vite-frontend") .withReference(api) .waitFor(api) .withEnvironment("CUSTOM_ENV", "value") .withEnvironmentCallback(async (ctx: EnvironmentCallbackContext) => { - // Custom environment callback logic + // await needed here because getEndpoint returns a value we use var ep = await api.getEndpoint("http"); - await ctx.environmentVariables.set("API_ENDPOINT", refExpr`${ep}`); }); console.log("Added Vite frontend with reference to API"); +// build() flushes all pending promises before running await builder.build().run(); diff --git a/playground/TypeScriptAppHost/vite-frontend/package-lock.json b/playground/TypeScriptAppHost/vite-frontend/package-lock.json index 6ad728ba0ea..d356be30a7f 100644 --- a/playground/TypeScriptAppHost/vite-frontend/package-lock.json +++ b/playground/TypeScriptAppHost/vite-frontend/package-lock.json @@ -17,6 +17,9 @@ "@vitejs/plugin-react": "^6.0.0", "typescript": "^5.7.0", "vite": "^8.0.0" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" } }, "node_modules/@emnapi/core": { @@ -369,7 +372,6 @@ "integrity": "sha512-3MbSL37jEchWZz2p2mjntRZtPt837ij10ApxKfgmXCTuHWagYg7iA5bqPw6C8BMPfwidlvfPI/fxOc42HLhcyg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "csstype": "^3.2.2" } @@ -753,7 +755,6 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -795,7 +796,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz", "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -914,7 +914,6 @@ "integrity": "sha512-fPGaRNj9Zytaf8LEiBhY7Z6ijnFKdzU/+mL8EFBaKr7Vw1/FWcTBAMW0wLPJAGMPX38ZPVCVgLceWiEqeoqL2Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@oxc-project/runtime": "0.115.0", "lightningcss": "^1.32.0", diff --git a/src/Aspire.Hosting.CodeGeneration.TypeScript/AtsTypeScriptCodeGenerator.cs b/src/Aspire.Hosting.CodeGeneration.TypeScript/AtsTypeScriptCodeGenerator.cs index 2b71319141c..251c9f4350a 100644 --- a/src/Aspire.Hosting.CodeGeneration.TypeScript/AtsTypeScriptCodeGenerator.cs +++ b/src/Aspire.Hosting.CodeGeneration.TypeScript/AtsTypeScriptCodeGenerator.cs @@ -267,6 +267,23 @@ private static string GetDtoInterfaceName(string typeId) /// For interface handle types, generated APIs accept any handle-bearing wrapper instance. /// For cancellation tokens, generated APIs accept either an AbortSignal or a transport-safe CancellationToken. /// + /// + /// Handle types are widened to accept Awaitable<T> so callers can pass un-awaited + /// fluent chains directly. Examples: + /// + /// // Input: RedisResource handle type + /// // Output: "Awaitable<RedisResource>" + /// + /// // Input: Union of string | RedisResource + /// // Output: "string | Awaitable<RedisResource>" + /// + /// // Input: CancellationToken type + /// // Output: "AbortSignal | CancellationToken" + /// + /// // Input: plain string type + /// // Output: "string" + /// + /// private string MapInputTypeToTypeScript(AtsTypeRef? typeRef) { if (typeRef?.Category == AtsTypeCategory.Union) @@ -278,10 +295,17 @@ private string MapInputTypeToTypeScript(AtsTypeRef? typeRef) { if (TryMapInterfaceInputTypeToTypeScript(typeRef!) is { } interfaceInputType) { - return interfaceInputType; + return $"Awaitable<{interfaceInputType}>"; } - return GetHandleReferenceInterfaceName(); + var handleName = GetHandleReferenceInterfaceName(); + return $"Awaitable<{handleName}>"; + } + + if (IsHandleType(typeRef) && _wrapperClassNames.TryGetValue(typeRef!.TypeId, out var className)) + { + var ifaceName = GetInterfaceName(className); + return $"Awaitable<{ifaceName}>"; } if (IsCancellationTokenType(typeRef)) @@ -299,11 +323,42 @@ private string MapInputUnionTypeToTypeScript(AtsTypeRef typeRef) throw new InvalidOperationException("Union input types must define at least one member type."); } - var memberTypes = typeRef.UnionTypes - .Select(MapInputTypeToTypeScript) - .Distinct(); + // Build union structurally: each member is mapped individually. + // Handle types become Awaitable, non-handle types pass through as-is. + var nonHandleTypes = new List(); + var handleTypeNames = new List(); - return string.Join(" | ", memberTypes); + foreach (var memberRef in typeRef.UnionTypes) + { + if (IsWidenedHandleType(memberRef)) + { + // Get the base type name without Awaitable wrapper for combining + var baseName = IsInterfaceHandleType(memberRef) && TryMapInterfaceInputTypeToTypeScript(memberRef) is { } expanded + ? expanded + : MapTypeRefToTypeScript(memberRef); + nonHandleTypes.Add(baseName); + handleTypeNames.Add(baseName); + } + else + { + nonHandleTypes.Add(MapInputTypeToTypeScript(memberRef)); + } + } + + var allBaseTypes = nonHandleTypes + .SelectMany(t => t.Split(" | ", StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries)) + .Distinct(StringComparer.Ordinal) + .ToList(); + + if (handleTypeNames.Count > 0) + { + var handleUnion = string.Join(" | ", handleTypeNames + .SelectMany(t => t.Split(" | ", StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries)) + .Distinct(StringComparer.Ordinal)); + return string.Join(" | ", allBaseTypes) + $" | Awaitable<{handleUnion}>"; + } + + return string.Join(" | ", allBaseTypes); } /// @@ -316,13 +371,6 @@ private string MapParameterToTypeScript(AtsParameterInfo param) return GenerateCallbackTypeSignature(param.CallbackParameters, param.CallbackReturnType); } - if (param.Type?.Category == AtsTypeCategory.Union && param.Type.UnionTypes is { Count: > 0 }) - { - return string.Join(" | ", param.Type.UnionTypes - .SelectMany(t => MapInputTypeToTypeScript(t).Split(" | ", StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries)) - .Distinct(StringComparer.Ordinal)); - } - return MapInputTypeToTypeScript(param.Type); } @@ -424,9 +472,14 @@ private static bool IsInterfaceHandleType(AtsTypeRef? typeRef) private static bool IsCancellationTokenType(AtsTypeRef? typeRef) => typeRef?.TypeId == AtsConstants.CancellationToken; private static string GetRpcArgumentValueExpression(string parameterName, AtsTypeRef? typeRef) - => IsCancellationTokenType(typeRef) - ? $"CancellationToken.fromValue({parameterName})" - : parameterName; + { + if (IsCancellationTokenType(typeRef)) + { + return $"CancellationToken.fromValue({parameterName})"; + } + + return parameterName; + } private static string GetRpcArgumentEntry(string parameterName, AtsTypeRef? typeRef) { @@ -525,7 +578,8 @@ private string GenerateAspireSdk(AtsContext context) CapabilityError, registerCallback, wrapIfHandle, - registerHandleWrapper + registerHandleWrapper, + isPromiseLike } from './transport.js'; import type { AspireClientRpc } from './transport.js'; @@ -538,6 +592,8 @@ private string GenerateAspireSdk(AtsContext context) AspireDict, AspireList } from './base.js'; + + import type { Awaitable } from './base.js'; """); WriteLine(); @@ -1346,6 +1402,35 @@ private void GenerateBuilderClass(BuilderModel builder) GenerateThenableClass(builder); } + /// + /// Generates both an internal async method and a public fluent method for a builder capability. + /// + /// + /// Produces a pair of methods: a private _*Internal method that performs the RPC call, + /// and a public method that wraps it in a thenable promise class for fluent chaining. + /// Generated TypeScript (example for withEnvironment on RedisResource): + /// + /// /** @internal */ + /// private async _withEnvironmentInternal(name: string, value: string): Promise<RedisResource> { + /// const rpcArgs: Record<string, unknown> = { builder: this._handle, name, value }; + /// const result = await this._client.invokeCapability<RedisResourceHandle>('...', rpcArgs); + /// return new RedisResourceImpl(result, this._client); + /// } + /// + /// withEnvironment(name: string, value: string): RedisResourcePromise { + /// return new RedisResourcePromiseImpl( + /// this._withEnvironmentInternal(name, value), this._client); + /// } + /// + /// // For build(), the public wrapper flushes pending promises first: + /// build(): DistributedApplicationPromise { + /// const flushAndBuild = async () => { await this._client.flushPendingPromises(); return this._buildInternal(); }; + /// return new DistributedApplicationPromiseImpl(flushAndBuild(), this._client); + /// } + /// + /// When a parameter is a handle type, promise resolution is emitted before the RPC args + /// (e.g. db = isPromiseLike(db) ? await db : db;). + /// private void GenerateBuilderMethod(BuilderModel builder, AtsCapabilityInfo capability) { var methodName = capability.MethodName; @@ -1419,7 +1504,7 @@ private void GenerateBuilderMethod(BuilderModel builder, AtsCapabilityInfo capab // Extract optional params from options object foreach (var param in optionalParams) { - WriteLine($" const {param.Name} = options?.{param.Name};"); + WriteLine($" {(IsWidenedHandleType(param.Type) ? "let" : "const")} {param.Name} = options?.{param.Name};"); } // Handle callback registration if any @@ -1429,6 +1514,9 @@ private void GenerateBuilderMethod(BuilderModel builder, AtsCapabilityInfo capab GenerateCallbackRegistration(callbackParam); } + // Resolve any promise-like handle parameters before building rpcArgs + GeneratePromiseResolution(capability.Parameters); + // Build args object with conditional inclusion GenerateArgsObjectWithConditionals(targetParamName, requiredParams, optionalParams); @@ -1466,6 +1554,9 @@ private void GenerateBuilderMethod(BuilderModel builder, AtsCapabilityInfo capab GenerateCallbackRegistration(callbackParam); } + // Resolve any promise-like handle parameters before building rpcArgs + GeneratePromiseResolution(capability.Parameters); + // Build args object with conditional inclusion GenerateArgsObjectWithConditionals(targetParamName, requiredParams, optionalParams); @@ -1500,18 +1591,151 @@ private void GenerateBuilderMethod(BuilderModel builder, AtsCapabilityInfo capab // Extract optional params from options object and forward to internal method foreach (var param in optionalParams) { - WriteLine($" const {param.Name} = options?.{param.Name};"); + WriteLine($" {(IsWidenedHandleType(param.Type) ? "let" : "const")} {param.Name} = options?.{param.Name};"); } // Forward all params to internal method var allParamNames = capability.Parameters.Select(p => p.Name); - Write($" return new {promiseImplementationClass}(this.{internalMethodName}("); - Write(string.Join(", ", allParamNames)); - WriteLine("));"); + var internalCall = $"this.{internalMethodName}({string.Join(", ", allParamNames)})"; + + // For build(), flush pending promises before invoking the internal method. + // This must happen in the public wrapper (not _buildInternal) to avoid deadlock: + // the PromiseImpl constructor tracks the build promise, and if _buildInternal + // awaited flushPendingPromises, the flush would re-await the tracked build promise. + if (string.Equals(capability.MethodName, "build", StringComparison.OrdinalIgnoreCase)) + { + WriteLine($" const flushAndBuild = async () => {{ await this._client.flushPendingPromises(); return {internalCall}; }};"); + WriteLine($" return new {promiseImplementationClass}(flushAndBuild(), this._client);"); + } + else + { + WriteLine($" return new {promiseImplementationClass}({internalCall}, this._client);"); + } WriteLine(" }"); WriteLine(); } + /// + /// Generates promise resolution code for handle-type parameters that may be PromiseLike. + /// + /// + /// For each parameter whose type is a handle (or union containing handles), emits a line + /// that awaits it if it is a PromiseLike. Non-handle and callback parameters are skipped. + /// + /// // For a handle-type param 'db': + /// db = isPromiseLike(db) ? await db : db; + /// + /// // For a non-handle param 'name' (string): nothing emitted + /// + /// + private void GeneratePromiseResolution(IReadOnlyList parameters, string indent = " ") + { + foreach (var param in parameters) + { + if (param.IsCallback) + { + continue; + } + + if (IsWidenedHandleType(param.Type)) + { + WriteLine($"{indent}{param.Name} = isPromiseLike({param.Name}) ? await {param.Name} : {param.Name};"); + } + } + } + + /// + /// Generates promise resolution for a single named parameter. + /// + /// + /// Used for property setters where only the value parameter needs resolution. + /// + /// // For a handle-type 'value' parameter: + /// value = isPromiseLike(value) ? await value : value; + /// + /// + private void GeneratePromiseResolutionForParam(string paramName, AtsTypeRef? paramType, string indent = " ") + { + if (IsWidenedHandleType(paramType)) + { + WriteLine($"{indent}{paramName} = isPromiseLike({paramName}) ? await {paramName} : {paramName};"); + } + } + + /// + /// Checks if a type was widened to accept Awaitable<T> in input position. + /// Must match the widening logic in MapInputTypeToTypeScript exactly. + /// + private bool IsWidenedHandleType(AtsTypeRef? typeRef) + { + if (typeRef == null) + { + return false; + } + + // Interface handles are always widened + if (IsInterfaceHandleType(typeRef)) + { + return true; + } + + // Concrete handles are only widened if they have a wrapper class name + // (excludes special types like ReferenceExpression that bypass widening) + if (IsHandleType(typeRef) && _wrapperClassNames.ContainsKey(typeRef.TypeId)) + { + return true; + } + + if (typeRef.Category == AtsTypeCategory.Union && typeRef.UnionTypes is { Count: > 0 }) + { + return typeRef.UnionTypes.Any(IsWidenedHandleType); + } + + return false; + } + + /// + /// Generates promise resolution and args object construction in one step. + /// This is the unified helper used by builder methods, type class methods, context methods, and wrapper methods. + /// + /// + /// Combines with RPC args construction. + /// Required parameters are inlined in the object literal; optional parameters + /// are added conditionally. + /// + /// // Example output for a method with required 'name', handle-type 'db', and optional 'timeout': + /// db = isPromiseLike(db) ? await db : db; + /// const rpcArgs: Record<string, unknown> = { builder: this._handle, name, db }; + /// if (timeout !== undefined) rpcArgs.timeout = timeout; + /// + /// + private void GenerateResolveAndBuildArgs( + string targetParamName, + IReadOnlyList allParams, + List requiredParams, + List optionalParams, + string indent = " ") + { + // Resolve any promise-like handle parameters + GeneratePromiseResolution(allParams, indent); + + // Build the required args inline + var requiredArgs = new List { $"{targetParamName}: this._handle" }; + foreach (var param in requiredParams) + { + requiredArgs.Add(GetRpcArgumentEntry(param)); + } + + WriteLine($"{indent}const rpcArgs: Record = {{ {string.Join(", ", requiredArgs)} }};"); + + // Conditionally add optional params + foreach (var param in optionalParams) + { + var rpcExpression = GetRpcArgumentExpression(param); + WriteLine($"{indent}if ({param.Name} !== undefined) rpcArgs.{param.Name} = {rpcExpression};"); + } + } + /// /// Generates an args object with conditional inclusion of optional parameters. /// @@ -1537,6 +1761,28 @@ private void GenerateArgsObjectWithConditionals( } } + /// + /// Generates a thenable wrapper class for a builder that enables fluent chaining. + /// + /// + /// The generated class implements both PromiseLike (via then()) and + /// all fluent methods of the builder, forwarding each call through the inner promise. + /// Generated TypeScript (example for RedisResource): + /// + /// class RedisResourcePromiseImpl implements RedisResourcePromise { + /// constructor(private _promise: Promise<RedisResource>, private _client: AspireClientRpc) { + /// _client.trackPromise(_promise); + /// } + /// then<T1, T2>(...): PromiseLike<T1 | T2> { + /// return this._promise.then(...); + /// } + /// withEnvironment(name: string, value: string): RedisResourcePromise { + /// return new RedisResourcePromiseImpl( + /// this._promise.then(obj => obj.withEnvironment(name, value)), this._client); + /// } + /// } + /// + /// private void GenerateThenableClass(BuilderModel builder) { var capabilities = builder.Capabilities.Where(c => @@ -1557,7 +1803,9 @@ private void GenerateThenableClass(BuilderModel builder) WriteLine($" * await builder.addSomething().withX().withY();"); WriteLine($" */"); WriteLine($"class {promiseImplementationClass} implements {promiseClass} {{"); - WriteLine($" constructor(private _promise: Promise<{builder.BuilderClassName}>) {{}}"); + WriteLine($" constructor(private _promise: Promise<{builder.BuilderClassName}>, private _client: AspireClientRpc) {{"); + WriteLine($" _client.trackPromise(_promise);"); + WriteLine($" }}"); WriteLine(); // Generate then() for PromiseLike interface @@ -1646,7 +1894,7 @@ private void GenerateThenableClass(BuilderModel builder) // Forward to the public method on the underlying object, wrapping result in promise class Write($" return new {methodPromiseImplementationClass}(this._promise.then(obj => obj.{methodName}("); Write(argsString); - WriteLine(")));"); + WriteLine($")), this._client);"); WriteLine(" }"); } WriteLine(); @@ -1675,6 +1923,25 @@ private void GenerateAspireClient(List entryPoints) } } + /// + /// Generates an exported entry-point function that creates a builder via an async IIFE. + /// + /// + /// Entry-point functions are standalone exports (not class methods). They wrap the + /// RPC call in an async IIFE and return a thenable promise class for immediate chaining. + /// Generated TypeScript (example for createBuilder): + /// + /// export function createBuilder(client: AspireClientRpc): DistributedApplicationBuilderPromise { + /// const promise = (async () => { + /// const rpcArgs: Record<string, unknown> = { }; + /// const handle = await client.invokeCapability<DistributedApplicationBuilderHandle>( + /// 'aspire.capability.createBuilder', rpcArgs); + /// return new DistributedApplicationBuilderImpl(handle, client); + /// })(); + /// return new DistributedApplicationBuilderPromiseImpl(promise, client); + /// } + /// + /// private void GenerateEntryPointFunction(AtsCapabilityInfo capability) { var methodName = capability.MethodName; @@ -1711,19 +1978,31 @@ private void GenerateEntryPointFunction(AtsCapabilityInfo capability) Write($"export function {methodName}("); Write(paramsString); WriteLine($"): {returnPromiseWrapper} {{"); + // Use async IIFE to resolve promise-like handle params before RPC + WriteLine($" const promise = (async () => {{"); + // Resolve promise-like handle params + foreach (var param in capability.Parameters) + { + if (!param.IsCallback && IsWidenedHandleType(param.Type)) + { + WriteLine($" {param.Name} = isPromiseLike({param.Name}) ? await {param.Name} : {param.Name};"); + } + } var requiredArgs = requiredParams .Select(param => GetRpcArgumentEntry(param, useRegisteredCallback: false)) .ToList(); - WriteLine($" const rpcArgs: Record = {{ {string.Join(", ", requiredArgs)} }};"); + WriteLine($" const rpcArgs: Record = {{ {string.Join(", ", requiredArgs)} }};"); foreach (var param in optionalParams) { - WriteLine($" if ({param.Name} !== undefined) rpcArgs.{param.Name} = {GetRpcArgumentExpression(param, useRegisteredCallback: false)};"); + WriteLine($" if ({param.Name} !== undefined) rpcArgs.{param.Name} = {GetRpcArgumentExpression(param, useRegisteredCallback: false)};"); } - WriteLine($" const promise = client.invokeCapability<{handleType}>("); - WriteLine($" '{capability.CapabilityId}',"); - WriteLine(" rpcArgs"); - WriteLine($" ).then(handle => new {returnWrapperImplementationClass}(handle, client));"); - WriteLine($" return new {returnPromiseImplementationClass}(promise);"); + WriteLine($" const handle = await client.invokeCapability<{handleType}>("); + WriteLine($" '{capability.CapabilityId}',"); + WriteLine(" rpcArgs"); + WriteLine(" );"); + WriteLine($" return new {returnWrapperImplementationClass}(handle, client);"); + WriteLine($" }})();"); + WriteLine($" return new {returnPromiseImplementationClass}(promise, client);"); WriteLine("}"); } else @@ -1736,6 +2015,14 @@ private void GenerateEntryPointFunction(AtsCapabilityInfo capability) Write($"export async function {methodName}("); Write(paramsString); WriteLine($"): Promise<{returnType}> {{"); + // Resolve promise-like handle params + foreach (var param in capability.Parameters) + { + if (!param.IsCallback && IsWidenedHandleType(param.Type)) + { + WriteLine($" {param.Name} = isPromiseLike({param.Name}) ? await {param.Name} : {param.Name};"); + } + } var requiredArgs = requiredParams .Select(param => GetRpcArgumentEntry(param, useRegisteredCallback: false)) .ToList(); @@ -1986,7 +2273,7 @@ export async function createBuilder(options?: CreateBuilderOptions): Promise + /// + /// Scalar properties produce an object with async get/set functions. + /// Dictionary and list properties delegate to AspireDict/AspireList helpers. + /// Wrapper-typed properties delegate to . + /// Generated TypeScript (example for a string property connectionString): + /// + /// connectionString = { + /// get: async (): Promise<string> => { + /// return await this._client.invokeCapability<string>( + /// 'aspire.resource.connectionString.get', { context: this._handle }); + /// }, + /// set: async (value: string | PromiseLike<string>): Promise<void> => { + /// value = isPromiseLike(value) ? await value : value; + /// await this._client.invokeCapability<void>( + /// 'aspire.resource.connectionString.set', { context: this._handle, value }); + /// } + /// }; + /// + /// private void GeneratePropertyLikeObject(string propertyName, AtsCapabilityInfo? getter, AtsCapabilityInfo? setter) { // Determine the return type from getter @@ -2280,6 +2586,7 @@ private void GeneratePropertyLikeObject(string propertyName, AtsCapabilityInfo? { var valueType = MapInputTypeToTypeScript(valueParam.Type); WriteLine($" set: async (value: {valueType}): Promise => {{"); + GeneratePromiseResolutionForParam("value", valueParam.Type, " "); WriteLine($" await this._client.invokeCapability("); WriteLine($" '{setter.CapabilityId}',"); WriteLine($" {{ context: this._handle, {GetRpcArgumentEntry("value", valueParam.Type)} }}"); @@ -2295,6 +2602,26 @@ private void GeneratePropertyLikeObject(string propertyName, AtsCapabilityInfo? /// /// Generates a property-like object that returns a wrapper class. /// + /// + /// Similar to but the getter returns a wrapper + /// class instance instead of a scalar value. The RPC result is a handle that gets + /// wrapped in the implementation class. + /// + /// // Example: a property 'primaryEndpoint' returning EndpointReference + /// primaryEndpoint = { + /// get: async (): Promise<EndpointReference> => { + /// const handle = await this._client.invokeCapability<EndpointReferenceHandle>( + /// 'aspire.resource.primaryEndpoint.get', { context: this._handle }); + /// return new EndpointReferenceImpl(handle, this._client); + /// }, + /// set: async (value: EndpointReference | PromiseLike<EndpointReference>): Promise<void> => { + /// value = isPromiseLike(value) ? await value : value; + /// await this._client.invokeCapability<void>( + /// 'aspire.resource.primaryEndpoint.set', { context: this._handle, value }); + /// } + /// }; + /// + /// private void GenerateWrapperPropertyObject(string propertyName, AtsCapabilityInfo getter, AtsCapabilityInfo? setter, string wrapperClassName) { var handleType = GetHandleTypeName(getter.ReturnType!.TypeId); @@ -2321,6 +2648,7 @@ private void GenerateWrapperPropertyObject(string propertyName, AtsCapabilityInf { var valueType = MapInputTypeToTypeScript(valueParam.Type); WriteLine($" set: async (value: {valueType}): Promise => {{"); + GeneratePromiseResolutionForParam("value", valueParam.Type, " "); WriteLine($" await this._client.invokeCapability("); WriteLine($" '{setter.CapabilityId}',"); WriteLine($" {{ context: this._handle, {GetRpcArgumentEntry("value", valueParam.Type)} }}"); @@ -2435,6 +2763,19 @@ private void GenerateListProperty(string propertyName, AtsCapabilityInfo getter) /// /// Generates a context instance method (from ExposeMethods=true). /// + /// + /// Context methods are async methods on wrapper classes that pass this._handle + /// as the context argument. They use for parameter + /// handling. + /// Generated TypeScript (example for getEndpoint on PostgresResource): + /// + /// async getEndpoint(name: string): Promise<EndpointReference> { + /// const rpcArgs: Record<string, unknown> = { context: this._handle, name }; + /// return await this._client.invokeCapability<EndpointReference>( + /// 'aspire.resource.getEndpoint', rpcArgs); + /// } + /// + /// private void GenerateContextMethod(AtsCapabilityInfo method) { // Use OwningTypeName if available to extract method name, otherwise parse from MethodName @@ -2480,20 +2821,11 @@ private void GenerateContextMethod(AtsCapabilityInfo method) // Extract optional params from options object foreach (var param in optionalParams) { - WriteLine($" const {param.Name} = options?.{param.Name};"); + WriteLine($" {(IsWidenedHandleType(param.Type) ? "let" : "const")} {param.Name} = options?.{param.Name};"); } - // Build args object with conditional inclusion - var requiredArgs = new List { $"{targetParamName}: this._handle" }; - foreach (var param in requiredParams) - { - requiredArgs.Add(GetRpcArgumentEntry(param.Name, param.Type)); - } - WriteLine($" const rpcArgs: Record = {{ {string.Join(", ", requiredArgs)} }};"); - foreach (var param in optionalParams) - { - WriteLine($" if ({param.Name} !== undefined) rpcArgs.{param.Name} = {GetRpcArgumentValueExpression(param.Name, param.Type)};"); - } + // Resolve promise-like params and build args + GenerateResolveAndBuildArgs(targetParamName, userParams, requiredParams, optionalParams); if (returnType == "void") { @@ -2524,6 +2856,18 @@ private void GenerateContextMethod(AtsCapabilityInfo method) /// /// Generates a method on a wrapper class. /// + /// + /// Similar to but designed for wrapper classes + /// that expose RPC methods without the thenable/fluent pattern. + /// Generated TypeScript (example for getExpression on EndpointReference): + /// + /// async getExpression(name: string): Promise<string> { + /// const rpcArgs: Record<string, unknown> = { builder: this._handle, name }; + /// return await this._client.invokeCapability<string>( + /// 'aspire.endpoint.getExpression', rpcArgs); + /// } + /// + /// private void GenerateWrapperMethod(AtsCapabilityInfo capability) { var methodName = GetTypeScriptMethodName(capability.MethodName); @@ -2566,20 +2910,11 @@ private void GenerateWrapperMethod(AtsCapabilityInfo capability) // Extract optional params from options object foreach (var param in optionalParams) { - WriteLine($" const {param.Name} = options?.{param.Name};"); + WriteLine($" {(IsWidenedHandleType(param.Type) ? "let" : "const")} {param.Name} = options?.{param.Name};"); } - // Build args object with conditional inclusion - var requiredArgs = new List { $"{firstParamName}: this._handle" }; - foreach (var param in requiredParams) - { - requiredArgs.Add(GetRpcArgumentEntry(param.Name, param.Type)); - } - WriteLine($" const rpcArgs: Record = {{ {string.Join(", ", requiredArgs)} }};"); - foreach (var param in optionalParams) - { - WriteLine($" if ({param.Name} !== undefined) rpcArgs.{param.Name} = {GetRpcArgumentValueExpression(param.Name, param.Type)};"); - } + // Resolve promise-like params and build args + GenerateResolveAndBuildArgs(firstParamName, userParams, requiredParams, optionalParams); if (returnType == "void") { @@ -2600,6 +2935,26 @@ private void GenerateWrapperMethod(AtsCapabilityInfo capability) /// Generates a method on a type class using the thenable pattern. /// Generates both an internal async method and a public fluent method. /// + /// + /// Follows the same internal/public pair pattern as + /// but operates on type classes (resources exposed via ExposeMethods). + /// Generated TypeScript (example for withEnvironment on PostgresResource): + /// + /// /** @internal */ + /// async _withEnvironmentInternal(name: string, value: string): Promise<PostgresResource> { + /// const rpcArgs: Record<string, unknown> = { context: this._handle, name, value }; + /// await this._client.invokeCapability<void>('...', rpcArgs); + /// return this; + /// } + /// + /// withEnvironment(name: string, value: string): PostgresResourcePromise { + /// return new PostgresResourcePromiseImpl( + /// this._withEnvironmentInternal(name, value), this._client); + /// } + /// + /// For methods returning a different wrapper type, the internal method returns that + /// wrapper and the public method returns its promise class. + /// private void GenerateTypeClassMethod(BuilderModel model, AtsCapabilityInfo capability) { var className = DeriveClassName(model.TypeId); @@ -2675,6 +3030,9 @@ private void GenerateTypeClassMethod(BuilderModel model, AtsCapabilityInfo capab GenerateCallbackRegistration(callbackParam); } + // Resolve any promise-like handle parameters + GeneratePromiseResolution(userParams); + // Build args with conditional inclusion GenerateArgsObjectWithConditionals(targetParamName, requiredParams, optionalParams); @@ -2694,12 +3052,21 @@ private void GenerateTypeClassMethod(BuilderModel model, AtsCapabilityInfo capab // Extract optional params and forward foreach (var param in optionalParams) { - WriteLine($" const {param.Name} = options?.{param.Name};"); + WriteLine($" {(IsWidenedHandleType(param.Type) ? "let" : "const")} {param.Name} = options?.{param.Name};"); } - Write($" return new {returnPromiseImplementationClass}(this.{internalMethodName}("); - Write(string.Join(", ", userParams.Select(p => p.Name))); - WriteLine("));"); + var internalCall = $"this.{internalMethodName}({string.Join(", ", userParams.Select(p => p.Name))})"; + + // For build(), flush pending promises before invoking the internal method to avoid deadlock + if (string.Equals(methodName, "build", StringComparison.OrdinalIgnoreCase)) + { + WriteLine($" const flushAndBuild = async () => {{ await this._client.flushPendingPromises(); return {internalCall}; }};"); + WriteLine($" return new {returnPromiseImplementationClass}(flushAndBuild(), this._client);"); + } + else + { + WriteLine($" return new {returnPromiseImplementationClass}({internalCall}, this._client);"); + } WriteLine(" }"); } else if (isVoid) @@ -2718,6 +3085,9 @@ private void GenerateTypeClassMethod(BuilderModel model, AtsCapabilityInfo capab GenerateCallbackRegistration(callbackParam); } + // Resolve any promise-like handle parameters + GeneratePromiseResolution(userParams); + // Build args with conditional inclusion GenerateArgsObjectWithConditionals(targetParamName, requiredParams, optionalParams); @@ -2737,12 +3107,12 @@ private void GenerateTypeClassMethod(BuilderModel model, AtsCapabilityInfo capab // Extract optional params and forward foreach (var param in optionalParams) { - WriteLine($" const {param.Name} = options?.{param.Name};"); + WriteLine($" {(IsWidenedHandleType(param.Type) ? "let" : "const")} {param.Name} = options?.{param.Name};"); } Write($" return new {promiseImplementationClass}(this.{internalMethodName}("); Write(string.Join(", ", userParams.Select(p => p.Name))); - WriteLine("));"); + WriteLine("), this._client);"); WriteLine(" }"); } else @@ -2755,7 +3125,7 @@ private void GenerateTypeClassMethod(BuilderModel model, AtsCapabilityInfo capab // Extract optional params from options object foreach (var param in optionalParams) { - WriteLine($" const {param.Name} = options?.{param.Name};"); + WriteLine($" {(IsWidenedHandleType(param.Type) ? "let" : "const")} {param.Name} = options?.{param.Name};"); } // Handle callback registration if any @@ -2765,6 +3135,9 @@ private void GenerateTypeClassMethod(BuilderModel model, AtsCapabilityInfo capab GenerateCallbackRegistration(callbackParam); } + // Resolve any promise-like handle parameters + GeneratePromiseResolution(userParams); + // Build args with conditional inclusion GenerateArgsObjectWithConditionals(targetParamName, requiredParams, optionalParams); @@ -2791,6 +3164,25 @@ private void GenerateTypeClassMethod(BuilderModel model, AtsCapabilityInfo capab /// /// Generates a thenable wrapper class for a type class. /// + /// + /// Identical in structure to but generated for + /// type classes (resources with ExposeMethods) rather than builder classes. + /// Generated TypeScript (example for PostgresResource): + /// + /// class PostgresResourcePromiseImpl implements PostgresResourcePromise { + /// constructor(private _promise: Promise<PostgresResource>, private _client: AspireClientRpc) { + /// _client.trackPromise(_promise); + /// } + /// then<T1, T2>(...): PromiseLike<T1 | T2> { + /// return this._promise.then(...); + /// } + /// withEnvironment(name: string, value: string): PostgresResourcePromise { + /// return new PostgresResourcePromiseImpl( + /// this._promise.then(obj => obj.withEnvironment(name, value)), this._client); + /// } + /// } + /// + /// private void GenerateTypeClassThenableWrapper(BuilderModel model, List methods) { var className = DeriveClassName(model.TypeId); @@ -2801,7 +3193,9 @@ private void GenerateTypeClassThenableWrapper(BuilderModel model, List) {{}}"); + WriteLine($" constructor(private _promise: Promise<{className}>, private _client: AspireClientRpc) {{"); + WriteLine($" _client.trackPromise(_promise);"); + WriteLine($" }}"); WriteLine(); // Generate then() for PromiseLike interface @@ -2871,7 +3265,7 @@ private void GenerateTypeClassThenableWrapper(BuilderModel model, List obj.{methodName}("); Write(argsString); - WriteLine(")));"); + WriteLine($")), this._client);"); WriteLine(" }"); } else if (isVoid) @@ -2882,7 +3276,7 @@ private void GenerateTypeClassThenableWrapper(BuilderModel model, List obj.{methodName}("); Write(argsString); - WriteLine(")));"); + WriteLine($")), this._client);"); WriteLine(" }"); } else diff --git a/src/Aspire.Hosting.CodeGeneration.TypeScript/Resources/base.ts b/src/Aspire.Hosting.CodeGeneration.TypeScript/Resources/base.ts index 8d7033494fb..219eee04175 100644 --- a/src/Aspire.Hosting.CodeGeneration.TypeScript/Resources/base.ts +++ b/src/Aspire.Hosting.CodeGeneration.TypeScript/Resources/base.ts @@ -7,6 +7,12 @@ export { Handle, AspireClient, CapabilityError, CancellationToken, registerCallb export type { MarshalledHandle, AtsError, AtsErrorDetails, CallbackFunction } from './transport.js'; export { AtsErrorCodes, isMarshalledHandle, isAtsError, wrapIfHandle } from './transport.js'; +/** + * Utility type for parameters that accept either a resolved value or a promise of that value. + * Used by generated APIs to allow passing un-awaited resource builders directly. + */ +export type Awaitable = T | PromiseLike; + // ============================================================================ // Reference Expression // ============================================================================ diff --git a/src/Aspire.Hosting.CodeGeneration.TypeScript/Resources/transport.ts b/src/Aspire.Hosting.CodeGeneration.TypeScript/Resources/transport.ts index 01233e6f1d6..19eeb0a2e3b 100644 --- a/src/Aspire.Hosting.CodeGeneration.TypeScript/Resources/transport.ts +++ b/src/Aspire.Hosting.CodeGeneration.TypeScript/Resources/transport.ts @@ -14,6 +14,8 @@ export interface AspireClientRpc { readonly connected: boolean; invokeCapability(capabilityId: string, args?: Record): Promise; cancelToken(cancellationId: string): Promise; + trackPromise(promise: Promise): void; + flushPendingPromises(): Promise; } /** @@ -383,7 +385,7 @@ export class AppHostUsageError extends Error { } } -function isPromiseLike(value: unknown): value is PromiseLike { +export function isPromiseLike(value: unknown): value is PromiseLike { return ( value !== null && (typeof value === 'object' || typeof value === 'function') && @@ -753,9 +755,26 @@ export class AspireClient implements AspireClientRpc { private _pendingCalls = 0; private _connectPromise: Promise | null = null; private _disconnectNotified = false; + private _pendingPromises: Set> = new Set(); constructor(private socketPath: string) { } + trackPromise(promise: Promise): void { + this._pendingPromises.add(promise); + promise.finally(() => this._pendingPromises.delete(promise)).catch(() => {}); + } + + async flushPendingPromises(): Promise { + if (this._pendingPromises.size > 0) { + console.warn(`Flushing ${this._pendingPromises.size} pending promise(s). Consider awaiting fluent calls to avoid implicit flushing.`); + } + // Loop because awaiting existing promises may cause new ones to be enqueued. + // Awaiting a tracked promise also removes it from the set via the .finally() handler. + while (this._pendingPromises.size > 0) { + await Promise.all(this._pendingPromises); + } + } + /** * Register a callback to be called when the connection is lost */ diff --git a/tests/Aspire.Cli.EndToEnd.Tests/TypeScriptCodegenValidationTests.cs b/tests/Aspire.Cli.EndToEnd.Tests/TypeScriptCodegenValidationTests.cs index ef8ff4add5f..4785a067d35 100644 --- a/tests/Aspire.Cli.EndToEnd.Tests/TypeScriptCodegenValidationTests.cs +++ b/tests/Aspire.Cli.EndToEnd.Tests/TypeScriptCodegenValidationTests.cs @@ -97,7 +97,7 @@ public async Task RestoreGeneratesSdkFiles() } [Fact] - public async Task RunWithMissingAwaitShowsHelpfulError() + public async Task UnAwaitedChainsCompileWithAutoResolvePromises() { using var workspace = TemporaryWorkspace.Create(output); @@ -153,13 +153,12 @@ await builder.addContainer("consumer", "nginx") File.WriteAllText(appHostPath, newContent); - await auto.TypeAsync("aspire run"); + // Validate that un-awaited chains compile without type errors. + // withReference(db) should accept PromiseLike from the un-awaited addDatabase(). + await auto.TypeAsync("npx tsc --noEmit"); await auto.EnterAsync(); - await auto.WaitUntilAsync(s => - s.ContainsText("❌ AppHost Error:") && - s.ContainsText("Did you forget 'await'"), - timeout: TimeSpan.FromMinutes(3), description: "waiting for AppHost error with await hint"); - await auto.WaitForAnyPromptAsync(counter); + await auto.WaitForSuccessPromptFailFastAsync(counter, TimeSpan.FromMinutes(2)); + await auto.TypeAsync("exit"); await auto.EnterAsync(); diff --git a/tests/Aspire.Hosting.CodeGeneration.TypeScript.Tests/AtsTypeScriptCodeGeneratorTests.cs b/tests/Aspire.Hosting.CodeGeneration.TypeScript.Tests/AtsTypeScriptCodeGeneratorTests.cs index ec2af5d0102..53a7dea12c1 100644 --- a/tests/Aspire.Hosting.CodeGeneration.TypeScript.Tests/AtsTypeScriptCodeGeneratorTests.cs +++ b/tests/Aspire.Hosting.CodeGeneration.TypeScript.Tests/AtsTypeScriptCodeGeneratorTests.cs @@ -591,7 +591,7 @@ public void Pattern4_InterfaceParameterType_GeneratesUnionType() var files = _generator.GenerateDistributedApplication(atsContext); var aspireTs = files["aspire.ts"]; - Assert.Contains("withDependency(dependency: ResourceWithConnectionString | TestRedisResource)", aspireTs); + Assert.Contains("withDependency(dependency: Awaitable)", aspireTs); Assert.DoesNotContain("withDependency(dependency: HandleReference)", aspireTs); } @@ -603,7 +603,7 @@ public void AspireUnion_InterfaceHandleInput_GeneratesExpandedUnion() var files = _generator.GenerateDistributedApplication(atsContext); var aspireTs = files["aspire.ts"]; - Assert.Contains("withUnionDependency(dependency: string | ResourceWithConnectionString | TestRedisResource)", aspireTs); + Assert.Contains("withUnionDependency(dependency: string | ResourceWithConnectionString | TestRedisResource | Awaitable)", aspireTs); } [Fact] diff --git a/tests/Aspire.Hosting.CodeGeneration.TypeScript.Tests/Snapshots/AtsGeneratedAspire.verified.ts b/tests/Aspire.Hosting.CodeGeneration.TypeScript.Tests/Snapshots/AtsGeneratedAspire.verified.ts index 5fc84bbce82..a85c170a886 100644 --- a/tests/Aspire.Hosting.CodeGeneration.TypeScript.Tests/Snapshots/AtsGeneratedAspire.verified.ts +++ b/tests/Aspire.Hosting.CodeGeneration.TypeScript.Tests/Snapshots/AtsGeneratedAspire.verified.ts @@ -13,7 +13,8 @@ import { CapabilityError, registerCallback, wrapIfHandle, - registerHandleWrapper + registerHandleWrapper, + isPromiseLike } from './transport.js'; import type { AspireClientRpc } from './transport.js'; @@ -27,6 +28,8 @@ import { AspireList } from './base.js'; +import type { Awaitable } from './base.js'; + // ============================================================================ // Handle Type Aliases (Internal - not exported to users) // ============================================================================ @@ -474,7 +477,7 @@ class TestResourceContextImpl implements TestResourceContext { } setValueAsync(value: string): TestResourceContextPromise { - return new TestResourceContextPromiseImpl(this._setValueAsyncInternal(value)); + return new TestResourceContextPromiseImpl(this._setValueAsyncInternal(value), this._client); } /** Invokes the ValidateAsync method */ @@ -492,7 +495,9 @@ class TestResourceContextImpl implements TestResourceContext { * Thenable wrapper for TestResourceContext that enables fluent chaining. */ class TestResourceContextPromiseImpl implements TestResourceContextPromise { - constructor(private _promise: Promise) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: TestResourceContext) => TResult1 | PromiseLike) | null, @@ -508,7 +513,7 @@ class TestResourceContextPromiseImpl implements TestResourceContextPromise { /** Invokes the SetValueAsync method */ setValueAsync(value: string): TestResourceContextPromise { - return new TestResourceContextPromiseImpl(this._promise.then(obj => obj.setValueAsync(value))); + return new TestResourceContextPromiseImpl(this._promise.then(obj => obj.setValueAsync(value)), this._client); } /** Invokes the ValidateAsync method */ @@ -560,7 +565,7 @@ class DistributedApplicationBuilderImpl implements DistributedApplicationBuilder addTestRedis(name: string, options?: AddTestRedisOptions): TestRedisResourcePromise { const port = options?.port; - return new TestRedisResourcePromiseImpl(this._addTestRedisInternal(name, port)); + return new TestRedisResourcePromiseImpl(this._addTestRedisInternal(name, port), this._client); } /** Adds a test vault resource */ @@ -575,7 +580,7 @@ class DistributedApplicationBuilderImpl implements DistributedApplicationBuilder } addTestVault(name: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._addTestVaultInternal(name)); + return new TestVaultResourcePromiseImpl(this._addTestVaultInternal(name), this._client); } } @@ -584,7 +589,9 @@ class DistributedApplicationBuilderImpl implements DistributedApplicationBuilder * Thenable wrapper for DistributedApplicationBuilder that enables fluent chaining. */ class DistributedApplicationBuilderPromiseImpl implements DistributedApplicationBuilderPromise { - constructor(private _promise: Promise) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: DistributedApplicationBuilder) => TResult1 | PromiseLike) | null, @@ -595,12 +602,12 @@ class DistributedApplicationBuilderPromiseImpl implements DistributedApplication /** Adds a test Redis resource */ addTestRedis(name: string, options?: AddTestRedisOptions): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.addTestRedis(name, options))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.addTestRedis(name, options)), this._client); } /** Adds a test vault resource */ addTestVault(name: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.addTestVault(name))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.addTestVault(name)), this._client); } } @@ -621,9 +628,9 @@ export interface TestDatabaseResource { withStatus(status: TestResourceStatus): TestDatabaseResourcePromise; withNestedConfig(config: TestNestedDto): TestDatabaseResourcePromise; withValidator(validator: (arg: TestResourceContext) => Promise): TestDatabaseResourcePromise; - testWaitFor(dependency: Resource | ResourceWithConnectionString | ResourceWithEnvironment | TestDatabaseResource | TestRedisResource | TestVaultResource): TestDatabaseResourcePromise; - withDependency(dependency: ResourceWithConnectionString | TestRedisResource): TestDatabaseResourcePromise; - withUnionDependency(dependency: string | ResourceWithConnectionString | TestRedisResource): TestDatabaseResourcePromise; + testWaitFor(dependency: Awaitable): TestDatabaseResourcePromise; + withDependency(dependency: Awaitable): TestDatabaseResourcePromise; + withUnionDependency(dependency: string | ResourceWithConnectionString | TestRedisResource | Awaitable): TestDatabaseResourcePromise; withEndpoints(endpoints: string[]): TestDatabaseResourcePromise; withEnvironmentVariables(variables: Record): TestDatabaseResourcePromise; withCancellableOperation(operation: (arg: CancellationToken) => Promise): TestDatabaseResourcePromise; @@ -649,9 +656,9 @@ export interface TestDatabaseResourcePromise extends PromiseLike Promise): TestDatabaseResourcePromise; - testWaitFor(dependency: Resource | ResourceWithConnectionString | ResourceWithEnvironment | TestDatabaseResource | TestRedisResource | TestVaultResource): TestDatabaseResourcePromise; - withDependency(dependency: ResourceWithConnectionString | TestRedisResource): TestDatabaseResourcePromise; - withUnionDependency(dependency: string | ResourceWithConnectionString | TestRedisResource): TestDatabaseResourcePromise; + testWaitFor(dependency: Awaitable): TestDatabaseResourcePromise; + withDependency(dependency: Awaitable): TestDatabaseResourcePromise; + withUnionDependency(dependency: string | ResourceWithConnectionString | TestRedisResource | Awaitable): TestDatabaseResourcePromise; withEndpoints(endpoints: string[]): TestDatabaseResourcePromise; withEnvironmentVariables(variables: Record): TestDatabaseResourcePromise; withCancellableOperation(operation: (arg: CancellationToken) => Promise): TestDatabaseResourcePromise; @@ -691,7 +698,7 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase Promise): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._testWithEnvironmentCallbackInternal(callback)); + return new TestDatabaseResourcePromiseImpl(this._testWithEnvironmentCallbackInternal(callback), this._client); } /** @internal */ @@ -741,7 +748,7 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase Promise): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._withValidatorInternal(validator)); + return new TestDatabaseResourcePromiseImpl(this._withValidatorInternal(validator), this._client); } /** @internal */ - private async _testWaitForInternal(dependency: Resource | ResourceWithConnectionString | ResourceWithEnvironment | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _testWaitForInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/testWaitFor', @@ -857,12 +865,13 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._testWaitForInternal(dependency), this._client); } /** @internal */ - private async _withDependencyInternal(dependency: ResourceWithConnectionString | TestRedisResource): Promise { + private async _withDependencyInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/withDependency', @@ -872,12 +881,13 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._withDependencyInternal(dependency), this._client); } /** @internal */ - private async _withUnionDependencyInternal(dependency: string | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withUnionDependencyInternal(dependency: string | ResourceWithConnectionString | TestRedisResource | Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/withUnionDependency', @@ -887,8 +897,8 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._withUnionDependencyInternal(dependency), this._client); } /** @internal */ @@ -903,7 +913,7 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._withEnvironmentVariablesInternal(variables)); + return new TestDatabaseResourcePromiseImpl(this._withEnvironmentVariablesInternal(variables), this._client); } /** @internal */ @@ -937,7 +947,7 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase Promise): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._withCancellableOperationInternal(operation)); + return new TestDatabaseResourcePromiseImpl(this._withCancellableOperationInternal(operation), this._client); } /** @internal */ @@ -954,7 +964,7 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: TestDatabaseResource) => TResult1 | PromiseLike) | null, @@ -1104,127 +1116,127 @@ class TestDatabaseResourcePromiseImpl implements TestDatabaseResourcePromise { /** Adds an optional string parameter */ withOptionalString(options?: WithOptionalStringOptions): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withOptionalString(options))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withOptionalString(options)), this._client); } /** Configures the resource with a DTO */ withConfig(config: TestConfigDto): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withConfig(config))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withConfig(config)), this._client); } /** Configures environment with callback (test version) */ testWithEnvironmentCallback(callback: (arg: TestEnvironmentContext) => Promise): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.testWithEnvironmentCallback(callback))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.testWithEnvironmentCallback(callback)), this._client); } /** Sets the created timestamp */ withCreatedAt(createdAt: string): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withCreatedAt(createdAt))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withCreatedAt(createdAt)), this._client); } /** Sets the modified timestamp */ withModifiedAt(modifiedAt: string): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withModifiedAt(modifiedAt))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withModifiedAt(modifiedAt)), this._client); } /** Sets the correlation ID */ withCorrelationId(correlationId: string): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withCorrelationId(correlationId))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withCorrelationId(correlationId)), this._client); } /** Configures with optional callback */ withOptionalCallback(options?: WithOptionalCallbackOptions): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withOptionalCallback(options))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withOptionalCallback(options)), this._client); } /** Sets the resource status */ withStatus(status: TestResourceStatus): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withStatus(status))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withStatus(status)), this._client); } /** Configures with nested DTO */ withNestedConfig(config: TestNestedDto): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withNestedConfig(config))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withNestedConfig(config)), this._client); } /** Adds validation callback */ withValidator(validator: (arg: TestResourceContext) => Promise): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withValidator(validator))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withValidator(validator)), this._client); } /** Waits for another resource (test version) */ - testWaitFor(dependency: Resource | ResourceWithConnectionString | ResourceWithEnvironment | TestDatabaseResource | TestRedisResource | TestVaultResource): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.testWaitFor(dependency))); + testWaitFor(dependency: Awaitable): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.testWaitFor(dependency)), this._client); } /** Adds a dependency on another resource */ - withDependency(dependency: ResourceWithConnectionString | TestRedisResource): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withDependency(dependency))); + withDependency(dependency: Awaitable): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withDependency(dependency)), this._client); } /** Adds a dependency from a string or another resource */ - withUnionDependency(dependency: string | ResourceWithConnectionString | TestRedisResource): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withUnionDependency(dependency))); + withUnionDependency(dependency: string | ResourceWithConnectionString | TestRedisResource | Awaitable): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withUnionDependency(dependency)), this._client); } /** Sets the endpoints */ withEndpoints(endpoints: string[]): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withEndpoints(endpoints))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withEndpoints(endpoints)), this._client); } /** Sets environment variables */ withEnvironmentVariables(variables: Record): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentVariables(variables))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentVariables(variables)), this._client); } /** Performs a cancellable operation */ withCancellableOperation(operation: (arg: CancellationToken) => Promise): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withCancellableOperation(operation))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withCancellableOperation(operation)), this._client); } /** Adds a data volume */ withDataVolume(options?: WithDataVolumeOptions): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withDataVolume(options))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withDataVolume(options)), this._client); } /** Adds a label to the resource */ withMergeLabel(label: string): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabel(label))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabel(label)), this._client); } /** Adds a categorized label to the resource */ withMergeLabelCategorized(label: string, category: string): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabelCategorized(label, category))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabelCategorized(label, category)), this._client); } /** Configures a named endpoint */ withMergeEndpoint(endpointName: string, port: number): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpoint(endpointName, port))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpoint(endpointName, port)), this._client); } /** Configures a named endpoint with scheme */ withMergeEndpointScheme(endpointName: string, port: number, scheme: string): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpointScheme(endpointName, port, scheme))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpointScheme(endpointName, port, scheme)), this._client); } /** Configures resource logging */ withMergeLogging(logLevel: string, options?: WithMergeLoggingOptions): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withMergeLogging(logLevel, options))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withMergeLogging(logLevel, options)), this._client); } /** Configures resource logging with file path */ withMergeLoggingPath(logLevel: string, logPath: string, options?: WithMergeLoggingPathOptions): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withMergeLoggingPath(logLevel, logPath, options))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withMergeLoggingPath(logLevel, logPath, options)), this._client); } /** Configures a route */ withMergeRoute(path: string, method: string, handler: string, priority: number): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withMergeRoute(path, method, handler, priority))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withMergeRoute(path, method, handler, priority)), this._client); } /** Configures a route with middleware */ withMergeRouteMiddleware(path: string, method: string, handler: string, priority: number, middleware: string): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withMergeRouteMiddleware(path, method, handler, priority, middleware))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withMergeRouteMiddleware(path, method, handler, priority, middleware)), this._client); } } @@ -1250,12 +1262,12 @@ export interface TestRedisResource { withStatus(status: TestResourceStatus): TestRedisResourcePromise; withNestedConfig(config: TestNestedDto): TestRedisResourcePromise; withValidator(validator: (arg: TestResourceContext) => Promise): TestRedisResourcePromise; - testWaitFor(dependency: Resource | ResourceWithConnectionString | ResourceWithEnvironment | TestDatabaseResource | TestRedisResource | TestVaultResource): TestRedisResourcePromise; + testWaitFor(dependency: Awaitable): TestRedisResourcePromise; getEndpoints(): Promise; withConnectionStringDirect(connectionString: string): TestRedisResourcePromise; withRedisSpecific(option: string): TestRedisResourcePromise; - withDependency(dependency: ResourceWithConnectionString | TestRedisResource): TestRedisResourcePromise; - withUnionDependency(dependency: string | ResourceWithConnectionString | TestRedisResource): TestRedisResourcePromise; + withDependency(dependency: Awaitable): TestRedisResourcePromise; + withUnionDependency(dependency: string | ResourceWithConnectionString | TestRedisResource | Awaitable): TestRedisResourcePromise; withEndpoints(endpoints: string[]): TestRedisResourcePromise; withEnvironmentVariables(variables: Record): TestRedisResourcePromise; getStatusAsync(options?: GetStatusAsyncOptions): Promise; @@ -1289,12 +1301,12 @@ export interface TestRedisResourcePromise extends PromiseLike withStatus(status: TestResourceStatus): TestRedisResourcePromise; withNestedConfig(config: TestNestedDto): TestRedisResourcePromise; withValidator(validator: (arg: TestResourceContext) => Promise): TestRedisResourcePromise; - testWaitFor(dependency: Resource | ResourceWithConnectionString | ResourceWithEnvironment | TestDatabaseResource | TestRedisResource | TestVaultResource): TestRedisResourcePromise; + testWaitFor(dependency: Awaitable): TestRedisResourcePromise; getEndpoints(): Promise; withConnectionStringDirect(connectionString: string): TestRedisResourcePromise; withRedisSpecific(option: string): TestRedisResourcePromise; - withDependency(dependency: ResourceWithConnectionString | TestRedisResource): TestRedisResourcePromise; - withUnionDependency(dependency: string | ResourceWithConnectionString | TestRedisResource): TestRedisResourcePromise; + withDependency(dependency: Awaitable): TestRedisResourcePromise; + withUnionDependency(dependency: string | ResourceWithConnectionString | TestRedisResource | Awaitable): TestRedisResourcePromise; withEndpoints(endpoints: string[]): TestRedisResourcePromise; withEnvironmentVariables(variables: Record): TestRedisResourcePromise; getStatusAsync(options?: GetStatusAsyncOptions): Promise; @@ -1335,7 +1347,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Adds a child database to a test Redis resource */ addTestChildDatabase(name: string, options?: AddTestChildDatabaseOptions): TestDatabaseResourcePromise { const databaseName = options?.databaseName; - return new TestDatabaseResourcePromiseImpl(this._addTestChildDatabaseInternal(name, databaseName)); + return new TestDatabaseResourcePromiseImpl(this._addTestChildDatabaseInternal(name, databaseName), this._client); } /** @internal */ @@ -1352,7 +1364,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Configures the Redis resource with persistence */ withPersistence(options?: WithPersistenceOptions): TestRedisResourcePromise { const mode = options?.mode; - return new TestRedisResourcePromiseImpl(this._withPersistenceInternal(mode)); + return new TestRedisResourcePromiseImpl(this._withPersistenceInternal(mode), this._client); } /** @internal */ @@ -1371,7 +1383,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase withOptionalString(options?: WithOptionalStringOptions): TestRedisResourcePromise { const value = options?.value; const enabled = options?.enabled; - return new TestRedisResourcePromiseImpl(this._withOptionalStringInternal(value, enabled)); + return new TestRedisResourcePromiseImpl(this._withOptionalStringInternal(value, enabled), this._client); } /** @internal */ @@ -1386,7 +1398,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Configures the resource with a DTO */ withConfig(config: TestConfigDto): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withConfigInternal(config)); + return new TestRedisResourcePromiseImpl(this._withConfigInternal(config), this._client); } /** Gets the tags for the resource */ @@ -1419,7 +1431,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Sets the connection string using a reference expression */ withConnectionString(connectionString: ReferenceExpression): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withConnectionStringInternal(connectionString)); + return new TestRedisResourcePromiseImpl(this._withConnectionStringInternal(connectionString), this._client); } /** @internal */ @@ -1439,7 +1451,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Configures environment with callback (test version) */ testWithEnvironmentCallback(callback: (arg: TestEnvironmentContext) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._testWithEnvironmentCallbackInternal(callback)); + return new TestRedisResourcePromiseImpl(this._testWithEnvironmentCallbackInternal(callback), this._client); } /** @internal */ @@ -1454,7 +1466,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Sets the created timestamp */ withCreatedAt(createdAt: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withCreatedAtInternal(createdAt)); + return new TestRedisResourcePromiseImpl(this._withCreatedAtInternal(createdAt), this._client); } /** @internal */ @@ -1469,7 +1481,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Sets the modified timestamp */ withModifiedAt(modifiedAt: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withModifiedAtInternal(modifiedAt)); + return new TestRedisResourcePromiseImpl(this._withModifiedAtInternal(modifiedAt), this._client); } /** @internal */ @@ -1484,7 +1496,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Sets the correlation ID */ withCorrelationId(correlationId: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withCorrelationIdInternal(correlationId)); + return new TestRedisResourcePromiseImpl(this._withCorrelationIdInternal(correlationId), this._client); } /** @internal */ @@ -1506,7 +1518,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Configures with optional callback */ withOptionalCallback(options?: WithOptionalCallbackOptions): TestRedisResourcePromise { const callback = options?.callback; - return new TestRedisResourcePromiseImpl(this._withOptionalCallbackInternal(callback)); + return new TestRedisResourcePromiseImpl(this._withOptionalCallbackInternal(callback), this._client); } /** @internal */ @@ -1521,7 +1533,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Sets the resource status */ withStatus(status: TestResourceStatus): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withStatusInternal(status)); + return new TestRedisResourcePromiseImpl(this._withStatusInternal(status), this._client); } /** @internal */ @@ -1536,7 +1548,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Configures with nested DTO */ withNestedConfig(config: TestNestedDto): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withNestedConfigInternal(config)); + return new TestRedisResourcePromiseImpl(this._withNestedConfigInternal(config), this._client); } /** @internal */ @@ -1556,11 +1568,12 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Adds validation callback */ withValidator(validator: (arg: TestResourceContext) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withValidatorInternal(validator)); + return new TestRedisResourcePromiseImpl(this._withValidatorInternal(validator), this._client); } /** @internal */ - private async _testWaitForInternal(dependency: Resource | ResourceWithConnectionString | ResourceWithEnvironment | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _testWaitForInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/testWaitFor', @@ -1570,8 +1583,8 @@ class TestRedisResourceImpl extends ResourceBuilderBase } /** Waits for another resource (test version) */ - testWaitFor(dependency: Resource | ResourceWithConnectionString | ResourceWithEnvironment | TestDatabaseResource | TestRedisResource | TestVaultResource): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._testWaitForInternal(dependency)); + testWaitFor(dependency: Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._testWaitForInternal(dependency), this._client); } /** Gets the endpoints */ @@ -1595,7 +1608,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Sets connection string using direct interface target */ withConnectionStringDirect(connectionString: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withConnectionStringDirectInternal(connectionString)); + return new TestRedisResourcePromiseImpl(this._withConnectionStringDirectInternal(connectionString), this._client); } /** @internal */ @@ -1610,11 +1623,12 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Redis-specific configuration */ withRedisSpecific(option: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withRedisSpecificInternal(option)); + return new TestRedisResourcePromiseImpl(this._withRedisSpecificInternal(option), this._client); } /** @internal */ - private async _withDependencyInternal(dependency: ResourceWithConnectionString | TestRedisResource): Promise { + private async _withDependencyInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/withDependency', @@ -1624,12 +1638,13 @@ class TestRedisResourceImpl extends ResourceBuilderBase } /** Adds a dependency on another resource */ - withDependency(dependency: ResourceWithConnectionString | TestRedisResource): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withDependencyInternal(dependency)); + withDependency(dependency: Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._withDependencyInternal(dependency), this._client); } /** @internal */ - private async _withUnionDependencyInternal(dependency: string | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withUnionDependencyInternal(dependency: string | ResourceWithConnectionString | TestRedisResource | Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/withUnionDependency', @@ -1639,8 +1654,8 @@ class TestRedisResourceImpl extends ResourceBuilderBase } /** Adds a dependency from a string or another resource */ - withUnionDependency(dependency: string | ResourceWithConnectionString | TestRedisResource): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withUnionDependencyInternal(dependency)); + withUnionDependency(dependency: string | ResourceWithConnectionString | TestRedisResource | Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._withUnionDependencyInternal(dependency), this._client); } /** @internal */ @@ -1655,7 +1670,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Sets the endpoints */ withEndpoints(endpoints: string[]): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withEndpointsInternal(endpoints)); + return new TestRedisResourcePromiseImpl(this._withEndpointsInternal(endpoints), this._client); } /** @internal */ @@ -1670,7 +1685,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Sets environment variables */ withEnvironmentVariables(variables: Record): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withEnvironmentVariablesInternal(variables)); + return new TestRedisResourcePromiseImpl(this._withEnvironmentVariablesInternal(variables), this._client); } /** Gets the status of the resource asynchronously */ @@ -1700,7 +1715,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Performs a cancellable operation */ withCancellableOperation(operation: (arg: CancellationToken) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withCancellableOperationInternal(operation)); + return new TestRedisResourcePromiseImpl(this._withCancellableOperationInternal(operation), this._client); } /** Waits for the resource to be ready */ @@ -1733,7 +1748,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Tests multi-param callback destructuring */ withMultiParamHandleCallback(callback: (arg1: TestCallbackContext, arg2: TestEnvironmentContext) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withMultiParamHandleCallbackInternal(callback)); + return new TestRedisResourcePromiseImpl(this._withMultiParamHandleCallbackInternal(callback), this._client); } /** @internal */ @@ -1752,7 +1767,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase withDataVolume(options?: WithDataVolumeOptions): TestRedisResourcePromise { const name = options?.name; const isReadOnly = options?.isReadOnly; - return new TestRedisResourcePromiseImpl(this._withDataVolumeInternal(name, isReadOnly)); + return new TestRedisResourcePromiseImpl(this._withDataVolumeInternal(name, isReadOnly), this._client); } /** @internal */ @@ -1767,7 +1782,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Adds a label to the resource */ withMergeLabel(label: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withMergeLabelInternal(label)); + return new TestRedisResourcePromiseImpl(this._withMergeLabelInternal(label), this._client); } /** @internal */ @@ -1782,7 +1797,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Adds a categorized label to the resource */ withMergeLabelCategorized(label: string, category: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withMergeLabelCategorizedInternal(label, category)); + return new TestRedisResourcePromiseImpl(this._withMergeLabelCategorizedInternal(label, category), this._client); } /** @internal */ @@ -1797,7 +1812,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Configures a named endpoint */ withMergeEndpoint(endpointName: string, port: number): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withMergeEndpointInternal(endpointName, port)); + return new TestRedisResourcePromiseImpl(this._withMergeEndpointInternal(endpointName, port), this._client); } /** @internal */ @@ -1812,7 +1827,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Configures a named endpoint with scheme */ withMergeEndpointScheme(endpointName: string, port: number, scheme: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withMergeEndpointSchemeInternal(endpointName, port, scheme)); + return new TestRedisResourcePromiseImpl(this._withMergeEndpointSchemeInternal(endpointName, port, scheme), this._client); } /** @internal */ @@ -1831,7 +1846,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase withMergeLogging(logLevel: string, options?: WithMergeLoggingOptions): TestRedisResourcePromise { const enableConsole = options?.enableConsole; const maxFiles = options?.maxFiles; - return new TestRedisResourcePromiseImpl(this._withMergeLoggingInternal(logLevel, enableConsole, maxFiles)); + return new TestRedisResourcePromiseImpl(this._withMergeLoggingInternal(logLevel, enableConsole, maxFiles), this._client); } /** @internal */ @@ -1850,7 +1865,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase withMergeLoggingPath(logLevel: string, logPath: string, options?: WithMergeLoggingPathOptions): TestRedisResourcePromise { const enableConsole = options?.enableConsole; const maxFiles = options?.maxFiles; - return new TestRedisResourcePromiseImpl(this._withMergeLoggingPathInternal(logLevel, logPath, enableConsole, maxFiles)); + return new TestRedisResourcePromiseImpl(this._withMergeLoggingPathInternal(logLevel, logPath, enableConsole, maxFiles), this._client); } /** @internal */ @@ -1865,7 +1880,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Configures a route */ withMergeRoute(path: string, method: string, handler: string, priority: number): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withMergeRouteInternal(path, method, handler, priority)); + return new TestRedisResourcePromiseImpl(this._withMergeRouteInternal(path, method, handler, priority), this._client); } /** @internal */ @@ -1880,7 +1895,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Configures a route with middleware */ withMergeRouteMiddleware(path: string, method: string, handler: string, priority: number, middleware: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withMergeRouteMiddlewareInternal(path, method, handler, priority, middleware)); + return new TestRedisResourcePromiseImpl(this._withMergeRouteMiddlewareInternal(path, method, handler, priority, middleware), this._client); } } @@ -1891,7 +1906,9 @@ class TestRedisResourceImpl extends ResourceBuilderBase * await builder.addSomething().withX().withY(); */ class TestRedisResourcePromiseImpl implements TestRedisResourcePromise { - constructor(private _promise: Promise) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: TestRedisResource) => TResult1 | PromiseLike) | null, @@ -1902,22 +1919,22 @@ class TestRedisResourcePromiseImpl implements TestRedisResourcePromise { /** Adds a child database to a test Redis resource */ addTestChildDatabase(name: string, options?: AddTestChildDatabaseOptions): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.addTestChildDatabase(name, options))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.addTestChildDatabase(name, options)), this._client); } /** Configures the Redis resource with persistence */ withPersistence(options?: WithPersistenceOptions): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withPersistence(options))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withPersistence(options)), this._client); } /** Adds an optional string parameter */ withOptionalString(options?: WithOptionalStringOptions): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withOptionalString(options))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withOptionalString(options)), this._client); } /** Configures the resource with a DTO */ withConfig(config: TestConfigDto): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withConfig(config))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withConfig(config)), this._client); } /** Gets the tags for the resource */ @@ -1932,52 +1949,52 @@ class TestRedisResourcePromiseImpl implements TestRedisResourcePromise { /** Sets the connection string using a reference expression */ withConnectionString(connectionString: ReferenceExpression): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withConnectionString(connectionString))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withConnectionString(connectionString)), this._client); } /** Configures environment with callback (test version) */ testWithEnvironmentCallback(callback: (arg: TestEnvironmentContext) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.testWithEnvironmentCallback(callback))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.testWithEnvironmentCallback(callback)), this._client); } /** Sets the created timestamp */ withCreatedAt(createdAt: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withCreatedAt(createdAt))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withCreatedAt(createdAt)), this._client); } /** Sets the modified timestamp */ withModifiedAt(modifiedAt: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withModifiedAt(modifiedAt))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withModifiedAt(modifiedAt)), this._client); } /** Sets the correlation ID */ withCorrelationId(correlationId: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withCorrelationId(correlationId))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withCorrelationId(correlationId)), this._client); } /** Configures with optional callback */ withOptionalCallback(options?: WithOptionalCallbackOptions): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withOptionalCallback(options))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withOptionalCallback(options)), this._client); } /** Sets the resource status */ withStatus(status: TestResourceStatus): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withStatus(status))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withStatus(status)), this._client); } /** Configures with nested DTO */ withNestedConfig(config: TestNestedDto): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withNestedConfig(config))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withNestedConfig(config)), this._client); } /** Adds validation callback */ withValidator(validator: (arg: TestResourceContext) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withValidator(validator))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withValidator(validator)), this._client); } /** Waits for another resource (test version) */ - testWaitFor(dependency: Resource | ResourceWithConnectionString | ResourceWithEnvironment | TestDatabaseResource | TestRedisResource | TestVaultResource): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.testWaitFor(dependency))); + testWaitFor(dependency: Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.testWaitFor(dependency)), this._client); } /** Gets the endpoints */ @@ -1987,32 +2004,32 @@ class TestRedisResourcePromiseImpl implements TestRedisResourcePromise { /** Sets connection string using direct interface target */ withConnectionStringDirect(connectionString: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withConnectionStringDirect(connectionString))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withConnectionStringDirect(connectionString)), this._client); } /** Redis-specific configuration */ withRedisSpecific(option: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withRedisSpecific(option))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withRedisSpecific(option)), this._client); } /** Adds a dependency on another resource */ - withDependency(dependency: ResourceWithConnectionString | TestRedisResource): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withDependency(dependency))); + withDependency(dependency: Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withDependency(dependency)), this._client); } /** Adds a dependency from a string or another resource */ - withUnionDependency(dependency: string | ResourceWithConnectionString | TestRedisResource): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withUnionDependency(dependency))); + withUnionDependency(dependency: string | ResourceWithConnectionString | TestRedisResource | Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withUnionDependency(dependency)), this._client); } /** Sets the endpoints */ withEndpoints(endpoints: string[]): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withEndpoints(endpoints))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withEndpoints(endpoints)), this._client); } /** Sets environment variables */ withEnvironmentVariables(variables: Record): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentVariables(variables))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentVariables(variables)), this._client); } /** Gets the status of the resource asynchronously */ @@ -2022,7 +2039,7 @@ class TestRedisResourcePromiseImpl implements TestRedisResourcePromise { /** Performs a cancellable operation */ withCancellableOperation(operation: (arg: CancellationToken) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withCancellableOperation(operation))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withCancellableOperation(operation)), this._client); } /** Waits for the resource to be ready */ @@ -2032,52 +2049,52 @@ class TestRedisResourcePromiseImpl implements TestRedisResourcePromise { /** Tests multi-param callback destructuring */ withMultiParamHandleCallback(callback: (arg1: TestCallbackContext, arg2: TestEnvironmentContext) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMultiParamHandleCallback(callback))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMultiParamHandleCallback(callback)), this._client); } /** Adds a data volume with persistence */ withDataVolume(options?: WithDataVolumeOptions): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withDataVolume(options))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withDataVolume(options)), this._client); } /** Adds a label to the resource */ withMergeLabel(label: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabel(label))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabel(label)), this._client); } /** Adds a categorized label to the resource */ withMergeLabelCategorized(label: string, category: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabelCategorized(label, category))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabelCategorized(label, category)), this._client); } /** Configures a named endpoint */ withMergeEndpoint(endpointName: string, port: number): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpoint(endpointName, port))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpoint(endpointName, port)), this._client); } /** Configures a named endpoint with scheme */ withMergeEndpointScheme(endpointName: string, port: number, scheme: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpointScheme(endpointName, port, scheme))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpointScheme(endpointName, port, scheme)), this._client); } /** Configures resource logging */ withMergeLogging(logLevel: string, options?: WithMergeLoggingOptions): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMergeLogging(logLevel, options))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMergeLogging(logLevel, options)), this._client); } /** Configures resource logging with file path */ withMergeLoggingPath(logLevel: string, logPath: string, options?: WithMergeLoggingPathOptions): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMergeLoggingPath(logLevel, logPath, options))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMergeLoggingPath(logLevel, logPath, options)), this._client); } /** Configures a route */ withMergeRoute(path: string, method: string, handler: string, priority: number): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMergeRoute(path, method, handler, priority))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMergeRoute(path, method, handler, priority)), this._client); } /** Configures a route with middleware */ withMergeRouteMiddleware(path: string, method: string, handler: string, priority: number, middleware: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMergeRouteMiddleware(path, method, handler, priority, middleware))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMergeRouteMiddleware(path, method, handler, priority, middleware)), this._client); } } @@ -2098,9 +2115,9 @@ export interface TestVaultResource { withStatus(status: TestResourceStatus): TestVaultResourcePromise; withNestedConfig(config: TestNestedDto): TestVaultResourcePromise; withValidator(validator: (arg: TestResourceContext) => Promise): TestVaultResourcePromise; - testWaitFor(dependency: Resource | ResourceWithConnectionString | ResourceWithEnvironment | TestDatabaseResource | TestRedisResource | TestVaultResource): TestVaultResourcePromise; - withDependency(dependency: ResourceWithConnectionString | TestRedisResource): TestVaultResourcePromise; - withUnionDependency(dependency: string | ResourceWithConnectionString | TestRedisResource): TestVaultResourcePromise; + testWaitFor(dependency: Awaitable): TestVaultResourcePromise; + withDependency(dependency: Awaitable): TestVaultResourcePromise; + withUnionDependency(dependency: string | ResourceWithConnectionString | TestRedisResource | Awaitable): TestVaultResourcePromise; withEndpoints(endpoints: string[]): TestVaultResourcePromise; withEnvironmentVariables(variables: Record): TestVaultResourcePromise; withCancellableOperation(operation: (arg: CancellationToken) => Promise): TestVaultResourcePromise; @@ -2126,9 +2143,9 @@ export interface TestVaultResourcePromise extends PromiseLike withStatus(status: TestResourceStatus): TestVaultResourcePromise; withNestedConfig(config: TestNestedDto): TestVaultResourcePromise; withValidator(validator: (arg: TestResourceContext) => Promise): TestVaultResourcePromise; - testWaitFor(dependency: Resource | ResourceWithConnectionString | ResourceWithEnvironment | TestDatabaseResource | TestRedisResource | TestVaultResource): TestVaultResourcePromise; - withDependency(dependency: ResourceWithConnectionString | TestRedisResource): TestVaultResourcePromise; - withUnionDependency(dependency: string | ResourceWithConnectionString | TestRedisResource): TestVaultResourcePromise; + testWaitFor(dependency: Awaitable): TestVaultResourcePromise; + withDependency(dependency: Awaitable): TestVaultResourcePromise; + withUnionDependency(dependency: string | ResourceWithConnectionString | TestRedisResource | Awaitable): TestVaultResourcePromise; withEndpoints(endpoints: string[]): TestVaultResourcePromise; withEnvironmentVariables(variables: Record): TestVaultResourcePromise; withCancellableOperation(operation: (arg: CancellationToken) => Promise): TestVaultResourcePromise; @@ -2168,7 +2185,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase withOptionalString(options?: WithOptionalStringOptions): TestVaultResourcePromise { const value = options?.value; const enabled = options?.enabled; - return new TestVaultResourcePromiseImpl(this._withOptionalStringInternal(value, enabled)); + return new TestVaultResourcePromiseImpl(this._withOptionalStringInternal(value, enabled), this._client); } /** @internal */ @@ -2183,7 +2200,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Configures the resource with a DTO */ withConfig(config: TestConfigDto): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withConfigInternal(config)); + return new TestVaultResourcePromiseImpl(this._withConfigInternal(config), this._client); } /** @internal */ @@ -2203,7 +2220,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Configures environment with callback (test version) */ testWithEnvironmentCallback(callback: (arg: TestEnvironmentContext) => Promise): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._testWithEnvironmentCallbackInternal(callback)); + return new TestVaultResourcePromiseImpl(this._testWithEnvironmentCallbackInternal(callback), this._client); } /** @internal */ @@ -2218,7 +2235,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Sets the created timestamp */ withCreatedAt(createdAt: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withCreatedAtInternal(createdAt)); + return new TestVaultResourcePromiseImpl(this._withCreatedAtInternal(createdAt), this._client); } /** @internal */ @@ -2233,7 +2250,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Sets the modified timestamp */ withModifiedAt(modifiedAt: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withModifiedAtInternal(modifiedAt)); + return new TestVaultResourcePromiseImpl(this._withModifiedAtInternal(modifiedAt), this._client); } /** @internal */ @@ -2248,7 +2265,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Sets the correlation ID */ withCorrelationId(correlationId: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withCorrelationIdInternal(correlationId)); + return new TestVaultResourcePromiseImpl(this._withCorrelationIdInternal(correlationId), this._client); } /** @internal */ @@ -2270,7 +2287,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Configures with optional callback */ withOptionalCallback(options?: WithOptionalCallbackOptions): TestVaultResourcePromise { const callback = options?.callback; - return new TestVaultResourcePromiseImpl(this._withOptionalCallbackInternal(callback)); + return new TestVaultResourcePromiseImpl(this._withOptionalCallbackInternal(callback), this._client); } /** @internal */ @@ -2285,7 +2302,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Sets the resource status */ withStatus(status: TestResourceStatus): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withStatusInternal(status)); + return new TestVaultResourcePromiseImpl(this._withStatusInternal(status), this._client); } /** @internal */ @@ -2300,7 +2317,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Configures with nested DTO */ withNestedConfig(config: TestNestedDto): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withNestedConfigInternal(config)); + return new TestVaultResourcePromiseImpl(this._withNestedConfigInternal(config), this._client); } /** @internal */ @@ -2320,11 +2337,12 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Adds validation callback */ withValidator(validator: (arg: TestResourceContext) => Promise): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withValidatorInternal(validator)); + return new TestVaultResourcePromiseImpl(this._withValidatorInternal(validator), this._client); } /** @internal */ - private async _testWaitForInternal(dependency: Resource | ResourceWithConnectionString | ResourceWithEnvironment | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _testWaitForInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/testWaitFor', @@ -2334,12 +2352,13 @@ class TestVaultResourceImpl extends ResourceBuilderBase } /** Waits for another resource (test version) */ - testWaitFor(dependency: Resource | ResourceWithConnectionString | ResourceWithEnvironment | TestDatabaseResource | TestRedisResource | TestVaultResource): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._testWaitForInternal(dependency)); + testWaitFor(dependency: Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._testWaitForInternal(dependency), this._client); } /** @internal */ - private async _withDependencyInternal(dependency: ResourceWithConnectionString | TestRedisResource): Promise { + private async _withDependencyInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/withDependency', @@ -2349,12 +2368,13 @@ class TestVaultResourceImpl extends ResourceBuilderBase } /** Adds a dependency on another resource */ - withDependency(dependency: ResourceWithConnectionString | TestRedisResource): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withDependencyInternal(dependency)); + withDependency(dependency: Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._withDependencyInternal(dependency), this._client); } /** @internal */ - private async _withUnionDependencyInternal(dependency: string | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withUnionDependencyInternal(dependency: string | ResourceWithConnectionString | TestRedisResource | Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/withUnionDependency', @@ -2364,8 +2384,8 @@ class TestVaultResourceImpl extends ResourceBuilderBase } /** Adds a dependency from a string or another resource */ - withUnionDependency(dependency: string | ResourceWithConnectionString | TestRedisResource): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withUnionDependencyInternal(dependency)); + withUnionDependency(dependency: string | ResourceWithConnectionString | TestRedisResource | Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._withUnionDependencyInternal(dependency), this._client); } /** @internal */ @@ -2380,7 +2400,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Sets the endpoints */ withEndpoints(endpoints: string[]): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withEndpointsInternal(endpoints)); + return new TestVaultResourcePromiseImpl(this._withEndpointsInternal(endpoints), this._client); } /** @internal */ @@ -2395,7 +2415,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Sets environment variables */ withEnvironmentVariables(variables: Record): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withEnvironmentVariablesInternal(variables)); + return new TestVaultResourcePromiseImpl(this._withEnvironmentVariablesInternal(variables), this._client); } /** @internal */ @@ -2414,7 +2434,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Performs a cancellable operation */ withCancellableOperation(operation: (arg: CancellationToken) => Promise): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withCancellableOperationInternal(operation)); + return new TestVaultResourcePromiseImpl(this._withCancellableOperationInternal(operation), this._client); } /** @internal */ @@ -2429,7 +2449,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Configures vault using direct interface target */ withVaultDirect(option: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withVaultDirectInternal(option)); + return new TestVaultResourcePromiseImpl(this._withVaultDirectInternal(option), this._client); } /** @internal */ @@ -2444,7 +2464,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Adds a label to the resource */ withMergeLabel(label: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withMergeLabelInternal(label)); + return new TestVaultResourcePromiseImpl(this._withMergeLabelInternal(label), this._client); } /** @internal */ @@ -2459,7 +2479,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Adds a categorized label to the resource */ withMergeLabelCategorized(label: string, category: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withMergeLabelCategorizedInternal(label, category)); + return new TestVaultResourcePromiseImpl(this._withMergeLabelCategorizedInternal(label, category), this._client); } /** @internal */ @@ -2474,7 +2494,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Configures a named endpoint */ withMergeEndpoint(endpointName: string, port: number): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withMergeEndpointInternal(endpointName, port)); + return new TestVaultResourcePromiseImpl(this._withMergeEndpointInternal(endpointName, port), this._client); } /** @internal */ @@ -2489,7 +2509,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Configures a named endpoint with scheme */ withMergeEndpointScheme(endpointName: string, port: number, scheme: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withMergeEndpointSchemeInternal(endpointName, port, scheme)); + return new TestVaultResourcePromiseImpl(this._withMergeEndpointSchemeInternal(endpointName, port, scheme), this._client); } /** @internal */ @@ -2508,7 +2528,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase withMergeLogging(logLevel: string, options?: WithMergeLoggingOptions): TestVaultResourcePromise { const enableConsole = options?.enableConsole; const maxFiles = options?.maxFiles; - return new TestVaultResourcePromiseImpl(this._withMergeLoggingInternal(logLevel, enableConsole, maxFiles)); + return new TestVaultResourcePromiseImpl(this._withMergeLoggingInternal(logLevel, enableConsole, maxFiles), this._client); } /** @internal */ @@ -2527,7 +2547,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase withMergeLoggingPath(logLevel: string, logPath: string, options?: WithMergeLoggingPathOptions): TestVaultResourcePromise { const enableConsole = options?.enableConsole; const maxFiles = options?.maxFiles; - return new TestVaultResourcePromiseImpl(this._withMergeLoggingPathInternal(logLevel, logPath, enableConsole, maxFiles)); + return new TestVaultResourcePromiseImpl(this._withMergeLoggingPathInternal(logLevel, logPath, enableConsole, maxFiles), this._client); } /** @internal */ @@ -2542,7 +2562,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Configures a route */ withMergeRoute(path: string, method: string, handler: string, priority: number): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withMergeRouteInternal(path, method, handler, priority)); + return new TestVaultResourcePromiseImpl(this._withMergeRouteInternal(path, method, handler, priority), this._client); } /** @internal */ @@ -2557,7 +2577,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Configures a route with middleware */ withMergeRouteMiddleware(path: string, method: string, handler: string, priority: number, middleware: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withMergeRouteMiddlewareInternal(path, method, handler, priority, middleware)); + return new TestVaultResourcePromiseImpl(this._withMergeRouteMiddlewareInternal(path, method, handler, priority, middleware), this._client); } } @@ -2568,7 +2588,9 @@ class TestVaultResourceImpl extends ResourceBuilderBase * await builder.addSomething().withX().withY(); */ class TestVaultResourcePromiseImpl implements TestVaultResourcePromise { - constructor(private _promise: Promise) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: TestVaultResource) => TResult1 | PromiseLike) | null, @@ -2579,127 +2601,127 @@ class TestVaultResourcePromiseImpl implements TestVaultResourcePromise { /** Adds an optional string parameter */ withOptionalString(options?: WithOptionalStringOptions): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withOptionalString(options))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withOptionalString(options)), this._client); } /** Configures the resource with a DTO */ withConfig(config: TestConfigDto): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withConfig(config))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withConfig(config)), this._client); } /** Configures environment with callback (test version) */ testWithEnvironmentCallback(callback: (arg: TestEnvironmentContext) => Promise): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.testWithEnvironmentCallback(callback))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.testWithEnvironmentCallback(callback)), this._client); } /** Sets the created timestamp */ withCreatedAt(createdAt: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withCreatedAt(createdAt))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withCreatedAt(createdAt)), this._client); } /** Sets the modified timestamp */ withModifiedAt(modifiedAt: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withModifiedAt(modifiedAt))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withModifiedAt(modifiedAt)), this._client); } /** Sets the correlation ID */ withCorrelationId(correlationId: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withCorrelationId(correlationId))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withCorrelationId(correlationId)), this._client); } /** Configures with optional callback */ withOptionalCallback(options?: WithOptionalCallbackOptions): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withOptionalCallback(options))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withOptionalCallback(options)), this._client); } /** Sets the resource status */ withStatus(status: TestResourceStatus): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withStatus(status))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withStatus(status)), this._client); } /** Configures with nested DTO */ withNestedConfig(config: TestNestedDto): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withNestedConfig(config))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withNestedConfig(config)), this._client); } /** Adds validation callback */ withValidator(validator: (arg: TestResourceContext) => Promise): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withValidator(validator))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withValidator(validator)), this._client); } /** Waits for another resource (test version) */ - testWaitFor(dependency: Resource | ResourceWithConnectionString | ResourceWithEnvironment | TestDatabaseResource | TestRedisResource | TestVaultResource): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.testWaitFor(dependency))); + testWaitFor(dependency: Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.testWaitFor(dependency)), this._client); } /** Adds a dependency on another resource */ - withDependency(dependency: ResourceWithConnectionString | TestRedisResource): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withDependency(dependency))); + withDependency(dependency: Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withDependency(dependency)), this._client); } /** Adds a dependency from a string or another resource */ - withUnionDependency(dependency: string | ResourceWithConnectionString | TestRedisResource): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withUnionDependency(dependency))); + withUnionDependency(dependency: string | ResourceWithConnectionString | TestRedisResource | Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withUnionDependency(dependency)), this._client); } /** Sets the endpoints */ withEndpoints(endpoints: string[]): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withEndpoints(endpoints))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withEndpoints(endpoints)), this._client); } /** Sets environment variables */ withEnvironmentVariables(variables: Record): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentVariables(variables))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentVariables(variables)), this._client); } /** Performs a cancellable operation */ withCancellableOperation(operation: (arg: CancellationToken) => Promise): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withCancellableOperation(operation))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withCancellableOperation(operation)), this._client); } /** Configures vault using direct interface target */ withVaultDirect(option: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withVaultDirect(option))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withVaultDirect(option)), this._client); } /** Adds a label to the resource */ withMergeLabel(label: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabel(label))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabel(label)), this._client); } /** Adds a categorized label to the resource */ withMergeLabelCategorized(label: string, category: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabelCategorized(label, category))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabelCategorized(label, category)), this._client); } /** Configures a named endpoint */ withMergeEndpoint(endpointName: string, port: number): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpoint(endpointName, port))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpoint(endpointName, port)), this._client); } /** Configures a named endpoint with scheme */ withMergeEndpointScheme(endpointName: string, port: number, scheme: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpointScheme(endpointName, port, scheme))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpointScheme(endpointName, port, scheme)), this._client); } /** Configures resource logging */ withMergeLogging(logLevel: string, options?: WithMergeLoggingOptions): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withMergeLogging(logLevel, options))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withMergeLogging(logLevel, options)), this._client); } /** Configures resource logging with file path */ withMergeLoggingPath(logLevel: string, logPath: string, options?: WithMergeLoggingPathOptions): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withMergeLoggingPath(logLevel, logPath, options))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withMergeLoggingPath(logLevel, logPath, options)), this._client); } /** Configures a route */ withMergeRoute(path: string, method: string, handler: string, priority: number): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withMergeRoute(path, method, handler, priority))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withMergeRoute(path, method, handler, priority)), this._client); } /** Configures a route with middleware */ withMergeRouteMiddleware(path: string, method: string, handler: string, priority: number, middleware: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withMergeRouteMiddleware(path, method, handler, priority, middleware))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withMergeRouteMiddleware(path, method, handler, priority, middleware)), this._client); } } @@ -2719,9 +2741,9 @@ export interface Resource { withStatus(status: TestResourceStatus): ResourcePromise; withNestedConfig(config: TestNestedDto): ResourcePromise; withValidator(validator: (arg: TestResourceContext) => Promise): ResourcePromise; - testWaitFor(dependency: Resource | ResourceWithConnectionString | ResourceWithEnvironment | TestDatabaseResource | TestRedisResource | TestVaultResource): ResourcePromise; - withDependency(dependency: ResourceWithConnectionString | TestRedisResource): ResourcePromise; - withUnionDependency(dependency: string | ResourceWithConnectionString | TestRedisResource): ResourcePromise; + testWaitFor(dependency: Awaitable): ResourcePromise; + withDependency(dependency: Awaitable): ResourcePromise; + withUnionDependency(dependency: string | ResourceWithConnectionString | TestRedisResource | Awaitable): ResourcePromise; withEndpoints(endpoints: string[]): ResourcePromise; withCancellableOperation(operation: (arg: CancellationToken) => Promise): ResourcePromise; withMergeLabel(label: string): ResourcePromise; @@ -2744,9 +2766,9 @@ export interface ResourcePromise extends PromiseLike { withStatus(status: TestResourceStatus): ResourcePromise; withNestedConfig(config: TestNestedDto): ResourcePromise; withValidator(validator: (arg: TestResourceContext) => Promise): ResourcePromise; - testWaitFor(dependency: Resource | ResourceWithConnectionString | ResourceWithEnvironment | TestDatabaseResource | TestRedisResource | TestVaultResource): ResourcePromise; - withDependency(dependency: ResourceWithConnectionString | TestRedisResource): ResourcePromise; - withUnionDependency(dependency: string | ResourceWithConnectionString | TestRedisResource): ResourcePromise; + testWaitFor(dependency: Awaitable): ResourcePromise; + withDependency(dependency: Awaitable): ResourcePromise; + withUnionDependency(dependency: string | ResourceWithConnectionString | TestRedisResource | Awaitable): ResourcePromise; withEndpoints(endpoints: string[]): ResourcePromise; withCancellableOperation(operation: (arg: CancellationToken) => Promise): ResourcePromise; withMergeLabel(label: string): ResourcePromise; @@ -2784,7 +2806,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou withOptionalString(options?: WithOptionalStringOptions): ResourcePromise { const value = options?.value; const enabled = options?.enabled; - return new ResourcePromiseImpl(this._withOptionalStringInternal(value, enabled)); + return new ResourcePromiseImpl(this._withOptionalStringInternal(value, enabled), this._client); } /** @internal */ @@ -2799,7 +2821,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Configures the resource with a DTO */ withConfig(config: TestConfigDto): ResourcePromise { - return new ResourcePromiseImpl(this._withConfigInternal(config)); + return new ResourcePromiseImpl(this._withConfigInternal(config), this._client); } /** @internal */ @@ -2814,7 +2836,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Sets the created timestamp */ withCreatedAt(createdAt: string): ResourcePromise { - return new ResourcePromiseImpl(this._withCreatedAtInternal(createdAt)); + return new ResourcePromiseImpl(this._withCreatedAtInternal(createdAt), this._client); } /** @internal */ @@ -2829,7 +2851,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Sets the modified timestamp */ withModifiedAt(modifiedAt: string): ResourcePromise { - return new ResourcePromiseImpl(this._withModifiedAtInternal(modifiedAt)); + return new ResourcePromiseImpl(this._withModifiedAtInternal(modifiedAt), this._client); } /** @internal */ @@ -2844,7 +2866,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Sets the correlation ID */ withCorrelationId(correlationId: string): ResourcePromise { - return new ResourcePromiseImpl(this._withCorrelationIdInternal(correlationId)); + return new ResourcePromiseImpl(this._withCorrelationIdInternal(correlationId), this._client); } /** @internal */ @@ -2866,7 +2888,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Configures with optional callback */ withOptionalCallback(options?: WithOptionalCallbackOptions): ResourcePromise { const callback = options?.callback; - return new ResourcePromiseImpl(this._withOptionalCallbackInternal(callback)); + return new ResourcePromiseImpl(this._withOptionalCallbackInternal(callback), this._client); } /** @internal */ @@ -2881,7 +2903,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Sets the resource status */ withStatus(status: TestResourceStatus): ResourcePromise { - return new ResourcePromiseImpl(this._withStatusInternal(status)); + return new ResourcePromiseImpl(this._withStatusInternal(status), this._client); } /** @internal */ @@ -2896,7 +2918,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Configures with nested DTO */ withNestedConfig(config: TestNestedDto): ResourcePromise { - return new ResourcePromiseImpl(this._withNestedConfigInternal(config)); + return new ResourcePromiseImpl(this._withNestedConfigInternal(config), this._client); } /** @internal */ @@ -2916,11 +2938,12 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Adds validation callback */ withValidator(validator: (arg: TestResourceContext) => Promise): ResourcePromise { - return new ResourcePromiseImpl(this._withValidatorInternal(validator)); + return new ResourcePromiseImpl(this._withValidatorInternal(validator), this._client); } /** @internal */ - private async _testWaitForInternal(dependency: Resource | ResourceWithConnectionString | ResourceWithEnvironment | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _testWaitForInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/testWaitFor', @@ -2930,12 +2953,13 @@ class ResourceImpl extends ResourceBuilderBase implements Resou } /** Waits for another resource (test version) */ - testWaitFor(dependency: Resource | ResourceWithConnectionString | ResourceWithEnvironment | TestDatabaseResource | TestRedisResource | TestVaultResource): ResourcePromise { - return new ResourcePromiseImpl(this._testWaitForInternal(dependency)); + testWaitFor(dependency: Awaitable): ResourcePromise { + return new ResourcePromiseImpl(this._testWaitForInternal(dependency), this._client); } /** @internal */ - private async _withDependencyInternal(dependency: ResourceWithConnectionString | TestRedisResource): Promise { + private async _withDependencyInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/withDependency', @@ -2945,12 +2969,13 @@ class ResourceImpl extends ResourceBuilderBase implements Resou } /** Adds a dependency on another resource */ - withDependency(dependency: ResourceWithConnectionString | TestRedisResource): ResourcePromise { - return new ResourcePromiseImpl(this._withDependencyInternal(dependency)); + withDependency(dependency: Awaitable): ResourcePromise { + return new ResourcePromiseImpl(this._withDependencyInternal(dependency), this._client); } /** @internal */ - private async _withUnionDependencyInternal(dependency: string | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withUnionDependencyInternal(dependency: string | ResourceWithConnectionString | TestRedisResource | Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/withUnionDependency', @@ -2960,8 +2985,8 @@ class ResourceImpl extends ResourceBuilderBase implements Resou } /** Adds a dependency from a string or another resource */ - withUnionDependency(dependency: string | ResourceWithConnectionString | TestRedisResource): ResourcePromise { - return new ResourcePromiseImpl(this._withUnionDependencyInternal(dependency)); + withUnionDependency(dependency: string | ResourceWithConnectionString | TestRedisResource | Awaitable): ResourcePromise { + return new ResourcePromiseImpl(this._withUnionDependencyInternal(dependency), this._client); } /** @internal */ @@ -2976,7 +3001,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Sets the endpoints */ withEndpoints(endpoints: string[]): ResourcePromise { - return new ResourcePromiseImpl(this._withEndpointsInternal(endpoints)); + return new ResourcePromiseImpl(this._withEndpointsInternal(endpoints), this._client); } /** @internal */ @@ -2995,7 +3020,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Performs a cancellable operation */ withCancellableOperation(operation: (arg: CancellationToken) => Promise): ResourcePromise { - return new ResourcePromiseImpl(this._withCancellableOperationInternal(operation)); + return new ResourcePromiseImpl(this._withCancellableOperationInternal(operation), this._client); } /** @internal */ @@ -3010,7 +3035,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Adds a label to the resource */ withMergeLabel(label: string): ResourcePromise { - return new ResourcePromiseImpl(this._withMergeLabelInternal(label)); + return new ResourcePromiseImpl(this._withMergeLabelInternal(label), this._client); } /** @internal */ @@ -3025,7 +3050,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Adds a categorized label to the resource */ withMergeLabelCategorized(label: string, category: string): ResourcePromise { - return new ResourcePromiseImpl(this._withMergeLabelCategorizedInternal(label, category)); + return new ResourcePromiseImpl(this._withMergeLabelCategorizedInternal(label, category), this._client); } /** @internal */ @@ -3040,7 +3065,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Configures a named endpoint */ withMergeEndpoint(endpointName: string, port: number): ResourcePromise { - return new ResourcePromiseImpl(this._withMergeEndpointInternal(endpointName, port)); + return new ResourcePromiseImpl(this._withMergeEndpointInternal(endpointName, port), this._client); } /** @internal */ @@ -3055,7 +3080,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Configures a named endpoint with scheme */ withMergeEndpointScheme(endpointName: string, port: number, scheme: string): ResourcePromise { - return new ResourcePromiseImpl(this._withMergeEndpointSchemeInternal(endpointName, port, scheme)); + return new ResourcePromiseImpl(this._withMergeEndpointSchemeInternal(endpointName, port, scheme), this._client); } /** @internal */ @@ -3074,7 +3099,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou withMergeLogging(logLevel: string, options?: WithMergeLoggingOptions): ResourcePromise { const enableConsole = options?.enableConsole; const maxFiles = options?.maxFiles; - return new ResourcePromiseImpl(this._withMergeLoggingInternal(logLevel, enableConsole, maxFiles)); + return new ResourcePromiseImpl(this._withMergeLoggingInternal(logLevel, enableConsole, maxFiles), this._client); } /** @internal */ @@ -3093,7 +3118,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou withMergeLoggingPath(logLevel: string, logPath: string, options?: WithMergeLoggingPathOptions): ResourcePromise { const enableConsole = options?.enableConsole; const maxFiles = options?.maxFiles; - return new ResourcePromiseImpl(this._withMergeLoggingPathInternal(logLevel, logPath, enableConsole, maxFiles)); + return new ResourcePromiseImpl(this._withMergeLoggingPathInternal(logLevel, logPath, enableConsole, maxFiles), this._client); } /** @internal */ @@ -3108,7 +3133,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Configures a route */ withMergeRoute(path: string, method: string, handler: string, priority: number): ResourcePromise { - return new ResourcePromiseImpl(this._withMergeRouteInternal(path, method, handler, priority)); + return new ResourcePromiseImpl(this._withMergeRouteInternal(path, method, handler, priority), this._client); } /** @internal */ @@ -3123,7 +3148,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Configures a route with middleware */ withMergeRouteMiddleware(path: string, method: string, handler: string, priority: number, middleware: string): ResourcePromise { - return new ResourcePromiseImpl(this._withMergeRouteMiddlewareInternal(path, method, handler, priority, middleware)); + return new ResourcePromiseImpl(this._withMergeRouteMiddlewareInternal(path, method, handler, priority, middleware), this._client); } } @@ -3134,7 +3159,9 @@ class ResourceImpl extends ResourceBuilderBase implements Resou * await builder.addSomething().withX().withY(); */ class ResourcePromiseImpl implements ResourcePromise { - constructor(private _promise: Promise) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: Resource) => TResult1 | PromiseLike) | null, @@ -3145,112 +3172,112 @@ class ResourcePromiseImpl implements ResourcePromise { /** Adds an optional string parameter */ withOptionalString(options?: WithOptionalStringOptions): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withOptionalString(options))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withOptionalString(options)), this._client); } /** Configures the resource with a DTO */ withConfig(config: TestConfigDto): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withConfig(config))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withConfig(config)), this._client); } /** Sets the created timestamp */ withCreatedAt(createdAt: string): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withCreatedAt(createdAt))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withCreatedAt(createdAt)), this._client); } /** Sets the modified timestamp */ withModifiedAt(modifiedAt: string): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withModifiedAt(modifiedAt))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withModifiedAt(modifiedAt)), this._client); } /** Sets the correlation ID */ withCorrelationId(correlationId: string): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withCorrelationId(correlationId))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withCorrelationId(correlationId)), this._client); } /** Configures with optional callback */ withOptionalCallback(options?: WithOptionalCallbackOptions): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withOptionalCallback(options))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withOptionalCallback(options)), this._client); } /** Sets the resource status */ withStatus(status: TestResourceStatus): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withStatus(status))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withStatus(status)), this._client); } /** Configures with nested DTO */ withNestedConfig(config: TestNestedDto): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withNestedConfig(config))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withNestedConfig(config)), this._client); } /** Adds validation callback */ withValidator(validator: (arg: TestResourceContext) => Promise): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withValidator(validator))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withValidator(validator)), this._client); } /** Waits for another resource (test version) */ - testWaitFor(dependency: Resource | ResourceWithConnectionString | ResourceWithEnvironment | TestDatabaseResource | TestRedisResource | TestVaultResource): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.testWaitFor(dependency))); + testWaitFor(dependency: Awaitable): ResourcePromise { + return new ResourcePromiseImpl(this._promise.then(obj => obj.testWaitFor(dependency)), this._client); } /** Adds a dependency on another resource */ - withDependency(dependency: ResourceWithConnectionString | TestRedisResource): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withDependency(dependency))); + withDependency(dependency: Awaitable): ResourcePromise { + return new ResourcePromiseImpl(this._promise.then(obj => obj.withDependency(dependency)), this._client); } /** Adds a dependency from a string or another resource */ - withUnionDependency(dependency: string | ResourceWithConnectionString | TestRedisResource): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withUnionDependency(dependency))); + withUnionDependency(dependency: string | ResourceWithConnectionString | TestRedisResource | Awaitable): ResourcePromise { + return new ResourcePromiseImpl(this._promise.then(obj => obj.withUnionDependency(dependency)), this._client); } /** Sets the endpoints */ withEndpoints(endpoints: string[]): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withEndpoints(endpoints))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withEndpoints(endpoints)), this._client); } /** Performs a cancellable operation */ withCancellableOperation(operation: (arg: CancellationToken) => Promise): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withCancellableOperation(operation))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withCancellableOperation(operation)), this._client); } /** Adds a label to the resource */ withMergeLabel(label: string): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabel(label))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabel(label)), this._client); } /** Adds a categorized label to the resource */ withMergeLabelCategorized(label: string, category: string): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabelCategorized(label, category))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabelCategorized(label, category)), this._client); } /** Configures a named endpoint */ withMergeEndpoint(endpointName: string, port: number): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpoint(endpointName, port))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpoint(endpointName, port)), this._client); } /** Configures a named endpoint with scheme */ withMergeEndpointScheme(endpointName: string, port: number, scheme: string): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpointScheme(endpointName, port, scheme))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpointScheme(endpointName, port, scheme)), this._client); } /** Configures resource logging */ withMergeLogging(logLevel: string, options?: WithMergeLoggingOptions): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withMergeLogging(logLevel, options))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withMergeLogging(logLevel, options)), this._client); } /** Configures resource logging with file path */ withMergeLoggingPath(logLevel: string, logPath: string, options?: WithMergeLoggingPathOptions): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withMergeLoggingPath(logLevel, logPath, options))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withMergeLoggingPath(logLevel, logPath, options)), this._client); } /** Configures a route */ withMergeRoute(path: string, method: string, handler: string, priority: number): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withMergeRoute(path, method, handler, priority))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withMergeRoute(path, method, handler, priority)), this._client); } /** Configures a route with middleware */ withMergeRouteMiddleware(path: string, method: string, handler: string, priority: number, middleware: string): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withMergeRouteMiddleware(path, method, handler, priority, middleware))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withMergeRouteMiddleware(path, method, handler, priority, middleware)), this._client); } } @@ -3291,7 +3318,7 @@ class ResourceWithConnectionStringImpl extends ResourceBuilderBase) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: ResourceWithConnectionString) => TResult1 | PromiseLike) | null, @@ -3328,12 +3357,12 @@ class ResourceWithConnectionStringPromiseImpl implements ResourceWithConnectionS /** Sets the connection string using a reference expression */ withConnectionString(connectionString: ReferenceExpression): ResourceWithConnectionStringPromise { - return new ResourceWithConnectionStringPromiseImpl(this._promise.then(obj => obj.withConnectionString(connectionString))); + return new ResourceWithConnectionStringPromiseImpl(this._promise.then(obj => obj.withConnectionString(connectionString)), this._client); } /** Sets connection string using direct interface target */ withConnectionStringDirect(connectionString: string): ResourceWithConnectionStringPromise { - return new ResourceWithConnectionStringPromiseImpl(this._promise.then(obj => obj.withConnectionStringDirect(connectionString))); + return new ResourceWithConnectionStringPromiseImpl(this._promise.then(obj => obj.withConnectionStringDirect(connectionString)), this._client); } } @@ -3379,7 +3408,7 @@ class ResourceWithEnvironmentImpl extends ResourceBuilderBase Promise): ResourceWithEnvironmentPromise { - return new ResourceWithEnvironmentPromiseImpl(this._testWithEnvironmentCallbackInternal(callback)); + return new ResourceWithEnvironmentPromiseImpl(this._testWithEnvironmentCallbackInternal(callback), this._client); } /** @internal */ @@ -3394,7 +3423,7 @@ class ResourceWithEnvironmentImpl extends ResourceBuilderBase): ResourceWithEnvironmentPromise { - return new ResourceWithEnvironmentPromiseImpl(this._withEnvironmentVariablesInternal(variables)); + return new ResourceWithEnvironmentPromiseImpl(this._withEnvironmentVariablesInternal(variables), this._client); } } @@ -3405,7 +3434,9 @@ class ResourceWithEnvironmentImpl extends ResourceBuilderBase) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: ResourceWithEnvironment) => TResult1 | PromiseLike) | null, @@ -3416,12 +3447,12 @@ class ResourceWithEnvironmentPromiseImpl implements ResourceWithEnvironmentPromi /** Configures environment with callback (test version) */ testWithEnvironmentCallback(callback: (arg: TestEnvironmentContext) => Promise): ResourceWithEnvironmentPromise { - return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.testWithEnvironmentCallback(callback))); + return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.testWithEnvironmentCallback(callback)), this._client); } /** Sets environment variables */ withEnvironmentVariables(variables: Record): ResourceWithEnvironmentPromise { - return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withEnvironmentVariables(variables))); + return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withEnvironmentVariables(variables)), this._client); } } @@ -3491,7 +3522,7 @@ export async function createBuilder(options?: CreateBuilderOptions): Promise; } export interface AddDockerfileOptions { @@ -635,7 +638,7 @@ export interface WithHttpProbeOptions { } export interface WithHttpsDeveloperCertificateOptions { - password?: ParameterResource; + password?: Awaitable; } export interface WithHttpsEndpointOptions { @@ -877,11 +880,11 @@ export interface CommandLineArgsCallbackContext { }; executionContext: { get: () => Promise; - set: (value: DistributedApplicationExecutionContext) => Promise; + set: (value: Awaitable) => Promise; }; logger: { get: () => Promise; - set: (value: Logger) => Promise; + set: (value: Awaitable) => Promise; }; resource: { get: () => Promise; @@ -935,7 +938,8 @@ class CommandLineArgsCallbackContextImpl implements CommandLineArgsCallbackConte ); return new DistributedApplicationExecutionContextImpl(handle, this._client); }, - set: async (value: DistributedApplicationExecutionContext): Promise => { + set: async (value: Awaitable): Promise => { + value = isPromiseLike(value) ? await value : value; await this._client.invokeCapability( 'Aspire.Hosting.ApplicationModel/CommandLineArgsCallbackContext.setExecutionContext', { context: this._handle, value } @@ -952,7 +956,8 @@ class CommandLineArgsCallbackContextImpl implements CommandLineArgsCallbackConte ); return new LoggerImpl(handle, this._client); }, - set: async (value: Logger): Promise => { + set: async (value: Awaitable): Promise => { + value = isPromiseLike(value) ? await value : value; await this._client.invokeCapability( 'Aspire.Hosting.ApplicationModel/CommandLineArgsCallbackContext.setLogger', { context: this._handle, value } @@ -1064,7 +1069,7 @@ class DistributedApplicationImpl implements DistributedApplication { run(options?: RunOptions): DistributedApplicationPromise { const cancellationToken = options?.cancellationToken; - return new DistributedApplicationPromiseImpl(this._runInternal(cancellationToken)); + return new DistributedApplicationPromiseImpl(this._runInternal(cancellationToken), this._client); } } @@ -1073,7 +1078,9 @@ class DistributedApplicationImpl implements DistributedApplication { * Thenable wrapper for DistributedApplication that enables fluent chaining. */ class DistributedApplicationPromiseImpl implements DistributedApplicationPromise { - constructor(private _promise: Promise) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: DistributedApplication) => TResult1 | PromiseLike) | null, @@ -1084,7 +1091,7 @@ class DistributedApplicationPromiseImpl implements DistributedApplicationPromise /** Runs the distributed application */ run(options?: RunOptions): DistributedApplicationPromise { - return new DistributedApplicationPromiseImpl(this._promise.then(obj => obj.run(options))); + return new DistributedApplicationPromiseImpl(this._promise.then(obj => obj.run(options)), this._client); } } @@ -1234,7 +1241,7 @@ class DistributedApplicationModelImpl implements DistributedApplicationModel { } findResourceByName(name: string): ResourcePromise { - return new ResourcePromiseImpl(this._findResourceByNameInternal(name)); + return new ResourcePromiseImpl(this._findResourceByNameInternal(name), this._client); } } @@ -1243,7 +1250,9 @@ class DistributedApplicationModelImpl implements DistributedApplicationModel { * Thenable wrapper for DistributedApplicationModel that enables fluent chaining. */ class DistributedApplicationModelPromiseImpl implements DistributedApplicationModelPromise { - constructor(private _promise: Promise) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: DistributedApplicationModel) => TResult1 | PromiseLike) | null, @@ -1259,7 +1268,7 @@ class DistributedApplicationModelPromiseImpl implements DistributedApplicationMo /** Finds a resource by name */ findResourceByName(name: string): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.findResourceByName(name))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.findResourceByName(name)), this._client); } } @@ -1508,7 +1517,9 @@ class EndpointReferenceImpl implements EndpointReference { * Thenable wrapper for EndpointReference that enables fluent chaining. */ class EndpointReferencePromiseImpl implements EndpointReferencePromise { - constructor(private _promise: Promise) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: EndpointReference) => TResult1 | PromiseLike) | null, @@ -1604,7 +1615,7 @@ export interface EnvironmentCallbackContext { }; logger: { get: () => Promise; - set: (value: Logger) => Promise; + set: (value: Awaitable) => Promise; }; resource: { get: () => Promise; @@ -1661,7 +1672,8 @@ class EnvironmentCallbackContextImpl implements EnvironmentCallbackContext { ); return new LoggerImpl(handle, this._client); }, - set: async (value: Logger): Promise => { + set: async (value: Awaitable): Promise => { + value = isPromiseLike(value) ? await value : value; await this._client.invokeCapability( 'Aspire.Hosting.ApplicationModel/EnvironmentCallbackContext.setLogger', { context: this._handle, value } @@ -1701,7 +1713,7 @@ export interface ExecuteCommandContext { toJSON(): MarshalledHandle; serviceProvider: { get: () => Promise; - set: (value: ServiceProvider) => Promise; + set: (value: Awaitable) => Promise; }; resourceName: { get: () => Promise; @@ -1713,7 +1725,7 @@ export interface ExecuteCommandContext { }; logger: { get: () => Promise; - set: (value: Logger) => Promise; + set: (value: Awaitable) => Promise; }; } @@ -1739,7 +1751,8 @@ class ExecuteCommandContextImpl implements ExecuteCommandContext { ); return new ServiceProviderImpl(handle, this._client); }, - set: async (value: ServiceProvider): Promise => { + set: async (value: Awaitable): Promise => { + value = isPromiseLike(value) ? await value : value; await this._client.invokeCapability( 'Aspire.Hosting.ApplicationModel/ExecuteCommandContext.setServiceProvider', { context: this._handle, value } @@ -1789,7 +1802,8 @@ class ExecuteCommandContextImpl implements ExecuteCommandContext { ); return new LoggerImpl(handle, this._client); }, - set: async (value: Logger): Promise => { + set: async (value: Awaitable): Promise => { + value = isPromiseLike(value) ? await value : value; await this._client.invokeCapability( 'Aspire.Hosting.ApplicationModel/ExecuteCommandContext.setLogger', { context: this._handle, value } @@ -1900,7 +1914,7 @@ export interface PipelineConfigurationContext { toJSON(): MarshalledHandle; services: { get: () => Promise; - set: (value: ServiceProvider) => Promise; + set: (value: Awaitable) => Promise; }; steps: { get: () => Promise; @@ -1908,7 +1922,7 @@ export interface PipelineConfigurationContext { }; model: { get: () => Promise; - set: (value: DistributedApplicationModel) => Promise; + set: (value: Awaitable) => Promise; }; getStepsByTag(tag: string): Promise; } @@ -1939,7 +1953,8 @@ class PipelineConfigurationContextImpl implements PipelineConfigurationContext { ); return new ServiceProviderImpl(handle, this._client); }, - set: async (value: ServiceProvider): Promise => { + set: async (value: Awaitable): Promise => { + value = isPromiseLike(value) ? await value : value; await this._client.invokeCapability( 'Aspire.Hosting.Pipelines/PipelineConfigurationContext.setServices', { context: this._handle, value } @@ -1972,7 +1987,8 @@ class PipelineConfigurationContextImpl implements PipelineConfigurationContext { ); return new DistributedApplicationModelImpl(handle, this._client); }, - set: async (value: DistributedApplicationModel): Promise => { + set: async (value: Awaitable): Promise => { + value = isPromiseLike(value) ? await value : value; await this._client.invokeCapability( 'Aspire.Hosting.Pipelines/PipelineConfigurationContext.setModel', { context: this._handle, value } @@ -1995,7 +2011,9 @@ class PipelineConfigurationContextImpl implements PipelineConfigurationContext { * Thenable wrapper for PipelineConfigurationContext that enables fluent chaining. */ class PipelineConfigurationContextPromiseImpl implements PipelineConfigurationContextPromise { - constructor(private _promise: Promise) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: PipelineConfigurationContext) => TResult1 | PromiseLike) | null, @@ -2144,7 +2162,7 @@ export interface PipelineStep { readonly tags: AspireList; resource: { get: () => Promise; - set: (value: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource) => Promise; + set: (value: Awaitable) => Promise; }; dependsOn(stepName: string): PipelineStepPromise; requiredBy(stepName: string): PipelineStepPromise; @@ -2251,7 +2269,8 @@ class PipelineStepImpl implements PipelineStep { ); return new ResourceImpl(handle, this._client); }, - set: async (value: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise => { + set: async (value: Awaitable): Promise => { + value = isPromiseLike(value) ? await value : value; await this._client.invokeCapability( 'Aspire.Hosting.Pipelines/PipelineStep.setResource', { context: this._handle, value } @@ -2271,7 +2290,7 @@ class PipelineStepImpl implements PipelineStep { } dependsOn(stepName: string): PipelineStepPromise { - return new PipelineStepPromiseImpl(this._dependsOnInternal(stepName)); + return new PipelineStepPromiseImpl(this._dependsOnInternal(stepName), this._client); } /** Specifies that another step requires this step by name */ @@ -2286,7 +2305,7 @@ class PipelineStepImpl implements PipelineStep { } requiredBy(stepName: string): PipelineStepPromise { - return new PipelineStepPromiseImpl(this._requiredByInternal(stepName)); + return new PipelineStepPromiseImpl(this._requiredByInternal(stepName), this._client); } } @@ -2295,7 +2314,9 @@ class PipelineStepImpl implements PipelineStep { * Thenable wrapper for PipelineStep that enables fluent chaining. */ class PipelineStepPromiseImpl implements PipelineStepPromise { - constructor(private _promise: Promise) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: PipelineStep) => TResult1 | PromiseLike) | null, @@ -2306,12 +2327,12 @@ class PipelineStepPromiseImpl implements PipelineStepPromise { /** Adds a dependency on another step by name */ dependsOn(stepName: string): PipelineStepPromise { - return new PipelineStepPromiseImpl(this._promise.then(obj => obj.dependsOn(stepName))); + return new PipelineStepPromiseImpl(this._promise.then(obj => obj.dependsOn(stepName)), this._client); } /** Specifies that another step requires this step by name */ requiredBy(stepName: string): PipelineStepPromise { - return new PipelineStepPromiseImpl(this._promise.then(obj => obj.requiredBy(stepName))); + return new PipelineStepPromiseImpl(this._promise.then(obj => obj.requiredBy(stepName)), this._client); } } @@ -2324,11 +2345,11 @@ export interface PipelineStepContext { toJSON(): MarshalledHandle; pipelineContext: { get: () => Promise; - set: (value: PipelineContext) => Promise; + set: (value: Awaitable) => Promise; }; reportingStep: { get: () => Promise; - set: (value: ReportingStep) => Promise; + set: (value: Awaitable) => Promise; }; model: { get: () => Promise; @@ -2372,7 +2393,8 @@ class PipelineStepContextImpl implements PipelineStepContext { ); return new PipelineContextImpl(handle, this._client); }, - set: async (value: PipelineContext): Promise => { + set: async (value: Awaitable): Promise => { + value = isPromiseLike(value) ? await value : value; await this._client.invokeCapability( 'Aspire.Hosting.Pipelines/PipelineStepContext.setPipelineContext', { context: this._handle, value } @@ -2389,7 +2411,8 @@ class PipelineStepContextImpl implements PipelineStepContext { ); return new ReportingStepImpl(handle, this._client); }, - set: async (value: ReportingStep): Promise => { + set: async (value: Awaitable): Promise => { + value = isPromiseLike(value) ? await value : value; await this._client.invokeCapability( 'Aspire.Hosting.Pipelines/PipelineStepContext.setReportingStep', { context: this._handle, value } @@ -2473,11 +2496,11 @@ export interface PipelineStepFactoryContext { toJSON(): MarshalledHandle; pipelineContext: { get: () => Promise; - set: (value: PipelineContext) => Promise; + set: (value: Awaitable) => Promise; }; resource: { get: () => Promise; - set: (value: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource) => Promise; + set: (value: Awaitable) => Promise; }; } @@ -2503,7 +2526,8 @@ class PipelineStepFactoryContextImpl implements PipelineStepFactoryContext { ); return new PipelineContextImpl(handle, this._client); }, - set: async (value: PipelineContext): Promise => { + set: async (value: Awaitable): Promise => { + value = isPromiseLike(value) ? await value : value; await this._client.invokeCapability( 'Aspire.Hosting.Pipelines/PipelineStepFactoryContext.setPipelineContext', { context: this._handle, value } @@ -2520,7 +2544,8 @@ class PipelineStepFactoryContextImpl implements PipelineStepFactoryContext { ); return new ResourceImpl(handle, this._client); }, - set: async (value: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise => { + set: async (value: Awaitable): Promise => { + value = isPromiseLike(value) ? await value : value; await this._client.invokeCapability( 'Aspire.Hosting.Pipelines/PipelineStepFactoryContext.setResource', { context: this._handle, value } @@ -2570,7 +2595,7 @@ class PipelineSummaryImpl implements PipelineSummary { } add(key: string, value: string): PipelineSummaryPromise { - return new PipelineSummaryPromiseImpl(this._addInternal(key, value)); + return new PipelineSummaryPromiseImpl(this._addInternal(key, value), this._client); } /** Adds a Markdown-formatted value to the pipeline summary */ @@ -2585,7 +2610,7 @@ class PipelineSummaryImpl implements PipelineSummary { } addMarkdown(key: string, markdownString: string): PipelineSummaryPromise { - return new PipelineSummaryPromiseImpl(this._addMarkdownInternal(key, markdownString)); + return new PipelineSummaryPromiseImpl(this._addMarkdownInternal(key, markdownString), this._client); } } @@ -2594,7 +2619,9 @@ class PipelineSummaryImpl implements PipelineSummary { * Thenable wrapper for PipelineSummary that enables fluent chaining. */ class PipelineSummaryPromiseImpl implements PipelineSummaryPromise { - constructor(private _promise: Promise) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: PipelineSummary) => TResult1 | PromiseLike) | null, @@ -2605,12 +2632,12 @@ class PipelineSummaryPromiseImpl implements PipelineSummaryPromise { /** Invokes the Add method */ add(key: string, value: string): PipelineSummaryPromise { - return new PipelineSummaryPromiseImpl(this._promise.then(obj => obj.add(key, value))); + return new PipelineSummaryPromiseImpl(this._promise.then(obj => obj.add(key, value)), this._client); } /** Adds a Markdown-formatted value to the pipeline summary */ addMarkdown(key: string, markdownString: string): PipelineSummaryPromise { - return new PipelineSummaryPromiseImpl(this._promise.then(obj => obj.addMarkdown(key, markdownString))); + return new PipelineSummaryPromiseImpl(this._promise.then(obj => obj.addMarkdown(key, markdownString)), this._client); } } @@ -2755,7 +2782,7 @@ class ReferenceExpressionBuilderImpl implements ReferenceExpressionBuilder { } appendLiteral(value: string): ReferenceExpressionBuilderPromise { - return new ReferenceExpressionBuilderPromiseImpl(this._appendLiteralInternal(value)); + return new ReferenceExpressionBuilderPromiseImpl(this._appendLiteralInternal(value), this._client); } /** Appends a formatted string value to the reference expression */ @@ -2772,7 +2799,7 @@ class ReferenceExpressionBuilderImpl implements ReferenceExpressionBuilder { appendFormatted(value: string, options?: AppendFormattedOptions): ReferenceExpressionBuilderPromise { const format = options?.format; - return new ReferenceExpressionBuilderPromiseImpl(this._appendFormattedInternal(value, format)); + return new ReferenceExpressionBuilderPromiseImpl(this._appendFormattedInternal(value, format), this._client); } /** Appends a value provider to the reference expression */ @@ -2789,7 +2816,7 @@ class ReferenceExpressionBuilderImpl implements ReferenceExpressionBuilder { appendValueProvider(valueProvider: any, options?: AppendValueProviderOptions): ReferenceExpressionBuilderPromise { const format = options?.format; - return new ReferenceExpressionBuilderPromiseImpl(this._appendValueProviderInternal(valueProvider, format)); + return new ReferenceExpressionBuilderPromiseImpl(this._appendValueProviderInternal(valueProvider, format), this._client); } /** Builds the reference expression */ @@ -2807,7 +2834,9 @@ class ReferenceExpressionBuilderImpl implements ReferenceExpressionBuilder { * Thenable wrapper for ReferenceExpressionBuilder that enables fluent chaining. */ class ReferenceExpressionBuilderPromiseImpl implements ReferenceExpressionBuilderPromise { - constructor(private _promise: Promise) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: ReferenceExpressionBuilder) => TResult1 | PromiseLike) | null, @@ -2818,17 +2847,17 @@ class ReferenceExpressionBuilderPromiseImpl implements ReferenceExpressionBuilde /** Appends a literal string to the reference expression */ appendLiteral(value: string): ReferenceExpressionBuilderPromise { - return new ReferenceExpressionBuilderPromiseImpl(this._promise.then(obj => obj.appendLiteral(value))); + return new ReferenceExpressionBuilderPromiseImpl(this._promise.then(obj => obj.appendLiteral(value)), this._client); } /** Appends a formatted string value to the reference expression */ appendFormatted(value: string, options?: AppendFormattedOptions): ReferenceExpressionBuilderPromise { - return new ReferenceExpressionBuilderPromiseImpl(this._promise.then(obj => obj.appendFormatted(value, options))); + return new ReferenceExpressionBuilderPromiseImpl(this._promise.then(obj => obj.appendFormatted(value, options)), this._client); } /** Appends a value provider to the reference expression */ appendValueProvider(valueProvider: any, options?: AppendValueProviderOptions): ReferenceExpressionBuilderPromise { - return new ReferenceExpressionBuilderPromiseImpl(this._promise.then(obj => obj.appendValueProvider(valueProvider, options))); + return new ReferenceExpressionBuilderPromiseImpl(this._promise.then(obj => obj.appendValueProvider(valueProvider, options)), this._client); } /** Builds the reference expression */ @@ -2895,12 +2924,12 @@ class ResourceEndpointsAllocatedEventImpl implements ResourceEndpointsAllocatedE export interface ResourceLoggerService { toJSON(): MarshalledHandle; - completeLog(resource: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ResourceLoggerServicePromise; + completeLog(resource: Awaitable): ResourceLoggerServicePromise; completeLogByName(resourceName: string): ResourceLoggerServicePromise; } export interface ResourceLoggerServicePromise extends PromiseLike { - completeLog(resource: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ResourceLoggerServicePromise; + completeLog(resource: Awaitable): ResourceLoggerServicePromise; completeLogByName(resourceName: string): ResourceLoggerServicePromise; } @@ -2919,7 +2948,8 @@ class ResourceLoggerServiceImpl implements ResourceLoggerService { /** Completes the log stream for a resource */ /** @internal */ - async _completeLogInternal(resource: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + async _completeLogInternal(resource: Awaitable): Promise { + resource = isPromiseLike(resource) ? await resource : resource; const rpcArgs: Record = { loggerService: this._handle, resource }; await this._client.invokeCapability( 'Aspire.Hosting/completeLog', @@ -2928,8 +2958,8 @@ class ResourceLoggerServiceImpl implements ResourceLoggerService { return this; } - completeLog(resource: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ResourceLoggerServicePromise { - return new ResourceLoggerServicePromiseImpl(this._completeLogInternal(resource)); + completeLog(resource: Awaitable): ResourceLoggerServicePromise { + return new ResourceLoggerServicePromiseImpl(this._completeLogInternal(resource), this._client); } /** Completes the log stream by resource name */ @@ -2944,7 +2974,7 @@ class ResourceLoggerServiceImpl implements ResourceLoggerService { } completeLogByName(resourceName: string): ResourceLoggerServicePromise { - return new ResourceLoggerServicePromiseImpl(this._completeLogByNameInternal(resourceName)); + return new ResourceLoggerServicePromiseImpl(this._completeLogByNameInternal(resourceName), this._client); } } @@ -2953,7 +2983,9 @@ class ResourceLoggerServiceImpl implements ResourceLoggerService { * Thenable wrapper for ResourceLoggerService that enables fluent chaining. */ class ResourceLoggerServicePromiseImpl implements ResourceLoggerServicePromise { - constructor(private _promise: Promise) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: ResourceLoggerService) => TResult1 | PromiseLike) | null, @@ -2963,13 +2995,13 @@ class ResourceLoggerServicePromiseImpl implements ResourceLoggerServicePromise { } /** Completes the log stream for a resource */ - completeLog(resource: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ResourceLoggerServicePromise { - return new ResourceLoggerServicePromiseImpl(this._promise.then(obj => obj.completeLog(resource))); + completeLog(resource: Awaitable): ResourceLoggerServicePromise { + return new ResourceLoggerServicePromiseImpl(this._promise.then(obj => obj.completeLog(resource)), this._client); } /** Completes the log stream by resource name */ completeLogByName(resourceName: string): ResourceLoggerServicePromise { - return new ResourceLoggerServicePromiseImpl(this._promise.then(obj => obj.completeLogByName(resourceName))); + return new ResourceLoggerServicePromiseImpl(this._promise.then(obj => obj.completeLogByName(resourceName)), this._client); } } @@ -2983,18 +3015,18 @@ export interface ResourceNotificationService { waitForResourceState(resourceName: string, options?: WaitForResourceStateOptions): ResourceNotificationServicePromise; waitForResourceStates(resourceName: string, targetStates: string[]): Promise; waitForResourceHealthy(resourceName: string): Promise; - waitForDependencies(resource: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ResourceNotificationServicePromise; + waitForDependencies(resource: Awaitable): ResourceNotificationServicePromise; tryGetResourceState(resourceName: string): Promise; - publishResourceUpdate(resource: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: PublishResourceUpdateOptions): ResourceNotificationServicePromise; + publishResourceUpdate(resource: Awaitable, options?: PublishResourceUpdateOptions): ResourceNotificationServicePromise; } export interface ResourceNotificationServicePromise extends PromiseLike { waitForResourceState(resourceName: string, options?: WaitForResourceStateOptions): ResourceNotificationServicePromise; waitForResourceStates(resourceName: string, targetStates: string[]): Promise; waitForResourceHealthy(resourceName: string): Promise; - waitForDependencies(resource: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ResourceNotificationServicePromise; + waitForDependencies(resource: Awaitable): ResourceNotificationServicePromise; tryGetResourceState(resourceName: string): Promise; - publishResourceUpdate(resource: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: PublishResourceUpdateOptions): ResourceNotificationServicePromise; + publishResourceUpdate(resource: Awaitable, options?: PublishResourceUpdateOptions): ResourceNotificationServicePromise; } // ============================================================================ @@ -3024,7 +3056,7 @@ class ResourceNotificationServiceImpl implements ResourceNotificationService { waitForResourceState(resourceName: string, options?: WaitForResourceStateOptions): ResourceNotificationServicePromise { const targetState = options?.targetState; - return new ResourceNotificationServicePromiseImpl(this._waitForResourceStateInternal(resourceName, targetState)); + return new ResourceNotificationServicePromiseImpl(this._waitForResourceStateInternal(resourceName, targetState), this._client); } /** Waits for a resource to reach one of the specified states */ @@ -3047,7 +3079,8 @@ class ResourceNotificationServiceImpl implements ResourceNotificationService { /** Waits for all dependencies of a resource to be ready */ /** @internal */ - async _waitForDependenciesInternal(resource: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + async _waitForDependenciesInternal(resource: Awaitable): Promise { + resource = isPromiseLike(resource) ? await resource : resource; const rpcArgs: Record = { notificationService: this._handle, resource }; await this._client.invokeCapability( 'Aspire.Hosting/waitForDependencies', @@ -3056,8 +3089,8 @@ class ResourceNotificationServiceImpl implements ResourceNotificationService { return this; } - waitForDependencies(resource: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ResourceNotificationServicePromise { - return new ResourceNotificationServicePromiseImpl(this._waitForDependenciesInternal(resource)); + waitForDependencies(resource: Awaitable): ResourceNotificationServicePromise { + return new ResourceNotificationServicePromiseImpl(this._waitForDependenciesInternal(resource), this._client); } /** Tries to get the current state of a resource */ @@ -3071,7 +3104,8 @@ class ResourceNotificationServiceImpl implements ResourceNotificationService { /** Publishes an update for a resource's state */ /** @internal */ - async _publishResourceUpdateInternal(resource: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, state?: string, stateStyle?: string): Promise { + async _publishResourceUpdateInternal(resource: Awaitable, state?: string, stateStyle?: string): Promise { + resource = isPromiseLike(resource) ? await resource : resource; const rpcArgs: Record = { notificationService: this._handle, resource }; if (state !== undefined) rpcArgs.state = state; if (stateStyle !== undefined) rpcArgs.stateStyle = stateStyle; @@ -3082,10 +3116,10 @@ class ResourceNotificationServiceImpl implements ResourceNotificationService { return this; } - publishResourceUpdate(resource: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: PublishResourceUpdateOptions): ResourceNotificationServicePromise { + publishResourceUpdate(resource: Awaitable, options?: PublishResourceUpdateOptions): ResourceNotificationServicePromise { const state = options?.state; const stateStyle = options?.stateStyle; - return new ResourceNotificationServicePromiseImpl(this._publishResourceUpdateInternal(resource, state, stateStyle)); + return new ResourceNotificationServicePromiseImpl(this._publishResourceUpdateInternal(resource, state, stateStyle), this._client); } } @@ -3094,7 +3128,9 @@ class ResourceNotificationServiceImpl implements ResourceNotificationService { * Thenable wrapper for ResourceNotificationService that enables fluent chaining. */ class ResourceNotificationServicePromiseImpl implements ResourceNotificationServicePromise { - constructor(private _promise: Promise) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: ResourceNotificationService) => TResult1 | PromiseLike) | null, @@ -3105,7 +3141,7 @@ class ResourceNotificationServicePromiseImpl implements ResourceNotificationServ /** Waits for a resource to reach a specified state */ waitForResourceState(resourceName: string, options?: WaitForResourceStateOptions): ResourceNotificationServicePromise { - return new ResourceNotificationServicePromiseImpl(this._promise.then(obj => obj.waitForResourceState(resourceName, options))); + return new ResourceNotificationServicePromiseImpl(this._promise.then(obj => obj.waitForResourceState(resourceName, options)), this._client); } /** Waits for a resource to reach one of the specified states */ @@ -3119,8 +3155,8 @@ class ResourceNotificationServicePromiseImpl implements ResourceNotificationServ } /** Waits for all dependencies of a resource to be ready */ - waitForDependencies(resource: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ResourceNotificationServicePromise { - return new ResourceNotificationServicePromiseImpl(this._promise.then(obj => obj.waitForDependencies(resource))); + waitForDependencies(resource: Awaitable): ResourceNotificationServicePromise { + return new ResourceNotificationServicePromiseImpl(this._promise.then(obj => obj.waitForDependencies(resource)), this._client); } /** Tries to get the current state of a resource */ @@ -3129,8 +3165,8 @@ class ResourceNotificationServicePromiseImpl implements ResourceNotificationServ } /** Publishes an update for a resource's state */ - publishResourceUpdate(resource: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: PublishResourceUpdateOptions): ResourceNotificationServicePromise { - return new ResourceNotificationServicePromiseImpl(this._promise.then(obj => obj.publishResourceUpdate(resource, options))); + publishResourceUpdate(resource: Awaitable, options?: PublishResourceUpdateOptions): ResourceNotificationServicePromise { + return new ResourceNotificationServicePromiseImpl(this._promise.then(obj => obj.publishResourceUpdate(resource, options)), this._client); } } @@ -3252,7 +3288,7 @@ export interface ResourceUrlsCallbackContext { }; logger: { get: () => Promise; - set: (value: Logger) => Promise; + set: (value: Awaitable) => Promise; }; executionContext: { get: () => Promise; @@ -3317,7 +3353,8 @@ class ResourceUrlsCallbackContextImpl implements ResourceUrlsCallbackContext { ); return new LoggerImpl(handle, this._client); }, - set: async (value: Logger): Promise => { + set: async (value: Awaitable): Promise => { + value = isPromiseLike(value) ? await value : value; await this._client.invokeCapability( 'Aspire.Hosting.ApplicationModel/ResourceUrlsCallbackContext.setLogger', { context: this._handle, value } @@ -3649,7 +3686,7 @@ class TestResourceContextImpl implements TestResourceContext { } setValueAsync(value: string): TestResourceContextPromise { - return new TestResourceContextPromiseImpl(this._setValueAsyncInternal(value)); + return new TestResourceContextPromiseImpl(this._setValueAsyncInternal(value), this._client); } /** Invokes the ValidateAsync method */ @@ -3667,7 +3704,9 @@ class TestResourceContextImpl implements TestResourceContext { * Thenable wrapper for TestResourceContext that enables fluent chaining. */ class TestResourceContextPromiseImpl implements TestResourceContextPromise { - constructor(private _promise: Promise) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: TestResourceContext) => TResult1 | PromiseLike) | null, @@ -3683,7 +3722,7 @@ class TestResourceContextPromiseImpl implements TestResourceContextPromise { /** Invokes the SetValueAsync method */ setValueAsync(value: string): TestResourceContextPromise { - return new TestResourceContextPromiseImpl(this._promise.then(obj => obj.setValueAsync(value))); + return new TestResourceContextPromiseImpl(this._promise.then(obj => obj.setValueAsync(value)), this._client); } /** Invokes the ValidateAsync method */ @@ -3701,7 +3740,7 @@ export interface UpdateCommandStateContext { toJSON(): MarshalledHandle; serviceProvider: { get: () => Promise; - set: (value: ServiceProvider) => Promise; + set: (value: Awaitable) => Promise; }; } @@ -3727,7 +3766,8 @@ class UpdateCommandStateContextImpl implements UpdateCommandStateContext { ); return new ServiceProviderImpl(handle, this._client); }, - set: async (value: ServiceProvider): Promise => { + set: async (value: Awaitable): Promise => { + value = isPromiseLike(value) ? await value : value; await this._client.invokeCapability( 'Aspire.Hosting.ApplicationModel/UpdateCommandStateContext.setServiceProvider', { context: this._handle, value } @@ -3822,7 +3862,9 @@ class ConfigurationImpl implements Configuration { * Thenable wrapper for Configuration that enables fluent chaining. */ class ConfigurationPromiseImpl implements ConfigurationPromise { - constructor(private _promise: Promise) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: Configuration) => TResult1 | PromiseLike) | null, @@ -3882,7 +3924,7 @@ export interface DistributedApplicationBuilder { build(): DistributedApplicationPromise; addConnectionStringExpression(name: string, connectionStringExpression: ReferenceExpression): ConnectionStringResourcePromise; addConnectionStringBuilder(name: string, connectionStringBuilder: (obj: ReferenceExpressionBuilder) => Promise): ConnectionStringResourcePromise; - addContainerRegistry(name: string, endpoint: ParameterResource, options?: AddContainerRegistryOptions): ContainerRegistryResourcePromise; + addContainerRegistry(name: string, endpoint: Awaitable, options?: AddContainerRegistryOptions): ContainerRegistryResourcePromise; addContainerRegistryFromString(name: string, endpoint: string, options?: AddContainerRegistryFromStringOptions): ContainerRegistryResourcePromise; addContainer(name: string, image: string): ContainerResourcePromise; addDockerfile(name: string, contextPath: string, options?: AddDockerfileOptions): ContainerResourcePromise; @@ -3890,7 +3932,7 @@ export interface DistributedApplicationBuilder { addExecutable(name: string, command: string, workingDirectory: string, args: string[]): ExecutableResourcePromise; addExternalService(name: string, url: string): ExternalServiceResourcePromise; addExternalServiceUri(name: string, uri: string): ExternalServiceResourcePromise; - addExternalServiceParameter(name: string, urlParameter: ParameterResource): ExternalServiceResourcePromise; + addExternalServiceParameter(name: string, urlParameter: Awaitable): ExternalServiceResourcePromise; addParameter(name: string, options?: AddParameterOptions): ParameterResourcePromise; addParameterWithValue(name: string, value: string, options?: AddParameterWithValueOptions): ParameterResourcePromise; addParameterFromConfiguration(name: string, configurationKey: string, options?: AddParameterFromConfigurationOptions): ParameterResourcePromise; @@ -3910,7 +3952,7 @@ export interface DistributedApplicationBuilderPromise extends PromiseLike Promise): ConnectionStringResourcePromise; - addContainerRegistry(name: string, endpoint: ParameterResource, options?: AddContainerRegistryOptions): ContainerRegistryResourcePromise; + addContainerRegistry(name: string, endpoint: Awaitable, options?: AddContainerRegistryOptions): ContainerRegistryResourcePromise; addContainerRegistryFromString(name: string, endpoint: string, options?: AddContainerRegistryFromStringOptions): ContainerRegistryResourcePromise; addContainer(name: string, image: string): ContainerResourcePromise; addDockerfile(name: string, contextPath: string, options?: AddDockerfileOptions): ContainerResourcePromise; @@ -3918,7 +3960,7 @@ export interface DistributedApplicationBuilderPromise extends PromiseLike): ExternalServiceResourcePromise; addParameter(name: string, options?: AddParameterOptions): ParameterResourcePromise; addParameterWithValue(name: string, value: string, options?: AddParameterWithValueOptions): ParameterResourcePromise; addParameterFromConfiguration(name: string, configurationKey: string, options?: AddParameterFromConfigurationOptions): ParameterResourcePromise; @@ -4013,7 +4055,8 @@ class DistributedApplicationBuilderImpl implements DistributedApplicationBuilder } build(): DistributedApplicationPromise { - return new DistributedApplicationPromiseImpl(this._buildInternal()); + const flushAndBuild = async () => { await this._client.flushPendingPromises(); return this._buildInternal(); }; + return new DistributedApplicationPromiseImpl(flushAndBuild(), this._client); } /** Adds a connection string with a reference expression */ @@ -4028,7 +4071,7 @@ class DistributedApplicationBuilderImpl implements DistributedApplicationBuilder } addConnectionStringExpression(name: string, connectionStringExpression: ReferenceExpression): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._addConnectionStringExpressionInternal(name, connectionStringExpression)); + return new ConnectionStringResourcePromiseImpl(this._addConnectionStringExpressionInternal(name, connectionStringExpression), this._client); } /** Adds a connection string with a builder callback */ @@ -4048,12 +4091,14 @@ class DistributedApplicationBuilderImpl implements DistributedApplicationBuilder } addConnectionStringBuilder(name: string, connectionStringBuilder: (obj: ReferenceExpressionBuilder) => Promise): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._addConnectionStringBuilderInternal(name, connectionStringBuilder)); + return new ConnectionStringResourcePromiseImpl(this._addConnectionStringBuilderInternal(name, connectionStringBuilder), this._client); } /** Adds a container registry resource */ /** @internal */ - async _addContainerRegistryInternal(name: string, endpoint: ParameterResource, repository?: ParameterResource): Promise { + async _addContainerRegistryInternal(name: string, endpoint: Awaitable, repository?: Awaitable): Promise { + endpoint = isPromiseLike(endpoint) ? await endpoint : endpoint; + repository = isPromiseLike(repository) ? await repository : repository; const rpcArgs: Record = { builder: this._handle, name, endpoint }; if (repository !== undefined) rpcArgs.repository = repository; const result = await this._client.invokeCapability( @@ -4063,9 +4108,9 @@ class DistributedApplicationBuilderImpl implements DistributedApplicationBuilder return new ContainerRegistryResourceImpl(result, this._client); } - addContainerRegistry(name: string, endpoint: ParameterResource, options?: AddContainerRegistryOptions): ContainerRegistryResourcePromise { - const repository = options?.repository; - return new ContainerRegistryResourcePromiseImpl(this._addContainerRegistryInternal(name, endpoint, repository)); + addContainerRegistry(name: string, endpoint: Awaitable, options?: AddContainerRegistryOptions): ContainerRegistryResourcePromise { + let repository = options?.repository; + return new ContainerRegistryResourcePromiseImpl(this._addContainerRegistryInternal(name, endpoint, repository), this._client); } /** Adds a container registry with string endpoint */ @@ -4082,7 +4127,7 @@ class DistributedApplicationBuilderImpl implements DistributedApplicationBuilder addContainerRegistryFromString(name: string, endpoint: string, options?: AddContainerRegistryFromStringOptions): ContainerRegistryResourcePromise { const repository = options?.repository; - return new ContainerRegistryResourcePromiseImpl(this._addContainerRegistryFromStringInternal(name, endpoint, repository)); + return new ContainerRegistryResourcePromiseImpl(this._addContainerRegistryFromStringInternal(name, endpoint, repository), this._client); } /** Adds a container resource */ @@ -4097,7 +4142,7 @@ class DistributedApplicationBuilderImpl implements DistributedApplicationBuilder } addContainer(name: string, image: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._addContainerInternal(name, image)); + return new ContainerResourcePromiseImpl(this._addContainerInternal(name, image), this._client); } /** Adds a container resource built from a Dockerfile */ @@ -4116,7 +4161,7 @@ class DistributedApplicationBuilderImpl implements DistributedApplicationBuilder addDockerfile(name: string, contextPath: string, options?: AddDockerfileOptions): ContainerResourcePromise { const dockerfilePath = options?.dockerfilePath; const stage = options?.stage; - return new ContainerResourcePromiseImpl(this._addDockerfileInternal(name, contextPath, dockerfilePath, stage)); + return new ContainerResourcePromiseImpl(this._addDockerfileInternal(name, contextPath, dockerfilePath, stage), this._client); } /** Adds a .NET tool resource */ @@ -4131,7 +4176,7 @@ class DistributedApplicationBuilderImpl implements DistributedApplicationBuilder } addDotnetTool(name: string, packageId: string): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._addDotnetToolInternal(name, packageId)); + return new DotnetToolResourcePromiseImpl(this._addDotnetToolInternal(name, packageId), this._client); } /** Adds an executable resource */ @@ -4146,7 +4191,7 @@ class DistributedApplicationBuilderImpl implements DistributedApplicationBuilder } addExecutable(name: string, command: string, workingDirectory: string, args: string[]): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._addExecutableInternal(name, command, workingDirectory, args)); + return new ExecutableResourcePromiseImpl(this._addExecutableInternal(name, command, workingDirectory, args), this._client); } /** Adds an external service resource */ @@ -4161,7 +4206,7 @@ class DistributedApplicationBuilderImpl implements DistributedApplicationBuilder } addExternalService(name: string, url: string): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._addExternalServiceInternal(name, url)); + return new ExternalServiceResourcePromiseImpl(this._addExternalServiceInternal(name, url), this._client); } /** Adds an external service with a URI */ @@ -4176,12 +4221,13 @@ class DistributedApplicationBuilderImpl implements DistributedApplicationBuilder } addExternalServiceUri(name: string, uri: string): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._addExternalServiceUriInternal(name, uri)); + return new ExternalServiceResourcePromiseImpl(this._addExternalServiceUriInternal(name, uri), this._client); } /** Adds an external service with a parameter URL */ /** @internal */ - async _addExternalServiceParameterInternal(name: string, urlParameter: ParameterResource): Promise { + async _addExternalServiceParameterInternal(name: string, urlParameter: Awaitable): Promise { + urlParameter = isPromiseLike(urlParameter) ? await urlParameter : urlParameter; const rpcArgs: Record = { builder: this._handle, name, urlParameter }; const result = await this._client.invokeCapability( 'Aspire.Hosting/addExternalServiceParameter', @@ -4190,8 +4236,8 @@ class DistributedApplicationBuilderImpl implements DistributedApplicationBuilder return new ExternalServiceResourceImpl(result, this._client); } - addExternalServiceParameter(name: string, urlParameter: ParameterResource): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._addExternalServiceParameterInternal(name, urlParameter)); + addExternalServiceParameter(name: string, urlParameter: Awaitable): ExternalServiceResourcePromise { + return new ExternalServiceResourcePromiseImpl(this._addExternalServiceParameterInternal(name, urlParameter), this._client); } /** Adds a parameter resource */ @@ -4208,7 +4254,7 @@ class DistributedApplicationBuilderImpl implements DistributedApplicationBuilder addParameter(name: string, options?: AddParameterOptions): ParameterResourcePromise { const secret = options?.secret; - return new ParameterResourcePromiseImpl(this._addParameterInternal(name, secret)); + return new ParameterResourcePromiseImpl(this._addParameterInternal(name, secret), this._client); } /** Adds a parameter with a default value */ @@ -4227,7 +4273,7 @@ class DistributedApplicationBuilderImpl implements DistributedApplicationBuilder addParameterWithValue(name: string, value: string, options?: AddParameterWithValueOptions): ParameterResourcePromise { const publishValueAsDefault = options?.publishValueAsDefault; const secret = options?.secret; - return new ParameterResourcePromiseImpl(this._addParameterWithValueInternal(name, value, publishValueAsDefault, secret)); + return new ParameterResourcePromiseImpl(this._addParameterWithValueInternal(name, value, publishValueAsDefault, secret), this._client); } /** Adds a parameter sourced from configuration */ @@ -4244,7 +4290,7 @@ class DistributedApplicationBuilderImpl implements DistributedApplicationBuilder addParameterFromConfiguration(name: string, configurationKey: string, options?: AddParameterFromConfigurationOptions): ParameterResourcePromise { const secret = options?.secret; - return new ParameterResourcePromiseImpl(this._addParameterFromConfigurationInternal(name, configurationKey, secret)); + return new ParameterResourcePromiseImpl(this._addParameterFromConfigurationInternal(name, configurationKey, secret), this._client); } /** Adds a connection string resource */ @@ -4261,7 +4307,7 @@ class DistributedApplicationBuilderImpl implements DistributedApplicationBuilder addConnectionString(name: string, options?: AddConnectionStringOptions): ResourceWithConnectionStringPromise { const environmentVariableName = options?.environmentVariableName; - return new ResourceWithConnectionStringPromiseImpl(this._addConnectionStringInternal(name, environmentVariableName)); + return new ResourceWithConnectionStringPromiseImpl(this._addConnectionStringInternal(name, environmentVariableName), this._client); } /** Adds a .NET project resource */ @@ -4276,7 +4322,7 @@ class DistributedApplicationBuilderImpl implements DistributedApplicationBuilder } addProject(name: string, projectPath: string, launchProfileName: string): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._addProjectInternal(name, projectPath, launchProfileName)); + return new ProjectResourcePromiseImpl(this._addProjectInternal(name, projectPath, launchProfileName), this._client); } /** Adds a project resource with configuration options */ @@ -4296,7 +4342,7 @@ class DistributedApplicationBuilderImpl implements DistributedApplicationBuilder } addProjectWithOptions(name: string, projectPath: string, configure: (obj: ProjectResourceOptions) => Promise): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._addProjectWithOptionsInternal(name, projectPath, configure)); + return new ProjectResourcePromiseImpl(this._addProjectWithOptionsInternal(name, projectPath, configure), this._client); } /** Adds a C# application resource */ @@ -4311,7 +4357,7 @@ class DistributedApplicationBuilderImpl implements DistributedApplicationBuilder } addCSharpApp(name: string, path: string): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._addCSharpAppInternal(name, path)); + return new ProjectResourcePromiseImpl(this._addCSharpAppInternal(name, path), this._client); } /** Adds a C# application resource with configuration options */ @@ -4331,7 +4377,7 @@ class DistributedApplicationBuilderImpl implements DistributedApplicationBuilder } addCSharpAppWithOptions(name: string, path: string, configure: (obj: ProjectResourceOptions) => Promise): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._addCSharpAppWithOptionsInternal(name, path, configure)); + return new CSharpAppResourcePromiseImpl(this._addCSharpAppWithOptionsInternal(name, path, configure), this._client); } /** Gets the application configuration */ @@ -4346,7 +4392,7 @@ class DistributedApplicationBuilderImpl implements DistributedApplicationBuilder } getConfiguration(): ConfigurationPromise { - return new ConfigurationPromiseImpl(this._getConfigurationInternal()); + return new ConfigurationPromiseImpl(this._getConfigurationInternal(), this._client); } /** Subscribes to the BeforeStart event */ @@ -4391,7 +4437,7 @@ class DistributedApplicationBuilderImpl implements DistributedApplicationBuilder addTestRedis(name: string, options?: AddTestRedisOptions): TestRedisResourcePromise { const port = options?.port; - return new TestRedisResourcePromiseImpl(this._addTestRedisInternal(name, port)); + return new TestRedisResourcePromiseImpl(this._addTestRedisInternal(name, port), this._client); } /** Adds a test vault resource */ @@ -4406,7 +4452,7 @@ class DistributedApplicationBuilderImpl implements DistributedApplicationBuilder } addTestVault(name: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._addTestVaultInternal(name)); + return new TestVaultResourcePromiseImpl(this._addTestVaultInternal(name), this._client); } } @@ -4415,7 +4461,9 @@ class DistributedApplicationBuilderImpl implements DistributedApplicationBuilder * Thenable wrapper for DistributedApplicationBuilder that enables fluent chaining. */ class DistributedApplicationBuilderPromiseImpl implements DistributedApplicationBuilderPromise { - constructor(private _promise: Promise) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: DistributedApplicationBuilder) => TResult1 | PromiseLike) | null, @@ -4426,107 +4474,107 @@ class DistributedApplicationBuilderPromiseImpl implements DistributedApplication /** Builds the distributed application */ build(): DistributedApplicationPromise { - return new DistributedApplicationPromiseImpl(this._promise.then(obj => obj.build())); + return new DistributedApplicationPromiseImpl(this._promise.then(obj => obj.build()), this._client); } /** Adds a connection string with a reference expression */ addConnectionStringExpression(name: string, connectionStringExpression: ReferenceExpression): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.addConnectionStringExpression(name, connectionStringExpression))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.addConnectionStringExpression(name, connectionStringExpression)), this._client); } /** Adds a connection string with a builder callback */ addConnectionStringBuilder(name: string, connectionStringBuilder: (obj: ReferenceExpressionBuilder) => Promise): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.addConnectionStringBuilder(name, connectionStringBuilder))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.addConnectionStringBuilder(name, connectionStringBuilder)), this._client); } /** Adds a container registry resource */ - addContainerRegistry(name: string, endpoint: ParameterResource, options?: AddContainerRegistryOptions): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.addContainerRegistry(name, endpoint, options))); + addContainerRegistry(name: string, endpoint: Awaitable, options?: AddContainerRegistryOptions): ContainerRegistryResourcePromise { + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.addContainerRegistry(name, endpoint, options)), this._client); } /** Adds a container registry with string endpoint */ addContainerRegistryFromString(name: string, endpoint: string, options?: AddContainerRegistryFromStringOptions): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.addContainerRegistryFromString(name, endpoint, options))); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.addContainerRegistryFromString(name, endpoint, options)), this._client); } /** Adds a container resource */ addContainer(name: string, image: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.addContainer(name, image))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.addContainer(name, image)), this._client); } /** Adds a container resource built from a Dockerfile */ addDockerfile(name: string, contextPath: string, options?: AddDockerfileOptions): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.addDockerfile(name, contextPath, options))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.addDockerfile(name, contextPath, options)), this._client); } /** Adds a .NET tool resource */ addDotnetTool(name: string, packageId: string): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.addDotnetTool(name, packageId))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.addDotnetTool(name, packageId)), this._client); } /** Adds an executable resource */ addExecutable(name: string, command: string, workingDirectory: string, args: string[]): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.addExecutable(name, command, workingDirectory, args))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.addExecutable(name, command, workingDirectory, args)), this._client); } /** Adds an external service resource */ addExternalService(name: string, url: string): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.addExternalService(name, url))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.addExternalService(name, url)), this._client); } /** Adds an external service with a URI */ addExternalServiceUri(name: string, uri: string): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.addExternalServiceUri(name, uri))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.addExternalServiceUri(name, uri)), this._client); } /** Adds an external service with a parameter URL */ - addExternalServiceParameter(name: string, urlParameter: ParameterResource): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.addExternalServiceParameter(name, urlParameter))); + addExternalServiceParameter(name: string, urlParameter: Awaitable): ExternalServiceResourcePromise { + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.addExternalServiceParameter(name, urlParameter)), this._client); } /** Adds a parameter resource */ addParameter(name: string, options?: AddParameterOptions): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.addParameter(name, options))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.addParameter(name, options)), this._client); } /** Adds a parameter with a default value */ addParameterWithValue(name: string, value: string, options?: AddParameterWithValueOptions): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.addParameterWithValue(name, value, options))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.addParameterWithValue(name, value, options)), this._client); } /** Adds a parameter sourced from configuration */ addParameterFromConfiguration(name: string, configurationKey: string, options?: AddParameterFromConfigurationOptions): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.addParameterFromConfiguration(name, configurationKey, options))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.addParameterFromConfiguration(name, configurationKey, options)), this._client); } /** Adds a connection string resource */ addConnectionString(name: string, options?: AddConnectionStringOptions): ResourceWithConnectionStringPromise { - return new ResourceWithConnectionStringPromiseImpl(this._promise.then(obj => obj.addConnectionString(name, options))); + return new ResourceWithConnectionStringPromiseImpl(this._promise.then(obj => obj.addConnectionString(name, options)), this._client); } /** Adds a .NET project resource */ addProject(name: string, projectPath: string, launchProfileName: string): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.addProject(name, projectPath, launchProfileName))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.addProject(name, projectPath, launchProfileName)), this._client); } /** Adds a project resource with configuration options */ addProjectWithOptions(name: string, projectPath: string, configure: (obj: ProjectResourceOptions) => Promise): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.addProjectWithOptions(name, projectPath, configure))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.addProjectWithOptions(name, projectPath, configure)), this._client); } /** Adds a C# application resource */ addCSharpApp(name: string, path: string): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.addCSharpApp(name, path))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.addCSharpApp(name, path)), this._client); } /** Adds a C# application resource with configuration options */ addCSharpAppWithOptions(name: string, path: string, configure: (obj: ProjectResourceOptions) => Promise): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.addCSharpAppWithOptions(name, path, configure))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.addCSharpAppWithOptions(name, path, configure)), this._client); } /** Gets the application configuration */ getConfiguration(): ConfigurationPromise { - return new ConfigurationPromiseImpl(this._promise.then(obj => obj.getConfiguration())); + return new ConfigurationPromiseImpl(this._promise.then(obj => obj.getConfiguration()), this._client); } /** Subscribes to the BeforeStart event */ @@ -4541,12 +4589,12 @@ class DistributedApplicationBuilderPromiseImpl implements DistributedApplication /** Adds a test Redis resource */ addTestRedis(name: string, options?: AddTestRedisOptions): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.addTestRedis(name, options))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.addTestRedis(name, options)), this._client); } /** Adds a test vault resource */ addTestVault(name: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.addTestVault(name))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.addTestVault(name)), this._client); } } @@ -4589,7 +4637,7 @@ class DistributedApplicationEventingImpl implements DistributedApplicationEventi } unsubscribe(subscription: DistributedApplicationEventSubscriptionHandle): DistributedApplicationEventingPromise { - return new DistributedApplicationEventingPromiseImpl(this._unsubscribeInternal(subscription)); + return new DistributedApplicationEventingPromiseImpl(this._unsubscribeInternal(subscription), this._client); } } @@ -4598,7 +4646,9 @@ class DistributedApplicationEventingImpl implements DistributedApplicationEventi * Thenable wrapper for DistributedApplicationEventing that enables fluent chaining. */ class DistributedApplicationEventingPromiseImpl implements DistributedApplicationEventingPromise { - constructor(private _promise: Promise) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: DistributedApplicationEventing) => TResult1 | PromiseLike) | null, @@ -4609,7 +4659,7 @@ class DistributedApplicationEventingPromiseImpl implements DistributedApplicatio /** Invokes the Unsubscribe method */ unsubscribe(subscription: DistributedApplicationEventSubscriptionHandle): DistributedApplicationEventingPromise { - return new DistributedApplicationEventingPromiseImpl(this._promise.then(obj => obj.unsubscribe(subscription))); + return new DistributedApplicationEventingPromiseImpl(this._promise.then(obj => obj.unsubscribe(subscription)), this._client); } } @@ -4688,7 +4738,9 @@ class HostEnvironmentImpl implements HostEnvironment { * Thenable wrapper for HostEnvironment that enables fluent chaining. */ class HostEnvironmentPromiseImpl implements HostEnvironmentPromise { - constructor(private _promise: Promise) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: HostEnvironment) => TResult1 | PromiseLike) | null, @@ -4765,7 +4817,7 @@ class LoggerImpl implements Logger { } logInformation(message: string): LoggerPromise { - return new LoggerPromiseImpl(this._logInformationInternal(message)); + return new LoggerPromiseImpl(this._logInformationInternal(message), this._client); } /** Logs a warning message */ @@ -4780,7 +4832,7 @@ class LoggerImpl implements Logger { } logWarning(message: string): LoggerPromise { - return new LoggerPromiseImpl(this._logWarningInternal(message)); + return new LoggerPromiseImpl(this._logWarningInternal(message), this._client); } /** Logs an error message */ @@ -4795,7 +4847,7 @@ class LoggerImpl implements Logger { } logError(message: string): LoggerPromise { - return new LoggerPromiseImpl(this._logErrorInternal(message)); + return new LoggerPromiseImpl(this._logErrorInternal(message), this._client); } /** Logs a debug message */ @@ -4810,7 +4862,7 @@ class LoggerImpl implements Logger { } logDebug(message: string): LoggerPromise { - return new LoggerPromiseImpl(this._logDebugInternal(message)); + return new LoggerPromiseImpl(this._logDebugInternal(message), this._client); } /** Logs a message with specified level */ @@ -4825,7 +4877,7 @@ class LoggerImpl implements Logger { } log(level: string, message: string): LoggerPromise { - return new LoggerPromiseImpl(this._logInternal(level, message)); + return new LoggerPromiseImpl(this._logInternal(level, message), this._client); } } @@ -4834,7 +4886,9 @@ class LoggerImpl implements Logger { * Thenable wrapper for Logger that enables fluent chaining. */ class LoggerPromiseImpl implements LoggerPromise { - constructor(private _promise: Promise) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: Logger) => TResult1 | PromiseLike) | null, @@ -4845,27 +4899,27 @@ class LoggerPromiseImpl implements LoggerPromise { /** Logs an information message */ logInformation(message: string): LoggerPromise { - return new LoggerPromiseImpl(this._promise.then(obj => obj.logInformation(message))); + return new LoggerPromiseImpl(this._promise.then(obj => obj.logInformation(message)), this._client); } /** Logs a warning message */ logWarning(message: string): LoggerPromise { - return new LoggerPromiseImpl(this._promise.then(obj => obj.logWarning(message))); + return new LoggerPromiseImpl(this._promise.then(obj => obj.logWarning(message)), this._client); } /** Logs an error message */ logError(message: string): LoggerPromise { - return new LoggerPromiseImpl(this._promise.then(obj => obj.logError(message))); + return new LoggerPromiseImpl(this._promise.then(obj => obj.logError(message)), this._client); } /** Logs a debug message */ logDebug(message: string): LoggerPromise { - return new LoggerPromiseImpl(this._promise.then(obj => obj.logDebug(message))); + return new LoggerPromiseImpl(this._promise.then(obj => obj.logDebug(message)), this._client); } /** Logs a message with specified level */ log(level: string, message: string): LoggerPromise { - return new LoggerPromiseImpl(this._promise.then(obj => obj.log(level, message))); + return new LoggerPromiseImpl(this._promise.then(obj => obj.log(level, message)), this._client); } } @@ -4908,7 +4962,7 @@ class LoggerFactoryImpl implements LoggerFactory { } createLogger(categoryName: string): LoggerPromise { - return new LoggerPromiseImpl(this._createLoggerInternal(categoryName)); + return new LoggerPromiseImpl(this._createLoggerInternal(categoryName), this._client); } } @@ -4917,7 +4971,9 @@ class LoggerFactoryImpl implements LoggerFactory { * Thenable wrapper for LoggerFactory that enables fluent chaining. */ class LoggerFactoryPromiseImpl implements LoggerFactoryPromise { - constructor(private _promise: Promise) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: LoggerFactory) => TResult1 | PromiseLike) | null, @@ -4928,7 +4984,7 @@ class LoggerFactoryPromiseImpl implements LoggerFactoryPromise { /** Creates a logger for a category */ createLogger(categoryName: string): LoggerPromise { - return new LoggerPromiseImpl(this._promise.then(obj => obj.createLogger(categoryName))); + return new LoggerPromiseImpl(this._promise.then(obj => obj.createLogger(categoryName)), this._client); } } @@ -4983,7 +5039,7 @@ class ReportingStepImpl implements ReportingStep { createTask(statusText: string, options?: CreateTaskOptions): ReportingTaskPromise { const cancellationToken = options?.cancellationToken; - return new ReportingTaskPromiseImpl(this._createTaskInternal(statusText, cancellationToken)); + return new ReportingTaskPromiseImpl(this._createTaskInternal(statusText, cancellationToken), this._client); } /** Creates a reporting task with Markdown-formatted status text */ @@ -5000,7 +5056,7 @@ class ReportingStepImpl implements ReportingStep { createMarkdownTask(markdownString: string, options?: CreateMarkdownTaskOptions): ReportingTaskPromise { const cancellationToken = options?.cancellationToken; - return new ReportingTaskPromiseImpl(this._createMarkdownTaskInternal(markdownString, cancellationToken)); + return new ReportingTaskPromiseImpl(this._createMarkdownTaskInternal(markdownString, cancellationToken), this._client); } /** Logs a plain-text message for the reporting step */ @@ -5015,7 +5071,7 @@ class ReportingStepImpl implements ReportingStep { } logStep(level: string, message: string): ReportingStepPromise { - return new ReportingStepPromiseImpl(this._logStepInternal(level, message)); + return new ReportingStepPromiseImpl(this._logStepInternal(level, message), this._client); } /** Logs a Markdown-formatted message for the reporting step */ @@ -5030,7 +5086,7 @@ class ReportingStepImpl implements ReportingStep { } logStepMarkdown(level: string, markdownString: string): ReportingStepPromise { - return new ReportingStepPromiseImpl(this._logStepMarkdownInternal(level, markdownString)); + return new ReportingStepPromiseImpl(this._logStepMarkdownInternal(level, markdownString), this._client); } /** Completes the reporting step with plain-text completion text */ @@ -5049,7 +5105,7 @@ class ReportingStepImpl implements ReportingStep { completeStep(completionText: string, options?: CompleteStepOptions): ReportingStepPromise { const completionState = options?.completionState; const cancellationToken = options?.cancellationToken; - return new ReportingStepPromiseImpl(this._completeStepInternal(completionText, completionState, cancellationToken)); + return new ReportingStepPromiseImpl(this._completeStepInternal(completionText, completionState, cancellationToken), this._client); } /** Completes the reporting step with Markdown-formatted completion text */ @@ -5068,7 +5124,7 @@ class ReportingStepImpl implements ReportingStep { completeStepMarkdown(markdownString: string, options?: CompleteStepMarkdownOptions): ReportingStepPromise { const completionState = options?.completionState; const cancellationToken = options?.cancellationToken; - return new ReportingStepPromiseImpl(this._completeStepMarkdownInternal(markdownString, completionState, cancellationToken)); + return new ReportingStepPromiseImpl(this._completeStepMarkdownInternal(markdownString, completionState, cancellationToken), this._client); } } @@ -5077,7 +5133,9 @@ class ReportingStepImpl implements ReportingStep { * Thenable wrapper for ReportingStep that enables fluent chaining. */ class ReportingStepPromiseImpl implements ReportingStepPromise { - constructor(private _promise: Promise) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: ReportingStep) => TResult1 | PromiseLike) | null, @@ -5088,32 +5146,32 @@ class ReportingStepPromiseImpl implements ReportingStepPromise { /** Creates a reporting task with plain-text status text */ createTask(statusText: string, options?: CreateTaskOptions): ReportingTaskPromise { - return new ReportingTaskPromiseImpl(this._promise.then(obj => obj.createTask(statusText, options))); + return new ReportingTaskPromiseImpl(this._promise.then(obj => obj.createTask(statusText, options)), this._client); } /** Creates a reporting task with Markdown-formatted status text */ createMarkdownTask(markdownString: string, options?: CreateMarkdownTaskOptions): ReportingTaskPromise { - return new ReportingTaskPromiseImpl(this._promise.then(obj => obj.createMarkdownTask(markdownString, options))); + return new ReportingTaskPromiseImpl(this._promise.then(obj => obj.createMarkdownTask(markdownString, options)), this._client); } /** Logs a plain-text message for the reporting step */ logStep(level: string, message: string): ReportingStepPromise { - return new ReportingStepPromiseImpl(this._promise.then(obj => obj.logStep(level, message))); + return new ReportingStepPromiseImpl(this._promise.then(obj => obj.logStep(level, message)), this._client); } /** Logs a Markdown-formatted message for the reporting step */ logStepMarkdown(level: string, markdownString: string): ReportingStepPromise { - return new ReportingStepPromiseImpl(this._promise.then(obj => obj.logStepMarkdown(level, markdownString))); + return new ReportingStepPromiseImpl(this._promise.then(obj => obj.logStepMarkdown(level, markdownString)), this._client); } /** Completes the reporting step with plain-text completion text */ completeStep(completionText: string, options?: CompleteStepOptions): ReportingStepPromise { - return new ReportingStepPromiseImpl(this._promise.then(obj => obj.completeStep(completionText, options))); + return new ReportingStepPromiseImpl(this._promise.then(obj => obj.completeStep(completionText, options)), this._client); } /** Completes the reporting step with Markdown-formatted completion text */ completeStepMarkdown(markdownString: string, options?: CompleteStepMarkdownOptions): ReportingStepPromise { - return new ReportingStepPromiseImpl(this._promise.then(obj => obj.completeStepMarkdown(markdownString, options))); + return new ReportingStepPromiseImpl(this._promise.then(obj => obj.completeStepMarkdown(markdownString, options)), this._client); } } @@ -5164,7 +5222,7 @@ class ReportingTaskImpl implements ReportingTask { updateTask(statusText: string, options?: UpdateTaskOptions): ReportingTaskPromise { const cancellationToken = options?.cancellationToken; - return new ReportingTaskPromiseImpl(this._updateTaskInternal(statusText, cancellationToken)); + return new ReportingTaskPromiseImpl(this._updateTaskInternal(statusText, cancellationToken), this._client); } /** Updates the reporting task with Markdown-formatted status text */ @@ -5181,7 +5239,7 @@ class ReportingTaskImpl implements ReportingTask { updateTaskMarkdown(markdownString: string, options?: UpdateTaskMarkdownOptions): ReportingTaskPromise { const cancellationToken = options?.cancellationToken; - return new ReportingTaskPromiseImpl(this._updateTaskMarkdownInternal(markdownString, cancellationToken)); + return new ReportingTaskPromiseImpl(this._updateTaskMarkdownInternal(markdownString, cancellationToken), this._client); } /** Completes the reporting task with plain-text completion text */ @@ -5202,7 +5260,7 @@ class ReportingTaskImpl implements ReportingTask { const completionMessage = options?.completionMessage; const completionState = options?.completionState; const cancellationToken = options?.cancellationToken; - return new ReportingTaskPromiseImpl(this._completeTaskInternal(completionMessage, completionState, cancellationToken)); + return new ReportingTaskPromiseImpl(this._completeTaskInternal(completionMessage, completionState, cancellationToken), this._client); } /** Completes the reporting task with Markdown-formatted completion text */ @@ -5221,7 +5279,7 @@ class ReportingTaskImpl implements ReportingTask { completeTaskMarkdown(markdownString: string, options?: CompleteTaskMarkdownOptions): ReportingTaskPromise { const completionState = options?.completionState; const cancellationToken = options?.cancellationToken; - return new ReportingTaskPromiseImpl(this._completeTaskMarkdownInternal(markdownString, completionState, cancellationToken)); + return new ReportingTaskPromiseImpl(this._completeTaskMarkdownInternal(markdownString, completionState, cancellationToken), this._client); } } @@ -5230,7 +5288,9 @@ class ReportingTaskImpl implements ReportingTask { * Thenable wrapper for ReportingTask that enables fluent chaining. */ class ReportingTaskPromiseImpl implements ReportingTaskPromise { - constructor(private _promise: Promise) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: ReportingTask) => TResult1 | PromiseLike) | null, @@ -5241,22 +5301,22 @@ class ReportingTaskPromiseImpl implements ReportingTaskPromise { /** Updates the reporting task with plain-text status text */ updateTask(statusText: string, options?: UpdateTaskOptions): ReportingTaskPromise { - return new ReportingTaskPromiseImpl(this._promise.then(obj => obj.updateTask(statusText, options))); + return new ReportingTaskPromiseImpl(this._promise.then(obj => obj.updateTask(statusText, options)), this._client); } /** Updates the reporting task with Markdown-formatted status text */ updateTaskMarkdown(markdownString: string, options?: UpdateTaskMarkdownOptions): ReportingTaskPromise { - return new ReportingTaskPromiseImpl(this._promise.then(obj => obj.updateTaskMarkdown(markdownString, options))); + return new ReportingTaskPromiseImpl(this._promise.then(obj => obj.updateTaskMarkdown(markdownString, options)), this._client); } /** Completes the reporting task with plain-text completion text */ completeTask(options?: CompleteTaskOptions): ReportingTaskPromise { - return new ReportingTaskPromiseImpl(this._promise.then(obj => obj.completeTask(options))); + return new ReportingTaskPromiseImpl(this._promise.then(obj => obj.completeTask(options)), this._client); } /** Completes the reporting task with Markdown-formatted completion text */ completeTaskMarkdown(markdownString: string, options?: CompleteTaskMarkdownOptions): ReportingTaskPromise { - return new ReportingTaskPromiseImpl(this._promise.then(obj => obj.completeTaskMarkdown(markdownString, options))); + return new ReportingTaskPromiseImpl(this._promise.then(obj => obj.completeTaskMarkdown(markdownString, options)), this._client); } } @@ -5309,7 +5369,7 @@ class ServiceProviderImpl implements ServiceProvider { } getEventing(): DistributedApplicationEventingPromise { - return new DistributedApplicationEventingPromiseImpl(this._getEventingInternal()); + return new DistributedApplicationEventingPromiseImpl(this._getEventingInternal(), this._client); } /** Gets the logger factory from the service provider */ @@ -5324,7 +5384,7 @@ class ServiceProviderImpl implements ServiceProvider { } getLoggerFactory(): LoggerFactoryPromise { - return new LoggerFactoryPromiseImpl(this._getLoggerFactoryInternal()); + return new LoggerFactoryPromiseImpl(this._getLoggerFactoryInternal(), this._client); } /** Gets the resource logger service from the service provider */ @@ -5339,7 +5399,7 @@ class ServiceProviderImpl implements ServiceProvider { } getResourceLoggerService(): ResourceLoggerServicePromise { - return new ResourceLoggerServicePromiseImpl(this._getResourceLoggerServiceInternal()); + return new ResourceLoggerServicePromiseImpl(this._getResourceLoggerServiceInternal(), this._client); } /** Gets the distributed application model from the service provider */ @@ -5354,7 +5414,7 @@ class ServiceProviderImpl implements ServiceProvider { } getDistributedApplicationModel(): DistributedApplicationModelPromise { - return new DistributedApplicationModelPromiseImpl(this._getDistributedApplicationModelInternal()); + return new DistributedApplicationModelPromiseImpl(this._getDistributedApplicationModelInternal(), this._client); } /** Gets the resource notification service from the service provider */ @@ -5369,7 +5429,7 @@ class ServiceProviderImpl implements ServiceProvider { } getResourceNotificationService(): ResourceNotificationServicePromise { - return new ResourceNotificationServicePromiseImpl(this._getResourceNotificationServiceInternal()); + return new ResourceNotificationServicePromiseImpl(this._getResourceNotificationServiceInternal(), this._client); } /** Gets the user secrets manager from the service provider */ @@ -5384,7 +5444,7 @@ class ServiceProviderImpl implements ServiceProvider { } getUserSecretsManager(): UserSecretsManagerPromise { - return new UserSecretsManagerPromiseImpl(this._getUserSecretsManagerInternal()); + return new UserSecretsManagerPromiseImpl(this._getUserSecretsManagerInternal(), this._client); } } @@ -5393,7 +5453,9 @@ class ServiceProviderImpl implements ServiceProvider { * Thenable wrapper for ServiceProvider that enables fluent chaining. */ class ServiceProviderPromiseImpl implements ServiceProviderPromise { - constructor(private _promise: Promise) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: ServiceProvider) => TResult1 | PromiseLike) | null, @@ -5404,32 +5466,32 @@ class ServiceProviderPromiseImpl implements ServiceProviderPromise { /** Gets the distributed application eventing service from the service provider */ getEventing(): DistributedApplicationEventingPromise { - return new DistributedApplicationEventingPromiseImpl(this._promise.then(obj => obj.getEventing())); + return new DistributedApplicationEventingPromiseImpl(this._promise.then(obj => obj.getEventing()), this._client); } /** Gets the logger factory from the service provider */ getLoggerFactory(): LoggerFactoryPromise { - return new LoggerFactoryPromiseImpl(this._promise.then(obj => obj.getLoggerFactory())); + return new LoggerFactoryPromiseImpl(this._promise.then(obj => obj.getLoggerFactory()), this._client); } /** Gets the resource logger service from the service provider */ getResourceLoggerService(): ResourceLoggerServicePromise { - return new ResourceLoggerServicePromiseImpl(this._promise.then(obj => obj.getResourceLoggerService())); + return new ResourceLoggerServicePromiseImpl(this._promise.then(obj => obj.getResourceLoggerService()), this._client); } /** Gets the distributed application model from the service provider */ getDistributedApplicationModel(): DistributedApplicationModelPromise { - return new DistributedApplicationModelPromiseImpl(this._promise.then(obj => obj.getDistributedApplicationModel())); + return new DistributedApplicationModelPromiseImpl(this._promise.then(obj => obj.getDistributedApplicationModel()), this._client); } /** Gets the resource notification service from the service provider */ getResourceNotificationService(): ResourceNotificationServicePromise { - return new ResourceNotificationServicePromiseImpl(this._promise.then(obj => obj.getResourceNotificationService())); + return new ResourceNotificationServicePromiseImpl(this._promise.then(obj => obj.getResourceNotificationService()), this._client); } /** Gets the user secrets manager from the service provider */ getUserSecretsManager(): UserSecretsManagerPromise { - return new UserSecretsManagerPromiseImpl(this._promise.then(obj => obj.getUserSecretsManager())); + return new UserSecretsManagerPromiseImpl(this._promise.then(obj => obj.getUserSecretsManager()), this._client); } } @@ -5448,13 +5510,13 @@ export interface UserSecretsManager { }; trySetSecret(name: string, value: string): Promise; saveStateJson(json: string, options?: SaveStateJsonOptions): UserSecretsManagerPromise; - getOrSetSecret(resourceBuilder: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, name: string, value: string): UserSecretsManagerPromise; + getOrSetSecret(resourceBuilder: Awaitable, name: string, value: string): UserSecretsManagerPromise; } export interface UserSecretsManagerPromise extends PromiseLike { trySetSecret(name: string, value: string): Promise; saveStateJson(json: string, options?: SaveStateJsonOptions): UserSecretsManagerPromise; - getOrSetSecret(resourceBuilder: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, name: string, value: string): UserSecretsManagerPromise; + getOrSetSecret(resourceBuilder: Awaitable, name: string, value: string): UserSecretsManagerPromise; } // ============================================================================ @@ -5513,12 +5575,13 @@ class UserSecretsManagerImpl implements UserSecretsManager { saveStateJson(json: string, options?: SaveStateJsonOptions): UserSecretsManagerPromise { const cancellationToken = options?.cancellationToken; - return new UserSecretsManagerPromiseImpl(this._saveStateJsonInternal(json, cancellationToken)); + return new UserSecretsManagerPromiseImpl(this._saveStateJsonInternal(json, cancellationToken), this._client); } /** Gets a secret value if it exists, or sets it to the provided value if it does not */ /** @internal */ - async _getOrSetSecretInternal(resourceBuilder: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, name: string, value: string): Promise { + async _getOrSetSecretInternal(resourceBuilder: Awaitable, name: string, value: string): Promise { + resourceBuilder = isPromiseLike(resourceBuilder) ? await resourceBuilder : resourceBuilder; const rpcArgs: Record = { userSecretsManager: this._handle, resourceBuilder, name, value }; await this._client.invokeCapability( 'Aspire.Hosting/getOrSetSecret', @@ -5527,8 +5590,8 @@ class UserSecretsManagerImpl implements UserSecretsManager { return this; } - getOrSetSecret(resourceBuilder: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, name: string, value: string): UserSecretsManagerPromise { - return new UserSecretsManagerPromiseImpl(this._getOrSetSecretInternal(resourceBuilder, name, value)); + getOrSetSecret(resourceBuilder: Awaitable, name: string, value: string): UserSecretsManagerPromise { + return new UserSecretsManagerPromiseImpl(this._getOrSetSecretInternal(resourceBuilder, name, value), this._client); } } @@ -5537,7 +5600,9 @@ class UserSecretsManagerImpl implements UserSecretsManager { * Thenable wrapper for UserSecretsManager that enables fluent chaining. */ class UserSecretsManagerPromiseImpl implements UserSecretsManagerPromise { - constructor(private _promise: Promise) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: UserSecretsManager) => TResult1 | PromiseLike) | null, @@ -5553,12 +5618,12 @@ class UserSecretsManagerPromiseImpl implements UserSecretsManagerPromise { /** Saves state to user secrets from a JSON string */ saveStateJson(json: string, options?: SaveStateJsonOptions): UserSecretsManagerPromise { - return new UserSecretsManagerPromiseImpl(this._promise.then(obj => obj.saveStateJson(json, options))); + return new UserSecretsManagerPromiseImpl(this._promise.then(obj => obj.saveStateJson(json, options)), this._client); } /** Gets a secret value if it exists, or sets it to the provided value if it does not */ - getOrSetSecret(resourceBuilder: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, name: string, value: string): UserSecretsManagerPromise { - return new UserSecretsManagerPromiseImpl(this._promise.then(obj => obj.getOrSetSecret(resourceBuilder, name, value))); + getOrSetSecret(resourceBuilder: Awaitable, name: string, value: string): UserSecretsManagerPromise { + return new UserSecretsManagerPromiseImpl(this._promise.then(obj => obj.getOrSetSecret(resourceBuilder, name, value)), this._client); } } @@ -5569,7 +5634,7 @@ class UserSecretsManagerPromiseImpl implements UserSecretsManagerPromise { export interface ConnectionStringResource { toJSON(): MarshalledHandle; - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ConnectionStringResourcePromise; + withContainerRegistry(registry: Awaitable): ConnectionStringResourcePromise; withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): ConnectionStringResourcePromise; withRequiredCommand(command: string, options?: WithRequiredCommandOptions): ConnectionStringResourcePromise; withConnectionProperty(name: string, value: ReferenceExpression): ConnectionStringResourcePromise; @@ -5580,16 +5645,16 @@ export interface ConnectionStringResource { withUrlExpression(url: ReferenceExpression, options?: WithUrlExpressionOptions): ConnectionStringResourcePromise; withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): ConnectionStringResourcePromise; excludeFromManifest(): ConnectionStringResourcePromise; - waitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ConnectionStringResourcePromise; - waitForWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): ConnectionStringResourcePromise; - waitForStart(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ConnectionStringResourcePromise; - waitForStartWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): ConnectionStringResourcePromise; + waitFor(dependency: Awaitable): ConnectionStringResourcePromise; + waitForWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): ConnectionStringResourcePromise; + waitForStart(dependency: Awaitable): ConnectionStringResourcePromise; + waitForStartWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): ConnectionStringResourcePromise; withExplicitStart(): ConnectionStringResourcePromise; - waitForCompletion(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WaitForCompletionOptions): ConnectionStringResourcePromise; + waitForCompletion(dependency: Awaitable, options?: WaitForCompletionOptions): ConnectionStringResourcePromise; withHealthCheck(key: string): ConnectionStringResourcePromise; withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): ConnectionStringResourcePromise; - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ConnectionStringResourcePromise; - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ConnectionStringResourcePromise; + withParentRelationship(parent: Awaitable): ConnectionStringResourcePromise; + withChildRelationship(child: Awaitable): ConnectionStringResourcePromise; withIconName(iconName: string, options?: WithIconNameOptions): ConnectionStringResourcePromise; excludeFromMcp(): ConnectionStringResourcePromise; withPipelineStepFactory(stepName: string, callback: (arg: PipelineStepContext) => Promise, options?: WithPipelineStepFactoryOptions): ConnectionStringResourcePromise; @@ -5610,10 +5675,10 @@ export interface ConnectionStringResource { withStatus(status: TestResourceStatus): ConnectionStringResourcePromise; withNestedConfig(config: TestNestedDto): ConnectionStringResourcePromise; withValidator(validator: (arg: TestResourceContext) => Promise): ConnectionStringResourcePromise; - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ConnectionStringResourcePromise; + testWaitFor(dependency: Awaitable): ConnectionStringResourcePromise; withConnectionStringDirect(connectionString: string): ConnectionStringResourcePromise; - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ConnectionStringResourcePromise; - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ConnectionStringResourcePromise; + withDependency(dependency: Awaitable): ConnectionStringResourcePromise; + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): ConnectionStringResourcePromise; withEndpoints(endpoints: string[]): ConnectionStringResourcePromise; withCancellableOperation(operation: (arg: CancellationToken) => Promise): ConnectionStringResourcePromise; withMergeLabel(label: string): ConnectionStringResourcePromise; @@ -5627,7 +5692,7 @@ export interface ConnectionStringResource { } export interface ConnectionStringResourcePromise extends PromiseLike { - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ConnectionStringResourcePromise; + withContainerRegistry(registry: Awaitable): ConnectionStringResourcePromise; withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): ConnectionStringResourcePromise; withRequiredCommand(command: string, options?: WithRequiredCommandOptions): ConnectionStringResourcePromise; withConnectionProperty(name: string, value: ReferenceExpression): ConnectionStringResourcePromise; @@ -5638,16 +5703,16 @@ export interface ConnectionStringResourcePromise extends PromiseLike Promise): ConnectionStringResourcePromise; excludeFromManifest(): ConnectionStringResourcePromise; - waitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ConnectionStringResourcePromise; - waitForWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): ConnectionStringResourcePromise; - waitForStart(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ConnectionStringResourcePromise; - waitForStartWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): ConnectionStringResourcePromise; + waitFor(dependency: Awaitable): ConnectionStringResourcePromise; + waitForWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): ConnectionStringResourcePromise; + waitForStart(dependency: Awaitable): ConnectionStringResourcePromise; + waitForStartWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): ConnectionStringResourcePromise; withExplicitStart(): ConnectionStringResourcePromise; - waitForCompletion(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WaitForCompletionOptions): ConnectionStringResourcePromise; + waitForCompletion(dependency: Awaitable, options?: WaitForCompletionOptions): ConnectionStringResourcePromise; withHealthCheck(key: string): ConnectionStringResourcePromise; withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): ConnectionStringResourcePromise; - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ConnectionStringResourcePromise; - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ConnectionStringResourcePromise; + withParentRelationship(parent: Awaitable): ConnectionStringResourcePromise; + withChildRelationship(child: Awaitable): ConnectionStringResourcePromise; withIconName(iconName: string, options?: WithIconNameOptions): ConnectionStringResourcePromise; excludeFromMcp(): ConnectionStringResourcePromise; withPipelineStepFactory(stepName: string, callback: (arg: PipelineStepContext) => Promise, options?: WithPipelineStepFactoryOptions): ConnectionStringResourcePromise; @@ -5668,10 +5733,10 @@ export interface ConnectionStringResourcePromise extends PromiseLike Promise): ConnectionStringResourcePromise; - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ConnectionStringResourcePromise; + testWaitFor(dependency: Awaitable): ConnectionStringResourcePromise; withConnectionStringDirect(connectionString: string): ConnectionStringResourcePromise; - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ConnectionStringResourcePromise; - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ConnectionStringResourcePromise; + withDependency(dependency: Awaitable): ConnectionStringResourcePromise; + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): ConnectionStringResourcePromise; withEndpoints(endpoints: string[]): ConnectionStringResourcePromise; withCancellableOperation(operation: (arg: CancellationToken) => Promise): ConnectionStringResourcePromise; withMergeLabel(label: string): ConnectionStringResourcePromise; @@ -5694,7 +5759,8 @@ class ConnectionStringResourceImpl extends ResourceBuilderBase { + private async _withContainerRegistryInternal(registry: Awaitable): Promise { + registry = isPromiseLike(registry) ? await registry : registry; const rpcArgs: Record = { builder: this._handle, registry }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withContainerRegistry', @@ -5704,8 +5770,8 @@ class ConnectionStringResourceImpl extends ResourceBuilderBase): ConnectionStringResourcePromise { + return new ConnectionStringResourcePromiseImpl(this._withContainerRegistryInternal(registry), this._client); } /** @internal */ @@ -5724,7 +5790,7 @@ class ConnectionStringResourceImpl extends ResourceBuilderBase Promise): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._withUrlsCallbackInternal(callback)); + return new ConnectionStringResourcePromiseImpl(this._withUrlsCallbackInternal(callback), this._client); } /** @internal */ @@ -5817,7 +5883,7 @@ class ConnectionStringResourceImpl extends ResourceBuilderBase Promise): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._withUrlForEndpointInternal(endpointName, callback)); + return new ConnectionStringResourcePromiseImpl(this._withUrlForEndpointInternal(endpointName, callback), this._client); } /** @internal */ @@ -5868,11 +5934,12 @@ class ConnectionStringResourceImpl extends ResourceBuilderBase { + private async _waitForInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForResource', @@ -5882,12 +5949,13 @@ class ConnectionStringResourceImpl extends ResourceBuilderBase): ConnectionStringResourcePromise { + return new ConnectionStringResourcePromiseImpl(this._waitForInternal(dependency), this._client); } /** @internal */ - private async _waitForWithBehaviorInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): Promise { + private async _waitForWithBehaviorInternal(dependency: Awaitable, waitBehavior: WaitBehavior): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency, waitBehavior }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForWithBehavior', @@ -5897,12 +5965,13 @@ class ConnectionStringResourceImpl extends ResourceBuilderBase, waitBehavior: WaitBehavior): ConnectionStringResourcePromise { + return new ConnectionStringResourcePromiseImpl(this._waitForWithBehaviorInternal(dependency, waitBehavior), this._client); } /** @internal */ - private async _waitForStartInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _waitForStartInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForResourceStart', @@ -5912,12 +5981,13 @@ class ConnectionStringResourceImpl extends ResourceBuilderBase): ConnectionStringResourcePromise { + return new ConnectionStringResourcePromiseImpl(this._waitForStartInternal(dependency), this._client); } /** @internal */ - private async _waitForStartWithBehaviorInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): Promise { + private async _waitForStartWithBehaviorInternal(dependency: Awaitable, waitBehavior: WaitBehavior): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency, waitBehavior }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForStartWithBehavior', @@ -5927,8 +5997,8 @@ class ConnectionStringResourceImpl extends ResourceBuilderBase, waitBehavior: WaitBehavior): ConnectionStringResourcePromise { + return new ConnectionStringResourcePromiseImpl(this._waitForStartWithBehaviorInternal(dependency, waitBehavior), this._client); } /** @internal */ @@ -5943,11 +6013,12 @@ class ConnectionStringResourceImpl extends ResourceBuilderBase { + private async _waitForCompletionInternal(dependency: Awaitable, exitCode?: number): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; if (exitCode !== undefined) rpcArgs.exitCode = exitCode; const result = await this._client.invokeCapability( @@ -5958,9 +6029,9 @@ class ConnectionStringResourceImpl extends ResourceBuilderBase, options?: WaitForCompletionOptions): ConnectionStringResourcePromise { const exitCode = options?.exitCode; - return new ConnectionStringResourcePromiseImpl(this._waitForCompletionInternal(dependency, exitCode)); + return new ConnectionStringResourcePromiseImpl(this._waitForCompletionInternal(dependency, exitCode), this._client); } /** @internal */ @@ -5975,7 +6046,7 @@ class ConnectionStringResourceImpl extends ResourceBuilderBase Promise, options?: WithCommandOptions): ConnectionStringResourcePromise { const commandOptions = options?.commandOptions; - return new ConnectionStringResourcePromiseImpl(this._withCommandInternal(name, displayName, executeCommand, commandOptions)); + return new ConnectionStringResourcePromiseImpl(this._withCommandInternal(name, displayName, executeCommand, commandOptions), this._client); } /** @internal */ - private async _withParentRelationshipInternal(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _withParentRelationshipInternal(parent: Awaitable): Promise { + parent = isPromiseLike(parent) ? await parent : parent; const rpcArgs: Record = { builder: this._handle, parent }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withBuilderParentRelationship', @@ -6011,12 +6083,13 @@ class ConnectionStringResourceImpl extends ResourceBuilderBase): ConnectionStringResourcePromise { + return new ConnectionStringResourcePromiseImpl(this._withParentRelationshipInternal(parent), this._client); } /** @internal */ - private async _withChildRelationshipInternal(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _withChildRelationshipInternal(child: Awaitable): Promise { + child = isPromiseLike(child) ? await child : child; const rpcArgs: Record = { builder: this._handle, child }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withBuilderChildRelationship', @@ -6026,8 +6099,8 @@ class ConnectionStringResourceImpl extends ResourceBuilderBase): ConnectionStringResourcePromise { + return new ConnectionStringResourcePromiseImpl(this._withChildRelationshipInternal(child), this._client); } /** @internal */ @@ -6044,7 +6117,7 @@ class ConnectionStringResourceImpl extends ResourceBuilderBase Promise): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._withPipelineConfigurationInternal(callback)); + return new ConnectionStringResourcePromiseImpl(this._withPipelineConfigurationInternal(callback), this._client); } /** Gets the resource name */ @@ -6136,7 +6209,7 @@ class ConnectionStringResourceImpl extends ResourceBuilderBase Promise): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._onBeforeResourceStartedInternal(callback)); + return new ConnectionStringResourcePromiseImpl(this._onBeforeResourceStartedInternal(callback), this._client); } /** @internal */ @@ -6156,7 +6229,7 @@ class ConnectionStringResourceImpl extends ResourceBuilderBase Promise): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._onResourceStoppedInternal(callback)); + return new ConnectionStringResourcePromiseImpl(this._onResourceStoppedInternal(callback), this._client); } /** @internal */ @@ -6176,7 +6249,7 @@ class ConnectionStringResourceImpl extends ResourceBuilderBase Promise): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._onConnectionStringAvailableInternal(callback)); + return new ConnectionStringResourcePromiseImpl(this._onConnectionStringAvailableInternal(callback), this._client); } /** @internal */ @@ -6196,7 +6269,7 @@ class ConnectionStringResourceImpl extends ResourceBuilderBase Promise): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._onInitializeResourceInternal(callback)); + return new ConnectionStringResourcePromiseImpl(this._onInitializeResourceInternal(callback), this._client); } /** @internal */ @@ -6216,7 +6289,7 @@ class ConnectionStringResourceImpl extends ResourceBuilderBase Promise): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._onResourceReadyInternal(callback)); + return new ConnectionStringResourcePromiseImpl(this._onResourceReadyInternal(callback), this._client); } /** @internal */ @@ -6235,7 +6308,7 @@ class ConnectionStringResourceImpl extends ResourceBuilderBase Promise): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._withValidatorInternal(validator)); + return new ConnectionStringResourcePromiseImpl(this._withValidatorInternal(validator), this._client); } /** @internal */ - private async _testWaitForInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _testWaitForInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/testWaitFor', @@ -6396,8 +6470,8 @@ class ConnectionStringResourceImpl extends ResourceBuilderBase): ConnectionStringResourcePromise { + return new ConnectionStringResourcePromiseImpl(this._testWaitForInternal(dependency), this._client); } /** @internal */ @@ -6412,11 +6486,12 @@ class ConnectionStringResourceImpl extends ResourceBuilderBase { + private async _withDependencyInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/withDependency', @@ -6426,12 +6501,13 @@ class ConnectionStringResourceImpl extends ResourceBuilderBase): ConnectionStringResourcePromise { + return new ConnectionStringResourcePromiseImpl(this._withDependencyInternal(dependency), this._client); } /** @internal */ - private async _withUnionDependencyInternal(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withUnionDependencyInternal(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/withUnionDependency', @@ -6441,8 +6517,8 @@ class ConnectionStringResourceImpl extends ResourceBuilderBase): ConnectionStringResourcePromise { + return new ConnectionStringResourcePromiseImpl(this._withUnionDependencyInternal(dependency), this._client); } /** @internal */ @@ -6457,7 +6533,7 @@ class ConnectionStringResourceImpl extends ResourceBuilderBase Promise): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._withCancellableOperationInternal(operation)); + return new ConnectionStringResourcePromiseImpl(this._withCancellableOperationInternal(operation), this._client); } /** @internal */ @@ -6491,7 +6567,7 @@ class ConnectionStringResourceImpl extends ResourceBuilderBase) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: ConnectionStringResource) => TResult1 | PromiseLike) | null, @@ -6625,28 +6703,28 @@ class ConnectionStringResourcePromiseImpl implements ConnectionStringResourcePro } /** Configures a resource to use a container registry */ - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withContainerRegistry(registry))); + withContainerRegistry(registry: Awaitable): ConnectionStringResourcePromise { + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withContainerRegistry(registry)), this._client); } /** Sets the base image for a Dockerfile build */ withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withDockerfileBaseImage(options))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withDockerfileBaseImage(options)), this._client); } /** Adds a required command dependency */ withRequiredCommand(command: string, options?: WithRequiredCommandOptions): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withRequiredCommand(command, options))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withRequiredCommand(command, options)), this._client); } /** Adds a connection property with a reference expression */ withConnectionProperty(name: string, value: ReferenceExpression): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withConnectionProperty(name, value))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withConnectionProperty(name, value)), this._client); } /** Adds a connection property with a string value */ withConnectionPropertyValue(name: string, value: string): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withConnectionPropertyValue(name, value))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withConnectionPropertyValue(name, value)), this._client); } /** Gets a connection property by key */ @@ -6656,97 +6734,97 @@ class ConnectionStringResourcePromiseImpl implements ConnectionStringResourcePro /** Customizes displayed URLs via callback */ withUrlsCallback(callback: (obj: ResourceUrlsCallbackContext) => Promise): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withUrlsCallback(callback))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withUrlsCallback(callback)), this._client); } /** Adds or modifies displayed URLs */ withUrl(url: string, options?: WithUrlOptions): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withUrl(url, options))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withUrl(url, options)), this._client); } /** Adds a URL using a reference expression */ withUrlExpression(url: ReferenceExpression, options?: WithUrlExpressionOptions): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withUrlExpression(url, options))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withUrlExpression(url, options)), this._client); } /** Customizes the URL for a specific endpoint via callback */ withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpoint(endpointName, callback))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpoint(endpointName, callback)), this._client); } /** Excludes the resource from the deployment manifest */ excludeFromManifest(): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.excludeFromManifest())); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.excludeFromManifest()), this._client); } /** Waits for another resource to be ready */ - waitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.waitFor(dependency))); + waitFor(dependency: Awaitable): ConnectionStringResourcePromise { + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.waitFor(dependency)), this._client); } /** Waits for another resource with specific behavior */ - waitForWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.waitForWithBehavior(dependency, waitBehavior))); + waitForWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): ConnectionStringResourcePromise { + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.waitForWithBehavior(dependency, waitBehavior)), this._client); } /** Waits for another resource to start */ - waitForStart(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.waitForStart(dependency))); + waitForStart(dependency: Awaitable): ConnectionStringResourcePromise { + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.waitForStart(dependency)), this._client); } /** Waits for another resource to start with specific behavior */ - waitForStartWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.waitForStartWithBehavior(dependency, waitBehavior))); + waitForStartWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): ConnectionStringResourcePromise { + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.waitForStartWithBehavior(dependency, waitBehavior)), this._client); } /** Prevents resource from starting automatically */ withExplicitStart(): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withExplicitStart())); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withExplicitStart()), this._client); } /** Waits for resource completion */ - waitForCompletion(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WaitForCompletionOptions): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.waitForCompletion(dependency, options))); + waitForCompletion(dependency: Awaitable, options?: WaitForCompletionOptions): ConnectionStringResourcePromise { + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.waitForCompletion(dependency, options)), this._client); } /** Adds a health check by key */ withHealthCheck(key: string): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withHealthCheck(key))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withHealthCheck(key)), this._client); } /** Adds a resource command */ withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withCommand(name, displayName, executeCommand, options))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withCommand(name, displayName, executeCommand, options)), this._client); } /** Sets the parent relationship */ - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withParentRelationship(parent))); + withParentRelationship(parent: Awaitable): ConnectionStringResourcePromise { + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withParentRelationship(parent)), this._client); } /** Sets a child relationship */ - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withChildRelationship(child))); + withChildRelationship(child: Awaitable): ConnectionStringResourcePromise { + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withChildRelationship(child)), this._client); } /** Sets the icon for the resource */ withIconName(iconName: string, options?: WithIconNameOptions): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withIconName(iconName, options))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withIconName(iconName, options)), this._client); } /** Excludes the resource from MCP server exposure */ excludeFromMcp(): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.excludeFromMcp())); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.excludeFromMcp()), this._client); } /** Adds a pipeline step to the resource */ withPipelineStepFactory(stepName: string, callback: (arg: PipelineStepContext) => Promise, options?: WithPipelineStepFactoryOptions): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withPipelineStepFactory(stepName, callback, options))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withPipelineStepFactory(stepName, callback, options)), this._client); } /** Configures pipeline step dependencies via a callback */ withPipelineConfiguration(callback: (obj: PipelineConfigurationContext) => Promise): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withPipelineConfiguration(callback))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withPipelineConfiguration(callback)), this._client); } /** Gets the resource name */ @@ -6756,147 +6834,147 @@ class ConnectionStringResourcePromiseImpl implements ConnectionStringResourcePro /** Subscribes to the BeforeResourceStarted event */ onBeforeResourceStarted(callback: (arg: BeforeResourceStartedEvent) => Promise): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.onBeforeResourceStarted(callback))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.onBeforeResourceStarted(callback)), this._client); } /** Subscribes to the ResourceStopped event */ onResourceStopped(callback: (arg: ResourceStoppedEvent) => Promise): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.onResourceStopped(callback))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.onResourceStopped(callback)), this._client); } /** Subscribes to the ConnectionStringAvailable event */ onConnectionStringAvailable(callback: (arg: ConnectionStringAvailableEvent) => Promise): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.onConnectionStringAvailable(callback))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.onConnectionStringAvailable(callback)), this._client); } /** Subscribes to the InitializeResource event */ onInitializeResource(callback: (arg: InitializeResourceEvent) => Promise): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.onInitializeResource(callback))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.onInitializeResource(callback)), this._client); } /** Subscribes to the ResourceReady event */ onResourceReady(callback: (arg: ResourceReadyEvent) => Promise): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.onResourceReady(callback))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.onResourceReady(callback)), this._client); } /** Adds an optional string parameter */ withOptionalString(options?: WithOptionalStringOptions): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withOptionalString(options))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withOptionalString(options)), this._client); } /** Configures the resource with a DTO */ withConfig(config: TestConfigDto): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withConfig(config))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withConfig(config)), this._client); } /** Sets the connection string using a reference expression */ withConnectionString(connectionString: ReferenceExpression): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withConnectionString(connectionString))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withConnectionString(connectionString)), this._client); } /** Sets the created timestamp */ withCreatedAt(createdAt: string): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withCreatedAt(createdAt))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withCreatedAt(createdAt)), this._client); } /** Sets the modified timestamp */ withModifiedAt(modifiedAt: string): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withModifiedAt(modifiedAt))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withModifiedAt(modifiedAt)), this._client); } /** Sets the correlation ID */ withCorrelationId(correlationId: string): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withCorrelationId(correlationId))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withCorrelationId(correlationId)), this._client); } /** Configures with optional callback */ withOptionalCallback(options?: WithOptionalCallbackOptions): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withOptionalCallback(options))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withOptionalCallback(options)), this._client); } /** Sets the resource status */ withStatus(status: TestResourceStatus): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withStatus(status))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withStatus(status)), this._client); } /** Configures with nested DTO */ withNestedConfig(config: TestNestedDto): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withNestedConfig(config))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withNestedConfig(config)), this._client); } /** Adds validation callback */ withValidator(validator: (arg: TestResourceContext) => Promise): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withValidator(validator))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withValidator(validator)), this._client); } /** Waits for another resource (test version) */ - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.testWaitFor(dependency))); + testWaitFor(dependency: Awaitable): ConnectionStringResourcePromise { + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.testWaitFor(dependency)), this._client); } /** Sets connection string using direct interface target */ withConnectionStringDirect(connectionString: string): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withConnectionStringDirect(connectionString))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withConnectionStringDirect(connectionString)), this._client); } /** Adds a dependency on another resource */ - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withDependency(dependency))); + withDependency(dependency: Awaitable): ConnectionStringResourcePromise { + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withDependency(dependency)), this._client); } /** Adds a dependency from a string or another resource */ - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withUnionDependency(dependency))); + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): ConnectionStringResourcePromise { + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withUnionDependency(dependency)), this._client); } /** Sets the endpoints */ withEndpoints(endpoints: string[]): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withEndpoints(endpoints))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withEndpoints(endpoints)), this._client); } /** Performs a cancellable operation */ withCancellableOperation(operation: (arg: CancellationToken) => Promise): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withCancellableOperation(operation))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withCancellableOperation(operation)), this._client); } /** Adds a label to the resource */ withMergeLabel(label: string): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabel(label))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabel(label)), this._client); } /** Adds a categorized label to the resource */ withMergeLabelCategorized(label: string, category: string): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabelCategorized(label, category))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabelCategorized(label, category)), this._client); } /** Configures a named endpoint */ withMergeEndpoint(endpointName: string, port: number): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpoint(endpointName, port))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpoint(endpointName, port)), this._client); } /** Configures a named endpoint with scheme */ withMergeEndpointScheme(endpointName: string, port: number, scheme: string): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpointScheme(endpointName, port, scheme))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpointScheme(endpointName, port, scheme)), this._client); } /** Configures resource logging */ withMergeLogging(logLevel: string, options?: WithMergeLoggingOptions): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withMergeLogging(logLevel, options))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withMergeLogging(logLevel, options)), this._client); } /** Configures resource logging with file path */ withMergeLoggingPath(logLevel: string, logPath: string, options?: WithMergeLoggingPathOptions): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withMergeLoggingPath(logLevel, logPath, options))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withMergeLoggingPath(logLevel, logPath, options)), this._client); } /** Configures a route */ withMergeRoute(path: string, method: string, handler: string, priority: number): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withMergeRoute(path, method, handler, priority))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withMergeRoute(path, method, handler, priority)), this._client); } /** Configures a route with middleware */ withMergeRouteMiddleware(path: string, method: string, handler: string, priority: number, middleware: string): ConnectionStringResourcePromise { - return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withMergeRouteMiddleware(path, method, handler, priority, middleware))); + return new ConnectionStringResourcePromiseImpl(this._promise.then(obj => obj.withMergeRouteMiddleware(path, method, handler, priority, middleware)), this._client); } } @@ -6907,7 +6985,7 @@ class ConnectionStringResourcePromiseImpl implements ConnectionStringResourcePro export interface ContainerRegistryResource { toJSON(): MarshalledHandle; - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerRegistryResourcePromise; + withContainerRegistry(registry: Awaitable): ContainerRegistryResourcePromise; withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): ContainerRegistryResourcePromise; withRequiredCommand(command: string, options?: WithRequiredCommandOptions): ContainerRegistryResourcePromise; withUrlsCallback(callback: (obj: ResourceUrlsCallbackContext) => Promise): ContainerRegistryResourcePromise; @@ -6918,8 +6996,8 @@ export interface ContainerRegistryResource { withExplicitStart(): ContainerRegistryResourcePromise; withHealthCheck(key: string): ContainerRegistryResourcePromise; withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): ContainerRegistryResourcePromise; - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerRegistryResourcePromise; - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerRegistryResourcePromise; + withParentRelationship(parent: Awaitable): ContainerRegistryResourcePromise; + withChildRelationship(child: Awaitable): ContainerRegistryResourcePromise; withIconName(iconName: string, options?: WithIconNameOptions): ContainerRegistryResourcePromise; excludeFromMcp(): ContainerRegistryResourcePromise; withPipelineStepFactory(stepName: string, callback: (arg: PipelineStepContext) => Promise, options?: WithPipelineStepFactoryOptions): ContainerRegistryResourcePromise; @@ -6938,9 +7016,9 @@ export interface ContainerRegistryResource { withStatus(status: TestResourceStatus): ContainerRegistryResourcePromise; withNestedConfig(config: TestNestedDto): ContainerRegistryResourcePromise; withValidator(validator: (arg: TestResourceContext) => Promise): ContainerRegistryResourcePromise; - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerRegistryResourcePromise; - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ContainerRegistryResourcePromise; - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ContainerRegistryResourcePromise; + testWaitFor(dependency: Awaitable): ContainerRegistryResourcePromise; + withDependency(dependency: Awaitable): ContainerRegistryResourcePromise; + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): ContainerRegistryResourcePromise; withEndpoints(endpoints: string[]): ContainerRegistryResourcePromise; withCancellableOperation(operation: (arg: CancellationToken) => Promise): ContainerRegistryResourcePromise; withMergeLabel(label: string): ContainerRegistryResourcePromise; @@ -6954,7 +7032,7 @@ export interface ContainerRegistryResource { } export interface ContainerRegistryResourcePromise extends PromiseLike { - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerRegistryResourcePromise; + withContainerRegistry(registry: Awaitable): ContainerRegistryResourcePromise; withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): ContainerRegistryResourcePromise; withRequiredCommand(command: string, options?: WithRequiredCommandOptions): ContainerRegistryResourcePromise; withUrlsCallback(callback: (obj: ResourceUrlsCallbackContext) => Promise): ContainerRegistryResourcePromise; @@ -6965,8 +7043,8 @@ export interface ContainerRegistryResourcePromise extends PromiseLike Promise, options?: WithCommandOptions): ContainerRegistryResourcePromise; - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerRegistryResourcePromise; - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerRegistryResourcePromise; + withParentRelationship(parent: Awaitable): ContainerRegistryResourcePromise; + withChildRelationship(child: Awaitable): ContainerRegistryResourcePromise; withIconName(iconName: string, options?: WithIconNameOptions): ContainerRegistryResourcePromise; excludeFromMcp(): ContainerRegistryResourcePromise; withPipelineStepFactory(stepName: string, callback: (arg: PipelineStepContext) => Promise, options?: WithPipelineStepFactoryOptions): ContainerRegistryResourcePromise; @@ -6985,9 +7063,9 @@ export interface ContainerRegistryResourcePromise extends PromiseLike Promise): ContainerRegistryResourcePromise; - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerRegistryResourcePromise; - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ContainerRegistryResourcePromise; - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ContainerRegistryResourcePromise; + testWaitFor(dependency: Awaitable): ContainerRegistryResourcePromise; + withDependency(dependency: Awaitable): ContainerRegistryResourcePromise; + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): ContainerRegistryResourcePromise; withEndpoints(endpoints: string[]): ContainerRegistryResourcePromise; withCancellableOperation(operation: (arg: CancellationToken) => Promise): ContainerRegistryResourcePromise; withMergeLabel(label: string): ContainerRegistryResourcePromise; @@ -7010,7 +7088,8 @@ class ContainerRegistryResourceImpl extends ResourceBuilderBase { + private async _withContainerRegistryInternal(registry: Awaitable): Promise { + registry = isPromiseLike(registry) ? await registry : registry; const rpcArgs: Record = { builder: this._handle, registry }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withContainerRegistry', @@ -7020,8 +7099,8 @@ class ContainerRegistryResourceImpl extends ResourceBuilderBase): ContainerRegistryResourcePromise { + return new ContainerRegistryResourcePromiseImpl(this._withContainerRegistryInternal(registry), this._client); } /** @internal */ @@ -7040,7 +7119,7 @@ class ContainerRegistryResourceImpl extends ResourceBuilderBase Promise): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._withUrlsCallbackInternal(callback)); + return new ContainerRegistryResourcePromiseImpl(this._withUrlsCallbackInternal(callback), this._client); } /** @internal */ @@ -7094,7 +7173,7 @@ class ContainerRegistryResourceImpl extends ResourceBuilderBase Promise): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._withUrlForEndpointInternal(endpointName, callback)); + return new ContainerRegistryResourcePromiseImpl(this._withUrlForEndpointInternal(endpointName, callback), this._client); } /** @internal */ @@ -7145,7 +7224,7 @@ class ContainerRegistryResourceImpl extends ResourceBuilderBase Promise, options?: WithCommandOptions): ContainerRegistryResourcePromise { const commandOptions = options?.commandOptions; - return new ContainerRegistryResourcePromiseImpl(this._withCommandInternal(name, displayName, executeCommand, commandOptions)); + return new ContainerRegistryResourcePromiseImpl(this._withCommandInternal(name, displayName, executeCommand, commandOptions), this._client); } /** @internal */ - private async _withParentRelationshipInternal(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _withParentRelationshipInternal(parent: Awaitable): Promise { + parent = isPromiseLike(parent) ? await parent : parent; const rpcArgs: Record = { builder: this._handle, parent }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withBuilderParentRelationship', @@ -7211,12 +7291,13 @@ class ContainerRegistryResourceImpl extends ResourceBuilderBase): ContainerRegistryResourcePromise { + return new ContainerRegistryResourcePromiseImpl(this._withParentRelationshipInternal(parent), this._client); } /** @internal */ - private async _withChildRelationshipInternal(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _withChildRelationshipInternal(child: Awaitable): Promise { + child = isPromiseLike(child) ? await child : child; const rpcArgs: Record = { builder: this._handle, child }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withBuilderChildRelationship', @@ -7226,8 +7307,8 @@ class ContainerRegistryResourceImpl extends ResourceBuilderBase): ContainerRegistryResourcePromise { + return new ContainerRegistryResourcePromiseImpl(this._withChildRelationshipInternal(child), this._client); } /** @internal */ @@ -7244,7 +7325,7 @@ class ContainerRegistryResourceImpl extends ResourceBuilderBase Promise): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._withPipelineConfigurationInternal(callback)); + return new ContainerRegistryResourcePromiseImpl(this._withPipelineConfigurationInternal(callback), this._client); } /** Gets the resource name */ @@ -7336,7 +7417,7 @@ class ContainerRegistryResourceImpl extends ResourceBuilderBase Promise): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._onBeforeResourceStartedInternal(callback)); + return new ContainerRegistryResourcePromiseImpl(this._onBeforeResourceStartedInternal(callback), this._client); } /** @internal */ @@ -7356,7 +7437,7 @@ class ContainerRegistryResourceImpl extends ResourceBuilderBase Promise): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._onResourceStoppedInternal(callback)); + return new ContainerRegistryResourcePromiseImpl(this._onResourceStoppedInternal(callback), this._client); } /** @internal */ @@ -7376,7 +7457,7 @@ class ContainerRegistryResourceImpl extends ResourceBuilderBase Promise): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._onInitializeResourceInternal(callback)); + return new ContainerRegistryResourcePromiseImpl(this._onInitializeResourceInternal(callback), this._client); } /** @internal */ @@ -7396,7 +7477,7 @@ class ContainerRegistryResourceImpl extends ResourceBuilderBase Promise): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._onResourceReadyInternal(callback)); + return new ContainerRegistryResourcePromiseImpl(this._onResourceReadyInternal(callback), this._client); } /** @internal */ @@ -7415,7 +7496,7 @@ class ContainerRegistryResourceImpl extends ResourceBuilderBase Promise): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._withValidatorInternal(validator)); + return new ContainerRegistryResourcePromiseImpl(this._withValidatorInternal(validator), this._client); } /** @internal */ - private async _testWaitForInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _testWaitForInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/testWaitFor', @@ -7561,12 +7643,13 @@ class ContainerRegistryResourceImpl extends ResourceBuilderBase): ContainerRegistryResourcePromise { + return new ContainerRegistryResourcePromiseImpl(this._testWaitForInternal(dependency), this._client); } /** @internal */ - private async _withDependencyInternal(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withDependencyInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/withDependency', @@ -7576,12 +7659,13 @@ class ContainerRegistryResourceImpl extends ResourceBuilderBase): ContainerRegistryResourcePromise { + return new ContainerRegistryResourcePromiseImpl(this._withDependencyInternal(dependency), this._client); } /** @internal */ - private async _withUnionDependencyInternal(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withUnionDependencyInternal(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/withUnionDependency', @@ -7591,8 +7675,8 @@ class ContainerRegistryResourceImpl extends ResourceBuilderBase): ContainerRegistryResourcePromise { + return new ContainerRegistryResourcePromiseImpl(this._withUnionDependencyInternal(dependency), this._client); } /** @internal */ @@ -7607,7 +7691,7 @@ class ContainerRegistryResourceImpl extends ResourceBuilderBase Promise): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._withCancellableOperationInternal(operation)); + return new ContainerRegistryResourcePromiseImpl(this._withCancellableOperationInternal(operation), this._client); } /** @internal */ @@ -7641,7 +7725,7 @@ class ContainerRegistryResourceImpl extends ResourceBuilderBase) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: ContainerRegistryResource) => TResult1 | PromiseLike) | null, @@ -7775,88 +7861,88 @@ class ContainerRegistryResourcePromiseImpl implements ContainerRegistryResourceP } /** Configures a resource to use a container registry */ - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withContainerRegistry(registry))); + withContainerRegistry(registry: Awaitable): ContainerRegistryResourcePromise { + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withContainerRegistry(registry)), this._client); } /** Sets the base image for a Dockerfile build */ withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withDockerfileBaseImage(options))); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withDockerfileBaseImage(options)), this._client); } /** Adds a required command dependency */ withRequiredCommand(command: string, options?: WithRequiredCommandOptions): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withRequiredCommand(command, options))); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withRequiredCommand(command, options)), this._client); } /** Customizes displayed URLs via callback */ withUrlsCallback(callback: (obj: ResourceUrlsCallbackContext) => Promise): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withUrlsCallback(callback))); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withUrlsCallback(callback)), this._client); } /** Adds or modifies displayed URLs */ withUrl(url: string, options?: WithUrlOptions): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withUrl(url, options))); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withUrl(url, options)), this._client); } /** Adds a URL using a reference expression */ withUrlExpression(url: ReferenceExpression, options?: WithUrlExpressionOptions): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withUrlExpression(url, options))); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withUrlExpression(url, options)), this._client); } /** Customizes the URL for a specific endpoint via callback */ withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpoint(endpointName, callback))); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpoint(endpointName, callback)), this._client); } /** Excludes the resource from the deployment manifest */ excludeFromManifest(): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.excludeFromManifest())); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.excludeFromManifest()), this._client); } /** Prevents resource from starting automatically */ withExplicitStart(): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withExplicitStart())); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withExplicitStart()), this._client); } /** Adds a health check by key */ withHealthCheck(key: string): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withHealthCheck(key))); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withHealthCheck(key)), this._client); } /** Adds a resource command */ withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withCommand(name, displayName, executeCommand, options))); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withCommand(name, displayName, executeCommand, options)), this._client); } /** Sets the parent relationship */ - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withParentRelationship(parent))); + withParentRelationship(parent: Awaitable): ContainerRegistryResourcePromise { + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withParentRelationship(parent)), this._client); } /** Sets a child relationship */ - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withChildRelationship(child))); + withChildRelationship(child: Awaitable): ContainerRegistryResourcePromise { + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withChildRelationship(child)), this._client); } /** Sets the icon for the resource */ withIconName(iconName: string, options?: WithIconNameOptions): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withIconName(iconName, options))); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withIconName(iconName, options)), this._client); } /** Excludes the resource from MCP server exposure */ excludeFromMcp(): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.excludeFromMcp())); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.excludeFromMcp()), this._client); } /** Adds a pipeline step to the resource */ withPipelineStepFactory(stepName: string, callback: (arg: PipelineStepContext) => Promise, options?: WithPipelineStepFactoryOptions): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withPipelineStepFactory(stepName, callback, options))); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withPipelineStepFactory(stepName, callback, options)), this._client); } /** Configures pipeline step dependencies via a callback */ withPipelineConfiguration(callback: (obj: PipelineConfigurationContext) => Promise): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withPipelineConfiguration(callback))); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withPipelineConfiguration(callback)), this._client); } /** Gets the resource name */ @@ -7866,132 +7952,132 @@ class ContainerRegistryResourcePromiseImpl implements ContainerRegistryResourceP /** Subscribes to the BeforeResourceStarted event */ onBeforeResourceStarted(callback: (arg: BeforeResourceStartedEvent) => Promise): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.onBeforeResourceStarted(callback))); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.onBeforeResourceStarted(callback)), this._client); } /** Subscribes to the ResourceStopped event */ onResourceStopped(callback: (arg: ResourceStoppedEvent) => Promise): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.onResourceStopped(callback))); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.onResourceStopped(callback)), this._client); } /** Subscribes to the InitializeResource event */ onInitializeResource(callback: (arg: InitializeResourceEvent) => Promise): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.onInitializeResource(callback))); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.onInitializeResource(callback)), this._client); } /** Subscribes to the ResourceReady event */ onResourceReady(callback: (arg: ResourceReadyEvent) => Promise): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.onResourceReady(callback))); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.onResourceReady(callback)), this._client); } /** Adds an optional string parameter */ withOptionalString(options?: WithOptionalStringOptions): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withOptionalString(options))); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withOptionalString(options)), this._client); } /** Configures the resource with a DTO */ withConfig(config: TestConfigDto): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withConfig(config))); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withConfig(config)), this._client); } /** Sets the created timestamp */ withCreatedAt(createdAt: string): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withCreatedAt(createdAt))); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withCreatedAt(createdAt)), this._client); } /** Sets the modified timestamp */ withModifiedAt(modifiedAt: string): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withModifiedAt(modifiedAt))); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withModifiedAt(modifiedAt)), this._client); } /** Sets the correlation ID */ withCorrelationId(correlationId: string): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withCorrelationId(correlationId))); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withCorrelationId(correlationId)), this._client); } /** Configures with optional callback */ withOptionalCallback(options?: WithOptionalCallbackOptions): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withOptionalCallback(options))); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withOptionalCallback(options)), this._client); } /** Sets the resource status */ withStatus(status: TestResourceStatus): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withStatus(status))); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withStatus(status)), this._client); } /** Configures with nested DTO */ withNestedConfig(config: TestNestedDto): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withNestedConfig(config))); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withNestedConfig(config)), this._client); } /** Adds validation callback */ withValidator(validator: (arg: TestResourceContext) => Promise): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withValidator(validator))); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withValidator(validator)), this._client); } /** Waits for another resource (test version) */ - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.testWaitFor(dependency))); + testWaitFor(dependency: Awaitable): ContainerRegistryResourcePromise { + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.testWaitFor(dependency)), this._client); } /** Adds a dependency on another resource */ - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withDependency(dependency))); + withDependency(dependency: Awaitable): ContainerRegistryResourcePromise { + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withDependency(dependency)), this._client); } /** Adds a dependency from a string or another resource */ - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withUnionDependency(dependency))); + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): ContainerRegistryResourcePromise { + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withUnionDependency(dependency)), this._client); } /** Sets the endpoints */ withEndpoints(endpoints: string[]): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withEndpoints(endpoints))); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withEndpoints(endpoints)), this._client); } /** Performs a cancellable operation */ withCancellableOperation(operation: (arg: CancellationToken) => Promise): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withCancellableOperation(operation))); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withCancellableOperation(operation)), this._client); } /** Adds a label to the resource */ withMergeLabel(label: string): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabel(label))); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabel(label)), this._client); } /** Adds a categorized label to the resource */ withMergeLabelCategorized(label: string, category: string): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabelCategorized(label, category))); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabelCategorized(label, category)), this._client); } /** Configures a named endpoint */ withMergeEndpoint(endpointName: string, port: number): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpoint(endpointName, port))); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpoint(endpointName, port)), this._client); } /** Configures a named endpoint with scheme */ withMergeEndpointScheme(endpointName: string, port: number, scheme: string): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpointScheme(endpointName, port, scheme))); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpointScheme(endpointName, port, scheme)), this._client); } /** Configures resource logging */ withMergeLogging(logLevel: string, options?: WithMergeLoggingOptions): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withMergeLogging(logLevel, options))); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withMergeLogging(logLevel, options)), this._client); } /** Configures resource logging with file path */ withMergeLoggingPath(logLevel: string, logPath: string, options?: WithMergeLoggingPathOptions): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withMergeLoggingPath(logLevel, logPath, options))); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withMergeLoggingPath(logLevel, logPath, options)), this._client); } /** Configures a route */ withMergeRoute(path: string, method: string, handler: string, priority: number): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withMergeRoute(path, method, handler, priority))); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withMergeRoute(path, method, handler, priority)), this._client); } /** Configures a route with middleware */ withMergeRouteMiddleware(path: string, method: string, handler: string, priority: number, middleware: string): ContainerRegistryResourcePromise { - return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withMergeRouteMiddleware(path, method, handler, priority, middleware))); + return new ContainerRegistryResourcePromiseImpl(this._promise.then(obj => obj.withMergeRouteMiddleware(path, method, handler, priority, middleware)), this._client); } } @@ -8002,7 +8088,7 @@ class ContainerRegistryResourcePromiseImpl implements ContainerRegistryResourceP export interface ContainerResource { toJSON(): MarshalledHandle; - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerResourcePromise; + withContainerRegistry(registry: Awaitable): ContainerResourcePromise; withBindMount(source: string, target: string, options?: WithBindMountOptions): ContainerResourcePromise; withEntrypoint(entrypoint: string): ContainerResourcePromise; withImageTag(tag: string): ContainerResourcePromise; @@ -8015,8 +8101,8 @@ export interface ContainerResource { publishAsContainer(): ContainerResourcePromise; withDockerfile(contextPath: string, options?: WithDockerfileOptions): ContainerResourcePromise; withContainerName(name: string): ContainerResourcePromise; - withBuildArg(name: string, value: ParameterResource): ContainerResourcePromise; - withBuildSecret(name: string, value: ParameterResource): ContainerResourcePromise; + withBuildArg(name: string, value: Awaitable): ContainerResourcePromise; + withBuildSecret(name: string, value: Awaitable): ContainerResourcePromise; withEndpointProxySupport(proxyEnabled: boolean): ContainerResourcePromise; withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): ContainerResourcePromise; withContainerNetworkAlias(alias: string): ContainerResourcePromise; @@ -8025,18 +8111,18 @@ export interface ContainerResource { withOtlpExporterProtocol(protocol: OtlpProtocol): ContainerResourcePromise; publishAsConnectionString(): ContainerResourcePromise; withRequiredCommand(command: string, options?: WithRequiredCommandOptions): ContainerResourcePromise; - withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression): ContainerResourcePromise; + withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): ContainerResourcePromise; withEnvironmentExpression(name: string, value: ReferenceExpression): ContainerResourcePromise; withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): ContainerResourcePromise; - withEnvironmentEndpoint(name: string, endpointReference: EndpointReference): ContainerResourcePromise; - withEnvironmentParameter(name: string, parameter: ParameterResource): ContainerResourcePromise; - withEnvironmentConnectionString(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ContainerResourcePromise; + withEnvironmentEndpoint(name: string, endpointReference: Awaitable): ContainerResourcePromise; + withEnvironmentParameter(name: string, parameter: Awaitable): ContainerResourcePromise; + withEnvironmentConnectionString(envVarName: string, resource: Awaitable): ContainerResourcePromise; withArgs(args: string[]): ContainerResourcePromise; withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) => Promise): ContainerResourcePromise; - withReference(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WithReferenceOptions): ContainerResourcePromise; + withReference(source: Awaitable, options?: WithReferenceOptions): ContainerResourcePromise; withReferenceUri(name: string, uri: string): ContainerResourcePromise; - withReferenceExternalService(externalService: ExternalServiceResource): ContainerResourcePromise; - withReferenceEndpoint(endpointReference: EndpointReference): ContainerResourcePromise; + withReferenceExternalService(externalService: Awaitable): ContainerResourcePromise; + withReferenceEndpoint(endpointReference: Awaitable): ContainerResourcePromise; withEndpoint(options?: WithEndpointOptions): ContainerResourcePromise; withHttpEndpoint(options?: WithHttpEndpointOptions): ContainerResourcePromise; withHttpsEndpoint(options?: WithHttpsEndpointOptions): ContainerResourcePromise; @@ -8049,12 +8135,12 @@ export interface ContainerResource { withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): ContainerResourcePromise; withUrlForEndpointFactory(endpointName: string, callback: (arg: EndpointReference) => Promise): ContainerResourcePromise; excludeFromManifest(): ContainerResourcePromise; - waitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerResourcePromise; - waitForWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): ContainerResourcePromise; - waitForStart(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerResourcePromise; - waitForStartWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): ContainerResourcePromise; + waitFor(dependency: Awaitable): ContainerResourcePromise; + waitForWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): ContainerResourcePromise; + waitForStart(dependency: Awaitable): ContainerResourcePromise; + waitForStartWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): ContainerResourcePromise; withExplicitStart(): ContainerResourcePromise; - waitForCompletion(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WaitForCompletionOptions): ContainerResourcePromise; + waitForCompletion(dependency: Awaitable, options?: WaitForCompletionOptions): ContainerResourcePromise; withHealthCheck(key: string): ContainerResourcePromise; withHttpHealthCheck(options?: WithHttpHealthCheckOptions): ContainerResourcePromise; withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): ContainerResourcePromise; @@ -8062,8 +8148,8 @@ export interface ContainerResource { withCertificateTrustScope(scope: CertificateTrustScope): ContainerResourcePromise; withHttpsDeveloperCertificate(options?: WithHttpsDeveloperCertificateOptions): ContainerResourcePromise; withoutHttpsCertificate(): ContainerResourcePromise; - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerResourcePromise; - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerResourcePromise; + withParentRelationship(parent: Awaitable): ContainerResourcePromise; + withChildRelationship(child: Awaitable): ContainerResourcePromise; withIconName(iconName: string, options?: WithIconNameOptions): ContainerResourcePromise; withHttpProbe(probeType: ProbeType, options?: WithHttpProbeOptions): ContainerResourcePromise; excludeFromMcp(): ContainerResourcePromise; @@ -8088,9 +8174,9 @@ export interface ContainerResource { withStatus(status: TestResourceStatus): ContainerResourcePromise; withNestedConfig(config: TestNestedDto): ContainerResourcePromise; withValidator(validator: (arg: TestResourceContext) => Promise): ContainerResourcePromise; - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerResourcePromise; - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ContainerResourcePromise; - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ContainerResourcePromise; + testWaitFor(dependency: Awaitable): ContainerResourcePromise; + withDependency(dependency: Awaitable): ContainerResourcePromise; + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): ContainerResourcePromise; withEndpoints(endpoints: string[]): ContainerResourcePromise; withEnvironmentVariables(variables: Record): ContainerResourcePromise; withCancellableOperation(operation: (arg: CancellationToken) => Promise): ContainerResourcePromise; @@ -8105,7 +8191,7 @@ export interface ContainerResource { } export interface ContainerResourcePromise extends PromiseLike { - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerResourcePromise; + withContainerRegistry(registry: Awaitable): ContainerResourcePromise; withBindMount(source: string, target: string, options?: WithBindMountOptions): ContainerResourcePromise; withEntrypoint(entrypoint: string): ContainerResourcePromise; withImageTag(tag: string): ContainerResourcePromise; @@ -8118,8 +8204,8 @@ export interface ContainerResourcePromise extends PromiseLike publishAsContainer(): ContainerResourcePromise; withDockerfile(contextPath: string, options?: WithDockerfileOptions): ContainerResourcePromise; withContainerName(name: string): ContainerResourcePromise; - withBuildArg(name: string, value: ParameterResource): ContainerResourcePromise; - withBuildSecret(name: string, value: ParameterResource): ContainerResourcePromise; + withBuildArg(name: string, value: Awaitable): ContainerResourcePromise; + withBuildSecret(name: string, value: Awaitable): ContainerResourcePromise; withEndpointProxySupport(proxyEnabled: boolean): ContainerResourcePromise; withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): ContainerResourcePromise; withContainerNetworkAlias(alias: string): ContainerResourcePromise; @@ -8128,18 +8214,18 @@ export interface ContainerResourcePromise extends PromiseLike withOtlpExporterProtocol(protocol: OtlpProtocol): ContainerResourcePromise; publishAsConnectionString(): ContainerResourcePromise; withRequiredCommand(command: string, options?: WithRequiredCommandOptions): ContainerResourcePromise; - withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression): ContainerResourcePromise; + withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): ContainerResourcePromise; withEnvironmentExpression(name: string, value: ReferenceExpression): ContainerResourcePromise; withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): ContainerResourcePromise; - withEnvironmentEndpoint(name: string, endpointReference: EndpointReference): ContainerResourcePromise; - withEnvironmentParameter(name: string, parameter: ParameterResource): ContainerResourcePromise; - withEnvironmentConnectionString(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ContainerResourcePromise; + withEnvironmentEndpoint(name: string, endpointReference: Awaitable): ContainerResourcePromise; + withEnvironmentParameter(name: string, parameter: Awaitable): ContainerResourcePromise; + withEnvironmentConnectionString(envVarName: string, resource: Awaitable): ContainerResourcePromise; withArgs(args: string[]): ContainerResourcePromise; withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) => Promise): ContainerResourcePromise; - withReference(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WithReferenceOptions): ContainerResourcePromise; + withReference(source: Awaitable, options?: WithReferenceOptions): ContainerResourcePromise; withReferenceUri(name: string, uri: string): ContainerResourcePromise; - withReferenceExternalService(externalService: ExternalServiceResource): ContainerResourcePromise; - withReferenceEndpoint(endpointReference: EndpointReference): ContainerResourcePromise; + withReferenceExternalService(externalService: Awaitable): ContainerResourcePromise; + withReferenceEndpoint(endpointReference: Awaitable): ContainerResourcePromise; withEndpoint(options?: WithEndpointOptions): ContainerResourcePromise; withHttpEndpoint(options?: WithHttpEndpointOptions): ContainerResourcePromise; withHttpsEndpoint(options?: WithHttpsEndpointOptions): ContainerResourcePromise; @@ -8152,12 +8238,12 @@ export interface ContainerResourcePromise extends PromiseLike withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): ContainerResourcePromise; withUrlForEndpointFactory(endpointName: string, callback: (arg: EndpointReference) => Promise): ContainerResourcePromise; excludeFromManifest(): ContainerResourcePromise; - waitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerResourcePromise; - waitForWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): ContainerResourcePromise; - waitForStart(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerResourcePromise; - waitForStartWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): ContainerResourcePromise; + waitFor(dependency: Awaitable): ContainerResourcePromise; + waitForWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): ContainerResourcePromise; + waitForStart(dependency: Awaitable): ContainerResourcePromise; + waitForStartWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): ContainerResourcePromise; withExplicitStart(): ContainerResourcePromise; - waitForCompletion(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WaitForCompletionOptions): ContainerResourcePromise; + waitForCompletion(dependency: Awaitable, options?: WaitForCompletionOptions): ContainerResourcePromise; withHealthCheck(key: string): ContainerResourcePromise; withHttpHealthCheck(options?: WithHttpHealthCheckOptions): ContainerResourcePromise; withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): ContainerResourcePromise; @@ -8165,8 +8251,8 @@ export interface ContainerResourcePromise extends PromiseLike withCertificateTrustScope(scope: CertificateTrustScope): ContainerResourcePromise; withHttpsDeveloperCertificate(options?: WithHttpsDeveloperCertificateOptions): ContainerResourcePromise; withoutHttpsCertificate(): ContainerResourcePromise; - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerResourcePromise; - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerResourcePromise; + withParentRelationship(parent: Awaitable): ContainerResourcePromise; + withChildRelationship(child: Awaitable): ContainerResourcePromise; withIconName(iconName: string, options?: WithIconNameOptions): ContainerResourcePromise; withHttpProbe(probeType: ProbeType, options?: WithHttpProbeOptions): ContainerResourcePromise; excludeFromMcp(): ContainerResourcePromise; @@ -8191,9 +8277,9 @@ export interface ContainerResourcePromise extends PromiseLike withStatus(status: TestResourceStatus): ContainerResourcePromise; withNestedConfig(config: TestNestedDto): ContainerResourcePromise; withValidator(validator: (arg: TestResourceContext) => Promise): ContainerResourcePromise; - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerResourcePromise; - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ContainerResourcePromise; - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ContainerResourcePromise; + testWaitFor(dependency: Awaitable): ContainerResourcePromise; + withDependency(dependency: Awaitable): ContainerResourcePromise; + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): ContainerResourcePromise; withEndpoints(endpoints: string[]): ContainerResourcePromise; withEnvironmentVariables(variables: Record): ContainerResourcePromise; withCancellableOperation(operation: (arg: CancellationToken) => Promise): ContainerResourcePromise; @@ -8217,7 +8303,8 @@ class ContainerResourceImpl extends ResourceBuilderBase } /** @internal */ - private async _withContainerRegistryInternal(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _withContainerRegistryInternal(registry: Awaitable): Promise { + registry = isPromiseLike(registry) ? await registry : registry; const rpcArgs: Record = { builder: this._handle, registry }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withContainerRegistry', @@ -8227,8 +8314,8 @@ class ContainerResourceImpl extends ResourceBuilderBase } /** Configures a resource to use a container registry */ - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withContainerRegistryInternal(registry)); + withContainerRegistry(registry: Awaitable): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._withContainerRegistryInternal(registry), this._client); } /** @internal */ @@ -8245,7 +8332,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Adds a bind mount */ withBindMount(source: string, target: string, options?: WithBindMountOptions): ContainerResourcePromise { const isReadOnly = options?.isReadOnly; - return new ContainerResourcePromiseImpl(this._withBindMountInternal(source, target, isReadOnly)); + return new ContainerResourcePromiseImpl(this._withBindMountInternal(source, target, isReadOnly), this._client); } /** @internal */ @@ -8260,7 +8347,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Sets the container entrypoint */ withEntrypoint(entrypoint: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withEntrypointInternal(entrypoint)); + return new ContainerResourcePromiseImpl(this._withEntrypointInternal(entrypoint), this._client); } /** @internal */ @@ -8275,7 +8362,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Sets the container image tag */ withImageTag(tag: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withImageTagInternal(tag)); + return new ContainerResourcePromiseImpl(this._withImageTagInternal(tag), this._client); } /** @internal */ @@ -8290,7 +8377,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Sets the container image registry */ withImageRegistry(registry: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withImageRegistryInternal(registry)); + return new ContainerResourcePromiseImpl(this._withImageRegistryInternal(registry), this._client); } /** @internal */ @@ -8307,7 +8394,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Sets the container image */ withImage(image: string, options?: WithImageOptions): ContainerResourcePromise { const tag = options?.tag; - return new ContainerResourcePromiseImpl(this._withImageInternal(image, tag)); + return new ContainerResourcePromiseImpl(this._withImageInternal(image, tag), this._client); } /** @internal */ @@ -8322,7 +8409,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Sets the image SHA256 digest */ withImageSHA256(sha256: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withImageSHA256Internal(sha256)); + return new ContainerResourcePromiseImpl(this._withImageSHA256Internal(sha256), this._client); } /** @internal */ @@ -8337,7 +8424,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Adds runtime arguments for the container */ withContainerRuntimeArgs(args: string[]): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withContainerRuntimeArgsInternal(args)); + return new ContainerResourcePromiseImpl(this._withContainerRuntimeArgsInternal(args), this._client); } /** @internal */ @@ -8352,7 +8439,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Sets the lifetime behavior of the container resource */ withLifetime(lifetime: ContainerLifetime): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withLifetimeInternal(lifetime)); + return new ContainerResourcePromiseImpl(this._withLifetimeInternal(lifetime), this._client); } /** @internal */ @@ -8367,7 +8454,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Sets the container image pull policy */ withImagePullPolicy(pullPolicy: ImagePullPolicy): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withImagePullPolicyInternal(pullPolicy)); + return new ContainerResourcePromiseImpl(this._withImagePullPolicyInternal(pullPolicy), this._client); } /** @internal */ @@ -8382,7 +8469,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Configures the resource to be published as a container */ publishAsContainer(): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._publishAsContainerInternal()); + return new ContainerResourcePromiseImpl(this._publishAsContainerInternal(), this._client); } /** @internal */ @@ -8401,7 +8488,7 @@ class ContainerResourceImpl extends ResourceBuilderBase withDockerfile(contextPath: string, options?: WithDockerfileOptions): ContainerResourcePromise { const dockerfilePath = options?.dockerfilePath; const stage = options?.stage; - return new ContainerResourcePromiseImpl(this._withDockerfileInternal(contextPath, dockerfilePath, stage)); + return new ContainerResourcePromiseImpl(this._withDockerfileInternal(contextPath, dockerfilePath, stage), this._client); } /** @internal */ @@ -8416,11 +8503,12 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Sets the container name */ withContainerName(name: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withContainerNameInternal(name)); + return new ContainerResourcePromiseImpl(this._withContainerNameInternal(name), this._client); } /** @internal */ - private async _withBuildArgInternal(name: string, value: ParameterResource): Promise { + private async _withBuildArgInternal(name: string, value: Awaitable): Promise { + value = isPromiseLike(value) ? await value : value; const rpcArgs: Record = { builder: this._handle, name, value }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withParameterBuildArg', @@ -8430,12 +8518,13 @@ class ContainerResourceImpl extends ResourceBuilderBase } /** Adds a build argument from a parameter resource */ - withBuildArg(name: string, value: ParameterResource): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withBuildArgInternal(name, value)); + withBuildArg(name: string, value: Awaitable): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._withBuildArgInternal(name, value), this._client); } /** @internal */ - private async _withBuildSecretInternal(name: string, value: ParameterResource): Promise { + private async _withBuildSecretInternal(name: string, value: Awaitable): Promise { + value = isPromiseLike(value) ? await value : value; const rpcArgs: Record = { builder: this._handle, name, value }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withParameterBuildSecret', @@ -8445,8 +8534,8 @@ class ContainerResourceImpl extends ResourceBuilderBase } /** Adds a build secret from a parameter resource */ - withBuildSecret(name: string, value: ParameterResource): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withBuildSecretInternal(name, value)); + withBuildSecret(name: string, value: Awaitable): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._withBuildSecretInternal(name, value), this._client); } /** @internal */ @@ -8461,7 +8550,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Configures endpoint proxy support */ withEndpointProxySupport(proxyEnabled: boolean): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withEndpointProxySupportInternal(proxyEnabled)); + return new ContainerResourcePromiseImpl(this._withEndpointProxySupportInternal(proxyEnabled), this._client); } /** @internal */ @@ -8480,7 +8569,7 @@ class ContainerResourceImpl extends ResourceBuilderBase withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): ContainerResourcePromise { const buildImage = options?.buildImage; const runtimeImage = options?.runtimeImage; - return new ContainerResourcePromiseImpl(this._withDockerfileBaseImageInternal(buildImage, runtimeImage)); + return new ContainerResourcePromiseImpl(this._withDockerfileBaseImageInternal(buildImage, runtimeImage), this._client); } /** @internal */ @@ -8495,7 +8584,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Adds a network alias for the container */ withContainerNetworkAlias(alias: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withContainerNetworkAliasInternal(alias)); + return new ContainerResourcePromiseImpl(this._withContainerNetworkAliasInternal(alias), this._client); } /** @internal */ @@ -8514,7 +8603,7 @@ class ContainerResourceImpl extends ResourceBuilderBase withMcpServer(options?: WithMcpServerOptions): ContainerResourcePromise { const path = options?.path; const endpointName = options?.endpointName; - return new ContainerResourcePromiseImpl(this._withMcpServerInternal(path, endpointName)); + return new ContainerResourcePromiseImpl(this._withMcpServerInternal(path, endpointName), this._client); } /** @internal */ @@ -8529,7 +8618,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Configures OTLP telemetry export */ withOtlpExporter(): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withOtlpExporterInternal()); + return new ContainerResourcePromiseImpl(this._withOtlpExporterInternal(), this._client); } /** @internal */ @@ -8544,7 +8633,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Configures OTLP telemetry export with specific protocol */ withOtlpExporterProtocol(protocol: OtlpProtocol): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withOtlpExporterProtocolInternal(protocol)); + return new ContainerResourcePromiseImpl(this._withOtlpExporterProtocolInternal(protocol), this._client); } /** @internal */ @@ -8559,7 +8648,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Publishes the resource as a connection string */ publishAsConnectionString(): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._publishAsConnectionStringInternal()); + return new ContainerResourcePromiseImpl(this._publishAsConnectionStringInternal(), this._client); } /** @internal */ @@ -8576,11 +8665,12 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Adds a required command dependency */ withRequiredCommand(command: string, options?: WithRequiredCommandOptions): ContainerResourcePromise { const helpLink = options?.helpLink; - return new ContainerResourcePromiseImpl(this._withRequiredCommandInternal(command, helpLink)); + return new ContainerResourcePromiseImpl(this._withRequiredCommandInternal(command, helpLink), this._client); } /** @internal */ - private async _withEnvironmentInternal(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression): Promise { + private async _withEnvironmentInternal(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): Promise { + value = isPromiseLike(value) ? await value : value; const rpcArgs: Record = { builder: this._handle, name, value }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironment', @@ -8590,8 +8680,8 @@ class ContainerResourceImpl extends ResourceBuilderBase } /** Sets an environment variable */ - withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withEnvironmentInternal(name, value)); + withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._withEnvironmentInternal(name, value), this._client); } /** @internal */ @@ -8609,7 +8699,7 @@ class ContainerResourceImpl extends ResourceBuilderBase * @deprecated ATS compatibility shim. Use withEnvironment instead. */ withEnvironmentExpression(name: string, value: ReferenceExpression): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withEnvironmentExpressionInternal(name, value)); + return new ContainerResourcePromiseImpl(this._withEnvironmentExpressionInternal(name, value), this._client); } /** @internal */ @@ -8629,11 +8719,12 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Sets environment variables via callback */ withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withEnvironmentCallbackInternal(callback)); + return new ContainerResourcePromiseImpl(this._withEnvironmentCallbackInternal(callback), this._client); } /** @internal */ - private async _withEnvironmentEndpointInternal(name: string, endpointReference: EndpointReference): Promise { + private async _withEnvironmentEndpointInternal(name: string, endpointReference: Awaitable): Promise { + endpointReference = isPromiseLike(endpointReference) ? await endpointReference : endpointReference; const rpcArgs: Record = { builder: this._handle, name, endpointReference }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironmentEndpoint', @@ -8646,12 +8737,13 @@ class ContainerResourceImpl extends ResourceBuilderBase * Sets an environment variable from an endpoint reference * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentEndpoint(name: string, endpointReference: EndpointReference): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withEnvironmentEndpointInternal(name, endpointReference)); + withEnvironmentEndpoint(name: string, endpointReference: Awaitable): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._withEnvironmentEndpointInternal(name, endpointReference), this._client); } /** @internal */ - private async _withEnvironmentParameterInternal(name: string, parameter: ParameterResource): Promise { + private async _withEnvironmentParameterInternal(name: string, parameter: Awaitable): Promise { + parameter = isPromiseLike(parameter) ? await parameter : parameter; const rpcArgs: Record = { builder: this._handle, name, parameter }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironmentParameter', @@ -8664,12 +8756,13 @@ class ContainerResourceImpl extends ResourceBuilderBase * Sets an environment variable from a parameter resource * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentParameter(name: string, parameter: ParameterResource): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withEnvironmentParameterInternal(name, parameter)); + withEnvironmentParameter(name: string, parameter: Awaitable): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._withEnvironmentParameterInternal(name, parameter), this._client); } /** @internal */ - private async _withEnvironmentConnectionStringInternal(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withEnvironmentConnectionStringInternal(envVarName: string, resource: Awaitable): Promise { + resource = isPromiseLike(resource) ? await resource : resource; const rpcArgs: Record = { builder: this._handle, envVarName, resource }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironmentConnectionString', @@ -8682,8 +8775,8 @@ class ContainerResourceImpl extends ResourceBuilderBase * Sets an environment variable from a connection string resource * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentConnectionString(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withEnvironmentConnectionStringInternal(envVarName, resource)); + withEnvironmentConnectionString(envVarName: string, resource: Awaitable): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._withEnvironmentConnectionStringInternal(envVarName, resource), this._client); } /** @internal */ @@ -8698,7 +8791,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Adds arguments */ withArgs(args: string[]): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withArgsInternal(args)); + return new ContainerResourcePromiseImpl(this._withArgsInternal(args), this._client); } /** @internal */ @@ -8718,11 +8811,12 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Sets command-line arguments via callback */ withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) => Promise): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withArgsCallbackInternal(callback)); + return new ContainerResourcePromiseImpl(this._withArgsCallbackInternal(callback), this._client); } /** @internal */ - private async _withReferenceInternal(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, connectionName?: string, optional?: boolean, name?: string): Promise { + private async _withReferenceInternal(source: Awaitable, connectionName?: string, optional?: boolean, name?: string): Promise { + source = isPromiseLike(source) ? await source : source; const rpcArgs: Record = { builder: this._handle, source }; if (connectionName !== undefined) rpcArgs.connectionName = connectionName; if (optional !== undefined) rpcArgs.optional = optional; @@ -8735,11 +8829,11 @@ class ContainerResourceImpl extends ResourceBuilderBase } /** Adds a reference to another resource */ - withReference(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WithReferenceOptions): ContainerResourcePromise { + withReference(source: Awaitable, options?: WithReferenceOptions): ContainerResourcePromise { const connectionName = options?.connectionName; const optional = options?.optional; const name = options?.name; - return new ContainerResourcePromiseImpl(this._withReferenceInternal(source, connectionName, optional, name)); + return new ContainerResourcePromiseImpl(this._withReferenceInternal(source, connectionName, optional, name), this._client); } /** @internal */ @@ -8754,11 +8848,12 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Adds a reference to a URI */ withReferenceUri(name: string, uri: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withReferenceUriInternal(name, uri)); + return new ContainerResourcePromiseImpl(this._withReferenceUriInternal(name, uri), this._client); } /** @internal */ - private async _withReferenceExternalServiceInternal(externalService: ExternalServiceResource): Promise { + private async _withReferenceExternalServiceInternal(externalService: Awaitable): Promise { + externalService = isPromiseLike(externalService) ? await externalService : externalService; const rpcArgs: Record = { builder: this._handle, externalService }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withReferenceExternalService', @@ -8768,12 +8863,13 @@ class ContainerResourceImpl extends ResourceBuilderBase } /** Adds a reference to an external service */ - withReferenceExternalService(externalService: ExternalServiceResource): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withReferenceExternalServiceInternal(externalService)); + withReferenceExternalService(externalService: Awaitable): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._withReferenceExternalServiceInternal(externalService), this._client); } /** @internal */ - private async _withReferenceEndpointInternal(endpointReference: EndpointReference): Promise { + private async _withReferenceEndpointInternal(endpointReference: Awaitable): Promise { + endpointReference = isPromiseLike(endpointReference) ? await endpointReference : endpointReference; const rpcArgs: Record = { builder: this._handle, endpointReference }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withReferenceEndpoint', @@ -8783,8 +8879,8 @@ class ContainerResourceImpl extends ResourceBuilderBase } /** Adds a reference to an endpoint */ - withReferenceEndpoint(endpointReference: EndpointReference): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withReferenceEndpointInternal(endpointReference)); + withReferenceEndpoint(endpointReference: Awaitable): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._withReferenceEndpointInternal(endpointReference), this._client); } /** @internal */ @@ -8815,7 +8911,7 @@ class ContainerResourceImpl extends ResourceBuilderBase const isProxied = options?.isProxied; const isExternal = options?.isExternal; const protocol = options?.protocol; - return new ContainerResourcePromiseImpl(this._withEndpointInternal(port, targetPort, scheme, name, env, isProxied, isExternal, protocol)); + return new ContainerResourcePromiseImpl(this._withEndpointInternal(port, targetPort, scheme, name, env, isProxied, isExternal, protocol), this._client); } /** @internal */ @@ -8840,7 +8936,7 @@ class ContainerResourceImpl extends ResourceBuilderBase const name = options?.name; const env = options?.env; const isProxied = options?.isProxied; - return new ContainerResourcePromiseImpl(this._withHttpEndpointInternal(port, targetPort, name, env, isProxied)); + return new ContainerResourcePromiseImpl(this._withHttpEndpointInternal(port, targetPort, name, env, isProxied), this._client); } /** @internal */ @@ -8865,7 +8961,7 @@ class ContainerResourceImpl extends ResourceBuilderBase const name = options?.name; const env = options?.env; const isProxied = options?.isProxied; - return new ContainerResourcePromiseImpl(this._withHttpsEndpointInternal(port, targetPort, name, env, isProxied)); + return new ContainerResourcePromiseImpl(this._withHttpsEndpointInternal(port, targetPort, name, env, isProxied), this._client); } /** @internal */ @@ -8880,7 +8976,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Makes HTTP endpoints externally accessible */ withExternalHttpEndpoints(): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withExternalHttpEndpointsInternal()); + return new ContainerResourcePromiseImpl(this._withExternalHttpEndpointsInternal(), this._client); } /** Gets an endpoint reference */ @@ -8904,7 +9000,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Configures resource for HTTP/2 */ asHttp2Service(): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._asHttp2ServiceInternal()); + return new ContainerResourcePromiseImpl(this._asHttp2ServiceInternal(), this._client); } /** @internal */ @@ -8924,7 +9020,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Customizes displayed URLs via callback */ withUrlsCallback(callback: (obj: ResourceUrlsCallbackContext) => Promise): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withUrlsCallbackInternal(callback)); + return new ContainerResourcePromiseImpl(this._withUrlsCallbackInternal(callback), this._client); } /** @internal */ @@ -8941,7 +9037,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Adds or modifies displayed URLs */ withUrl(url: string, options?: WithUrlOptions): ContainerResourcePromise { const displayText = options?.displayText; - return new ContainerResourcePromiseImpl(this._withUrlInternal(url, displayText)); + return new ContainerResourcePromiseImpl(this._withUrlInternal(url, displayText), this._client); } /** @internal */ @@ -8958,7 +9054,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Adds a URL using a reference expression */ withUrlExpression(url: ReferenceExpression, options?: WithUrlExpressionOptions): ContainerResourcePromise { const displayText = options?.displayText; - return new ContainerResourcePromiseImpl(this._withUrlExpressionInternal(url, displayText)); + return new ContainerResourcePromiseImpl(this._withUrlExpressionInternal(url, displayText), this._client); } /** @internal */ @@ -8977,7 +9073,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Customizes the URL for a specific endpoint via callback */ withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withUrlForEndpointInternal(endpointName, callback)); + return new ContainerResourcePromiseImpl(this._withUrlForEndpointInternal(endpointName, callback), this._client); } /** @internal */ @@ -8997,7 +9093,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Adds a URL for a specific endpoint via factory callback */ withUrlForEndpointFactory(endpointName: string, callback: (arg: EndpointReference) => Promise): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withUrlForEndpointFactoryInternal(endpointName, callback)); + return new ContainerResourcePromiseImpl(this._withUrlForEndpointFactoryInternal(endpointName, callback), this._client); } /** @internal */ @@ -9012,11 +9108,12 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Excludes the resource from the deployment manifest */ excludeFromManifest(): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._excludeFromManifestInternal()); + return new ContainerResourcePromiseImpl(this._excludeFromManifestInternal(), this._client); } /** @internal */ - private async _waitForInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _waitForInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForResource', @@ -9026,12 +9123,13 @@ class ContainerResourceImpl extends ResourceBuilderBase } /** Waits for another resource to be ready */ - waitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._waitForInternal(dependency)); + waitFor(dependency: Awaitable): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._waitForInternal(dependency), this._client); } /** @internal */ - private async _waitForWithBehaviorInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): Promise { + private async _waitForWithBehaviorInternal(dependency: Awaitable, waitBehavior: WaitBehavior): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency, waitBehavior }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForWithBehavior', @@ -9041,12 +9139,13 @@ class ContainerResourceImpl extends ResourceBuilderBase } /** Waits for another resource with specific behavior */ - waitForWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._waitForWithBehaviorInternal(dependency, waitBehavior)); + waitForWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._waitForWithBehaviorInternal(dependency, waitBehavior), this._client); } /** @internal */ - private async _waitForStartInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _waitForStartInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForResourceStart', @@ -9056,12 +9155,13 @@ class ContainerResourceImpl extends ResourceBuilderBase } /** Waits for another resource to start */ - waitForStart(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._waitForStartInternal(dependency)); + waitForStart(dependency: Awaitable): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._waitForStartInternal(dependency), this._client); } /** @internal */ - private async _waitForStartWithBehaviorInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): Promise { + private async _waitForStartWithBehaviorInternal(dependency: Awaitable, waitBehavior: WaitBehavior): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency, waitBehavior }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForStartWithBehavior', @@ -9071,8 +9171,8 @@ class ContainerResourceImpl extends ResourceBuilderBase } /** Waits for another resource to start with specific behavior */ - waitForStartWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._waitForStartWithBehaviorInternal(dependency, waitBehavior)); + waitForStartWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._waitForStartWithBehaviorInternal(dependency, waitBehavior), this._client); } /** @internal */ @@ -9087,11 +9187,12 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Prevents resource from starting automatically */ withExplicitStart(): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withExplicitStartInternal()); + return new ContainerResourcePromiseImpl(this._withExplicitStartInternal(), this._client); } /** @internal */ - private async _waitForCompletionInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, exitCode?: number): Promise { + private async _waitForCompletionInternal(dependency: Awaitable, exitCode?: number): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; if (exitCode !== undefined) rpcArgs.exitCode = exitCode; const result = await this._client.invokeCapability( @@ -9102,9 +9203,9 @@ class ContainerResourceImpl extends ResourceBuilderBase } /** Waits for resource completion */ - waitForCompletion(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WaitForCompletionOptions): ContainerResourcePromise { + waitForCompletion(dependency: Awaitable, options?: WaitForCompletionOptions): ContainerResourcePromise { const exitCode = options?.exitCode; - return new ContainerResourcePromiseImpl(this._waitForCompletionInternal(dependency, exitCode)); + return new ContainerResourcePromiseImpl(this._waitForCompletionInternal(dependency, exitCode), this._client); } /** @internal */ @@ -9119,7 +9220,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Adds a health check by key */ withHealthCheck(key: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withHealthCheckInternal(key)); + return new ContainerResourcePromiseImpl(this._withHealthCheckInternal(key), this._client); } /** @internal */ @@ -9140,7 +9241,7 @@ class ContainerResourceImpl extends ResourceBuilderBase const path = options?.path; const statusCode = options?.statusCode; const endpointName = options?.endpointName; - return new ContainerResourcePromiseImpl(this._withHttpHealthCheckInternal(path, statusCode, endpointName)); + return new ContainerResourcePromiseImpl(this._withHttpHealthCheckInternal(path, statusCode, endpointName), this._client); } /** @internal */ @@ -9162,7 +9263,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Adds a resource command */ withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): ContainerResourcePromise { const commandOptions = options?.commandOptions; - return new ContainerResourcePromiseImpl(this._withCommandInternal(name, displayName, executeCommand, commandOptions)); + return new ContainerResourcePromiseImpl(this._withCommandInternal(name, displayName, executeCommand, commandOptions), this._client); } /** @internal */ @@ -9177,7 +9278,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Configures developer certificate trust */ withDeveloperCertificateTrust(trust: boolean): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withDeveloperCertificateTrustInternal(trust)); + return new ContainerResourcePromiseImpl(this._withDeveloperCertificateTrustInternal(trust), this._client); } /** @internal */ @@ -9192,11 +9293,12 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Sets the certificate trust scope */ withCertificateTrustScope(scope: CertificateTrustScope): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withCertificateTrustScopeInternal(scope)); + return new ContainerResourcePromiseImpl(this._withCertificateTrustScopeInternal(scope), this._client); } /** @internal */ - private async _withHttpsDeveloperCertificateInternal(password?: ParameterResource): Promise { + private async _withHttpsDeveloperCertificateInternal(password?: Awaitable): Promise { + password = isPromiseLike(password) ? await password : password; const rpcArgs: Record = { builder: this._handle }; if (password !== undefined) rpcArgs.password = password; const result = await this._client.invokeCapability( @@ -9208,8 +9310,8 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Configures HTTPS with a developer certificate */ withHttpsDeveloperCertificate(options?: WithHttpsDeveloperCertificateOptions): ContainerResourcePromise { - const password = options?.password; - return new ContainerResourcePromiseImpl(this._withHttpsDeveloperCertificateInternal(password)); + let password = options?.password; + return new ContainerResourcePromiseImpl(this._withHttpsDeveloperCertificateInternal(password), this._client); } /** @internal */ @@ -9224,11 +9326,12 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Removes HTTPS certificate configuration */ withoutHttpsCertificate(): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withoutHttpsCertificateInternal()); + return new ContainerResourcePromiseImpl(this._withoutHttpsCertificateInternal(), this._client); } /** @internal */ - private async _withParentRelationshipInternal(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _withParentRelationshipInternal(parent: Awaitable): Promise { + parent = isPromiseLike(parent) ? await parent : parent; const rpcArgs: Record = { builder: this._handle, parent }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withBuilderParentRelationship', @@ -9238,12 +9341,13 @@ class ContainerResourceImpl extends ResourceBuilderBase } /** Sets the parent relationship */ - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withParentRelationshipInternal(parent)); + withParentRelationship(parent: Awaitable): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._withParentRelationshipInternal(parent), this._client); } /** @internal */ - private async _withChildRelationshipInternal(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _withChildRelationshipInternal(child: Awaitable): Promise { + child = isPromiseLike(child) ? await child : child; const rpcArgs: Record = { builder: this._handle, child }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withBuilderChildRelationship', @@ -9253,8 +9357,8 @@ class ContainerResourceImpl extends ResourceBuilderBase } /** Sets a child relationship */ - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withChildRelationshipInternal(child)); + withChildRelationship(child: Awaitable): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._withChildRelationshipInternal(child), this._client); } /** @internal */ @@ -9271,7 +9375,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Sets the icon for the resource */ withIconName(iconName: string, options?: WithIconNameOptions): ContainerResourcePromise { const iconVariant = options?.iconVariant; - return new ContainerResourcePromiseImpl(this._withIconNameInternal(iconName, iconVariant)); + return new ContainerResourcePromiseImpl(this._withIconNameInternal(iconName, iconVariant), this._client); } /** @internal */ @@ -9300,7 +9404,7 @@ class ContainerResourceImpl extends ResourceBuilderBase const failureThreshold = options?.failureThreshold; const successThreshold = options?.successThreshold; const endpointName = options?.endpointName; - return new ContainerResourcePromiseImpl(this._withHttpProbeInternal(probeType, path, initialDelaySeconds, periodSeconds, timeoutSeconds, failureThreshold, successThreshold, endpointName)); + return new ContainerResourcePromiseImpl(this._withHttpProbeInternal(probeType, path, initialDelaySeconds, periodSeconds, timeoutSeconds, failureThreshold, successThreshold, endpointName), this._client); } /** @internal */ @@ -9315,7 +9419,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Excludes the resource from MCP server exposure */ excludeFromMcp(): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._excludeFromMcpInternal()); + return new ContainerResourcePromiseImpl(this._excludeFromMcpInternal(), this._client); } /** @internal */ @@ -9330,7 +9434,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Sets the remote image name for publishing */ withRemoteImageName(remoteImageName: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withRemoteImageNameInternal(remoteImageName)); + return new ContainerResourcePromiseImpl(this._withRemoteImageNameInternal(remoteImageName), this._client); } /** @internal */ @@ -9345,7 +9449,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Sets the remote image tag for publishing */ withRemoteImageTag(remoteImageTag: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withRemoteImageTagInternal(remoteImageTag)); + return new ContainerResourcePromiseImpl(this._withRemoteImageTagInternal(remoteImageTag), this._client); } /** @internal */ @@ -9373,7 +9477,7 @@ class ContainerResourceImpl extends ResourceBuilderBase const requiredBy = options?.requiredBy; const tags = options?.tags; const description = options?.description; - return new ContainerResourcePromiseImpl(this._withPipelineStepFactoryInternal(stepName, callback, dependsOn, requiredBy, tags, description)); + return new ContainerResourcePromiseImpl(this._withPipelineStepFactoryInternal(stepName, callback, dependsOn, requiredBy, tags, description), this._client); } /** @internal */ @@ -9393,7 +9497,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Configures pipeline step dependencies via a callback */ withPipelineConfiguration(callback: (obj: PipelineConfigurationContext) => Promise): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withPipelineConfigurationInternal(callback)); + return new ContainerResourcePromiseImpl(this._withPipelineConfigurationInternal(callback), this._client); } /** @internal */ @@ -9412,7 +9516,7 @@ class ContainerResourceImpl extends ResourceBuilderBase withVolume(target: string, options?: WithVolumeOptions): ContainerResourcePromise { const name = options?.name; const isReadOnly = options?.isReadOnly; - return new ContainerResourcePromiseImpl(this._withVolumeInternal(target, name, isReadOnly)); + return new ContainerResourcePromiseImpl(this._withVolumeInternal(target, name, isReadOnly), this._client); } /** Gets the resource name */ @@ -9441,7 +9545,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Subscribes to the BeforeResourceStarted event */ onBeforeResourceStarted(callback: (arg: BeforeResourceStartedEvent) => Promise): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._onBeforeResourceStartedInternal(callback)); + return new ContainerResourcePromiseImpl(this._onBeforeResourceStartedInternal(callback), this._client); } /** @internal */ @@ -9461,7 +9565,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Subscribes to the ResourceStopped event */ onResourceStopped(callback: (arg: ResourceStoppedEvent) => Promise): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._onResourceStoppedInternal(callback)); + return new ContainerResourcePromiseImpl(this._onResourceStoppedInternal(callback), this._client); } /** @internal */ @@ -9481,7 +9585,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Subscribes to the InitializeResource event */ onInitializeResource(callback: (arg: InitializeResourceEvent) => Promise): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._onInitializeResourceInternal(callback)); + return new ContainerResourcePromiseImpl(this._onInitializeResourceInternal(callback), this._client); } /** @internal */ @@ -9501,7 +9605,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Subscribes to the ResourceEndpointsAllocated event */ onResourceEndpointsAllocated(callback: (arg: ResourceEndpointsAllocatedEvent) => Promise): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._onResourceEndpointsAllocatedInternal(callback)); + return new ContainerResourcePromiseImpl(this._onResourceEndpointsAllocatedInternal(callback), this._client); } /** @internal */ @@ -9521,7 +9625,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Subscribes to the ResourceReady event */ onResourceReady(callback: (arg: ResourceReadyEvent) => Promise): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._onResourceReadyInternal(callback)); + return new ContainerResourcePromiseImpl(this._onResourceReadyInternal(callback), this._client); } /** @internal */ @@ -9540,7 +9644,7 @@ class ContainerResourceImpl extends ResourceBuilderBase withOptionalString(options?: WithOptionalStringOptions): ContainerResourcePromise { const value = options?.value; const enabled = options?.enabled; - return new ContainerResourcePromiseImpl(this._withOptionalStringInternal(value, enabled)); + return new ContainerResourcePromiseImpl(this._withOptionalStringInternal(value, enabled), this._client); } /** @internal */ @@ -9555,7 +9659,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Configures the resource with a DTO */ withConfig(config: TestConfigDto): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withConfigInternal(config)); + return new ContainerResourcePromiseImpl(this._withConfigInternal(config), this._client); } /** @internal */ @@ -9575,7 +9679,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Configures environment with callback (test version) */ testWithEnvironmentCallback(callback: (arg: TestEnvironmentContext) => Promise): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._testWithEnvironmentCallbackInternal(callback)); + return new ContainerResourcePromiseImpl(this._testWithEnvironmentCallbackInternal(callback), this._client); } /** @internal */ @@ -9590,7 +9694,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Sets the created timestamp */ withCreatedAt(createdAt: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withCreatedAtInternal(createdAt)); + return new ContainerResourcePromiseImpl(this._withCreatedAtInternal(createdAt), this._client); } /** @internal */ @@ -9605,7 +9709,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Sets the modified timestamp */ withModifiedAt(modifiedAt: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withModifiedAtInternal(modifiedAt)); + return new ContainerResourcePromiseImpl(this._withModifiedAtInternal(modifiedAt), this._client); } /** @internal */ @@ -9620,7 +9724,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Sets the correlation ID */ withCorrelationId(correlationId: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withCorrelationIdInternal(correlationId)); + return new ContainerResourcePromiseImpl(this._withCorrelationIdInternal(correlationId), this._client); } /** @internal */ @@ -9642,7 +9746,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Configures with optional callback */ withOptionalCallback(options?: WithOptionalCallbackOptions): ContainerResourcePromise { const callback = options?.callback; - return new ContainerResourcePromiseImpl(this._withOptionalCallbackInternal(callback)); + return new ContainerResourcePromiseImpl(this._withOptionalCallbackInternal(callback), this._client); } /** @internal */ @@ -9657,7 +9761,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Sets the resource status */ withStatus(status: TestResourceStatus): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withStatusInternal(status)); + return new ContainerResourcePromiseImpl(this._withStatusInternal(status), this._client); } /** @internal */ @@ -9672,7 +9776,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Configures with nested DTO */ withNestedConfig(config: TestNestedDto): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withNestedConfigInternal(config)); + return new ContainerResourcePromiseImpl(this._withNestedConfigInternal(config), this._client); } /** @internal */ @@ -9692,11 +9796,12 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Adds validation callback */ withValidator(validator: (arg: TestResourceContext) => Promise): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withValidatorInternal(validator)); + return new ContainerResourcePromiseImpl(this._withValidatorInternal(validator), this._client); } /** @internal */ - private async _testWaitForInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _testWaitForInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/testWaitFor', @@ -9706,12 +9811,13 @@ class ContainerResourceImpl extends ResourceBuilderBase } /** Waits for another resource (test version) */ - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._testWaitForInternal(dependency)); + testWaitFor(dependency: Awaitable): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._testWaitForInternal(dependency), this._client); } /** @internal */ - private async _withDependencyInternal(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withDependencyInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/withDependency', @@ -9721,12 +9827,13 @@ class ContainerResourceImpl extends ResourceBuilderBase } /** Adds a dependency on another resource */ - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withDependencyInternal(dependency)); + withDependency(dependency: Awaitable): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._withDependencyInternal(dependency), this._client); } /** @internal */ - private async _withUnionDependencyInternal(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withUnionDependencyInternal(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/withUnionDependency', @@ -9736,8 +9843,8 @@ class ContainerResourceImpl extends ResourceBuilderBase } /** Adds a dependency from a string or another resource */ - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withUnionDependencyInternal(dependency)); + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._withUnionDependencyInternal(dependency), this._client); } /** @internal */ @@ -9752,7 +9859,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Sets the endpoints */ withEndpoints(endpoints: string[]): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withEndpointsInternal(endpoints)); + return new ContainerResourcePromiseImpl(this._withEndpointsInternal(endpoints), this._client); } /** @internal */ @@ -9767,7 +9874,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Sets environment variables */ withEnvironmentVariables(variables: Record): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withEnvironmentVariablesInternal(variables)); + return new ContainerResourcePromiseImpl(this._withEnvironmentVariablesInternal(variables), this._client); } /** @internal */ @@ -9786,7 +9893,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Performs a cancellable operation */ withCancellableOperation(operation: (arg: CancellationToken) => Promise): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withCancellableOperationInternal(operation)); + return new ContainerResourcePromiseImpl(this._withCancellableOperationInternal(operation), this._client); } /** @internal */ @@ -9801,7 +9908,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Adds a label to the resource */ withMergeLabel(label: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withMergeLabelInternal(label)); + return new ContainerResourcePromiseImpl(this._withMergeLabelInternal(label), this._client); } /** @internal */ @@ -9816,7 +9923,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Adds a categorized label to the resource */ withMergeLabelCategorized(label: string, category: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withMergeLabelCategorizedInternal(label, category)); + return new ContainerResourcePromiseImpl(this._withMergeLabelCategorizedInternal(label, category), this._client); } /** @internal */ @@ -9831,7 +9938,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Configures a named endpoint */ withMergeEndpoint(endpointName: string, port: number): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withMergeEndpointInternal(endpointName, port)); + return new ContainerResourcePromiseImpl(this._withMergeEndpointInternal(endpointName, port), this._client); } /** @internal */ @@ -9846,7 +9953,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Configures a named endpoint with scheme */ withMergeEndpointScheme(endpointName: string, port: number, scheme: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withMergeEndpointSchemeInternal(endpointName, port, scheme)); + return new ContainerResourcePromiseImpl(this._withMergeEndpointSchemeInternal(endpointName, port, scheme), this._client); } /** @internal */ @@ -9865,7 +9972,7 @@ class ContainerResourceImpl extends ResourceBuilderBase withMergeLogging(logLevel: string, options?: WithMergeLoggingOptions): ContainerResourcePromise { const enableConsole = options?.enableConsole; const maxFiles = options?.maxFiles; - return new ContainerResourcePromiseImpl(this._withMergeLoggingInternal(logLevel, enableConsole, maxFiles)); + return new ContainerResourcePromiseImpl(this._withMergeLoggingInternal(logLevel, enableConsole, maxFiles), this._client); } /** @internal */ @@ -9884,7 +9991,7 @@ class ContainerResourceImpl extends ResourceBuilderBase withMergeLoggingPath(logLevel: string, logPath: string, options?: WithMergeLoggingPathOptions): ContainerResourcePromise { const enableConsole = options?.enableConsole; const maxFiles = options?.maxFiles; - return new ContainerResourcePromiseImpl(this._withMergeLoggingPathInternal(logLevel, logPath, enableConsole, maxFiles)); + return new ContainerResourcePromiseImpl(this._withMergeLoggingPathInternal(logLevel, logPath, enableConsole, maxFiles), this._client); } /** @internal */ @@ -9899,7 +10006,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Configures a route */ withMergeRoute(path: string, method: string, handler: string, priority: number): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withMergeRouteInternal(path, method, handler, priority)); + return new ContainerResourcePromiseImpl(this._withMergeRouteInternal(path, method, handler, priority), this._client); } /** @internal */ @@ -9914,7 +10021,7 @@ class ContainerResourceImpl extends ResourceBuilderBase /** Configures a route with middleware */ withMergeRouteMiddleware(path: string, method: string, handler: string, priority: number, middleware: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._withMergeRouteMiddlewareInternal(path, method, handler, priority, middleware)); + return new ContainerResourcePromiseImpl(this._withMergeRouteMiddlewareInternal(path, method, handler, priority, middleware), this._client); } } @@ -9925,7 +10032,9 @@ class ContainerResourceImpl extends ResourceBuilderBase * await builder.addSomething().withX().withY(); */ class ContainerResourcePromiseImpl implements ContainerResourcePromise { - constructor(private _promise: Promise) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: ContainerResource) => TResult1 | PromiseLike) | null, @@ -9935,123 +10044,123 @@ class ContainerResourcePromiseImpl implements ContainerResourcePromise { } /** Configures a resource to use a container registry */ - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withContainerRegistry(registry))); + withContainerRegistry(registry: Awaitable): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withContainerRegistry(registry)), this._client); } /** Adds a bind mount */ withBindMount(source: string, target: string, options?: WithBindMountOptions): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withBindMount(source, target, options))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withBindMount(source, target, options)), this._client); } /** Sets the container entrypoint */ withEntrypoint(entrypoint: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withEntrypoint(entrypoint))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withEntrypoint(entrypoint)), this._client); } /** Sets the container image tag */ withImageTag(tag: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withImageTag(tag))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withImageTag(tag)), this._client); } /** Sets the container image registry */ withImageRegistry(registry: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withImageRegistry(registry))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withImageRegistry(registry)), this._client); } /** Sets the container image */ withImage(image: string, options?: WithImageOptions): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withImage(image, options))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withImage(image, options)), this._client); } /** Sets the image SHA256 digest */ withImageSHA256(sha256: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withImageSHA256(sha256))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withImageSHA256(sha256)), this._client); } /** Adds runtime arguments for the container */ withContainerRuntimeArgs(args: string[]): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withContainerRuntimeArgs(args))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withContainerRuntimeArgs(args)), this._client); } /** Sets the lifetime behavior of the container resource */ withLifetime(lifetime: ContainerLifetime): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withLifetime(lifetime))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withLifetime(lifetime)), this._client); } /** Sets the container image pull policy */ withImagePullPolicy(pullPolicy: ImagePullPolicy): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withImagePullPolicy(pullPolicy))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withImagePullPolicy(pullPolicy)), this._client); } /** Configures the resource to be published as a container */ publishAsContainer(): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.publishAsContainer())); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.publishAsContainer()), this._client); } /** Configures the resource to use a Dockerfile */ withDockerfile(contextPath: string, options?: WithDockerfileOptions): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withDockerfile(contextPath, options))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withDockerfile(contextPath, options)), this._client); } /** Sets the container name */ withContainerName(name: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withContainerName(name))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withContainerName(name)), this._client); } /** Adds a build argument from a parameter resource */ - withBuildArg(name: string, value: ParameterResource): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withBuildArg(name, value))); + withBuildArg(name: string, value: Awaitable): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withBuildArg(name, value)), this._client); } /** Adds a build secret from a parameter resource */ - withBuildSecret(name: string, value: ParameterResource): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withBuildSecret(name, value))); + withBuildSecret(name: string, value: Awaitable): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withBuildSecret(name, value)), this._client); } /** Configures endpoint proxy support */ withEndpointProxySupport(proxyEnabled: boolean): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withEndpointProxySupport(proxyEnabled))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withEndpointProxySupport(proxyEnabled)), this._client); } /** Sets the base image for a Dockerfile build */ withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withDockerfileBaseImage(options))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withDockerfileBaseImage(options)), this._client); } /** Adds a network alias for the container */ withContainerNetworkAlias(alias: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withContainerNetworkAlias(alias))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withContainerNetworkAlias(alias)), this._client); } /** Configures an MCP server endpoint on the resource */ withMcpServer(options?: WithMcpServerOptions): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withMcpServer(options))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withMcpServer(options)), this._client); } /** Configures OTLP telemetry export */ withOtlpExporter(): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withOtlpExporter())); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withOtlpExporter()), this._client); } /** Configures OTLP telemetry export with specific protocol */ withOtlpExporterProtocol(protocol: OtlpProtocol): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withOtlpExporterProtocol(protocol))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withOtlpExporterProtocol(protocol)), this._client); } /** Publishes the resource as a connection string */ publishAsConnectionString(): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.publishAsConnectionString())); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.publishAsConnectionString()), this._client); } /** Adds a required command dependency */ withRequiredCommand(command: string, options?: WithRequiredCommandOptions): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withRequiredCommand(command, options))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withRequiredCommand(command, options)), this._client); } /** Sets an environment variable */ - withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withEnvironment(name, value))); + withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withEnvironment(name, value)), this._client); } /** @@ -10059,86 +10168,86 @@ class ContainerResourcePromiseImpl implements ContainerResourcePromise { * @deprecated ATS compatibility shim. Use withEnvironment instead. */ withEnvironmentExpression(name: string, value: ReferenceExpression): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentExpression(name, value))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentExpression(name, value)), this._client); } /** Sets environment variables via callback */ withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentCallback(callback))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentCallback(callback)), this._client); } /** * Sets an environment variable from an endpoint reference * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentEndpoint(name: string, endpointReference: EndpointReference): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentEndpoint(name, endpointReference))); + withEnvironmentEndpoint(name: string, endpointReference: Awaitable): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentEndpoint(name, endpointReference)), this._client); } /** * Sets an environment variable from a parameter resource * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentParameter(name: string, parameter: ParameterResource): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentParameter(name, parameter))); + withEnvironmentParameter(name: string, parameter: Awaitable): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentParameter(name, parameter)), this._client); } /** * Sets an environment variable from a connection string resource * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentConnectionString(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentConnectionString(envVarName, resource))); + withEnvironmentConnectionString(envVarName: string, resource: Awaitable): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentConnectionString(envVarName, resource)), this._client); } /** Adds arguments */ withArgs(args: string[]): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withArgs(args))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withArgs(args)), this._client); } /** Sets command-line arguments via callback */ withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) => Promise): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withArgsCallback(callback))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withArgsCallback(callback)), this._client); } /** Adds a reference to another resource */ - withReference(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WithReferenceOptions): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withReference(source, options))); + withReference(source: Awaitable, options?: WithReferenceOptions): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withReference(source, options)), this._client); } /** Adds a reference to a URI */ withReferenceUri(name: string, uri: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withReferenceUri(name, uri))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withReferenceUri(name, uri)), this._client); } /** Adds a reference to an external service */ - withReferenceExternalService(externalService: ExternalServiceResource): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withReferenceExternalService(externalService))); + withReferenceExternalService(externalService: Awaitable): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withReferenceExternalService(externalService)), this._client); } /** Adds a reference to an endpoint */ - withReferenceEndpoint(endpointReference: EndpointReference): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withReferenceEndpoint(endpointReference))); + withReferenceEndpoint(endpointReference: Awaitable): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withReferenceEndpoint(endpointReference)), this._client); } /** Adds a network endpoint */ withEndpoint(options?: WithEndpointOptions): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withEndpoint(options))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withEndpoint(options)), this._client); } /** Adds an HTTP endpoint */ withHttpEndpoint(options?: WithHttpEndpointOptions): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withHttpEndpoint(options))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withHttpEndpoint(options)), this._client); } /** Adds an HTTPS endpoint */ withHttpsEndpoint(options?: WithHttpsEndpointOptions): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withHttpsEndpoint(options))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withHttpsEndpoint(options)), this._client); } /** Makes HTTP endpoints externally accessible */ withExternalHttpEndpoints(): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withExternalHttpEndpoints())); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withExternalHttpEndpoints()), this._client); } /** Gets an endpoint reference */ @@ -10148,152 +10257,152 @@ class ContainerResourcePromiseImpl implements ContainerResourcePromise { /** Configures resource for HTTP/2 */ asHttp2Service(): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.asHttp2Service())); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.asHttp2Service()), this._client); } /** Customizes displayed URLs via callback */ withUrlsCallback(callback: (obj: ResourceUrlsCallbackContext) => Promise): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withUrlsCallback(callback))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withUrlsCallback(callback)), this._client); } /** Adds or modifies displayed URLs */ withUrl(url: string, options?: WithUrlOptions): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withUrl(url, options))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withUrl(url, options)), this._client); } /** Adds a URL using a reference expression */ withUrlExpression(url: ReferenceExpression, options?: WithUrlExpressionOptions): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withUrlExpression(url, options))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withUrlExpression(url, options)), this._client); } /** Customizes the URL for a specific endpoint via callback */ withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpoint(endpointName, callback))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpoint(endpointName, callback)), this._client); } /** Adds a URL for a specific endpoint via factory callback */ withUrlForEndpointFactory(endpointName: string, callback: (arg: EndpointReference) => Promise): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpointFactory(endpointName, callback))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpointFactory(endpointName, callback)), this._client); } /** Excludes the resource from the deployment manifest */ excludeFromManifest(): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.excludeFromManifest())); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.excludeFromManifest()), this._client); } /** Waits for another resource to be ready */ - waitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.waitFor(dependency))); + waitFor(dependency: Awaitable): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.waitFor(dependency)), this._client); } /** Waits for another resource with specific behavior */ - waitForWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.waitForWithBehavior(dependency, waitBehavior))); + waitForWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.waitForWithBehavior(dependency, waitBehavior)), this._client); } /** Waits for another resource to start */ - waitForStart(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.waitForStart(dependency))); + waitForStart(dependency: Awaitable): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.waitForStart(dependency)), this._client); } /** Waits for another resource to start with specific behavior */ - waitForStartWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.waitForStartWithBehavior(dependency, waitBehavior))); + waitForStartWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.waitForStartWithBehavior(dependency, waitBehavior)), this._client); } /** Prevents resource from starting automatically */ withExplicitStart(): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withExplicitStart())); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withExplicitStart()), this._client); } /** Waits for resource completion */ - waitForCompletion(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WaitForCompletionOptions): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.waitForCompletion(dependency, options))); + waitForCompletion(dependency: Awaitable, options?: WaitForCompletionOptions): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.waitForCompletion(dependency, options)), this._client); } /** Adds a health check by key */ withHealthCheck(key: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withHealthCheck(key))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withHealthCheck(key)), this._client); } /** Adds an HTTP health check */ withHttpHealthCheck(options?: WithHttpHealthCheckOptions): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withHttpHealthCheck(options))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withHttpHealthCheck(options)), this._client); } /** Adds a resource command */ withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withCommand(name, displayName, executeCommand, options))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withCommand(name, displayName, executeCommand, options)), this._client); } /** Configures developer certificate trust */ withDeveloperCertificateTrust(trust: boolean): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withDeveloperCertificateTrust(trust))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withDeveloperCertificateTrust(trust)), this._client); } /** Sets the certificate trust scope */ withCertificateTrustScope(scope: CertificateTrustScope): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withCertificateTrustScope(scope))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withCertificateTrustScope(scope)), this._client); } /** Configures HTTPS with a developer certificate */ withHttpsDeveloperCertificate(options?: WithHttpsDeveloperCertificateOptions): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withHttpsDeveloperCertificate(options))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withHttpsDeveloperCertificate(options)), this._client); } /** Removes HTTPS certificate configuration */ withoutHttpsCertificate(): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withoutHttpsCertificate())); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withoutHttpsCertificate()), this._client); } /** Sets the parent relationship */ - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withParentRelationship(parent))); + withParentRelationship(parent: Awaitable): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withParentRelationship(parent)), this._client); } /** Sets a child relationship */ - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withChildRelationship(child))); + withChildRelationship(child: Awaitable): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withChildRelationship(child)), this._client); } /** Sets the icon for the resource */ withIconName(iconName: string, options?: WithIconNameOptions): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withIconName(iconName, options))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withIconName(iconName, options)), this._client); } /** Adds an HTTP health probe to the resource */ withHttpProbe(probeType: ProbeType, options?: WithHttpProbeOptions): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withHttpProbe(probeType, options))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withHttpProbe(probeType, options)), this._client); } /** Excludes the resource from MCP server exposure */ excludeFromMcp(): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.excludeFromMcp())); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.excludeFromMcp()), this._client); } /** Sets the remote image name for publishing */ withRemoteImageName(remoteImageName: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageName(remoteImageName))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageName(remoteImageName)), this._client); } /** Sets the remote image tag for publishing */ withRemoteImageTag(remoteImageTag: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageTag(remoteImageTag))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageTag(remoteImageTag)), this._client); } /** Adds a pipeline step to the resource */ withPipelineStepFactory(stepName: string, callback: (arg: PipelineStepContext) => Promise, options?: WithPipelineStepFactoryOptions): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withPipelineStepFactory(stepName, callback, options))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withPipelineStepFactory(stepName, callback, options)), this._client); } /** Configures pipeline step dependencies via a callback */ withPipelineConfiguration(callback: (obj: PipelineConfigurationContext) => Promise): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withPipelineConfiguration(callback))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withPipelineConfiguration(callback)), this._client); } /** Adds a volume */ withVolume(target: string, options?: WithVolumeOptions): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withVolume(target, options))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withVolume(target, options)), this._client); } /** Gets the resource name */ @@ -10303,147 +10412,147 @@ class ContainerResourcePromiseImpl implements ContainerResourcePromise { /** Subscribes to the BeforeResourceStarted event */ onBeforeResourceStarted(callback: (arg: BeforeResourceStartedEvent) => Promise): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.onBeforeResourceStarted(callback))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.onBeforeResourceStarted(callback)), this._client); } /** Subscribes to the ResourceStopped event */ onResourceStopped(callback: (arg: ResourceStoppedEvent) => Promise): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.onResourceStopped(callback))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.onResourceStopped(callback)), this._client); } /** Subscribes to the InitializeResource event */ onInitializeResource(callback: (arg: InitializeResourceEvent) => Promise): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.onInitializeResource(callback))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.onInitializeResource(callback)), this._client); } /** Subscribes to the ResourceEndpointsAllocated event */ onResourceEndpointsAllocated(callback: (arg: ResourceEndpointsAllocatedEvent) => Promise): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.onResourceEndpointsAllocated(callback))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.onResourceEndpointsAllocated(callback)), this._client); } /** Subscribes to the ResourceReady event */ onResourceReady(callback: (arg: ResourceReadyEvent) => Promise): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.onResourceReady(callback))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.onResourceReady(callback)), this._client); } /** Adds an optional string parameter */ withOptionalString(options?: WithOptionalStringOptions): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withOptionalString(options))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withOptionalString(options)), this._client); } /** Configures the resource with a DTO */ withConfig(config: TestConfigDto): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withConfig(config))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withConfig(config)), this._client); } /** Configures environment with callback (test version) */ testWithEnvironmentCallback(callback: (arg: TestEnvironmentContext) => Promise): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.testWithEnvironmentCallback(callback))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.testWithEnvironmentCallback(callback)), this._client); } /** Sets the created timestamp */ withCreatedAt(createdAt: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withCreatedAt(createdAt))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withCreatedAt(createdAt)), this._client); } /** Sets the modified timestamp */ withModifiedAt(modifiedAt: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withModifiedAt(modifiedAt))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withModifiedAt(modifiedAt)), this._client); } /** Sets the correlation ID */ withCorrelationId(correlationId: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withCorrelationId(correlationId))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withCorrelationId(correlationId)), this._client); } /** Configures with optional callback */ withOptionalCallback(options?: WithOptionalCallbackOptions): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withOptionalCallback(options))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withOptionalCallback(options)), this._client); } /** Sets the resource status */ withStatus(status: TestResourceStatus): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withStatus(status))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withStatus(status)), this._client); } /** Configures with nested DTO */ withNestedConfig(config: TestNestedDto): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withNestedConfig(config))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withNestedConfig(config)), this._client); } /** Adds validation callback */ withValidator(validator: (arg: TestResourceContext) => Promise): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withValidator(validator))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withValidator(validator)), this._client); } /** Waits for another resource (test version) */ - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.testWaitFor(dependency))); + testWaitFor(dependency: Awaitable): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.testWaitFor(dependency)), this._client); } /** Adds a dependency on another resource */ - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withDependency(dependency))); + withDependency(dependency: Awaitable): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withDependency(dependency)), this._client); } /** Adds a dependency from a string or another resource */ - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withUnionDependency(dependency))); + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): ContainerResourcePromise { + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withUnionDependency(dependency)), this._client); } /** Sets the endpoints */ withEndpoints(endpoints: string[]): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withEndpoints(endpoints))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withEndpoints(endpoints)), this._client); } /** Sets environment variables */ withEnvironmentVariables(variables: Record): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentVariables(variables))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentVariables(variables)), this._client); } /** Performs a cancellable operation */ withCancellableOperation(operation: (arg: CancellationToken) => Promise): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withCancellableOperation(operation))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withCancellableOperation(operation)), this._client); } /** Adds a label to the resource */ withMergeLabel(label: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabel(label))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabel(label)), this._client); } /** Adds a categorized label to the resource */ withMergeLabelCategorized(label: string, category: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabelCategorized(label, category))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabelCategorized(label, category)), this._client); } /** Configures a named endpoint */ withMergeEndpoint(endpointName: string, port: number): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpoint(endpointName, port))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpoint(endpointName, port)), this._client); } /** Configures a named endpoint with scheme */ withMergeEndpointScheme(endpointName: string, port: number, scheme: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpointScheme(endpointName, port, scheme))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpointScheme(endpointName, port, scheme)), this._client); } /** Configures resource logging */ withMergeLogging(logLevel: string, options?: WithMergeLoggingOptions): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withMergeLogging(logLevel, options))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withMergeLogging(logLevel, options)), this._client); } /** Configures resource logging with file path */ withMergeLoggingPath(logLevel: string, logPath: string, options?: WithMergeLoggingPathOptions): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withMergeLoggingPath(logLevel, logPath, options))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withMergeLoggingPath(logLevel, logPath, options)), this._client); } /** Configures a route */ withMergeRoute(path: string, method: string, handler: string, priority: number): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withMergeRoute(path, method, handler, priority))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withMergeRoute(path, method, handler, priority)), this._client); } /** Configures a route with middleware */ withMergeRouteMiddleware(path: string, method: string, handler: string, priority: number, middleware: string): ContainerResourcePromise { - return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withMergeRouteMiddleware(path, method, handler, priority, middleware))); + return new ContainerResourcePromiseImpl(this._promise.then(obj => obj.withMergeRouteMiddleware(path, method, handler, priority, middleware)), this._client); } } @@ -10454,7 +10563,7 @@ class ContainerResourcePromiseImpl implements ContainerResourcePromise { export interface CSharpAppResource { toJSON(): MarshalledHandle; - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): CSharpAppResourcePromise; + withContainerRegistry(registry: Awaitable): CSharpAppResourcePromise; withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): CSharpAppResourcePromise; withMcpServer(options?: WithMcpServerOptions): CSharpAppResourcePromise; withOtlpExporter(): CSharpAppResourcePromise; @@ -10463,18 +10572,18 @@ export interface CSharpAppResource { disableForwardedHeaders(): CSharpAppResourcePromise; publishAsDockerFile(options?: PublishAsDockerFileOptions): CSharpAppResourcePromise; withRequiredCommand(command: string, options?: WithRequiredCommandOptions): CSharpAppResourcePromise; - withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression): CSharpAppResourcePromise; + withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): CSharpAppResourcePromise; withEnvironmentExpression(name: string, value: ReferenceExpression): CSharpAppResourcePromise; withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): CSharpAppResourcePromise; - withEnvironmentEndpoint(name: string, endpointReference: EndpointReference): CSharpAppResourcePromise; - withEnvironmentParameter(name: string, parameter: ParameterResource): CSharpAppResourcePromise; - withEnvironmentConnectionString(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): CSharpAppResourcePromise; + withEnvironmentEndpoint(name: string, endpointReference: Awaitable): CSharpAppResourcePromise; + withEnvironmentParameter(name: string, parameter: Awaitable): CSharpAppResourcePromise; + withEnvironmentConnectionString(envVarName: string, resource: Awaitable): CSharpAppResourcePromise; withArgs(args: string[]): CSharpAppResourcePromise; withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) => Promise): CSharpAppResourcePromise; - withReference(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WithReferenceOptions): CSharpAppResourcePromise; + withReference(source: Awaitable, options?: WithReferenceOptions): CSharpAppResourcePromise; withReferenceUri(name: string, uri: string): CSharpAppResourcePromise; - withReferenceExternalService(externalService: ExternalServiceResource): CSharpAppResourcePromise; - withReferenceEndpoint(endpointReference: EndpointReference): CSharpAppResourcePromise; + withReferenceExternalService(externalService: Awaitable): CSharpAppResourcePromise; + withReferenceEndpoint(endpointReference: Awaitable): CSharpAppResourcePromise; withEndpoint(options?: WithEndpointOptions): CSharpAppResourcePromise; withHttpEndpoint(options?: WithHttpEndpointOptions): CSharpAppResourcePromise; withHttpsEndpoint(options?: WithHttpsEndpointOptions): CSharpAppResourcePromise; @@ -10486,14 +10595,14 @@ export interface CSharpAppResource { withUrlExpression(url: ReferenceExpression, options?: WithUrlExpressionOptions): CSharpAppResourcePromise; withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): CSharpAppResourcePromise; withUrlForEndpointFactory(endpointName: string, callback: (arg: EndpointReference) => Promise): CSharpAppResourcePromise; - publishWithContainerFiles(source: ResourceWithContainerFiles, destinationPath: string): CSharpAppResourcePromise; + publishWithContainerFiles(source: Awaitable, destinationPath: string): CSharpAppResourcePromise; excludeFromManifest(): CSharpAppResourcePromise; - waitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): CSharpAppResourcePromise; - waitForWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): CSharpAppResourcePromise; - waitForStart(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): CSharpAppResourcePromise; - waitForStartWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): CSharpAppResourcePromise; + waitFor(dependency: Awaitable): CSharpAppResourcePromise; + waitForWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): CSharpAppResourcePromise; + waitForStart(dependency: Awaitable): CSharpAppResourcePromise; + waitForStartWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): CSharpAppResourcePromise; withExplicitStart(): CSharpAppResourcePromise; - waitForCompletion(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WaitForCompletionOptions): CSharpAppResourcePromise; + waitForCompletion(dependency: Awaitable, options?: WaitForCompletionOptions): CSharpAppResourcePromise; withHealthCheck(key: string): CSharpAppResourcePromise; withHttpHealthCheck(options?: WithHttpHealthCheckOptions): CSharpAppResourcePromise; withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): CSharpAppResourcePromise; @@ -10501,8 +10610,8 @@ export interface CSharpAppResource { withCertificateTrustScope(scope: CertificateTrustScope): CSharpAppResourcePromise; withHttpsDeveloperCertificate(options?: WithHttpsDeveloperCertificateOptions): CSharpAppResourcePromise; withoutHttpsCertificate(): CSharpAppResourcePromise; - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): CSharpAppResourcePromise; - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): CSharpAppResourcePromise; + withParentRelationship(parent: Awaitable): CSharpAppResourcePromise; + withChildRelationship(child: Awaitable): CSharpAppResourcePromise; withIconName(iconName: string, options?: WithIconNameOptions): CSharpAppResourcePromise; withHttpProbe(probeType: ProbeType, options?: WithHttpProbeOptions): CSharpAppResourcePromise; excludeFromMcp(): CSharpAppResourcePromise; @@ -10526,9 +10635,9 @@ export interface CSharpAppResource { withStatus(status: TestResourceStatus): CSharpAppResourcePromise; withNestedConfig(config: TestNestedDto): CSharpAppResourcePromise; withValidator(validator: (arg: TestResourceContext) => Promise): CSharpAppResourcePromise; - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): CSharpAppResourcePromise; - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): CSharpAppResourcePromise; - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): CSharpAppResourcePromise; + testWaitFor(dependency: Awaitable): CSharpAppResourcePromise; + withDependency(dependency: Awaitable): CSharpAppResourcePromise; + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): CSharpAppResourcePromise; withEndpoints(endpoints: string[]): CSharpAppResourcePromise; withEnvironmentVariables(variables: Record): CSharpAppResourcePromise; withCancellableOperation(operation: (arg: CancellationToken) => Promise): CSharpAppResourcePromise; @@ -10543,7 +10652,7 @@ export interface CSharpAppResource { } export interface CSharpAppResourcePromise extends PromiseLike { - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): CSharpAppResourcePromise; + withContainerRegistry(registry: Awaitable): CSharpAppResourcePromise; withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): CSharpAppResourcePromise; withMcpServer(options?: WithMcpServerOptions): CSharpAppResourcePromise; withOtlpExporter(): CSharpAppResourcePromise; @@ -10552,18 +10661,18 @@ export interface CSharpAppResourcePromise extends PromiseLike disableForwardedHeaders(): CSharpAppResourcePromise; publishAsDockerFile(options?: PublishAsDockerFileOptions): CSharpAppResourcePromise; withRequiredCommand(command: string, options?: WithRequiredCommandOptions): CSharpAppResourcePromise; - withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression): CSharpAppResourcePromise; + withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): CSharpAppResourcePromise; withEnvironmentExpression(name: string, value: ReferenceExpression): CSharpAppResourcePromise; withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): CSharpAppResourcePromise; - withEnvironmentEndpoint(name: string, endpointReference: EndpointReference): CSharpAppResourcePromise; - withEnvironmentParameter(name: string, parameter: ParameterResource): CSharpAppResourcePromise; - withEnvironmentConnectionString(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): CSharpAppResourcePromise; + withEnvironmentEndpoint(name: string, endpointReference: Awaitable): CSharpAppResourcePromise; + withEnvironmentParameter(name: string, parameter: Awaitable): CSharpAppResourcePromise; + withEnvironmentConnectionString(envVarName: string, resource: Awaitable): CSharpAppResourcePromise; withArgs(args: string[]): CSharpAppResourcePromise; withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) => Promise): CSharpAppResourcePromise; - withReference(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WithReferenceOptions): CSharpAppResourcePromise; + withReference(source: Awaitable, options?: WithReferenceOptions): CSharpAppResourcePromise; withReferenceUri(name: string, uri: string): CSharpAppResourcePromise; - withReferenceExternalService(externalService: ExternalServiceResource): CSharpAppResourcePromise; - withReferenceEndpoint(endpointReference: EndpointReference): CSharpAppResourcePromise; + withReferenceExternalService(externalService: Awaitable): CSharpAppResourcePromise; + withReferenceEndpoint(endpointReference: Awaitable): CSharpAppResourcePromise; withEndpoint(options?: WithEndpointOptions): CSharpAppResourcePromise; withHttpEndpoint(options?: WithHttpEndpointOptions): CSharpAppResourcePromise; withHttpsEndpoint(options?: WithHttpsEndpointOptions): CSharpAppResourcePromise; @@ -10575,14 +10684,14 @@ export interface CSharpAppResourcePromise extends PromiseLike withUrlExpression(url: ReferenceExpression, options?: WithUrlExpressionOptions): CSharpAppResourcePromise; withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): CSharpAppResourcePromise; withUrlForEndpointFactory(endpointName: string, callback: (arg: EndpointReference) => Promise): CSharpAppResourcePromise; - publishWithContainerFiles(source: ResourceWithContainerFiles, destinationPath: string): CSharpAppResourcePromise; + publishWithContainerFiles(source: Awaitable, destinationPath: string): CSharpAppResourcePromise; excludeFromManifest(): CSharpAppResourcePromise; - waitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): CSharpAppResourcePromise; - waitForWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): CSharpAppResourcePromise; - waitForStart(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): CSharpAppResourcePromise; - waitForStartWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): CSharpAppResourcePromise; + waitFor(dependency: Awaitable): CSharpAppResourcePromise; + waitForWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): CSharpAppResourcePromise; + waitForStart(dependency: Awaitable): CSharpAppResourcePromise; + waitForStartWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): CSharpAppResourcePromise; withExplicitStart(): CSharpAppResourcePromise; - waitForCompletion(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WaitForCompletionOptions): CSharpAppResourcePromise; + waitForCompletion(dependency: Awaitable, options?: WaitForCompletionOptions): CSharpAppResourcePromise; withHealthCheck(key: string): CSharpAppResourcePromise; withHttpHealthCheck(options?: WithHttpHealthCheckOptions): CSharpAppResourcePromise; withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): CSharpAppResourcePromise; @@ -10590,8 +10699,8 @@ export interface CSharpAppResourcePromise extends PromiseLike withCertificateTrustScope(scope: CertificateTrustScope): CSharpAppResourcePromise; withHttpsDeveloperCertificate(options?: WithHttpsDeveloperCertificateOptions): CSharpAppResourcePromise; withoutHttpsCertificate(): CSharpAppResourcePromise; - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): CSharpAppResourcePromise; - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): CSharpAppResourcePromise; + withParentRelationship(parent: Awaitable): CSharpAppResourcePromise; + withChildRelationship(child: Awaitable): CSharpAppResourcePromise; withIconName(iconName: string, options?: WithIconNameOptions): CSharpAppResourcePromise; withHttpProbe(probeType: ProbeType, options?: WithHttpProbeOptions): CSharpAppResourcePromise; excludeFromMcp(): CSharpAppResourcePromise; @@ -10615,9 +10724,9 @@ export interface CSharpAppResourcePromise extends PromiseLike withStatus(status: TestResourceStatus): CSharpAppResourcePromise; withNestedConfig(config: TestNestedDto): CSharpAppResourcePromise; withValidator(validator: (arg: TestResourceContext) => Promise): CSharpAppResourcePromise; - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): CSharpAppResourcePromise; - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): CSharpAppResourcePromise; - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): CSharpAppResourcePromise; + testWaitFor(dependency: Awaitable): CSharpAppResourcePromise; + withDependency(dependency: Awaitable): CSharpAppResourcePromise; + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): CSharpAppResourcePromise; withEndpoints(endpoints: string[]): CSharpAppResourcePromise; withEnvironmentVariables(variables: Record): CSharpAppResourcePromise; withCancellableOperation(operation: (arg: CancellationToken) => Promise): CSharpAppResourcePromise; @@ -10641,7 +10750,8 @@ class CSharpAppResourceImpl extends ResourceBuilderBase } /** @internal */ - private async _withContainerRegistryInternal(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _withContainerRegistryInternal(registry: Awaitable): Promise { + registry = isPromiseLike(registry) ? await registry : registry; const rpcArgs: Record = { builder: this._handle, registry }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withContainerRegistry', @@ -10651,8 +10761,8 @@ class CSharpAppResourceImpl extends ResourceBuilderBase } /** Configures a resource to use a container registry */ - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withContainerRegistryInternal(registry)); + withContainerRegistry(registry: Awaitable): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._withContainerRegistryInternal(registry), this._client); } /** @internal */ @@ -10671,7 +10781,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): CSharpAppResourcePromise { const buildImage = options?.buildImage; const runtimeImage = options?.runtimeImage; - return new CSharpAppResourcePromiseImpl(this._withDockerfileBaseImageInternal(buildImage, runtimeImage)); + return new CSharpAppResourcePromiseImpl(this._withDockerfileBaseImageInternal(buildImage, runtimeImage), this._client); } /** @internal */ @@ -10690,7 +10800,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase withMcpServer(options?: WithMcpServerOptions): CSharpAppResourcePromise { const path = options?.path; const endpointName = options?.endpointName; - return new CSharpAppResourcePromiseImpl(this._withMcpServerInternal(path, endpointName)); + return new CSharpAppResourcePromiseImpl(this._withMcpServerInternal(path, endpointName), this._client); } /** @internal */ @@ -10705,7 +10815,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Configures OTLP telemetry export */ withOtlpExporter(): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withOtlpExporterInternal()); + return new CSharpAppResourcePromiseImpl(this._withOtlpExporterInternal(), this._client); } /** @internal */ @@ -10720,7 +10830,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Configures OTLP telemetry export with specific protocol */ withOtlpExporterProtocol(protocol: OtlpProtocol): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withOtlpExporterProtocolInternal(protocol)); + return new CSharpAppResourcePromiseImpl(this._withOtlpExporterProtocolInternal(protocol), this._client); } /** @internal */ @@ -10735,7 +10845,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Sets the number of replicas */ withReplicas(replicas: number): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withReplicasInternal(replicas)); + return new CSharpAppResourcePromiseImpl(this._withReplicasInternal(replicas), this._client); } /** @internal */ @@ -10750,7 +10860,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Disables forwarded headers for the project */ disableForwardedHeaders(): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._disableForwardedHeadersInternal()); + return new CSharpAppResourcePromiseImpl(this._disableForwardedHeadersInternal(), this._client); } /** @internal */ @@ -10772,7 +10882,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Publishes a project as a Docker file with optional container configuration */ publishAsDockerFile(options?: PublishAsDockerFileOptions): CSharpAppResourcePromise { const configure = options?.configure; - return new CSharpAppResourcePromiseImpl(this._publishAsDockerFileInternal(configure)); + return new CSharpAppResourcePromiseImpl(this._publishAsDockerFileInternal(configure), this._client); } /** @internal */ @@ -10789,11 +10899,12 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Adds a required command dependency */ withRequiredCommand(command: string, options?: WithRequiredCommandOptions): CSharpAppResourcePromise { const helpLink = options?.helpLink; - return new CSharpAppResourcePromiseImpl(this._withRequiredCommandInternal(command, helpLink)); + return new CSharpAppResourcePromiseImpl(this._withRequiredCommandInternal(command, helpLink), this._client); } /** @internal */ - private async _withEnvironmentInternal(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression): Promise { + private async _withEnvironmentInternal(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): Promise { + value = isPromiseLike(value) ? await value : value; const rpcArgs: Record = { builder: this._handle, name, value }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironment', @@ -10803,8 +10914,8 @@ class CSharpAppResourceImpl extends ResourceBuilderBase } /** Sets an environment variable */ - withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withEnvironmentInternal(name, value)); + withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._withEnvironmentInternal(name, value), this._client); } /** @internal */ @@ -10822,7 +10933,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase * @deprecated ATS compatibility shim. Use withEnvironment instead. */ withEnvironmentExpression(name: string, value: ReferenceExpression): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withEnvironmentExpressionInternal(name, value)); + return new CSharpAppResourcePromiseImpl(this._withEnvironmentExpressionInternal(name, value), this._client); } /** @internal */ @@ -10842,11 +10953,12 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Sets environment variables via callback */ withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withEnvironmentCallbackInternal(callback)); + return new CSharpAppResourcePromiseImpl(this._withEnvironmentCallbackInternal(callback), this._client); } /** @internal */ - private async _withEnvironmentEndpointInternal(name: string, endpointReference: EndpointReference): Promise { + private async _withEnvironmentEndpointInternal(name: string, endpointReference: Awaitable): Promise { + endpointReference = isPromiseLike(endpointReference) ? await endpointReference : endpointReference; const rpcArgs: Record = { builder: this._handle, name, endpointReference }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironmentEndpoint', @@ -10859,12 +10971,13 @@ class CSharpAppResourceImpl extends ResourceBuilderBase * Sets an environment variable from an endpoint reference * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentEndpoint(name: string, endpointReference: EndpointReference): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withEnvironmentEndpointInternal(name, endpointReference)); + withEnvironmentEndpoint(name: string, endpointReference: Awaitable): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._withEnvironmentEndpointInternal(name, endpointReference), this._client); } /** @internal */ - private async _withEnvironmentParameterInternal(name: string, parameter: ParameterResource): Promise { + private async _withEnvironmentParameterInternal(name: string, parameter: Awaitable): Promise { + parameter = isPromiseLike(parameter) ? await parameter : parameter; const rpcArgs: Record = { builder: this._handle, name, parameter }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironmentParameter', @@ -10877,12 +10990,13 @@ class CSharpAppResourceImpl extends ResourceBuilderBase * Sets an environment variable from a parameter resource * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentParameter(name: string, parameter: ParameterResource): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withEnvironmentParameterInternal(name, parameter)); + withEnvironmentParameter(name: string, parameter: Awaitable): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._withEnvironmentParameterInternal(name, parameter), this._client); } /** @internal */ - private async _withEnvironmentConnectionStringInternal(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withEnvironmentConnectionStringInternal(envVarName: string, resource: Awaitable): Promise { + resource = isPromiseLike(resource) ? await resource : resource; const rpcArgs: Record = { builder: this._handle, envVarName, resource }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironmentConnectionString', @@ -10895,8 +11009,8 @@ class CSharpAppResourceImpl extends ResourceBuilderBase * Sets an environment variable from a connection string resource * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentConnectionString(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withEnvironmentConnectionStringInternal(envVarName, resource)); + withEnvironmentConnectionString(envVarName: string, resource: Awaitable): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._withEnvironmentConnectionStringInternal(envVarName, resource), this._client); } /** @internal */ @@ -10911,7 +11025,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Adds arguments */ withArgs(args: string[]): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withArgsInternal(args)); + return new CSharpAppResourcePromiseImpl(this._withArgsInternal(args), this._client); } /** @internal */ @@ -10931,11 +11045,12 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Sets command-line arguments via callback */ withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) => Promise): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withArgsCallbackInternal(callback)); + return new CSharpAppResourcePromiseImpl(this._withArgsCallbackInternal(callback), this._client); } /** @internal */ - private async _withReferenceInternal(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, connectionName?: string, optional?: boolean, name?: string): Promise { + private async _withReferenceInternal(source: Awaitable, connectionName?: string, optional?: boolean, name?: string): Promise { + source = isPromiseLike(source) ? await source : source; const rpcArgs: Record = { builder: this._handle, source }; if (connectionName !== undefined) rpcArgs.connectionName = connectionName; if (optional !== undefined) rpcArgs.optional = optional; @@ -10948,11 +11063,11 @@ class CSharpAppResourceImpl extends ResourceBuilderBase } /** Adds a reference to another resource */ - withReference(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WithReferenceOptions): CSharpAppResourcePromise { + withReference(source: Awaitable, options?: WithReferenceOptions): CSharpAppResourcePromise { const connectionName = options?.connectionName; const optional = options?.optional; const name = options?.name; - return new CSharpAppResourcePromiseImpl(this._withReferenceInternal(source, connectionName, optional, name)); + return new CSharpAppResourcePromiseImpl(this._withReferenceInternal(source, connectionName, optional, name), this._client); } /** @internal */ @@ -10967,11 +11082,12 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Adds a reference to a URI */ withReferenceUri(name: string, uri: string): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withReferenceUriInternal(name, uri)); + return new CSharpAppResourcePromiseImpl(this._withReferenceUriInternal(name, uri), this._client); } /** @internal */ - private async _withReferenceExternalServiceInternal(externalService: ExternalServiceResource): Promise { + private async _withReferenceExternalServiceInternal(externalService: Awaitable): Promise { + externalService = isPromiseLike(externalService) ? await externalService : externalService; const rpcArgs: Record = { builder: this._handle, externalService }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withReferenceExternalService', @@ -10981,12 +11097,13 @@ class CSharpAppResourceImpl extends ResourceBuilderBase } /** Adds a reference to an external service */ - withReferenceExternalService(externalService: ExternalServiceResource): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withReferenceExternalServiceInternal(externalService)); + withReferenceExternalService(externalService: Awaitable): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._withReferenceExternalServiceInternal(externalService), this._client); } /** @internal */ - private async _withReferenceEndpointInternal(endpointReference: EndpointReference): Promise { + private async _withReferenceEndpointInternal(endpointReference: Awaitable): Promise { + endpointReference = isPromiseLike(endpointReference) ? await endpointReference : endpointReference; const rpcArgs: Record = { builder: this._handle, endpointReference }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withReferenceEndpoint', @@ -10996,8 +11113,8 @@ class CSharpAppResourceImpl extends ResourceBuilderBase } /** Adds a reference to an endpoint */ - withReferenceEndpoint(endpointReference: EndpointReference): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withReferenceEndpointInternal(endpointReference)); + withReferenceEndpoint(endpointReference: Awaitable): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._withReferenceEndpointInternal(endpointReference), this._client); } /** @internal */ @@ -11028,7 +11145,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase const isProxied = options?.isProxied; const isExternal = options?.isExternal; const protocol = options?.protocol; - return new CSharpAppResourcePromiseImpl(this._withEndpointInternal(port, targetPort, scheme, name, env, isProxied, isExternal, protocol)); + return new CSharpAppResourcePromiseImpl(this._withEndpointInternal(port, targetPort, scheme, name, env, isProxied, isExternal, protocol), this._client); } /** @internal */ @@ -11053,7 +11170,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase const name = options?.name; const env = options?.env; const isProxied = options?.isProxied; - return new CSharpAppResourcePromiseImpl(this._withHttpEndpointInternal(port, targetPort, name, env, isProxied)); + return new CSharpAppResourcePromiseImpl(this._withHttpEndpointInternal(port, targetPort, name, env, isProxied), this._client); } /** @internal */ @@ -11078,7 +11195,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase const name = options?.name; const env = options?.env; const isProxied = options?.isProxied; - return new CSharpAppResourcePromiseImpl(this._withHttpsEndpointInternal(port, targetPort, name, env, isProxied)); + return new CSharpAppResourcePromiseImpl(this._withHttpsEndpointInternal(port, targetPort, name, env, isProxied), this._client); } /** @internal */ @@ -11093,7 +11210,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Makes HTTP endpoints externally accessible */ withExternalHttpEndpoints(): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withExternalHttpEndpointsInternal()); + return new CSharpAppResourcePromiseImpl(this._withExternalHttpEndpointsInternal(), this._client); } /** Gets an endpoint reference */ @@ -11117,7 +11234,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Configures resource for HTTP/2 */ asHttp2Service(): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._asHttp2ServiceInternal()); + return new CSharpAppResourcePromiseImpl(this._asHttp2ServiceInternal(), this._client); } /** @internal */ @@ -11137,7 +11254,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Customizes displayed URLs via callback */ withUrlsCallback(callback: (obj: ResourceUrlsCallbackContext) => Promise): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withUrlsCallbackInternal(callback)); + return new CSharpAppResourcePromiseImpl(this._withUrlsCallbackInternal(callback), this._client); } /** @internal */ @@ -11154,7 +11271,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Adds or modifies displayed URLs */ withUrl(url: string, options?: WithUrlOptions): CSharpAppResourcePromise { const displayText = options?.displayText; - return new CSharpAppResourcePromiseImpl(this._withUrlInternal(url, displayText)); + return new CSharpAppResourcePromiseImpl(this._withUrlInternal(url, displayText), this._client); } /** @internal */ @@ -11171,7 +11288,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Adds a URL using a reference expression */ withUrlExpression(url: ReferenceExpression, options?: WithUrlExpressionOptions): CSharpAppResourcePromise { const displayText = options?.displayText; - return new CSharpAppResourcePromiseImpl(this._withUrlExpressionInternal(url, displayText)); + return new CSharpAppResourcePromiseImpl(this._withUrlExpressionInternal(url, displayText), this._client); } /** @internal */ @@ -11190,7 +11307,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Customizes the URL for a specific endpoint via callback */ withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withUrlForEndpointInternal(endpointName, callback)); + return new CSharpAppResourcePromiseImpl(this._withUrlForEndpointInternal(endpointName, callback), this._client); } /** @internal */ @@ -11210,11 +11327,12 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Adds a URL for a specific endpoint via factory callback */ withUrlForEndpointFactory(endpointName: string, callback: (arg: EndpointReference) => Promise): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withUrlForEndpointFactoryInternal(endpointName, callback)); + return new CSharpAppResourcePromiseImpl(this._withUrlForEndpointFactoryInternal(endpointName, callback), this._client); } /** @internal */ - private async _publishWithContainerFilesInternal(source: ResourceWithContainerFiles, destinationPath: string): Promise { + private async _publishWithContainerFilesInternal(source: Awaitable, destinationPath: string): Promise { + source = isPromiseLike(source) ? await source : source; const rpcArgs: Record = { builder: this._handle, source, destinationPath }; const result = await this._client.invokeCapability( 'Aspire.Hosting/publishWithContainerFilesFromResource', @@ -11224,8 +11342,8 @@ class CSharpAppResourceImpl extends ResourceBuilderBase } /** Configures the resource to copy container files from the specified source during publishing */ - publishWithContainerFiles(source: ResourceWithContainerFiles, destinationPath: string): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._publishWithContainerFilesInternal(source, destinationPath)); + publishWithContainerFiles(source: Awaitable, destinationPath: string): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._publishWithContainerFilesInternal(source, destinationPath), this._client); } /** @internal */ @@ -11240,11 +11358,12 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Excludes the resource from the deployment manifest */ excludeFromManifest(): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._excludeFromManifestInternal()); + return new CSharpAppResourcePromiseImpl(this._excludeFromManifestInternal(), this._client); } /** @internal */ - private async _waitForInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _waitForInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForResource', @@ -11254,12 +11373,13 @@ class CSharpAppResourceImpl extends ResourceBuilderBase } /** Waits for another resource to be ready */ - waitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._waitForInternal(dependency)); + waitFor(dependency: Awaitable): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._waitForInternal(dependency), this._client); } /** @internal */ - private async _waitForWithBehaviorInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): Promise { + private async _waitForWithBehaviorInternal(dependency: Awaitable, waitBehavior: WaitBehavior): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency, waitBehavior }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForWithBehavior', @@ -11269,12 +11389,13 @@ class CSharpAppResourceImpl extends ResourceBuilderBase } /** Waits for another resource with specific behavior */ - waitForWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._waitForWithBehaviorInternal(dependency, waitBehavior)); + waitForWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._waitForWithBehaviorInternal(dependency, waitBehavior), this._client); } /** @internal */ - private async _waitForStartInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _waitForStartInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForResourceStart', @@ -11284,12 +11405,13 @@ class CSharpAppResourceImpl extends ResourceBuilderBase } /** Waits for another resource to start */ - waitForStart(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._waitForStartInternal(dependency)); + waitForStart(dependency: Awaitable): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._waitForStartInternal(dependency), this._client); } /** @internal */ - private async _waitForStartWithBehaviorInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): Promise { + private async _waitForStartWithBehaviorInternal(dependency: Awaitable, waitBehavior: WaitBehavior): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency, waitBehavior }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForStartWithBehavior', @@ -11299,8 +11421,8 @@ class CSharpAppResourceImpl extends ResourceBuilderBase } /** Waits for another resource to start with specific behavior */ - waitForStartWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._waitForStartWithBehaviorInternal(dependency, waitBehavior)); + waitForStartWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._waitForStartWithBehaviorInternal(dependency, waitBehavior), this._client); } /** @internal */ @@ -11315,11 +11437,12 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Prevents resource from starting automatically */ withExplicitStart(): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withExplicitStartInternal()); + return new CSharpAppResourcePromiseImpl(this._withExplicitStartInternal(), this._client); } /** @internal */ - private async _waitForCompletionInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, exitCode?: number): Promise { + private async _waitForCompletionInternal(dependency: Awaitable, exitCode?: number): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; if (exitCode !== undefined) rpcArgs.exitCode = exitCode; const result = await this._client.invokeCapability( @@ -11330,9 +11453,9 @@ class CSharpAppResourceImpl extends ResourceBuilderBase } /** Waits for resource completion */ - waitForCompletion(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WaitForCompletionOptions): CSharpAppResourcePromise { + waitForCompletion(dependency: Awaitable, options?: WaitForCompletionOptions): CSharpAppResourcePromise { const exitCode = options?.exitCode; - return new CSharpAppResourcePromiseImpl(this._waitForCompletionInternal(dependency, exitCode)); + return new CSharpAppResourcePromiseImpl(this._waitForCompletionInternal(dependency, exitCode), this._client); } /** @internal */ @@ -11347,7 +11470,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Adds a health check by key */ withHealthCheck(key: string): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withHealthCheckInternal(key)); + return new CSharpAppResourcePromiseImpl(this._withHealthCheckInternal(key), this._client); } /** @internal */ @@ -11368,7 +11491,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase const path = options?.path; const statusCode = options?.statusCode; const endpointName = options?.endpointName; - return new CSharpAppResourcePromiseImpl(this._withHttpHealthCheckInternal(path, statusCode, endpointName)); + return new CSharpAppResourcePromiseImpl(this._withHttpHealthCheckInternal(path, statusCode, endpointName), this._client); } /** @internal */ @@ -11390,7 +11513,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Adds a resource command */ withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): CSharpAppResourcePromise { const commandOptions = options?.commandOptions; - return new CSharpAppResourcePromiseImpl(this._withCommandInternal(name, displayName, executeCommand, commandOptions)); + return new CSharpAppResourcePromiseImpl(this._withCommandInternal(name, displayName, executeCommand, commandOptions), this._client); } /** @internal */ @@ -11405,7 +11528,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Configures developer certificate trust */ withDeveloperCertificateTrust(trust: boolean): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withDeveloperCertificateTrustInternal(trust)); + return new CSharpAppResourcePromiseImpl(this._withDeveloperCertificateTrustInternal(trust), this._client); } /** @internal */ @@ -11420,11 +11543,12 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Sets the certificate trust scope */ withCertificateTrustScope(scope: CertificateTrustScope): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withCertificateTrustScopeInternal(scope)); + return new CSharpAppResourcePromiseImpl(this._withCertificateTrustScopeInternal(scope), this._client); } /** @internal */ - private async _withHttpsDeveloperCertificateInternal(password?: ParameterResource): Promise { + private async _withHttpsDeveloperCertificateInternal(password?: Awaitable): Promise { + password = isPromiseLike(password) ? await password : password; const rpcArgs: Record = { builder: this._handle }; if (password !== undefined) rpcArgs.password = password; const result = await this._client.invokeCapability( @@ -11436,8 +11560,8 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Configures HTTPS with a developer certificate */ withHttpsDeveloperCertificate(options?: WithHttpsDeveloperCertificateOptions): CSharpAppResourcePromise { - const password = options?.password; - return new CSharpAppResourcePromiseImpl(this._withHttpsDeveloperCertificateInternal(password)); + let password = options?.password; + return new CSharpAppResourcePromiseImpl(this._withHttpsDeveloperCertificateInternal(password), this._client); } /** @internal */ @@ -11452,11 +11576,12 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Removes HTTPS certificate configuration */ withoutHttpsCertificate(): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withoutHttpsCertificateInternal()); + return new CSharpAppResourcePromiseImpl(this._withoutHttpsCertificateInternal(), this._client); } /** @internal */ - private async _withParentRelationshipInternal(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _withParentRelationshipInternal(parent: Awaitable): Promise { + parent = isPromiseLike(parent) ? await parent : parent; const rpcArgs: Record = { builder: this._handle, parent }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withBuilderParentRelationship', @@ -11466,12 +11591,13 @@ class CSharpAppResourceImpl extends ResourceBuilderBase } /** Sets the parent relationship */ - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withParentRelationshipInternal(parent)); + withParentRelationship(parent: Awaitable): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._withParentRelationshipInternal(parent), this._client); } /** @internal */ - private async _withChildRelationshipInternal(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _withChildRelationshipInternal(child: Awaitable): Promise { + child = isPromiseLike(child) ? await child : child; const rpcArgs: Record = { builder: this._handle, child }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withBuilderChildRelationship', @@ -11481,8 +11607,8 @@ class CSharpAppResourceImpl extends ResourceBuilderBase } /** Sets a child relationship */ - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withChildRelationshipInternal(child)); + withChildRelationship(child: Awaitable): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._withChildRelationshipInternal(child), this._client); } /** @internal */ @@ -11499,7 +11625,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Sets the icon for the resource */ withIconName(iconName: string, options?: WithIconNameOptions): CSharpAppResourcePromise { const iconVariant = options?.iconVariant; - return new CSharpAppResourcePromiseImpl(this._withIconNameInternal(iconName, iconVariant)); + return new CSharpAppResourcePromiseImpl(this._withIconNameInternal(iconName, iconVariant), this._client); } /** @internal */ @@ -11528,7 +11654,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase const failureThreshold = options?.failureThreshold; const successThreshold = options?.successThreshold; const endpointName = options?.endpointName; - return new CSharpAppResourcePromiseImpl(this._withHttpProbeInternal(probeType, path, initialDelaySeconds, periodSeconds, timeoutSeconds, failureThreshold, successThreshold, endpointName)); + return new CSharpAppResourcePromiseImpl(this._withHttpProbeInternal(probeType, path, initialDelaySeconds, periodSeconds, timeoutSeconds, failureThreshold, successThreshold, endpointName), this._client); } /** @internal */ @@ -11543,7 +11669,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Excludes the resource from MCP server exposure */ excludeFromMcp(): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._excludeFromMcpInternal()); + return new CSharpAppResourcePromiseImpl(this._excludeFromMcpInternal(), this._client); } /** @internal */ @@ -11558,7 +11684,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Sets the remote image name for publishing */ withRemoteImageName(remoteImageName: string): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withRemoteImageNameInternal(remoteImageName)); + return new CSharpAppResourcePromiseImpl(this._withRemoteImageNameInternal(remoteImageName), this._client); } /** @internal */ @@ -11573,7 +11699,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Sets the remote image tag for publishing */ withRemoteImageTag(remoteImageTag: string): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withRemoteImageTagInternal(remoteImageTag)); + return new CSharpAppResourcePromiseImpl(this._withRemoteImageTagInternal(remoteImageTag), this._client); } /** @internal */ @@ -11601,7 +11727,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase const requiredBy = options?.requiredBy; const tags = options?.tags; const description = options?.description; - return new CSharpAppResourcePromiseImpl(this._withPipelineStepFactoryInternal(stepName, callback, dependsOn, requiredBy, tags, description)); + return new CSharpAppResourcePromiseImpl(this._withPipelineStepFactoryInternal(stepName, callback, dependsOn, requiredBy, tags, description), this._client); } /** @internal */ @@ -11621,7 +11747,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Configures pipeline step dependencies via a callback */ withPipelineConfiguration(callback: (obj: PipelineConfigurationContext) => Promise): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withPipelineConfigurationInternal(callback)); + return new CSharpAppResourcePromiseImpl(this._withPipelineConfigurationInternal(callback), this._client); } /** Gets the resource name */ @@ -11650,7 +11776,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Subscribes to the BeforeResourceStarted event */ onBeforeResourceStarted(callback: (arg: BeforeResourceStartedEvent) => Promise): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._onBeforeResourceStartedInternal(callback)); + return new CSharpAppResourcePromiseImpl(this._onBeforeResourceStartedInternal(callback), this._client); } /** @internal */ @@ -11670,7 +11796,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Subscribes to the ResourceStopped event */ onResourceStopped(callback: (arg: ResourceStoppedEvent) => Promise): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._onResourceStoppedInternal(callback)); + return new CSharpAppResourcePromiseImpl(this._onResourceStoppedInternal(callback), this._client); } /** @internal */ @@ -11690,7 +11816,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Subscribes to the InitializeResource event */ onInitializeResource(callback: (arg: InitializeResourceEvent) => Promise): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._onInitializeResourceInternal(callback)); + return new CSharpAppResourcePromiseImpl(this._onInitializeResourceInternal(callback), this._client); } /** @internal */ @@ -11710,7 +11836,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Subscribes to the ResourceEndpointsAllocated event */ onResourceEndpointsAllocated(callback: (arg: ResourceEndpointsAllocatedEvent) => Promise): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._onResourceEndpointsAllocatedInternal(callback)); + return new CSharpAppResourcePromiseImpl(this._onResourceEndpointsAllocatedInternal(callback), this._client); } /** @internal */ @@ -11730,7 +11856,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Subscribes to the ResourceReady event */ onResourceReady(callback: (arg: ResourceReadyEvent) => Promise): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._onResourceReadyInternal(callback)); + return new CSharpAppResourcePromiseImpl(this._onResourceReadyInternal(callback), this._client); } /** @internal */ @@ -11749,7 +11875,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase withOptionalString(options?: WithOptionalStringOptions): CSharpAppResourcePromise { const value = options?.value; const enabled = options?.enabled; - return new CSharpAppResourcePromiseImpl(this._withOptionalStringInternal(value, enabled)); + return new CSharpAppResourcePromiseImpl(this._withOptionalStringInternal(value, enabled), this._client); } /** @internal */ @@ -11764,7 +11890,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Configures the resource with a DTO */ withConfig(config: TestConfigDto): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withConfigInternal(config)); + return new CSharpAppResourcePromiseImpl(this._withConfigInternal(config), this._client); } /** @internal */ @@ -11784,7 +11910,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Configures environment with callback (test version) */ testWithEnvironmentCallback(callback: (arg: TestEnvironmentContext) => Promise): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._testWithEnvironmentCallbackInternal(callback)); + return new CSharpAppResourcePromiseImpl(this._testWithEnvironmentCallbackInternal(callback), this._client); } /** @internal */ @@ -11799,7 +11925,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Sets the created timestamp */ withCreatedAt(createdAt: string): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withCreatedAtInternal(createdAt)); + return new CSharpAppResourcePromiseImpl(this._withCreatedAtInternal(createdAt), this._client); } /** @internal */ @@ -11814,7 +11940,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Sets the modified timestamp */ withModifiedAt(modifiedAt: string): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withModifiedAtInternal(modifiedAt)); + return new CSharpAppResourcePromiseImpl(this._withModifiedAtInternal(modifiedAt), this._client); } /** @internal */ @@ -11829,7 +11955,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Sets the correlation ID */ withCorrelationId(correlationId: string): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withCorrelationIdInternal(correlationId)); + return new CSharpAppResourcePromiseImpl(this._withCorrelationIdInternal(correlationId), this._client); } /** @internal */ @@ -11851,7 +11977,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Configures with optional callback */ withOptionalCallback(options?: WithOptionalCallbackOptions): CSharpAppResourcePromise { const callback = options?.callback; - return new CSharpAppResourcePromiseImpl(this._withOptionalCallbackInternal(callback)); + return new CSharpAppResourcePromiseImpl(this._withOptionalCallbackInternal(callback), this._client); } /** @internal */ @@ -11866,7 +11992,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Sets the resource status */ withStatus(status: TestResourceStatus): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withStatusInternal(status)); + return new CSharpAppResourcePromiseImpl(this._withStatusInternal(status), this._client); } /** @internal */ @@ -11881,7 +12007,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Configures with nested DTO */ withNestedConfig(config: TestNestedDto): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withNestedConfigInternal(config)); + return new CSharpAppResourcePromiseImpl(this._withNestedConfigInternal(config), this._client); } /** @internal */ @@ -11901,11 +12027,12 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Adds validation callback */ withValidator(validator: (arg: TestResourceContext) => Promise): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withValidatorInternal(validator)); + return new CSharpAppResourcePromiseImpl(this._withValidatorInternal(validator), this._client); } /** @internal */ - private async _testWaitForInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _testWaitForInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/testWaitFor', @@ -11915,12 +12042,13 @@ class CSharpAppResourceImpl extends ResourceBuilderBase } /** Waits for another resource (test version) */ - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._testWaitForInternal(dependency)); + testWaitFor(dependency: Awaitable): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._testWaitForInternal(dependency), this._client); } /** @internal */ - private async _withDependencyInternal(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withDependencyInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/withDependency', @@ -11930,12 +12058,13 @@ class CSharpAppResourceImpl extends ResourceBuilderBase } /** Adds a dependency on another resource */ - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withDependencyInternal(dependency)); + withDependency(dependency: Awaitable): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._withDependencyInternal(dependency), this._client); } /** @internal */ - private async _withUnionDependencyInternal(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withUnionDependencyInternal(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/withUnionDependency', @@ -11945,8 +12074,8 @@ class CSharpAppResourceImpl extends ResourceBuilderBase } /** Adds a dependency from a string or another resource */ - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withUnionDependencyInternal(dependency)); + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._withUnionDependencyInternal(dependency), this._client); } /** @internal */ @@ -11961,7 +12090,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Sets the endpoints */ withEndpoints(endpoints: string[]): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withEndpointsInternal(endpoints)); + return new CSharpAppResourcePromiseImpl(this._withEndpointsInternal(endpoints), this._client); } /** @internal */ @@ -11976,7 +12105,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Sets environment variables */ withEnvironmentVariables(variables: Record): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withEnvironmentVariablesInternal(variables)); + return new CSharpAppResourcePromiseImpl(this._withEnvironmentVariablesInternal(variables), this._client); } /** @internal */ @@ -11995,7 +12124,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Performs a cancellable operation */ withCancellableOperation(operation: (arg: CancellationToken) => Promise): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withCancellableOperationInternal(operation)); + return new CSharpAppResourcePromiseImpl(this._withCancellableOperationInternal(operation), this._client); } /** @internal */ @@ -12010,7 +12139,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Adds a label to the resource */ withMergeLabel(label: string): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withMergeLabelInternal(label)); + return new CSharpAppResourcePromiseImpl(this._withMergeLabelInternal(label), this._client); } /** @internal */ @@ -12025,7 +12154,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Adds a categorized label to the resource */ withMergeLabelCategorized(label: string, category: string): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withMergeLabelCategorizedInternal(label, category)); + return new CSharpAppResourcePromiseImpl(this._withMergeLabelCategorizedInternal(label, category), this._client); } /** @internal */ @@ -12040,7 +12169,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Configures a named endpoint */ withMergeEndpoint(endpointName: string, port: number): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withMergeEndpointInternal(endpointName, port)); + return new CSharpAppResourcePromiseImpl(this._withMergeEndpointInternal(endpointName, port), this._client); } /** @internal */ @@ -12055,7 +12184,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Configures a named endpoint with scheme */ withMergeEndpointScheme(endpointName: string, port: number, scheme: string): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withMergeEndpointSchemeInternal(endpointName, port, scheme)); + return new CSharpAppResourcePromiseImpl(this._withMergeEndpointSchemeInternal(endpointName, port, scheme), this._client); } /** @internal */ @@ -12074,7 +12203,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase withMergeLogging(logLevel: string, options?: WithMergeLoggingOptions): CSharpAppResourcePromise { const enableConsole = options?.enableConsole; const maxFiles = options?.maxFiles; - return new CSharpAppResourcePromiseImpl(this._withMergeLoggingInternal(logLevel, enableConsole, maxFiles)); + return new CSharpAppResourcePromiseImpl(this._withMergeLoggingInternal(logLevel, enableConsole, maxFiles), this._client); } /** @internal */ @@ -12093,7 +12222,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase withMergeLoggingPath(logLevel: string, logPath: string, options?: WithMergeLoggingPathOptions): CSharpAppResourcePromise { const enableConsole = options?.enableConsole; const maxFiles = options?.maxFiles; - return new CSharpAppResourcePromiseImpl(this._withMergeLoggingPathInternal(logLevel, logPath, enableConsole, maxFiles)); + return new CSharpAppResourcePromiseImpl(this._withMergeLoggingPathInternal(logLevel, logPath, enableConsole, maxFiles), this._client); } /** @internal */ @@ -12108,7 +12237,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Configures a route */ withMergeRoute(path: string, method: string, handler: string, priority: number): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withMergeRouteInternal(path, method, handler, priority)); + return new CSharpAppResourcePromiseImpl(this._withMergeRouteInternal(path, method, handler, priority), this._client); } /** @internal */ @@ -12123,7 +12252,7 @@ class CSharpAppResourceImpl extends ResourceBuilderBase /** Configures a route with middleware */ withMergeRouteMiddleware(path: string, method: string, handler: string, priority: number, middleware: string): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._withMergeRouteMiddlewareInternal(path, method, handler, priority, middleware)); + return new CSharpAppResourcePromiseImpl(this._withMergeRouteMiddlewareInternal(path, method, handler, priority, middleware), this._client); } } @@ -12134,7 +12263,9 @@ class CSharpAppResourceImpl extends ResourceBuilderBase * await builder.addSomething().withX().withY(); */ class CSharpAppResourcePromiseImpl implements CSharpAppResourcePromise { - constructor(private _promise: Promise) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: CSharpAppResource) => TResult1 | PromiseLike) | null, @@ -12144,53 +12275,53 @@ class CSharpAppResourcePromiseImpl implements CSharpAppResourcePromise { } /** Configures a resource to use a container registry */ - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withContainerRegistry(registry))); + withContainerRegistry(registry: Awaitable): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withContainerRegistry(registry)), this._client); } /** Sets the base image for a Dockerfile build */ withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withDockerfileBaseImage(options))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withDockerfileBaseImage(options)), this._client); } /** Configures an MCP server endpoint on the resource */ withMcpServer(options?: WithMcpServerOptions): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withMcpServer(options))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withMcpServer(options)), this._client); } /** Configures OTLP telemetry export */ withOtlpExporter(): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withOtlpExporter())); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withOtlpExporter()), this._client); } /** Configures OTLP telemetry export with specific protocol */ withOtlpExporterProtocol(protocol: OtlpProtocol): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withOtlpExporterProtocol(protocol))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withOtlpExporterProtocol(protocol)), this._client); } /** Sets the number of replicas */ withReplicas(replicas: number): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withReplicas(replicas))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withReplicas(replicas)), this._client); } /** Disables forwarded headers for the project */ disableForwardedHeaders(): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.disableForwardedHeaders())); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.disableForwardedHeaders()), this._client); } /** Publishes a project as a Docker file with optional container configuration */ publishAsDockerFile(options?: PublishAsDockerFileOptions): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.publishAsDockerFile(options))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.publishAsDockerFile(options)), this._client); } /** Adds a required command dependency */ withRequiredCommand(command: string, options?: WithRequiredCommandOptions): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withRequiredCommand(command, options))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withRequiredCommand(command, options)), this._client); } /** Sets an environment variable */ - withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withEnvironment(name, value))); + withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withEnvironment(name, value)), this._client); } /** @@ -12198,86 +12329,86 @@ class CSharpAppResourcePromiseImpl implements CSharpAppResourcePromise { * @deprecated ATS compatibility shim. Use withEnvironment instead. */ withEnvironmentExpression(name: string, value: ReferenceExpression): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentExpression(name, value))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentExpression(name, value)), this._client); } /** Sets environment variables via callback */ withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentCallback(callback))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentCallback(callback)), this._client); } /** * Sets an environment variable from an endpoint reference * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentEndpoint(name: string, endpointReference: EndpointReference): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentEndpoint(name, endpointReference))); + withEnvironmentEndpoint(name: string, endpointReference: Awaitable): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentEndpoint(name, endpointReference)), this._client); } /** * Sets an environment variable from a parameter resource * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentParameter(name: string, parameter: ParameterResource): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentParameter(name, parameter))); + withEnvironmentParameter(name: string, parameter: Awaitable): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentParameter(name, parameter)), this._client); } /** * Sets an environment variable from a connection string resource * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentConnectionString(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentConnectionString(envVarName, resource))); + withEnvironmentConnectionString(envVarName: string, resource: Awaitable): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentConnectionString(envVarName, resource)), this._client); } /** Adds arguments */ withArgs(args: string[]): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withArgs(args))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withArgs(args)), this._client); } /** Sets command-line arguments via callback */ withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) => Promise): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withArgsCallback(callback))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withArgsCallback(callback)), this._client); } /** Adds a reference to another resource */ - withReference(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WithReferenceOptions): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withReference(source, options))); + withReference(source: Awaitable, options?: WithReferenceOptions): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withReference(source, options)), this._client); } /** Adds a reference to a URI */ withReferenceUri(name: string, uri: string): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withReferenceUri(name, uri))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withReferenceUri(name, uri)), this._client); } /** Adds a reference to an external service */ - withReferenceExternalService(externalService: ExternalServiceResource): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withReferenceExternalService(externalService))); + withReferenceExternalService(externalService: Awaitable): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withReferenceExternalService(externalService)), this._client); } /** Adds a reference to an endpoint */ - withReferenceEndpoint(endpointReference: EndpointReference): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withReferenceEndpoint(endpointReference))); + withReferenceEndpoint(endpointReference: Awaitable): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withReferenceEndpoint(endpointReference)), this._client); } /** Adds a network endpoint */ withEndpoint(options?: WithEndpointOptions): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withEndpoint(options))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withEndpoint(options)), this._client); } /** Adds an HTTP endpoint */ withHttpEndpoint(options?: WithHttpEndpointOptions): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withHttpEndpoint(options))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withHttpEndpoint(options)), this._client); } /** Adds an HTTPS endpoint */ withHttpsEndpoint(options?: WithHttpsEndpointOptions): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withHttpsEndpoint(options))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withHttpsEndpoint(options)), this._client); } /** Makes HTTP endpoints externally accessible */ withExternalHttpEndpoints(): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withExternalHttpEndpoints())); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withExternalHttpEndpoints()), this._client); } /** Gets an endpoint reference */ @@ -12287,152 +12418,152 @@ class CSharpAppResourcePromiseImpl implements CSharpAppResourcePromise { /** Configures resource for HTTP/2 */ asHttp2Service(): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.asHttp2Service())); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.asHttp2Service()), this._client); } /** Customizes displayed URLs via callback */ withUrlsCallback(callback: (obj: ResourceUrlsCallbackContext) => Promise): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withUrlsCallback(callback))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withUrlsCallback(callback)), this._client); } /** Adds or modifies displayed URLs */ withUrl(url: string, options?: WithUrlOptions): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withUrl(url, options))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withUrl(url, options)), this._client); } /** Adds a URL using a reference expression */ withUrlExpression(url: ReferenceExpression, options?: WithUrlExpressionOptions): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withUrlExpression(url, options))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withUrlExpression(url, options)), this._client); } /** Customizes the URL for a specific endpoint via callback */ withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpoint(endpointName, callback))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpoint(endpointName, callback)), this._client); } /** Adds a URL for a specific endpoint via factory callback */ withUrlForEndpointFactory(endpointName: string, callback: (arg: EndpointReference) => Promise): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpointFactory(endpointName, callback))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpointFactory(endpointName, callback)), this._client); } /** Configures the resource to copy container files from the specified source during publishing */ - publishWithContainerFiles(source: ResourceWithContainerFiles, destinationPath: string): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.publishWithContainerFiles(source, destinationPath))); + publishWithContainerFiles(source: Awaitable, destinationPath: string): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.publishWithContainerFiles(source, destinationPath)), this._client); } /** Excludes the resource from the deployment manifest */ excludeFromManifest(): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.excludeFromManifest())); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.excludeFromManifest()), this._client); } /** Waits for another resource to be ready */ - waitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.waitFor(dependency))); + waitFor(dependency: Awaitable): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.waitFor(dependency)), this._client); } /** Waits for another resource with specific behavior */ - waitForWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.waitForWithBehavior(dependency, waitBehavior))); + waitForWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.waitForWithBehavior(dependency, waitBehavior)), this._client); } /** Waits for another resource to start */ - waitForStart(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.waitForStart(dependency))); + waitForStart(dependency: Awaitable): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.waitForStart(dependency)), this._client); } /** Waits for another resource to start with specific behavior */ - waitForStartWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.waitForStartWithBehavior(dependency, waitBehavior))); + waitForStartWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.waitForStartWithBehavior(dependency, waitBehavior)), this._client); } /** Prevents resource from starting automatically */ withExplicitStart(): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withExplicitStart())); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withExplicitStart()), this._client); } /** Waits for resource completion */ - waitForCompletion(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WaitForCompletionOptions): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.waitForCompletion(dependency, options))); + waitForCompletion(dependency: Awaitable, options?: WaitForCompletionOptions): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.waitForCompletion(dependency, options)), this._client); } /** Adds a health check by key */ withHealthCheck(key: string): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withHealthCheck(key))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withHealthCheck(key)), this._client); } /** Adds an HTTP health check */ withHttpHealthCheck(options?: WithHttpHealthCheckOptions): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withHttpHealthCheck(options))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withHttpHealthCheck(options)), this._client); } /** Adds a resource command */ withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withCommand(name, displayName, executeCommand, options))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withCommand(name, displayName, executeCommand, options)), this._client); } /** Configures developer certificate trust */ withDeveloperCertificateTrust(trust: boolean): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withDeveloperCertificateTrust(trust))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withDeveloperCertificateTrust(trust)), this._client); } /** Sets the certificate trust scope */ withCertificateTrustScope(scope: CertificateTrustScope): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withCertificateTrustScope(scope))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withCertificateTrustScope(scope)), this._client); } /** Configures HTTPS with a developer certificate */ withHttpsDeveloperCertificate(options?: WithHttpsDeveloperCertificateOptions): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withHttpsDeveloperCertificate(options))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withHttpsDeveloperCertificate(options)), this._client); } /** Removes HTTPS certificate configuration */ withoutHttpsCertificate(): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withoutHttpsCertificate())); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withoutHttpsCertificate()), this._client); } /** Sets the parent relationship */ - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withParentRelationship(parent))); + withParentRelationship(parent: Awaitable): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withParentRelationship(parent)), this._client); } /** Sets a child relationship */ - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withChildRelationship(child))); + withChildRelationship(child: Awaitable): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withChildRelationship(child)), this._client); } /** Sets the icon for the resource */ withIconName(iconName: string, options?: WithIconNameOptions): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withIconName(iconName, options))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withIconName(iconName, options)), this._client); } /** Adds an HTTP health probe to the resource */ withHttpProbe(probeType: ProbeType, options?: WithHttpProbeOptions): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withHttpProbe(probeType, options))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withHttpProbe(probeType, options)), this._client); } /** Excludes the resource from MCP server exposure */ excludeFromMcp(): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.excludeFromMcp())); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.excludeFromMcp()), this._client); } /** Sets the remote image name for publishing */ withRemoteImageName(remoteImageName: string): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageName(remoteImageName))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageName(remoteImageName)), this._client); } /** Sets the remote image tag for publishing */ withRemoteImageTag(remoteImageTag: string): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageTag(remoteImageTag))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageTag(remoteImageTag)), this._client); } /** Adds a pipeline step to the resource */ withPipelineStepFactory(stepName: string, callback: (arg: PipelineStepContext) => Promise, options?: WithPipelineStepFactoryOptions): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withPipelineStepFactory(stepName, callback, options))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withPipelineStepFactory(stepName, callback, options)), this._client); } /** Configures pipeline step dependencies via a callback */ withPipelineConfiguration(callback: (obj: PipelineConfigurationContext) => Promise): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withPipelineConfiguration(callback))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withPipelineConfiguration(callback)), this._client); } /** Gets the resource name */ @@ -12442,147 +12573,147 @@ class CSharpAppResourcePromiseImpl implements CSharpAppResourcePromise { /** Subscribes to the BeforeResourceStarted event */ onBeforeResourceStarted(callback: (arg: BeforeResourceStartedEvent) => Promise): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.onBeforeResourceStarted(callback))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.onBeforeResourceStarted(callback)), this._client); } /** Subscribes to the ResourceStopped event */ onResourceStopped(callback: (arg: ResourceStoppedEvent) => Promise): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.onResourceStopped(callback))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.onResourceStopped(callback)), this._client); } /** Subscribes to the InitializeResource event */ onInitializeResource(callback: (arg: InitializeResourceEvent) => Promise): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.onInitializeResource(callback))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.onInitializeResource(callback)), this._client); } /** Subscribes to the ResourceEndpointsAllocated event */ onResourceEndpointsAllocated(callback: (arg: ResourceEndpointsAllocatedEvent) => Promise): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.onResourceEndpointsAllocated(callback))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.onResourceEndpointsAllocated(callback)), this._client); } /** Subscribes to the ResourceReady event */ onResourceReady(callback: (arg: ResourceReadyEvent) => Promise): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.onResourceReady(callback))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.onResourceReady(callback)), this._client); } /** Adds an optional string parameter */ withOptionalString(options?: WithOptionalStringOptions): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withOptionalString(options))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withOptionalString(options)), this._client); } /** Configures the resource with a DTO */ withConfig(config: TestConfigDto): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withConfig(config))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withConfig(config)), this._client); } /** Configures environment with callback (test version) */ testWithEnvironmentCallback(callback: (arg: TestEnvironmentContext) => Promise): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.testWithEnvironmentCallback(callback))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.testWithEnvironmentCallback(callback)), this._client); } /** Sets the created timestamp */ withCreatedAt(createdAt: string): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withCreatedAt(createdAt))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withCreatedAt(createdAt)), this._client); } /** Sets the modified timestamp */ withModifiedAt(modifiedAt: string): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withModifiedAt(modifiedAt))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withModifiedAt(modifiedAt)), this._client); } /** Sets the correlation ID */ withCorrelationId(correlationId: string): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withCorrelationId(correlationId))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withCorrelationId(correlationId)), this._client); } /** Configures with optional callback */ withOptionalCallback(options?: WithOptionalCallbackOptions): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withOptionalCallback(options))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withOptionalCallback(options)), this._client); } /** Sets the resource status */ withStatus(status: TestResourceStatus): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withStatus(status))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withStatus(status)), this._client); } /** Configures with nested DTO */ withNestedConfig(config: TestNestedDto): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withNestedConfig(config))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withNestedConfig(config)), this._client); } /** Adds validation callback */ withValidator(validator: (arg: TestResourceContext) => Promise): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withValidator(validator))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withValidator(validator)), this._client); } /** Waits for another resource (test version) */ - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.testWaitFor(dependency))); + testWaitFor(dependency: Awaitable): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.testWaitFor(dependency)), this._client); } /** Adds a dependency on another resource */ - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withDependency(dependency))); + withDependency(dependency: Awaitable): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withDependency(dependency)), this._client); } /** Adds a dependency from a string or another resource */ - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withUnionDependency(dependency))); + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): CSharpAppResourcePromise { + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withUnionDependency(dependency)), this._client); } /** Sets the endpoints */ withEndpoints(endpoints: string[]): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withEndpoints(endpoints))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withEndpoints(endpoints)), this._client); } /** Sets environment variables */ withEnvironmentVariables(variables: Record): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentVariables(variables))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentVariables(variables)), this._client); } /** Performs a cancellable operation */ withCancellableOperation(operation: (arg: CancellationToken) => Promise): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withCancellableOperation(operation))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withCancellableOperation(operation)), this._client); } /** Adds a label to the resource */ withMergeLabel(label: string): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabel(label))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabel(label)), this._client); } /** Adds a categorized label to the resource */ withMergeLabelCategorized(label: string, category: string): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabelCategorized(label, category))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabelCategorized(label, category)), this._client); } /** Configures a named endpoint */ withMergeEndpoint(endpointName: string, port: number): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpoint(endpointName, port))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpoint(endpointName, port)), this._client); } /** Configures a named endpoint with scheme */ withMergeEndpointScheme(endpointName: string, port: number, scheme: string): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpointScheme(endpointName, port, scheme))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpointScheme(endpointName, port, scheme)), this._client); } /** Configures resource logging */ withMergeLogging(logLevel: string, options?: WithMergeLoggingOptions): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withMergeLogging(logLevel, options))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withMergeLogging(logLevel, options)), this._client); } /** Configures resource logging with file path */ withMergeLoggingPath(logLevel: string, logPath: string, options?: WithMergeLoggingPathOptions): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withMergeLoggingPath(logLevel, logPath, options))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withMergeLoggingPath(logLevel, logPath, options)), this._client); } /** Configures a route */ withMergeRoute(path: string, method: string, handler: string, priority: number): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withMergeRoute(path, method, handler, priority))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withMergeRoute(path, method, handler, priority)), this._client); } /** Configures a route with middleware */ withMergeRouteMiddleware(path: string, method: string, handler: string, priority: number, middleware: string): CSharpAppResourcePromise { - return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withMergeRouteMiddleware(path, method, handler, priority, middleware))); + return new CSharpAppResourcePromiseImpl(this._promise.then(obj => obj.withMergeRouteMiddleware(path, method, handler, priority, middleware)), this._client); } } @@ -12593,7 +12724,7 @@ class CSharpAppResourcePromiseImpl implements CSharpAppResourcePromise { export interface DotnetToolResource { toJSON(): MarshalledHandle; - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): DotnetToolResourcePromise; + withContainerRegistry(registry: Awaitable): DotnetToolResourcePromise; withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): DotnetToolResourcePromise; withToolPackage(packageId: string): DotnetToolResourcePromise; withToolVersion(version: string): DotnetToolResourcePromise; @@ -12609,18 +12740,18 @@ export interface DotnetToolResource { withOtlpExporter(): DotnetToolResourcePromise; withOtlpExporterProtocol(protocol: OtlpProtocol): DotnetToolResourcePromise; withRequiredCommand(command: string, options?: WithRequiredCommandOptions): DotnetToolResourcePromise; - withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression): DotnetToolResourcePromise; + withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): DotnetToolResourcePromise; withEnvironmentExpression(name: string, value: ReferenceExpression): DotnetToolResourcePromise; withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): DotnetToolResourcePromise; - withEnvironmentEndpoint(name: string, endpointReference: EndpointReference): DotnetToolResourcePromise; - withEnvironmentParameter(name: string, parameter: ParameterResource): DotnetToolResourcePromise; - withEnvironmentConnectionString(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): DotnetToolResourcePromise; + withEnvironmentEndpoint(name: string, endpointReference: Awaitable): DotnetToolResourcePromise; + withEnvironmentParameter(name: string, parameter: Awaitable): DotnetToolResourcePromise; + withEnvironmentConnectionString(envVarName: string, resource: Awaitable): DotnetToolResourcePromise; withArgs(args: string[]): DotnetToolResourcePromise; withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) => Promise): DotnetToolResourcePromise; - withReference(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WithReferenceOptions): DotnetToolResourcePromise; + withReference(source: Awaitable, options?: WithReferenceOptions): DotnetToolResourcePromise; withReferenceUri(name: string, uri: string): DotnetToolResourcePromise; - withReferenceExternalService(externalService: ExternalServiceResource): DotnetToolResourcePromise; - withReferenceEndpoint(endpointReference: EndpointReference): DotnetToolResourcePromise; + withReferenceExternalService(externalService: Awaitable): DotnetToolResourcePromise; + withReferenceEndpoint(endpointReference: Awaitable): DotnetToolResourcePromise; withEndpoint(options?: WithEndpointOptions): DotnetToolResourcePromise; withHttpEndpoint(options?: WithHttpEndpointOptions): DotnetToolResourcePromise; withHttpsEndpoint(options?: WithHttpsEndpointOptions): DotnetToolResourcePromise; @@ -12633,12 +12764,12 @@ export interface DotnetToolResource { withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): DotnetToolResourcePromise; withUrlForEndpointFactory(endpointName: string, callback: (arg: EndpointReference) => Promise): DotnetToolResourcePromise; excludeFromManifest(): DotnetToolResourcePromise; - waitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): DotnetToolResourcePromise; - waitForWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): DotnetToolResourcePromise; - waitForStart(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): DotnetToolResourcePromise; - waitForStartWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): DotnetToolResourcePromise; + waitFor(dependency: Awaitable): DotnetToolResourcePromise; + waitForWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): DotnetToolResourcePromise; + waitForStart(dependency: Awaitable): DotnetToolResourcePromise; + waitForStartWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): DotnetToolResourcePromise; withExplicitStart(): DotnetToolResourcePromise; - waitForCompletion(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WaitForCompletionOptions): DotnetToolResourcePromise; + waitForCompletion(dependency: Awaitable, options?: WaitForCompletionOptions): DotnetToolResourcePromise; withHealthCheck(key: string): DotnetToolResourcePromise; withHttpHealthCheck(options?: WithHttpHealthCheckOptions): DotnetToolResourcePromise; withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): DotnetToolResourcePromise; @@ -12646,8 +12777,8 @@ export interface DotnetToolResource { withCertificateTrustScope(scope: CertificateTrustScope): DotnetToolResourcePromise; withHttpsDeveloperCertificate(options?: WithHttpsDeveloperCertificateOptions): DotnetToolResourcePromise; withoutHttpsCertificate(): DotnetToolResourcePromise; - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): DotnetToolResourcePromise; - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): DotnetToolResourcePromise; + withParentRelationship(parent: Awaitable): DotnetToolResourcePromise; + withChildRelationship(child: Awaitable): DotnetToolResourcePromise; withIconName(iconName: string, options?: WithIconNameOptions): DotnetToolResourcePromise; withHttpProbe(probeType: ProbeType, options?: WithHttpProbeOptions): DotnetToolResourcePromise; excludeFromMcp(): DotnetToolResourcePromise; @@ -12671,9 +12802,9 @@ export interface DotnetToolResource { withStatus(status: TestResourceStatus): DotnetToolResourcePromise; withNestedConfig(config: TestNestedDto): DotnetToolResourcePromise; withValidator(validator: (arg: TestResourceContext) => Promise): DotnetToolResourcePromise; - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): DotnetToolResourcePromise; - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): DotnetToolResourcePromise; - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): DotnetToolResourcePromise; + testWaitFor(dependency: Awaitable): DotnetToolResourcePromise; + withDependency(dependency: Awaitable): DotnetToolResourcePromise; + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): DotnetToolResourcePromise; withEndpoints(endpoints: string[]): DotnetToolResourcePromise; withEnvironmentVariables(variables: Record): DotnetToolResourcePromise; withCancellableOperation(operation: (arg: CancellationToken) => Promise): DotnetToolResourcePromise; @@ -12688,7 +12819,7 @@ export interface DotnetToolResource { } export interface DotnetToolResourcePromise extends PromiseLike { - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): DotnetToolResourcePromise; + withContainerRegistry(registry: Awaitable): DotnetToolResourcePromise; withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): DotnetToolResourcePromise; withToolPackage(packageId: string): DotnetToolResourcePromise; withToolVersion(version: string): DotnetToolResourcePromise; @@ -12704,18 +12835,18 @@ export interface DotnetToolResourcePromise extends PromiseLike): DotnetToolResourcePromise; withEnvironmentExpression(name: string, value: ReferenceExpression): DotnetToolResourcePromise; withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): DotnetToolResourcePromise; - withEnvironmentEndpoint(name: string, endpointReference: EndpointReference): DotnetToolResourcePromise; - withEnvironmentParameter(name: string, parameter: ParameterResource): DotnetToolResourcePromise; - withEnvironmentConnectionString(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): DotnetToolResourcePromise; + withEnvironmentEndpoint(name: string, endpointReference: Awaitable): DotnetToolResourcePromise; + withEnvironmentParameter(name: string, parameter: Awaitable): DotnetToolResourcePromise; + withEnvironmentConnectionString(envVarName: string, resource: Awaitable): DotnetToolResourcePromise; withArgs(args: string[]): DotnetToolResourcePromise; withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) => Promise): DotnetToolResourcePromise; - withReference(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WithReferenceOptions): DotnetToolResourcePromise; + withReference(source: Awaitable, options?: WithReferenceOptions): DotnetToolResourcePromise; withReferenceUri(name: string, uri: string): DotnetToolResourcePromise; - withReferenceExternalService(externalService: ExternalServiceResource): DotnetToolResourcePromise; - withReferenceEndpoint(endpointReference: EndpointReference): DotnetToolResourcePromise; + withReferenceExternalService(externalService: Awaitable): DotnetToolResourcePromise; + withReferenceEndpoint(endpointReference: Awaitable): DotnetToolResourcePromise; withEndpoint(options?: WithEndpointOptions): DotnetToolResourcePromise; withHttpEndpoint(options?: WithHttpEndpointOptions): DotnetToolResourcePromise; withHttpsEndpoint(options?: WithHttpsEndpointOptions): DotnetToolResourcePromise; @@ -12728,12 +12859,12 @@ export interface DotnetToolResourcePromise extends PromiseLike Promise): DotnetToolResourcePromise; withUrlForEndpointFactory(endpointName: string, callback: (arg: EndpointReference) => Promise): DotnetToolResourcePromise; excludeFromManifest(): DotnetToolResourcePromise; - waitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): DotnetToolResourcePromise; - waitForWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): DotnetToolResourcePromise; - waitForStart(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): DotnetToolResourcePromise; - waitForStartWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): DotnetToolResourcePromise; + waitFor(dependency: Awaitable): DotnetToolResourcePromise; + waitForWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): DotnetToolResourcePromise; + waitForStart(dependency: Awaitable): DotnetToolResourcePromise; + waitForStartWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): DotnetToolResourcePromise; withExplicitStart(): DotnetToolResourcePromise; - waitForCompletion(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WaitForCompletionOptions): DotnetToolResourcePromise; + waitForCompletion(dependency: Awaitable, options?: WaitForCompletionOptions): DotnetToolResourcePromise; withHealthCheck(key: string): DotnetToolResourcePromise; withHttpHealthCheck(options?: WithHttpHealthCheckOptions): DotnetToolResourcePromise; withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): DotnetToolResourcePromise; @@ -12741,8 +12872,8 @@ export interface DotnetToolResourcePromise extends PromiseLike): DotnetToolResourcePromise; + withChildRelationship(child: Awaitable): DotnetToolResourcePromise; withIconName(iconName: string, options?: WithIconNameOptions): DotnetToolResourcePromise; withHttpProbe(probeType: ProbeType, options?: WithHttpProbeOptions): DotnetToolResourcePromise; excludeFromMcp(): DotnetToolResourcePromise; @@ -12766,9 +12897,9 @@ export interface DotnetToolResourcePromise extends PromiseLike Promise): DotnetToolResourcePromise; - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): DotnetToolResourcePromise; - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): DotnetToolResourcePromise; - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): DotnetToolResourcePromise; + testWaitFor(dependency: Awaitable): DotnetToolResourcePromise; + withDependency(dependency: Awaitable): DotnetToolResourcePromise; + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): DotnetToolResourcePromise; withEndpoints(endpoints: string[]): DotnetToolResourcePromise; withEnvironmentVariables(variables: Record): DotnetToolResourcePromise; withCancellableOperation(operation: (arg: CancellationToken) => Promise): DotnetToolResourcePromise; @@ -12792,7 +12923,8 @@ class DotnetToolResourceImpl extends ResourceBuilderBase { + private async _withContainerRegistryInternal(registry: Awaitable): Promise { + registry = isPromiseLike(registry) ? await registry : registry; const rpcArgs: Record = { builder: this._handle, registry }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withContainerRegistry', @@ -12802,8 +12934,8 @@ class DotnetToolResourceImpl extends ResourceBuilderBase): DotnetToolResourcePromise { + return new DotnetToolResourcePromiseImpl(this._withContainerRegistryInternal(registry), this._client); } /** @internal */ @@ -12822,7 +12954,7 @@ class DotnetToolResourceImpl extends ResourceBuilderBase Promise): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._publishAsDockerFileWithConfigureInternal(configure)); + return new DotnetToolResourcePromiseImpl(this._publishAsDockerFileWithConfigureInternal(configure), this._client); } /** @internal */ @@ -12962,7 +13094,7 @@ class DotnetToolResourceImpl extends ResourceBuilderBase { + private async _withEnvironmentInternal(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): Promise { + value = isPromiseLike(value) ? await value : value; const rpcArgs: Record = { builder: this._handle, name, value }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironment', @@ -13057,8 +13190,8 @@ class DotnetToolResourceImpl extends ResourceBuilderBase): DotnetToolResourcePromise { + return new DotnetToolResourcePromiseImpl(this._withEnvironmentInternal(name, value), this._client); } /** @internal */ @@ -13076,7 +13209,7 @@ class DotnetToolResourceImpl extends ResourceBuilderBase Promise): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._withEnvironmentCallbackInternal(callback)); + return new DotnetToolResourcePromiseImpl(this._withEnvironmentCallbackInternal(callback), this._client); } /** @internal */ - private async _withEnvironmentEndpointInternal(name: string, endpointReference: EndpointReference): Promise { + private async _withEnvironmentEndpointInternal(name: string, endpointReference: Awaitable): Promise { + endpointReference = isPromiseLike(endpointReference) ? await endpointReference : endpointReference; const rpcArgs: Record = { builder: this._handle, name, endpointReference }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironmentEndpoint', @@ -13113,12 +13247,13 @@ class DotnetToolResourceImpl extends ResourceBuilderBase): DotnetToolResourcePromise { + return new DotnetToolResourcePromiseImpl(this._withEnvironmentEndpointInternal(name, endpointReference), this._client); } /** @internal */ - private async _withEnvironmentParameterInternal(name: string, parameter: ParameterResource): Promise { + private async _withEnvironmentParameterInternal(name: string, parameter: Awaitable): Promise { + parameter = isPromiseLike(parameter) ? await parameter : parameter; const rpcArgs: Record = { builder: this._handle, name, parameter }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironmentParameter', @@ -13131,12 +13266,13 @@ class DotnetToolResourceImpl extends ResourceBuilderBase): DotnetToolResourcePromise { + return new DotnetToolResourcePromiseImpl(this._withEnvironmentParameterInternal(name, parameter), this._client); } /** @internal */ - private async _withEnvironmentConnectionStringInternal(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withEnvironmentConnectionStringInternal(envVarName: string, resource: Awaitable): Promise { + resource = isPromiseLike(resource) ? await resource : resource; const rpcArgs: Record = { builder: this._handle, envVarName, resource }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironmentConnectionString', @@ -13149,8 +13285,8 @@ class DotnetToolResourceImpl extends ResourceBuilderBase): DotnetToolResourcePromise { + return new DotnetToolResourcePromiseImpl(this._withEnvironmentConnectionStringInternal(envVarName, resource), this._client); } /** @internal */ @@ -13165,7 +13301,7 @@ class DotnetToolResourceImpl extends ResourceBuilderBase Promise): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._withArgsCallbackInternal(callback)); + return new DotnetToolResourcePromiseImpl(this._withArgsCallbackInternal(callback), this._client); } /** @internal */ - private async _withReferenceInternal(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, connectionName?: string, optional?: boolean, name?: string): Promise { + private async _withReferenceInternal(source: Awaitable, connectionName?: string, optional?: boolean, name?: string): Promise { + source = isPromiseLike(source) ? await source : source; const rpcArgs: Record = { builder: this._handle, source }; if (connectionName !== undefined) rpcArgs.connectionName = connectionName; if (optional !== undefined) rpcArgs.optional = optional; @@ -13202,11 +13339,11 @@ class DotnetToolResourceImpl extends ResourceBuilderBase, options?: WithReferenceOptions): DotnetToolResourcePromise { const connectionName = options?.connectionName; const optional = options?.optional; const name = options?.name; - return new DotnetToolResourcePromiseImpl(this._withReferenceInternal(source, connectionName, optional, name)); + return new DotnetToolResourcePromiseImpl(this._withReferenceInternal(source, connectionName, optional, name), this._client); } /** @internal */ @@ -13221,11 +13358,12 @@ class DotnetToolResourceImpl extends ResourceBuilderBase { + private async _withReferenceExternalServiceInternal(externalService: Awaitable): Promise { + externalService = isPromiseLike(externalService) ? await externalService : externalService; const rpcArgs: Record = { builder: this._handle, externalService }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withReferenceExternalService', @@ -13235,12 +13373,13 @@ class DotnetToolResourceImpl extends ResourceBuilderBase): DotnetToolResourcePromise { + return new DotnetToolResourcePromiseImpl(this._withReferenceExternalServiceInternal(externalService), this._client); } /** @internal */ - private async _withReferenceEndpointInternal(endpointReference: EndpointReference): Promise { + private async _withReferenceEndpointInternal(endpointReference: Awaitable): Promise { + endpointReference = isPromiseLike(endpointReference) ? await endpointReference : endpointReference; const rpcArgs: Record = { builder: this._handle, endpointReference }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withReferenceEndpoint', @@ -13250,8 +13389,8 @@ class DotnetToolResourceImpl extends ResourceBuilderBase): DotnetToolResourcePromise { + return new DotnetToolResourcePromiseImpl(this._withReferenceEndpointInternal(endpointReference), this._client); } /** @internal */ @@ -13282,7 +13421,7 @@ class DotnetToolResourceImpl extends ResourceBuilderBase Promise): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._withUrlsCallbackInternal(callback)); + return new DotnetToolResourcePromiseImpl(this._withUrlsCallbackInternal(callback), this._client); } /** @internal */ @@ -13408,7 +13547,7 @@ class DotnetToolResourceImpl extends ResourceBuilderBase Promise): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._withUrlForEndpointInternal(endpointName, callback)); + return new DotnetToolResourcePromiseImpl(this._withUrlForEndpointInternal(endpointName, callback), this._client); } /** @internal */ @@ -13464,7 +13603,7 @@ class DotnetToolResourceImpl extends ResourceBuilderBase Promise): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._withUrlForEndpointFactoryInternal(endpointName, callback)); + return new DotnetToolResourcePromiseImpl(this._withUrlForEndpointFactoryInternal(endpointName, callback), this._client); } /** @internal */ @@ -13479,11 +13618,12 @@ class DotnetToolResourceImpl extends ResourceBuilderBase { + private async _waitForInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForResource', @@ -13493,12 +13633,13 @@ class DotnetToolResourceImpl extends ResourceBuilderBase): DotnetToolResourcePromise { + return new DotnetToolResourcePromiseImpl(this._waitForInternal(dependency), this._client); } /** @internal */ - private async _waitForWithBehaviorInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): Promise { + private async _waitForWithBehaviorInternal(dependency: Awaitable, waitBehavior: WaitBehavior): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency, waitBehavior }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForWithBehavior', @@ -13508,12 +13649,13 @@ class DotnetToolResourceImpl extends ResourceBuilderBase, waitBehavior: WaitBehavior): DotnetToolResourcePromise { + return new DotnetToolResourcePromiseImpl(this._waitForWithBehaviorInternal(dependency, waitBehavior), this._client); } /** @internal */ - private async _waitForStartInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _waitForStartInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForResourceStart', @@ -13523,12 +13665,13 @@ class DotnetToolResourceImpl extends ResourceBuilderBase): DotnetToolResourcePromise { + return new DotnetToolResourcePromiseImpl(this._waitForStartInternal(dependency), this._client); } /** @internal */ - private async _waitForStartWithBehaviorInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): Promise { + private async _waitForStartWithBehaviorInternal(dependency: Awaitable, waitBehavior: WaitBehavior): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency, waitBehavior }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForStartWithBehavior', @@ -13538,8 +13681,8 @@ class DotnetToolResourceImpl extends ResourceBuilderBase, waitBehavior: WaitBehavior): DotnetToolResourcePromise { + return new DotnetToolResourcePromiseImpl(this._waitForStartWithBehaviorInternal(dependency, waitBehavior), this._client); } /** @internal */ @@ -13554,11 +13697,12 @@ class DotnetToolResourceImpl extends ResourceBuilderBase { + private async _waitForCompletionInternal(dependency: Awaitable, exitCode?: number): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; if (exitCode !== undefined) rpcArgs.exitCode = exitCode; const result = await this._client.invokeCapability( @@ -13569,9 +13713,9 @@ class DotnetToolResourceImpl extends ResourceBuilderBase, options?: WaitForCompletionOptions): DotnetToolResourcePromise { const exitCode = options?.exitCode; - return new DotnetToolResourcePromiseImpl(this._waitForCompletionInternal(dependency, exitCode)); + return new DotnetToolResourcePromiseImpl(this._waitForCompletionInternal(dependency, exitCode), this._client); } /** @internal */ @@ -13586,7 +13730,7 @@ class DotnetToolResourceImpl extends ResourceBuilderBase Promise, options?: WithCommandOptions): DotnetToolResourcePromise { const commandOptions = options?.commandOptions; - return new DotnetToolResourcePromiseImpl(this._withCommandInternal(name, displayName, executeCommand, commandOptions)); + return new DotnetToolResourcePromiseImpl(this._withCommandInternal(name, displayName, executeCommand, commandOptions), this._client); } /** @internal */ @@ -13644,7 +13788,7 @@ class DotnetToolResourceImpl extends ResourceBuilderBase { + private async _withHttpsDeveloperCertificateInternal(password?: Awaitable): Promise { + password = isPromiseLike(password) ? await password : password; const rpcArgs: Record = { builder: this._handle }; if (password !== undefined) rpcArgs.password = password; const result = await this._client.invokeCapability( @@ -13675,8 +13820,8 @@ class DotnetToolResourceImpl extends ResourceBuilderBase { + private async _withParentRelationshipInternal(parent: Awaitable): Promise { + parent = isPromiseLike(parent) ? await parent : parent; const rpcArgs: Record = { builder: this._handle, parent }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withBuilderParentRelationship', @@ -13705,12 +13851,13 @@ class DotnetToolResourceImpl extends ResourceBuilderBase): DotnetToolResourcePromise { + return new DotnetToolResourcePromiseImpl(this._withParentRelationshipInternal(parent), this._client); } /** @internal */ - private async _withChildRelationshipInternal(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _withChildRelationshipInternal(child: Awaitable): Promise { + child = isPromiseLike(child) ? await child : child; const rpcArgs: Record = { builder: this._handle, child }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withBuilderChildRelationship', @@ -13720,8 +13867,8 @@ class DotnetToolResourceImpl extends ResourceBuilderBase): DotnetToolResourcePromise { + return new DotnetToolResourcePromiseImpl(this._withChildRelationshipInternal(child), this._client); } /** @internal */ @@ -13738,7 +13885,7 @@ class DotnetToolResourceImpl extends ResourceBuilderBase Promise): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._withPipelineConfigurationInternal(callback)); + return new DotnetToolResourcePromiseImpl(this._withPipelineConfigurationInternal(callback), this._client); } /** Gets the resource name */ @@ -13889,7 +14036,7 @@ class DotnetToolResourceImpl extends ResourceBuilderBase Promise): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._onBeforeResourceStartedInternal(callback)); + return new DotnetToolResourcePromiseImpl(this._onBeforeResourceStartedInternal(callback), this._client); } /** @internal */ @@ -13909,7 +14056,7 @@ class DotnetToolResourceImpl extends ResourceBuilderBase Promise): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._onResourceStoppedInternal(callback)); + return new DotnetToolResourcePromiseImpl(this._onResourceStoppedInternal(callback), this._client); } /** @internal */ @@ -13929,7 +14076,7 @@ class DotnetToolResourceImpl extends ResourceBuilderBase Promise): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._onInitializeResourceInternal(callback)); + return new DotnetToolResourcePromiseImpl(this._onInitializeResourceInternal(callback), this._client); } /** @internal */ @@ -13949,7 +14096,7 @@ class DotnetToolResourceImpl extends ResourceBuilderBase Promise): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._onResourceEndpointsAllocatedInternal(callback)); + return new DotnetToolResourcePromiseImpl(this._onResourceEndpointsAllocatedInternal(callback), this._client); } /** @internal */ @@ -13969,7 +14116,7 @@ class DotnetToolResourceImpl extends ResourceBuilderBase Promise): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._onResourceReadyInternal(callback)); + return new DotnetToolResourcePromiseImpl(this._onResourceReadyInternal(callback), this._client); } /** @internal */ @@ -13988,7 +14135,7 @@ class DotnetToolResourceImpl extends ResourceBuilderBase Promise): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._testWithEnvironmentCallbackInternal(callback)); + return new DotnetToolResourcePromiseImpl(this._testWithEnvironmentCallbackInternal(callback), this._client); } /** @internal */ @@ -14038,7 +14185,7 @@ class DotnetToolResourceImpl extends ResourceBuilderBase Promise): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._withValidatorInternal(validator)); + return new DotnetToolResourcePromiseImpl(this._withValidatorInternal(validator), this._client); } /** @internal */ - private async _testWaitForInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _testWaitForInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/testWaitFor', @@ -14154,12 +14302,13 @@ class DotnetToolResourceImpl extends ResourceBuilderBase): DotnetToolResourcePromise { + return new DotnetToolResourcePromiseImpl(this._testWaitForInternal(dependency), this._client); } /** @internal */ - private async _withDependencyInternal(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withDependencyInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/withDependency', @@ -14169,12 +14318,13 @@ class DotnetToolResourceImpl extends ResourceBuilderBase): DotnetToolResourcePromise { + return new DotnetToolResourcePromiseImpl(this._withDependencyInternal(dependency), this._client); } /** @internal */ - private async _withUnionDependencyInternal(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withUnionDependencyInternal(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/withUnionDependency', @@ -14184,8 +14334,8 @@ class DotnetToolResourceImpl extends ResourceBuilderBase): DotnetToolResourcePromise { + return new DotnetToolResourcePromiseImpl(this._withUnionDependencyInternal(dependency), this._client); } /** @internal */ @@ -14200,7 +14350,7 @@ class DotnetToolResourceImpl extends ResourceBuilderBase): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._withEnvironmentVariablesInternal(variables)); + return new DotnetToolResourcePromiseImpl(this._withEnvironmentVariablesInternal(variables), this._client); } /** @internal */ @@ -14234,7 +14384,7 @@ class DotnetToolResourceImpl extends ResourceBuilderBase Promise): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._withCancellableOperationInternal(operation)); + return new DotnetToolResourcePromiseImpl(this._withCancellableOperationInternal(operation), this._client); } /** @internal */ @@ -14249,7 +14399,7 @@ class DotnetToolResourceImpl extends ResourceBuilderBase) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: DotnetToolResource) => TResult1 | PromiseLike) | null, @@ -14383,88 +14535,88 @@ class DotnetToolResourcePromiseImpl implements DotnetToolResourcePromise { } /** Configures a resource to use a container registry */ - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withContainerRegistry(registry))); + withContainerRegistry(registry: Awaitable): DotnetToolResourcePromise { + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withContainerRegistry(registry)), this._client); } /** Sets the base image for a Dockerfile build */ withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withDockerfileBaseImage(options))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withDockerfileBaseImage(options)), this._client); } /** Sets the tool package ID */ withToolPackage(packageId: string): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withToolPackage(packageId))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withToolPackage(packageId)), this._client); } /** Sets the tool version */ withToolVersion(version: string): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withToolVersion(version))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withToolVersion(version)), this._client); } /** Allows prerelease tool versions */ withToolPrerelease(): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withToolPrerelease())); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withToolPrerelease()), this._client); } /** Adds a NuGet source for the tool */ withToolSource(source: string): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withToolSource(source))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withToolSource(source)), this._client); } /** Ignores existing NuGet feeds */ withToolIgnoreExistingFeeds(): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withToolIgnoreExistingFeeds())); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withToolIgnoreExistingFeeds()), this._client); } /** Ignores failed NuGet sources */ withToolIgnoreFailedSources(): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withToolIgnoreFailedSources())); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withToolIgnoreFailedSources()), this._client); } /** Publishes the executable as a Docker container */ publishAsDockerFile(): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.publishAsDockerFile())); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.publishAsDockerFile()), this._client); } /** Publishes an executable as a Docker file with optional container configuration */ publishAsDockerFileWithConfigure(configure: (obj: ContainerResource) => Promise): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.publishAsDockerFileWithConfigure(configure))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.publishAsDockerFileWithConfigure(configure)), this._client); } /** Sets the executable command */ withExecutableCommand(command: string): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withExecutableCommand(command))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withExecutableCommand(command)), this._client); } /** Sets the executable working directory */ withWorkingDirectory(workingDirectory: string): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withWorkingDirectory(workingDirectory))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withWorkingDirectory(workingDirectory)), this._client); } /** Configures an MCP server endpoint on the resource */ withMcpServer(options?: WithMcpServerOptions): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withMcpServer(options))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withMcpServer(options)), this._client); } /** Configures OTLP telemetry export */ withOtlpExporter(): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withOtlpExporter())); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withOtlpExporter()), this._client); } /** Configures OTLP telemetry export with specific protocol */ withOtlpExporterProtocol(protocol: OtlpProtocol): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withOtlpExporterProtocol(protocol))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withOtlpExporterProtocol(protocol)), this._client); } /** Adds a required command dependency */ withRequiredCommand(command: string, options?: WithRequiredCommandOptions): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withRequiredCommand(command, options))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withRequiredCommand(command, options)), this._client); } /** Sets an environment variable */ - withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withEnvironment(name, value))); + withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): DotnetToolResourcePromise { + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withEnvironment(name, value)), this._client); } /** @@ -14472,86 +14624,86 @@ class DotnetToolResourcePromiseImpl implements DotnetToolResourcePromise { * @deprecated ATS compatibility shim. Use withEnvironment instead. */ withEnvironmentExpression(name: string, value: ReferenceExpression): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentExpression(name, value))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentExpression(name, value)), this._client); } /** Sets environment variables via callback */ withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentCallback(callback))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentCallback(callback)), this._client); } /** * Sets an environment variable from an endpoint reference * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentEndpoint(name: string, endpointReference: EndpointReference): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentEndpoint(name, endpointReference))); + withEnvironmentEndpoint(name: string, endpointReference: Awaitable): DotnetToolResourcePromise { + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentEndpoint(name, endpointReference)), this._client); } /** * Sets an environment variable from a parameter resource * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentParameter(name: string, parameter: ParameterResource): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentParameter(name, parameter))); + withEnvironmentParameter(name: string, parameter: Awaitable): DotnetToolResourcePromise { + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentParameter(name, parameter)), this._client); } /** * Sets an environment variable from a connection string resource * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentConnectionString(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentConnectionString(envVarName, resource))); + withEnvironmentConnectionString(envVarName: string, resource: Awaitable): DotnetToolResourcePromise { + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentConnectionString(envVarName, resource)), this._client); } /** Adds arguments */ withArgs(args: string[]): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withArgs(args))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withArgs(args)), this._client); } /** Sets command-line arguments via callback */ withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) => Promise): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withArgsCallback(callback))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withArgsCallback(callback)), this._client); } /** Adds a reference to another resource */ - withReference(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WithReferenceOptions): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withReference(source, options))); + withReference(source: Awaitable, options?: WithReferenceOptions): DotnetToolResourcePromise { + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withReference(source, options)), this._client); } /** Adds a reference to a URI */ withReferenceUri(name: string, uri: string): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withReferenceUri(name, uri))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withReferenceUri(name, uri)), this._client); } /** Adds a reference to an external service */ - withReferenceExternalService(externalService: ExternalServiceResource): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withReferenceExternalService(externalService))); + withReferenceExternalService(externalService: Awaitable): DotnetToolResourcePromise { + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withReferenceExternalService(externalService)), this._client); } /** Adds a reference to an endpoint */ - withReferenceEndpoint(endpointReference: EndpointReference): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withReferenceEndpoint(endpointReference))); + withReferenceEndpoint(endpointReference: Awaitable): DotnetToolResourcePromise { + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withReferenceEndpoint(endpointReference)), this._client); } /** Adds a network endpoint */ withEndpoint(options?: WithEndpointOptions): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withEndpoint(options))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withEndpoint(options)), this._client); } /** Adds an HTTP endpoint */ withHttpEndpoint(options?: WithHttpEndpointOptions): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withHttpEndpoint(options))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withHttpEndpoint(options)), this._client); } /** Adds an HTTPS endpoint */ withHttpsEndpoint(options?: WithHttpsEndpointOptions): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withHttpsEndpoint(options))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withHttpsEndpoint(options)), this._client); } /** Makes HTTP endpoints externally accessible */ withExternalHttpEndpoints(): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withExternalHttpEndpoints())); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withExternalHttpEndpoints()), this._client); } /** Gets an endpoint reference */ @@ -14561,147 +14713,147 @@ class DotnetToolResourcePromiseImpl implements DotnetToolResourcePromise { /** Configures resource for HTTP/2 */ asHttp2Service(): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.asHttp2Service())); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.asHttp2Service()), this._client); } /** Customizes displayed URLs via callback */ withUrlsCallback(callback: (obj: ResourceUrlsCallbackContext) => Promise): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withUrlsCallback(callback))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withUrlsCallback(callback)), this._client); } /** Adds or modifies displayed URLs */ withUrl(url: string, options?: WithUrlOptions): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withUrl(url, options))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withUrl(url, options)), this._client); } /** Adds a URL using a reference expression */ withUrlExpression(url: ReferenceExpression, options?: WithUrlExpressionOptions): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withUrlExpression(url, options))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withUrlExpression(url, options)), this._client); } /** Customizes the URL for a specific endpoint via callback */ withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpoint(endpointName, callback))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpoint(endpointName, callback)), this._client); } /** Adds a URL for a specific endpoint via factory callback */ withUrlForEndpointFactory(endpointName: string, callback: (arg: EndpointReference) => Promise): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpointFactory(endpointName, callback))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpointFactory(endpointName, callback)), this._client); } /** Excludes the resource from the deployment manifest */ excludeFromManifest(): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.excludeFromManifest())); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.excludeFromManifest()), this._client); } /** Waits for another resource to be ready */ - waitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.waitFor(dependency))); + waitFor(dependency: Awaitable): DotnetToolResourcePromise { + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.waitFor(dependency)), this._client); } /** Waits for another resource with specific behavior */ - waitForWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.waitForWithBehavior(dependency, waitBehavior))); + waitForWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): DotnetToolResourcePromise { + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.waitForWithBehavior(dependency, waitBehavior)), this._client); } /** Waits for another resource to start */ - waitForStart(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.waitForStart(dependency))); + waitForStart(dependency: Awaitable): DotnetToolResourcePromise { + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.waitForStart(dependency)), this._client); } /** Waits for another resource to start with specific behavior */ - waitForStartWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.waitForStartWithBehavior(dependency, waitBehavior))); + waitForStartWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): DotnetToolResourcePromise { + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.waitForStartWithBehavior(dependency, waitBehavior)), this._client); } /** Prevents resource from starting automatically */ withExplicitStart(): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withExplicitStart())); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withExplicitStart()), this._client); } /** Waits for resource completion */ - waitForCompletion(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WaitForCompletionOptions): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.waitForCompletion(dependency, options))); + waitForCompletion(dependency: Awaitable, options?: WaitForCompletionOptions): DotnetToolResourcePromise { + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.waitForCompletion(dependency, options)), this._client); } /** Adds a health check by key */ withHealthCheck(key: string): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withHealthCheck(key))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withHealthCheck(key)), this._client); } /** Adds an HTTP health check */ withHttpHealthCheck(options?: WithHttpHealthCheckOptions): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withHttpHealthCheck(options))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withHttpHealthCheck(options)), this._client); } /** Adds a resource command */ withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withCommand(name, displayName, executeCommand, options))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withCommand(name, displayName, executeCommand, options)), this._client); } /** Configures developer certificate trust */ withDeveloperCertificateTrust(trust: boolean): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withDeveloperCertificateTrust(trust))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withDeveloperCertificateTrust(trust)), this._client); } /** Sets the certificate trust scope */ withCertificateTrustScope(scope: CertificateTrustScope): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withCertificateTrustScope(scope))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withCertificateTrustScope(scope)), this._client); } /** Configures HTTPS with a developer certificate */ withHttpsDeveloperCertificate(options?: WithHttpsDeveloperCertificateOptions): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withHttpsDeveloperCertificate(options))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withHttpsDeveloperCertificate(options)), this._client); } /** Removes HTTPS certificate configuration */ withoutHttpsCertificate(): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withoutHttpsCertificate())); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withoutHttpsCertificate()), this._client); } /** Sets the parent relationship */ - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withParentRelationship(parent))); + withParentRelationship(parent: Awaitable): DotnetToolResourcePromise { + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withParentRelationship(parent)), this._client); } /** Sets a child relationship */ - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withChildRelationship(child))); + withChildRelationship(child: Awaitable): DotnetToolResourcePromise { + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withChildRelationship(child)), this._client); } /** Sets the icon for the resource */ withIconName(iconName: string, options?: WithIconNameOptions): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withIconName(iconName, options))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withIconName(iconName, options)), this._client); } /** Adds an HTTP health probe to the resource */ withHttpProbe(probeType: ProbeType, options?: WithHttpProbeOptions): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withHttpProbe(probeType, options))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withHttpProbe(probeType, options)), this._client); } /** Excludes the resource from MCP server exposure */ excludeFromMcp(): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.excludeFromMcp())); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.excludeFromMcp()), this._client); } /** Sets the remote image name for publishing */ withRemoteImageName(remoteImageName: string): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageName(remoteImageName))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageName(remoteImageName)), this._client); } /** Sets the remote image tag for publishing */ withRemoteImageTag(remoteImageTag: string): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageTag(remoteImageTag))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageTag(remoteImageTag)), this._client); } /** Adds a pipeline step to the resource */ withPipelineStepFactory(stepName: string, callback: (arg: PipelineStepContext) => Promise, options?: WithPipelineStepFactoryOptions): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withPipelineStepFactory(stepName, callback, options))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withPipelineStepFactory(stepName, callback, options)), this._client); } /** Configures pipeline step dependencies via a callback */ withPipelineConfiguration(callback: (obj: PipelineConfigurationContext) => Promise): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withPipelineConfiguration(callback))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withPipelineConfiguration(callback)), this._client); } /** Gets the resource name */ @@ -14711,147 +14863,147 @@ class DotnetToolResourcePromiseImpl implements DotnetToolResourcePromise { /** Subscribes to the BeforeResourceStarted event */ onBeforeResourceStarted(callback: (arg: BeforeResourceStartedEvent) => Promise): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.onBeforeResourceStarted(callback))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.onBeforeResourceStarted(callback)), this._client); } /** Subscribes to the ResourceStopped event */ onResourceStopped(callback: (arg: ResourceStoppedEvent) => Promise): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.onResourceStopped(callback))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.onResourceStopped(callback)), this._client); } /** Subscribes to the InitializeResource event */ onInitializeResource(callback: (arg: InitializeResourceEvent) => Promise): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.onInitializeResource(callback))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.onInitializeResource(callback)), this._client); } /** Subscribes to the ResourceEndpointsAllocated event */ onResourceEndpointsAllocated(callback: (arg: ResourceEndpointsAllocatedEvent) => Promise): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.onResourceEndpointsAllocated(callback))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.onResourceEndpointsAllocated(callback)), this._client); } /** Subscribes to the ResourceReady event */ onResourceReady(callback: (arg: ResourceReadyEvent) => Promise): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.onResourceReady(callback))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.onResourceReady(callback)), this._client); } /** Adds an optional string parameter */ withOptionalString(options?: WithOptionalStringOptions): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withOptionalString(options))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withOptionalString(options)), this._client); } /** Configures the resource with a DTO */ withConfig(config: TestConfigDto): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withConfig(config))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withConfig(config)), this._client); } /** Configures environment with callback (test version) */ testWithEnvironmentCallback(callback: (arg: TestEnvironmentContext) => Promise): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.testWithEnvironmentCallback(callback))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.testWithEnvironmentCallback(callback)), this._client); } /** Sets the created timestamp */ withCreatedAt(createdAt: string): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withCreatedAt(createdAt))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withCreatedAt(createdAt)), this._client); } /** Sets the modified timestamp */ withModifiedAt(modifiedAt: string): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withModifiedAt(modifiedAt))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withModifiedAt(modifiedAt)), this._client); } /** Sets the correlation ID */ withCorrelationId(correlationId: string): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withCorrelationId(correlationId))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withCorrelationId(correlationId)), this._client); } /** Configures with optional callback */ withOptionalCallback(options?: WithOptionalCallbackOptions): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withOptionalCallback(options))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withOptionalCallback(options)), this._client); } /** Sets the resource status */ withStatus(status: TestResourceStatus): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withStatus(status))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withStatus(status)), this._client); } /** Configures with nested DTO */ withNestedConfig(config: TestNestedDto): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withNestedConfig(config))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withNestedConfig(config)), this._client); } /** Adds validation callback */ withValidator(validator: (arg: TestResourceContext) => Promise): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withValidator(validator))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withValidator(validator)), this._client); } /** Waits for another resource (test version) */ - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.testWaitFor(dependency))); + testWaitFor(dependency: Awaitable): DotnetToolResourcePromise { + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.testWaitFor(dependency)), this._client); } /** Adds a dependency on another resource */ - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withDependency(dependency))); + withDependency(dependency: Awaitable): DotnetToolResourcePromise { + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withDependency(dependency)), this._client); } /** Adds a dependency from a string or another resource */ - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withUnionDependency(dependency))); + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): DotnetToolResourcePromise { + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withUnionDependency(dependency)), this._client); } /** Sets the endpoints */ withEndpoints(endpoints: string[]): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withEndpoints(endpoints))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withEndpoints(endpoints)), this._client); } /** Sets environment variables */ withEnvironmentVariables(variables: Record): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentVariables(variables))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentVariables(variables)), this._client); } /** Performs a cancellable operation */ withCancellableOperation(operation: (arg: CancellationToken) => Promise): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withCancellableOperation(operation))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withCancellableOperation(operation)), this._client); } /** Adds a label to the resource */ withMergeLabel(label: string): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabel(label))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabel(label)), this._client); } /** Adds a categorized label to the resource */ withMergeLabelCategorized(label: string, category: string): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabelCategorized(label, category))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabelCategorized(label, category)), this._client); } /** Configures a named endpoint */ withMergeEndpoint(endpointName: string, port: number): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpoint(endpointName, port))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpoint(endpointName, port)), this._client); } /** Configures a named endpoint with scheme */ withMergeEndpointScheme(endpointName: string, port: number, scheme: string): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpointScheme(endpointName, port, scheme))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpointScheme(endpointName, port, scheme)), this._client); } /** Configures resource logging */ withMergeLogging(logLevel: string, options?: WithMergeLoggingOptions): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withMergeLogging(logLevel, options))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withMergeLogging(logLevel, options)), this._client); } /** Configures resource logging with file path */ withMergeLoggingPath(logLevel: string, logPath: string, options?: WithMergeLoggingPathOptions): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withMergeLoggingPath(logLevel, logPath, options))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withMergeLoggingPath(logLevel, logPath, options)), this._client); } /** Configures a route */ withMergeRoute(path: string, method: string, handler: string, priority: number): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withMergeRoute(path, method, handler, priority))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withMergeRoute(path, method, handler, priority)), this._client); } /** Configures a route with middleware */ withMergeRouteMiddleware(path: string, method: string, handler: string, priority: number, middleware: string): DotnetToolResourcePromise { - return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withMergeRouteMiddleware(path, method, handler, priority, middleware))); + return new DotnetToolResourcePromiseImpl(this._promise.then(obj => obj.withMergeRouteMiddleware(path, method, handler, priority, middleware)), this._client); } } @@ -14862,7 +15014,7 @@ class DotnetToolResourcePromiseImpl implements DotnetToolResourcePromise { export interface ExecutableResource { toJSON(): MarshalledHandle; - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ExecutableResourcePromise; + withContainerRegistry(registry: Awaitable): ExecutableResourcePromise; withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): ExecutableResourcePromise; publishAsDockerFile(): ExecutableResourcePromise; publishAsDockerFileWithConfigure(configure: (obj: ContainerResource) => Promise): ExecutableResourcePromise; @@ -14872,18 +15024,18 @@ export interface ExecutableResource { withOtlpExporter(): ExecutableResourcePromise; withOtlpExporterProtocol(protocol: OtlpProtocol): ExecutableResourcePromise; withRequiredCommand(command: string, options?: WithRequiredCommandOptions): ExecutableResourcePromise; - withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression): ExecutableResourcePromise; + withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): ExecutableResourcePromise; withEnvironmentExpression(name: string, value: ReferenceExpression): ExecutableResourcePromise; withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): ExecutableResourcePromise; - withEnvironmentEndpoint(name: string, endpointReference: EndpointReference): ExecutableResourcePromise; - withEnvironmentParameter(name: string, parameter: ParameterResource): ExecutableResourcePromise; - withEnvironmentConnectionString(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ExecutableResourcePromise; + withEnvironmentEndpoint(name: string, endpointReference: Awaitable): ExecutableResourcePromise; + withEnvironmentParameter(name: string, parameter: Awaitable): ExecutableResourcePromise; + withEnvironmentConnectionString(envVarName: string, resource: Awaitable): ExecutableResourcePromise; withArgs(args: string[]): ExecutableResourcePromise; withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) => Promise): ExecutableResourcePromise; - withReference(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WithReferenceOptions): ExecutableResourcePromise; + withReference(source: Awaitable, options?: WithReferenceOptions): ExecutableResourcePromise; withReferenceUri(name: string, uri: string): ExecutableResourcePromise; - withReferenceExternalService(externalService: ExternalServiceResource): ExecutableResourcePromise; - withReferenceEndpoint(endpointReference: EndpointReference): ExecutableResourcePromise; + withReferenceExternalService(externalService: Awaitable): ExecutableResourcePromise; + withReferenceEndpoint(endpointReference: Awaitable): ExecutableResourcePromise; withEndpoint(options?: WithEndpointOptions): ExecutableResourcePromise; withHttpEndpoint(options?: WithHttpEndpointOptions): ExecutableResourcePromise; withHttpsEndpoint(options?: WithHttpsEndpointOptions): ExecutableResourcePromise; @@ -14896,12 +15048,12 @@ export interface ExecutableResource { withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): ExecutableResourcePromise; withUrlForEndpointFactory(endpointName: string, callback: (arg: EndpointReference) => Promise): ExecutableResourcePromise; excludeFromManifest(): ExecutableResourcePromise; - waitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ExecutableResourcePromise; - waitForWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): ExecutableResourcePromise; - waitForStart(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ExecutableResourcePromise; - waitForStartWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): ExecutableResourcePromise; + waitFor(dependency: Awaitable): ExecutableResourcePromise; + waitForWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): ExecutableResourcePromise; + waitForStart(dependency: Awaitable): ExecutableResourcePromise; + waitForStartWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): ExecutableResourcePromise; withExplicitStart(): ExecutableResourcePromise; - waitForCompletion(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WaitForCompletionOptions): ExecutableResourcePromise; + waitForCompletion(dependency: Awaitable, options?: WaitForCompletionOptions): ExecutableResourcePromise; withHealthCheck(key: string): ExecutableResourcePromise; withHttpHealthCheck(options?: WithHttpHealthCheckOptions): ExecutableResourcePromise; withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): ExecutableResourcePromise; @@ -14909,8 +15061,8 @@ export interface ExecutableResource { withCertificateTrustScope(scope: CertificateTrustScope): ExecutableResourcePromise; withHttpsDeveloperCertificate(options?: WithHttpsDeveloperCertificateOptions): ExecutableResourcePromise; withoutHttpsCertificate(): ExecutableResourcePromise; - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ExecutableResourcePromise; - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ExecutableResourcePromise; + withParentRelationship(parent: Awaitable): ExecutableResourcePromise; + withChildRelationship(child: Awaitable): ExecutableResourcePromise; withIconName(iconName: string, options?: WithIconNameOptions): ExecutableResourcePromise; withHttpProbe(probeType: ProbeType, options?: WithHttpProbeOptions): ExecutableResourcePromise; excludeFromMcp(): ExecutableResourcePromise; @@ -14934,9 +15086,9 @@ export interface ExecutableResource { withStatus(status: TestResourceStatus): ExecutableResourcePromise; withNestedConfig(config: TestNestedDto): ExecutableResourcePromise; withValidator(validator: (arg: TestResourceContext) => Promise): ExecutableResourcePromise; - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ExecutableResourcePromise; - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ExecutableResourcePromise; - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ExecutableResourcePromise; + testWaitFor(dependency: Awaitable): ExecutableResourcePromise; + withDependency(dependency: Awaitable): ExecutableResourcePromise; + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): ExecutableResourcePromise; withEndpoints(endpoints: string[]): ExecutableResourcePromise; withEnvironmentVariables(variables: Record): ExecutableResourcePromise; withCancellableOperation(operation: (arg: CancellationToken) => Promise): ExecutableResourcePromise; @@ -14951,7 +15103,7 @@ export interface ExecutableResource { } export interface ExecutableResourcePromise extends PromiseLike { - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ExecutableResourcePromise; + withContainerRegistry(registry: Awaitable): ExecutableResourcePromise; withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): ExecutableResourcePromise; publishAsDockerFile(): ExecutableResourcePromise; publishAsDockerFileWithConfigure(configure: (obj: ContainerResource) => Promise): ExecutableResourcePromise; @@ -14961,18 +15113,18 @@ export interface ExecutableResourcePromise extends PromiseLike): ExecutableResourcePromise; withEnvironmentExpression(name: string, value: ReferenceExpression): ExecutableResourcePromise; withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): ExecutableResourcePromise; - withEnvironmentEndpoint(name: string, endpointReference: EndpointReference): ExecutableResourcePromise; - withEnvironmentParameter(name: string, parameter: ParameterResource): ExecutableResourcePromise; - withEnvironmentConnectionString(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ExecutableResourcePromise; + withEnvironmentEndpoint(name: string, endpointReference: Awaitable): ExecutableResourcePromise; + withEnvironmentParameter(name: string, parameter: Awaitable): ExecutableResourcePromise; + withEnvironmentConnectionString(envVarName: string, resource: Awaitable): ExecutableResourcePromise; withArgs(args: string[]): ExecutableResourcePromise; withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) => Promise): ExecutableResourcePromise; - withReference(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WithReferenceOptions): ExecutableResourcePromise; + withReference(source: Awaitable, options?: WithReferenceOptions): ExecutableResourcePromise; withReferenceUri(name: string, uri: string): ExecutableResourcePromise; - withReferenceExternalService(externalService: ExternalServiceResource): ExecutableResourcePromise; - withReferenceEndpoint(endpointReference: EndpointReference): ExecutableResourcePromise; + withReferenceExternalService(externalService: Awaitable): ExecutableResourcePromise; + withReferenceEndpoint(endpointReference: Awaitable): ExecutableResourcePromise; withEndpoint(options?: WithEndpointOptions): ExecutableResourcePromise; withHttpEndpoint(options?: WithHttpEndpointOptions): ExecutableResourcePromise; withHttpsEndpoint(options?: WithHttpsEndpointOptions): ExecutableResourcePromise; @@ -14985,12 +15137,12 @@ export interface ExecutableResourcePromise extends PromiseLike Promise): ExecutableResourcePromise; withUrlForEndpointFactory(endpointName: string, callback: (arg: EndpointReference) => Promise): ExecutableResourcePromise; excludeFromManifest(): ExecutableResourcePromise; - waitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ExecutableResourcePromise; - waitForWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): ExecutableResourcePromise; - waitForStart(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ExecutableResourcePromise; - waitForStartWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): ExecutableResourcePromise; + waitFor(dependency: Awaitable): ExecutableResourcePromise; + waitForWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): ExecutableResourcePromise; + waitForStart(dependency: Awaitable): ExecutableResourcePromise; + waitForStartWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): ExecutableResourcePromise; withExplicitStart(): ExecutableResourcePromise; - waitForCompletion(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WaitForCompletionOptions): ExecutableResourcePromise; + waitForCompletion(dependency: Awaitable, options?: WaitForCompletionOptions): ExecutableResourcePromise; withHealthCheck(key: string): ExecutableResourcePromise; withHttpHealthCheck(options?: WithHttpHealthCheckOptions): ExecutableResourcePromise; withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): ExecutableResourcePromise; @@ -14998,8 +15150,8 @@ export interface ExecutableResourcePromise extends PromiseLike): ExecutableResourcePromise; + withChildRelationship(child: Awaitable): ExecutableResourcePromise; withIconName(iconName: string, options?: WithIconNameOptions): ExecutableResourcePromise; withHttpProbe(probeType: ProbeType, options?: WithHttpProbeOptions): ExecutableResourcePromise; excludeFromMcp(): ExecutableResourcePromise; @@ -15023,9 +15175,9 @@ export interface ExecutableResourcePromise extends PromiseLike Promise): ExecutableResourcePromise; - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ExecutableResourcePromise; - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ExecutableResourcePromise; - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ExecutableResourcePromise; + testWaitFor(dependency: Awaitable): ExecutableResourcePromise; + withDependency(dependency: Awaitable): ExecutableResourcePromise; + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): ExecutableResourcePromise; withEndpoints(endpoints: string[]): ExecutableResourcePromise; withEnvironmentVariables(variables: Record): ExecutableResourcePromise; withCancellableOperation(operation: (arg: CancellationToken) => Promise): ExecutableResourcePromise; @@ -15049,7 +15201,8 @@ class ExecutableResourceImpl extends ResourceBuilderBase { + private async _withContainerRegistryInternal(registry: Awaitable): Promise { + registry = isPromiseLike(registry) ? await registry : registry; const rpcArgs: Record = { builder: this._handle, registry }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withContainerRegistry', @@ -15059,8 +15212,8 @@ class ExecutableResourceImpl extends ResourceBuilderBase): ExecutableResourcePromise { + return new ExecutableResourcePromiseImpl(this._withContainerRegistryInternal(registry), this._client); } /** @internal */ @@ -15079,7 +15232,7 @@ class ExecutableResourceImpl extends ResourceBuilderBase Promise): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._publishAsDockerFileWithConfigureInternal(configure)); + return new ExecutableResourcePromiseImpl(this._publishAsDockerFileWithConfigureInternal(configure), this._client); } /** @internal */ @@ -15129,7 +15282,7 @@ class ExecutableResourceImpl extends ResourceBuilderBase { + private async _withEnvironmentInternal(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): Promise { + value = isPromiseLike(value) ? await value : value; const rpcArgs: Record = { builder: this._handle, name, value }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironment', @@ -15224,8 +15378,8 @@ class ExecutableResourceImpl extends ResourceBuilderBase): ExecutableResourcePromise { + return new ExecutableResourcePromiseImpl(this._withEnvironmentInternal(name, value), this._client); } /** @internal */ @@ -15243,7 +15397,7 @@ class ExecutableResourceImpl extends ResourceBuilderBase Promise): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._withEnvironmentCallbackInternal(callback)); + return new ExecutableResourcePromiseImpl(this._withEnvironmentCallbackInternal(callback), this._client); } /** @internal */ - private async _withEnvironmentEndpointInternal(name: string, endpointReference: EndpointReference): Promise { + private async _withEnvironmentEndpointInternal(name: string, endpointReference: Awaitable): Promise { + endpointReference = isPromiseLike(endpointReference) ? await endpointReference : endpointReference; const rpcArgs: Record = { builder: this._handle, name, endpointReference }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironmentEndpoint', @@ -15280,12 +15435,13 @@ class ExecutableResourceImpl extends ResourceBuilderBase): ExecutableResourcePromise { + return new ExecutableResourcePromiseImpl(this._withEnvironmentEndpointInternal(name, endpointReference), this._client); } /** @internal */ - private async _withEnvironmentParameterInternal(name: string, parameter: ParameterResource): Promise { + private async _withEnvironmentParameterInternal(name: string, parameter: Awaitable): Promise { + parameter = isPromiseLike(parameter) ? await parameter : parameter; const rpcArgs: Record = { builder: this._handle, name, parameter }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironmentParameter', @@ -15298,12 +15454,13 @@ class ExecutableResourceImpl extends ResourceBuilderBase): ExecutableResourcePromise { + return new ExecutableResourcePromiseImpl(this._withEnvironmentParameterInternal(name, parameter), this._client); } /** @internal */ - private async _withEnvironmentConnectionStringInternal(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withEnvironmentConnectionStringInternal(envVarName: string, resource: Awaitable): Promise { + resource = isPromiseLike(resource) ? await resource : resource; const rpcArgs: Record = { builder: this._handle, envVarName, resource }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironmentConnectionString', @@ -15316,8 +15473,8 @@ class ExecutableResourceImpl extends ResourceBuilderBase): ExecutableResourcePromise { + return new ExecutableResourcePromiseImpl(this._withEnvironmentConnectionStringInternal(envVarName, resource), this._client); } /** @internal */ @@ -15332,7 +15489,7 @@ class ExecutableResourceImpl extends ResourceBuilderBase Promise): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._withArgsCallbackInternal(callback)); + return new ExecutableResourcePromiseImpl(this._withArgsCallbackInternal(callback), this._client); } /** @internal */ - private async _withReferenceInternal(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, connectionName?: string, optional?: boolean, name?: string): Promise { + private async _withReferenceInternal(source: Awaitable, connectionName?: string, optional?: boolean, name?: string): Promise { + source = isPromiseLike(source) ? await source : source; const rpcArgs: Record = { builder: this._handle, source }; if (connectionName !== undefined) rpcArgs.connectionName = connectionName; if (optional !== undefined) rpcArgs.optional = optional; @@ -15369,11 +15527,11 @@ class ExecutableResourceImpl extends ResourceBuilderBase, options?: WithReferenceOptions): ExecutableResourcePromise { const connectionName = options?.connectionName; const optional = options?.optional; const name = options?.name; - return new ExecutableResourcePromiseImpl(this._withReferenceInternal(source, connectionName, optional, name)); + return new ExecutableResourcePromiseImpl(this._withReferenceInternal(source, connectionName, optional, name), this._client); } /** @internal */ @@ -15388,11 +15546,12 @@ class ExecutableResourceImpl extends ResourceBuilderBase { + private async _withReferenceExternalServiceInternal(externalService: Awaitable): Promise { + externalService = isPromiseLike(externalService) ? await externalService : externalService; const rpcArgs: Record = { builder: this._handle, externalService }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withReferenceExternalService', @@ -15402,12 +15561,13 @@ class ExecutableResourceImpl extends ResourceBuilderBase): ExecutableResourcePromise { + return new ExecutableResourcePromiseImpl(this._withReferenceExternalServiceInternal(externalService), this._client); } /** @internal */ - private async _withReferenceEndpointInternal(endpointReference: EndpointReference): Promise { + private async _withReferenceEndpointInternal(endpointReference: Awaitable): Promise { + endpointReference = isPromiseLike(endpointReference) ? await endpointReference : endpointReference; const rpcArgs: Record = { builder: this._handle, endpointReference }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withReferenceEndpoint', @@ -15417,8 +15577,8 @@ class ExecutableResourceImpl extends ResourceBuilderBase): ExecutableResourcePromise { + return new ExecutableResourcePromiseImpl(this._withReferenceEndpointInternal(endpointReference), this._client); } /** @internal */ @@ -15449,7 +15609,7 @@ class ExecutableResourceImpl extends ResourceBuilderBase Promise): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._withUrlsCallbackInternal(callback)); + return new ExecutableResourcePromiseImpl(this._withUrlsCallbackInternal(callback), this._client); } /** @internal */ @@ -15575,7 +15735,7 @@ class ExecutableResourceImpl extends ResourceBuilderBase Promise): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._withUrlForEndpointInternal(endpointName, callback)); + return new ExecutableResourcePromiseImpl(this._withUrlForEndpointInternal(endpointName, callback), this._client); } /** @internal */ @@ -15631,7 +15791,7 @@ class ExecutableResourceImpl extends ResourceBuilderBase Promise): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._withUrlForEndpointFactoryInternal(endpointName, callback)); + return new ExecutableResourcePromiseImpl(this._withUrlForEndpointFactoryInternal(endpointName, callback), this._client); } /** @internal */ @@ -15646,11 +15806,12 @@ class ExecutableResourceImpl extends ResourceBuilderBase { + private async _waitForInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForResource', @@ -15660,12 +15821,13 @@ class ExecutableResourceImpl extends ResourceBuilderBase): ExecutableResourcePromise { + return new ExecutableResourcePromiseImpl(this._waitForInternal(dependency), this._client); } /** @internal */ - private async _waitForWithBehaviorInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): Promise { + private async _waitForWithBehaviorInternal(dependency: Awaitable, waitBehavior: WaitBehavior): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency, waitBehavior }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForWithBehavior', @@ -15675,12 +15837,13 @@ class ExecutableResourceImpl extends ResourceBuilderBase, waitBehavior: WaitBehavior): ExecutableResourcePromise { + return new ExecutableResourcePromiseImpl(this._waitForWithBehaviorInternal(dependency, waitBehavior), this._client); } /** @internal */ - private async _waitForStartInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _waitForStartInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForResourceStart', @@ -15690,12 +15853,13 @@ class ExecutableResourceImpl extends ResourceBuilderBase): ExecutableResourcePromise { + return new ExecutableResourcePromiseImpl(this._waitForStartInternal(dependency), this._client); } /** @internal */ - private async _waitForStartWithBehaviorInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): Promise { + private async _waitForStartWithBehaviorInternal(dependency: Awaitable, waitBehavior: WaitBehavior): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency, waitBehavior }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForStartWithBehavior', @@ -15705,8 +15869,8 @@ class ExecutableResourceImpl extends ResourceBuilderBase, waitBehavior: WaitBehavior): ExecutableResourcePromise { + return new ExecutableResourcePromiseImpl(this._waitForStartWithBehaviorInternal(dependency, waitBehavior), this._client); } /** @internal */ @@ -15721,11 +15885,12 @@ class ExecutableResourceImpl extends ResourceBuilderBase { + private async _waitForCompletionInternal(dependency: Awaitable, exitCode?: number): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; if (exitCode !== undefined) rpcArgs.exitCode = exitCode; const result = await this._client.invokeCapability( @@ -15736,9 +15901,9 @@ class ExecutableResourceImpl extends ResourceBuilderBase, options?: WaitForCompletionOptions): ExecutableResourcePromise { const exitCode = options?.exitCode; - return new ExecutableResourcePromiseImpl(this._waitForCompletionInternal(dependency, exitCode)); + return new ExecutableResourcePromiseImpl(this._waitForCompletionInternal(dependency, exitCode), this._client); } /** @internal */ @@ -15753,7 +15918,7 @@ class ExecutableResourceImpl extends ResourceBuilderBase Promise, options?: WithCommandOptions): ExecutableResourcePromise { const commandOptions = options?.commandOptions; - return new ExecutableResourcePromiseImpl(this._withCommandInternal(name, displayName, executeCommand, commandOptions)); + return new ExecutableResourcePromiseImpl(this._withCommandInternal(name, displayName, executeCommand, commandOptions), this._client); } /** @internal */ @@ -15811,7 +15976,7 @@ class ExecutableResourceImpl extends ResourceBuilderBase { + private async _withHttpsDeveloperCertificateInternal(password?: Awaitable): Promise { + password = isPromiseLike(password) ? await password : password; const rpcArgs: Record = { builder: this._handle }; if (password !== undefined) rpcArgs.password = password; const result = await this._client.invokeCapability( @@ -15842,8 +16008,8 @@ class ExecutableResourceImpl extends ResourceBuilderBase { + private async _withParentRelationshipInternal(parent: Awaitable): Promise { + parent = isPromiseLike(parent) ? await parent : parent; const rpcArgs: Record = { builder: this._handle, parent }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withBuilderParentRelationship', @@ -15872,12 +16039,13 @@ class ExecutableResourceImpl extends ResourceBuilderBase): ExecutableResourcePromise { + return new ExecutableResourcePromiseImpl(this._withParentRelationshipInternal(parent), this._client); } /** @internal */ - private async _withChildRelationshipInternal(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _withChildRelationshipInternal(child: Awaitable): Promise { + child = isPromiseLike(child) ? await child : child; const rpcArgs: Record = { builder: this._handle, child }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withBuilderChildRelationship', @@ -15887,8 +16055,8 @@ class ExecutableResourceImpl extends ResourceBuilderBase): ExecutableResourcePromise { + return new ExecutableResourcePromiseImpl(this._withChildRelationshipInternal(child), this._client); } /** @internal */ @@ -15905,7 +16073,7 @@ class ExecutableResourceImpl extends ResourceBuilderBase Promise): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._withPipelineConfigurationInternal(callback)); + return new ExecutableResourcePromiseImpl(this._withPipelineConfigurationInternal(callback), this._client); } /** Gets the resource name */ @@ -16056,7 +16224,7 @@ class ExecutableResourceImpl extends ResourceBuilderBase Promise): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._onBeforeResourceStartedInternal(callback)); + return new ExecutableResourcePromiseImpl(this._onBeforeResourceStartedInternal(callback), this._client); } /** @internal */ @@ -16076,7 +16244,7 @@ class ExecutableResourceImpl extends ResourceBuilderBase Promise): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._onResourceStoppedInternal(callback)); + return new ExecutableResourcePromiseImpl(this._onResourceStoppedInternal(callback), this._client); } /** @internal */ @@ -16096,7 +16264,7 @@ class ExecutableResourceImpl extends ResourceBuilderBase Promise): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._onInitializeResourceInternal(callback)); + return new ExecutableResourcePromiseImpl(this._onInitializeResourceInternal(callback), this._client); } /** @internal */ @@ -16116,7 +16284,7 @@ class ExecutableResourceImpl extends ResourceBuilderBase Promise): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._onResourceEndpointsAllocatedInternal(callback)); + return new ExecutableResourcePromiseImpl(this._onResourceEndpointsAllocatedInternal(callback), this._client); } /** @internal */ @@ -16136,7 +16304,7 @@ class ExecutableResourceImpl extends ResourceBuilderBase Promise): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._onResourceReadyInternal(callback)); + return new ExecutableResourcePromiseImpl(this._onResourceReadyInternal(callback), this._client); } /** @internal */ @@ -16155,7 +16323,7 @@ class ExecutableResourceImpl extends ResourceBuilderBase Promise): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._testWithEnvironmentCallbackInternal(callback)); + return new ExecutableResourcePromiseImpl(this._testWithEnvironmentCallbackInternal(callback), this._client); } /** @internal */ @@ -16205,7 +16373,7 @@ class ExecutableResourceImpl extends ResourceBuilderBase Promise): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._withValidatorInternal(validator)); + return new ExecutableResourcePromiseImpl(this._withValidatorInternal(validator), this._client); } /** @internal */ - private async _testWaitForInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _testWaitForInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/testWaitFor', @@ -16321,12 +16490,13 @@ class ExecutableResourceImpl extends ResourceBuilderBase): ExecutableResourcePromise { + return new ExecutableResourcePromiseImpl(this._testWaitForInternal(dependency), this._client); } /** @internal */ - private async _withDependencyInternal(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withDependencyInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/withDependency', @@ -16336,12 +16506,13 @@ class ExecutableResourceImpl extends ResourceBuilderBase): ExecutableResourcePromise { + return new ExecutableResourcePromiseImpl(this._withDependencyInternal(dependency), this._client); } /** @internal */ - private async _withUnionDependencyInternal(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withUnionDependencyInternal(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/withUnionDependency', @@ -16351,8 +16522,8 @@ class ExecutableResourceImpl extends ResourceBuilderBase): ExecutableResourcePromise { + return new ExecutableResourcePromiseImpl(this._withUnionDependencyInternal(dependency), this._client); } /** @internal */ @@ -16367,7 +16538,7 @@ class ExecutableResourceImpl extends ResourceBuilderBase): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._withEnvironmentVariablesInternal(variables)); + return new ExecutableResourcePromiseImpl(this._withEnvironmentVariablesInternal(variables), this._client); } /** @internal */ @@ -16401,7 +16572,7 @@ class ExecutableResourceImpl extends ResourceBuilderBase Promise): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._withCancellableOperationInternal(operation)); + return new ExecutableResourcePromiseImpl(this._withCancellableOperationInternal(operation), this._client); } /** @internal */ @@ -16416,7 +16587,7 @@ class ExecutableResourceImpl extends ResourceBuilderBase) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: ExecutableResource) => TResult1 | PromiseLike) | null, @@ -16550,58 +16723,58 @@ class ExecutableResourcePromiseImpl implements ExecutableResourcePromise { } /** Configures a resource to use a container registry */ - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withContainerRegistry(registry))); + withContainerRegistry(registry: Awaitable): ExecutableResourcePromise { + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withContainerRegistry(registry)), this._client); } /** Sets the base image for a Dockerfile build */ withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withDockerfileBaseImage(options))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withDockerfileBaseImage(options)), this._client); } /** Publishes the executable as a Docker container */ publishAsDockerFile(): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.publishAsDockerFile())); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.publishAsDockerFile()), this._client); } /** Publishes an executable as a Docker file with optional container configuration */ publishAsDockerFileWithConfigure(configure: (obj: ContainerResource) => Promise): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.publishAsDockerFileWithConfigure(configure))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.publishAsDockerFileWithConfigure(configure)), this._client); } /** Sets the executable command */ withExecutableCommand(command: string): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withExecutableCommand(command))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withExecutableCommand(command)), this._client); } /** Sets the executable working directory */ withWorkingDirectory(workingDirectory: string): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withWorkingDirectory(workingDirectory))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withWorkingDirectory(workingDirectory)), this._client); } /** Configures an MCP server endpoint on the resource */ withMcpServer(options?: WithMcpServerOptions): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withMcpServer(options))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withMcpServer(options)), this._client); } /** Configures OTLP telemetry export */ withOtlpExporter(): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withOtlpExporter())); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withOtlpExporter()), this._client); } /** Configures OTLP telemetry export with specific protocol */ withOtlpExporterProtocol(protocol: OtlpProtocol): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withOtlpExporterProtocol(protocol))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withOtlpExporterProtocol(protocol)), this._client); } /** Adds a required command dependency */ withRequiredCommand(command: string, options?: WithRequiredCommandOptions): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withRequiredCommand(command, options))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withRequiredCommand(command, options)), this._client); } /** Sets an environment variable */ - withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withEnvironment(name, value))); + withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): ExecutableResourcePromise { + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withEnvironment(name, value)), this._client); } /** @@ -16609,86 +16782,86 @@ class ExecutableResourcePromiseImpl implements ExecutableResourcePromise { * @deprecated ATS compatibility shim. Use withEnvironment instead. */ withEnvironmentExpression(name: string, value: ReferenceExpression): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentExpression(name, value))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentExpression(name, value)), this._client); } /** Sets environment variables via callback */ withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentCallback(callback))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentCallback(callback)), this._client); } /** * Sets an environment variable from an endpoint reference * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentEndpoint(name: string, endpointReference: EndpointReference): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentEndpoint(name, endpointReference))); + withEnvironmentEndpoint(name: string, endpointReference: Awaitable): ExecutableResourcePromise { + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentEndpoint(name, endpointReference)), this._client); } /** * Sets an environment variable from a parameter resource * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentParameter(name: string, parameter: ParameterResource): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentParameter(name, parameter))); + withEnvironmentParameter(name: string, parameter: Awaitable): ExecutableResourcePromise { + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentParameter(name, parameter)), this._client); } /** * Sets an environment variable from a connection string resource * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentConnectionString(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentConnectionString(envVarName, resource))); + withEnvironmentConnectionString(envVarName: string, resource: Awaitable): ExecutableResourcePromise { + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentConnectionString(envVarName, resource)), this._client); } /** Adds arguments */ withArgs(args: string[]): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withArgs(args))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withArgs(args)), this._client); } /** Sets command-line arguments via callback */ withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) => Promise): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withArgsCallback(callback))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withArgsCallback(callback)), this._client); } /** Adds a reference to another resource */ - withReference(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WithReferenceOptions): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withReference(source, options))); + withReference(source: Awaitable, options?: WithReferenceOptions): ExecutableResourcePromise { + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withReference(source, options)), this._client); } /** Adds a reference to a URI */ withReferenceUri(name: string, uri: string): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withReferenceUri(name, uri))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withReferenceUri(name, uri)), this._client); } /** Adds a reference to an external service */ - withReferenceExternalService(externalService: ExternalServiceResource): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withReferenceExternalService(externalService))); + withReferenceExternalService(externalService: Awaitable): ExecutableResourcePromise { + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withReferenceExternalService(externalService)), this._client); } /** Adds a reference to an endpoint */ - withReferenceEndpoint(endpointReference: EndpointReference): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withReferenceEndpoint(endpointReference))); + withReferenceEndpoint(endpointReference: Awaitable): ExecutableResourcePromise { + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withReferenceEndpoint(endpointReference)), this._client); } /** Adds a network endpoint */ withEndpoint(options?: WithEndpointOptions): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withEndpoint(options))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withEndpoint(options)), this._client); } /** Adds an HTTP endpoint */ withHttpEndpoint(options?: WithHttpEndpointOptions): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withHttpEndpoint(options))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withHttpEndpoint(options)), this._client); } /** Adds an HTTPS endpoint */ withHttpsEndpoint(options?: WithHttpsEndpointOptions): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withHttpsEndpoint(options))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withHttpsEndpoint(options)), this._client); } /** Makes HTTP endpoints externally accessible */ withExternalHttpEndpoints(): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withExternalHttpEndpoints())); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withExternalHttpEndpoints()), this._client); } /** Gets an endpoint reference */ @@ -16698,147 +16871,147 @@ class ExecutableResourcePromiseImpl implements ExecutableResourcePromise { /** Configures resource for HTTP/2 */ asHttp2Service(): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.asHttp2Service())); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.asHttp2Service()), this._client); } /** Customizes displayed URLs via callback */ withUrlsCallback(callback: (obj: ResourceUrlsCallbackContext) => Promise): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withUrlsCallback(callback))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withUrlsCallback(callback)), this._client); } /** Adds or modifies displayed URLs */ withUrl(url: string, options?: WithUrlOptions): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withUrl(url, options))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withUrl(url, options)), this._client); } /** Adds a URL using a reference expression */ withUrlExpression(url: ReferenceExpression, options?: WithUrlExpressionOptions): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withUrlExpression(url, options))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withUrlExpression(url, options)), this._client); } /** Customizes the URL for a specific endpoint via callback */ withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpoint(endpointName, callback))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpoint(endpointName, callback)), this._client); } /** Adds a URL for a specific endpoint via factory callback */ withUrlForEndpointFactory(endpointName: string, callback: (arg: EndpointReference) => Promise): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpointFactory(endpointName, callback))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpointFactory(endpointName, callback)), this._client); } /** Excludes the resource from the deployment manifest */ excludeFromManifest(): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.excludeFromManifest())); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.excludeFromManifest()), this._client); } /** Waits for another resource to be ready */ - waitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.waitFor(dependency))); + waitFor(dependency: Awaitable): ExecutableResourcePromise { + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.waitFor(dependency)), this._client); } /** Waits for another resource with specific behavior */ - waitForWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.waitForWithBehavior(dependency, waitBehavior))); + waitForWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): ExecutableResourcePromise { + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.waitForWithBehavior(dependency, waitBehavior)), this._client); } /** Waits for another resource to start */ - waitForStart(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.waitForStart(dependency))); + waitForStart(dependency: Awaitable): ExecutableResourcePromise { + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.waitForStart(dependency)), this._client); } /** Waits for another resource to start with specific behavior */ - waitForStartWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.waitForStartWithBehavior(dependency, waitBehavior))); + waitForStartWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): ExecutableResourcePromise { + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.waitForStartWithBehavior(dependency, waitBehavior)), this._client); } /** Prevents resource from starting automatically */ withExplicitStart(): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withExplicitStart())); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withExplicitStart()), this._client); } /** Waits for resource completion */ - waitForCompletion(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WaitForCompletionOptions): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.waitForCompletion(dependency, options))); + waitForCompletion(dependency: Awaitable, options?: WaitForCompletionOptions): ExecutableResourcePromise { + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.waitForCompletion(dependency, options)), this._client); } /** Adds a health check by key */ withHealthCheck(key: string): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withHealthCheck(key))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withHealthCheck(key)), this._client); } /** Adds an HTTP health check */ withHttpHealthCheck(options?: WithHttpHealthCheckOptions): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withHttpHealthCheck(options))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withHttpHealthCheck(options)), this._client); } /** Adds a resource command */ withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withCommand(name, displayName, executeCommand, options))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withCommand(name, displayName, executeCommand, options)), this._client); } /** Configures developer certificate trust */ withDeveloperCertificateTrust(trust: boolean): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withDeveloperCertificateTrust(trust))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withDeveloperCertificateTrust(trust)), this._client); } /** Sets the certificate trust scope */ withCertificateTrustScope(scope: CertificateTrustScope): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withCertificateTrustScope(scope))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withCertificateTrustScope(scope)), this._client); } /** Configures HTTPS with a developer certificate */ withHttpsDeveloperCertificate(options?: WithHttpsDeveloperCertificateOptions): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withHttpsDeveloperCertificate(options))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withHttpsDeveloperCertificate(options)), this._client); } /** Removes HTTPS certificate configuration */ withoutHttpsCertificate(): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withoutHttpsCertificate())); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withoutHttpsCertificate()), this._client); } /** Sets the parent relationship */ - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withParentRelationship(parent))); + withParentRelationship(parent: Awaitable): ExecutableResourcePromise { + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withParentRelationship(parent)), this._client); } /** Sets a child relationship */ - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withChildRelationship(child))); + withChildRelationship(child: Awaitable): ExecutableResourcePromise { + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withChildRelationship(child)), this._client); } /** Sets the icon for the resource */ withIconName(iconName: string, options?: WithIconNameOptions): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withIconName(iconName, options))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withIconName(iconName, options)), this._client); } /** Adds an HTTP health probe to the resource */ withHttpProbe(probeType: ProbeType, options?: WithHttpProbeOptions): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withHttpProbe(probeType, options))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withHttpProbe(probeType, options)), this._client); } /** Excludes the resource from MCP server exposure */ excludeFromMcp(): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.excludeFromMcp())); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.excludeFromMcp()), this._client); } /** Sets the remote image name for publishing */ withRemoteImageName(remoteImageName: string): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageName(remoteImageName))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageName(remoteImageName)), this._client); } /** Sets the remote image tag for publishing */ withRemoteImageTag(remoteImageTag: string): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageTag(remoteImageTag))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageTag(remoteImageTag)), this._client); } /** Adds a pipeline step to the resource */ withPipelineStepFactory(stepName: string, callback: (arg: PipelineStepContext) => Promise, options?: WithPipelineStepFactoryOptions): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withPipelineStepFactory(stepName, callback, options))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withPipelineStepFactory(stepName, callback, options)), this._client); } /** Configures pipeline step dependencies via a callback */ withPipelineConfiguration(callback: (obj: PipelineConfigurationContext) => Promise): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withPipelineConfiguration(callback))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withPipelineConfiguration(callback)), this._client); } /** Gets the resource name */ @@ -16848,147 +17021,147 @@ class ExecutableResourcePromiseImpl implements ExecutableResourcePromise { /** Subscribes to the BeforeResourceStarted event */ onBeforeResourceStarted(callback: (arg: BeforeResourceStartedEvent) => Promise): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.onBeforeResourceStarted(callback))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.onBeforeResourceStarted(callback)), this._client); } /** Subscribes to the ResourceStopped event */ onResourceStopped(callback: (arg: ResourceStoppedEvent) => Promise): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.onResourceStopped(callback))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.onResourceStopped(callback)), this._client); } /** Subscribes to the InitializeResource event */ onInitializeResource(callback: (arg: InitializeResourceEvent) => Promise): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.onInitializeResource(callback))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.onInitializeResource(callback)), this._client); } /** Subscribes to the ResourceEndpointsAllocated event */ onResourceEndpointsAllocated(callback: (arg: ResourceEndpointsAllocatedEvent) => Promise): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.onResourceEndpointsAllocated(callback))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.onResourceEndpointsAllocated(callback)), this._client); } /** Subscribes to the ResourceReady event */ onResourceReady(callback: (arg: ResourceReadyEvent) => Promise): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.onResourceReady(callback))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.onResourceReady(callback)), this._client); } /** Adds an optional string parameter */ withOptionalString(options?: WithOptionalStringOptions): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withOptionalString(options))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withOptionalString(options)), this._client); } /** Configures the resource with a DTO */ withConfig(config: TestConfigDto): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withConfig(config))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withConfig(config)), this._client); } /** Configures environment with callback (test version) */ testWithEnvironmentCallback(callback: (arg: TestEnvironmentContext) => Promise): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.testWithEnvironmentCallback(callback))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.testWithEnvironmentCallback(callback)), this._client); } /** Sets the created timestamp */ withCreatedAt(createdAt: string): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withCreatedAt(createdAt))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withCreatedAt(createdAt)), this._client); } /** Sets the modified timestamp */ withModifiedAt(modifiedAt: string): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withModifiedAt(modifiedAt))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withModifiedAt(modifiedAt)), this._client); } /** Sets the correlation ID */ withCorrelationId(correlationId: string): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withCorrelationId(correlationId))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withCorrelationId(correlationId)), this._client); } /** Configures with optional callback */ withOptionalCallback(options?: WithOptionalCallbackOptions): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withOptionalCallback(options))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withOptionalCallback(options)), this._client); } /** Sets the resource status */ withStatus(status: TestResourceStatus): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withStatus(status))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withStatus(status)), this._client); } /** Configures with nested DTO */ withNestedConfig(config: TestNestedDto): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withNestedConfig(config))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withNestedConfig(config)), this._client); } /** Adds validation callback */ withValidator(validator: (arg: TestResourceContext) => Promise): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withValidator(validator))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withValidator(validator)), this._client); } /** Waits for another resource (test version) */ - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.testWaitFor(dependency))); + testWaitFor(dependency: Awaitable): ExecutableResourcePromise { + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.testWaitFor(dependency)), this._client); } /** Adds a dependency on another resource */ - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withDependency(dependency))); + withDependency(dependency: Awaitable): ExecutableResourcePromise { + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withDependency(dependency)), this._client); } /** Adds a dependency from a string or another resource */ - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withUnionDependency(dependency))); + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): ExecutableResourcePromise { + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withUnionDependency(dependency)), this._client); } /** Sets the endpoints */ withEndpoints(endpoints: string[]): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withEndpoints(endpoints))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withEndpoints(endpoints)), this._client); } /** Sets environment variables */ withEnvironmentVariables(variables: Record): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentVariables(variables))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentVariables(variables)), this._client); } /** Performs a cancellable operation */ withCancellableOperation(operation: (arg: CancellationToken) => Promise): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withCancellableOperation(operation))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withCancellableOperation(operation)), this._client); } /** Adds a label to the resource */ withMergeLabel(label: string): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabel(label))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabel(label)), this._client); } /** Adds a categorized label to the resource */ withMergeLabelCategorized(label: string, category: string): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabelCategorized(label, category))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabelCategorized(label, category)), this._client); } /** Configures a named endpoint */ withMergeEndpoint(endpointName: string, port: number): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpoint(endpointName, port))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpoint(endpointName, port)), this._client); } /** Configures a named endpoint with scheme */ withMergeEndpointScheme(endpointName: string, port: number, scheme: string): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpointScheme(endpointName, port, scheme))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpointScheme(endpointName, port, scheme)), this._client); } /** Configures resource logging */ withMergeLogging(logLevel: string, options?: WithMergeLoggingOptions): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withMergeLogging(logLevel, options))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withMergeLogging(logLevel, options)), this._client); } /** Configures resource logging with file path */ withMergeLoggingPath(logLevel: string, logPath: string, options?: WithMergeLoggingPathOptions): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withMergeLoggingPath(logLevel, logPath, options))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withMergeLoggingPath(logLevel, logPath, options)), this._client); } /** Configures a route */ withMergeRoute(path: string, method: string, handler: string, priority: number): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withMergeRoute(path, method, handler, priority))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withMergeRoute(path, method, handler, priority)), this._client); } /** Configures a route with middleware */ withMergeRouteMiddleware(path: string, method: string, handler: string, priority: number, middleware: string): ExecutableResourcePromise { - return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withMergeRouteMiddleware(path, method, handler, priority, middleware))); + return new ExecutableResourcePromiseImpl(this._promise.then(obj => obj.withMergeRouteMiddleware(path, method, handler, priority, middleware)), this._client); } } @@ -16999,7 +17172,7 @@ class ExecutableResourcePromiseImpl implements ExecutableResourcePromise { export interface ExternalServiceResource { toJSON(): MarshalledHandle; - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ExternalServiceResourcePromise; + withContainerRegistry(registry: Awaitable): ExternalServiceResourcePromise; withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): ExternalServiceResourcePromise; withExternalServiceHttpHealthCheck(options?: WithExternalServiceHttpHealthCheckOptions): ExternalServiceResourcePromise; withRequiredCommand(command: string, options?: WithRequiredCommandOptions): ExternalServiceResourcePromise; @@ -17011,8 +17184,8 @@ export interface ExternalServiceResource { withExplicitStart(): ExternalServiceResourcePromise; withHealthCheck(key: string): ExternalServiceResourcePromise; withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): ExternalServiceResourcePromise; - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ExternalServiceResourcePromise; - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ExternalServiceResourcePromise; + withParentRelationship(parent: Awaitable): ExternalServiceResourcePromise; + withChildRelationship(child: Awaitable): ExternalServiceResourcePromise; withIconName(iconName: string, options?: WithIconNameOptions): ExternalServiceResourcePromise; excludeFromMcp(): ExternalServiceResourcePromise; withPipelineStepFactory(stepName: string, callback: (arg: PipelineStepContext) => Promise, options?: WithPipelineStepFactoryOptions): ExternalServiceResourcePromise; @@ -17031,9 +17204,9 @@ export interface ExternalServiceResource { withStatus(status: TestResourceStatus): ExternalServiceResourcePromise; withNestedConfig(config: TestNestedDto): ExternalServiceResourcePromise; withValidator(validator: (arg: TestResourceContext) => Promise): ExternalServiceResourcePromise; - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ExternalServiceResourcePromise; - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ExternalServiceResourcePromise; - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ExternalServiceResourcePromise; + testWaitFor(dependency: Awaitable): ExternalServiceResourcePromise; + withDependency(dependency: Awaitable): ExternalServiceResourcePromise; + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): ExternalServiceResourcePromise; withEndpoints(endpoints: string[]): ExternalServiceResourcePromise; withCancellableOperation(operation: (arg: CancellationToken) => Promise): ExternalServiceResourcePromise; withMergeLabel(label: string): ExternalServiceResourcePromise; @@ -17047,7 +17220,7 @@ export interface ExternalServiceResource { } export interface ExternalServiceResourcePromise extends PromiseLike { - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ExternalServiceResourcePromise; + withContainerRegistry(registry: Awaitable): ExternalServiceResourcePromise; withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): ExternalServiceResourcePromise; withExternalServiceHttpHealthCheck(options?: WithExternalServiceHttpHealthCheckOptions): ExternalServiceResourcePromise; withRequiredCommand(command: string, options?: WithRequiredCommandOptions): ExternalServiceResourcePromise; @@ -17059,8 +17232,8 @@ export interface ExternalServiceResourcePromise extends PromiseLike Promise, options?: WithCommandOptions): ExternalServiceResourcePromise; - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ExternalServiceResourcePromise; - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ExternalServiceResourcePromise; + withParentRelationship(parent: Awaitable): ExternalServiceResourcePromise; + withChildRelationship(child: Awaitable): ExternalServiceResourcePromise; withIconName(iconName: string, options?: WithIconNameOptions): ExternalServiceResourcePromise; excludeFromMcp(): ExternalServiceResourcePromise; withPipelineStepFactory(stepName: string, callback: (arg: PipelineStepContext) => Promise, options?: WithPipelineStepFactoryOptions): ExternalServiceResourcePromise; @@ -17079,9 +17252,9 @@ export interface ExternalServiceResourcePromise extends PromiseLike Promise): ExternalServiceResourcePromise; - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ExternalServiceResourcePromise; - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ExternalServiceResourcePromise; - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ExternalServiceResourcePromise; + testWaitFor(dependency: Awaitable): ExternalServiceResourcePromise; + withDependency(dependency: Awaitable): ExternalServiceResourcePromise; + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): ExternalServiceResourcePromise; withEndpoints(endpoints: string[]): ExternalServiceResourcePromise; withCancellableOperation(operation: (arg: CancellationToken) => Promise): ExternalServiceResourcePromise; withMergeLabel(label: string): ExternalServiceResourcePromise; @@ -17104,7 +17277,8 @@ class ExternalServiceResourceImpl extends ResourceBuilderBase { + private async _withContainerRegistryInternal(registry: Awaitable): Promise { + registry = isPromiseLike(registry) ? await registry : registry; const rpcArgs: Record = { builder: this._handle, registry }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withContainerRegistry', @@ -17114,8 +17288,8 @@ class ExternalServiceResourceImpl extends ResourceBuilderBase): ExternalServiceResourcePromise { + return new ExternalServiceResourcePromiseImpl(this._withContainerRegistryInternal(registry), this._client); } /** @internal */ @@ -17134,7 +17308,7 @@ class ExternalServiceResourceImpl extends ResourceBuilderBase Promise): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._withUrlsCallbackInternal(callback)); + return new ExternalServiceResourcePromiseImpl(this._withUrlsCallbackInternal(callback), this._client); } /** @internal */ @@ -17207,7 +17381,7 @@ class ExternalServiceResourceImpl extends ResourceBuilderBase Promise): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._withUrlForEndpointInternal(endpointName, callback)); + return new ExternalServiceResourcePromiseImpl(this._withUrlForEndpointInternal(endpointName, callback), this._client); } /** @internal */ @@ -17258,7 +17432,7 @@ class ExternalServiceResourceImpl extends ResourceBuilderBase Promise, options?: WithCommandOptions): ExternalServiceResourcePromise { const commandOptions = options?.commandOptions; - return new ExternalServiceResourcePromiseImpl(this._withCommandInternal(name, displayName, executeCommand, commandOptions)); + return new ExternalServiceResourcePromiseImpl(this._withCommandInternal(name, displayName, executeCommand, commandOptions), this._client); } /** @internal */ - private async _withParentRelationshipInternal(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _withParentRelationshipInternal(parent: Awaitable): Promise { + parent = isPromiseLike(parent) ? await parent : parent; const rpcArgs: Record = { builder: this._handle, parent }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withBuilderParentRelationship', @@ -17324,12 +17499,13 @@ class ExternalServiceResourceImpl extends ResourceBuilderBase): ExternalServiceResourcePromise { + return new ExternalServiceResourcePromiseImpl(this._withParentRelationshipInternal(parent), this._client); } /** @internal */ - private async _withChildRelationshipInternal(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _withChildRelationshipInternal(child: Awaitable): Promise { + child = isPromiseLike(child) ? await child : child; const rpcArgs: Record = { builder: this._handle, child }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withBuilderChildRelationship', @@ -17339,8 +17515,8 @@ class ExternalServiceResourceImpl extends ResourceBuilderBase): ExternalServiceResourcePromise { + return new ExternalServiceResourcePromiseImpl(this._withChildRelationshipInternal(child), this._client); } /** @internal */ @@ -17357,7 +17533,7 @@ class ExternalServiceResourceImpl extends ResourceBuilderBase Promise): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._withPipelineConfigurationInternal(callback)); + return new ExternalServiceResourcePromiseImpl(this._withPipelineConfigurationInternal(callback), this._client); } /** Gets the resource name */ @@ -17449,7 +17625,7 @@ class ExternalServiceResourceImpl extends ResourceBuilderBase Promise): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._onBeforeResourceStartedInternal(callback)); + return new ExternalServiceResourcePromiseImpl(this._onBeforeResourceStartedInternal(callback), this._client); } /** @internal */ @@ -17469,7 +17645,7 @@ class ExternalServiceResourceImpl extends ResourceBuilderBase Promise): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._onResourceStoppedInternal(callback)); + return new ExternalServiceResourcePromiseImpl(this._onResourceStoppedInternal(callback), this._client); } /** @internal */ @@ -17489,7 +17665,7 @@ class ExternalServiceResourceImpl extends ResourceBuilderBase Promise): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._onInitializeResourceInternal(callback)); + return new ExternalServiceResourcePromiseImpl(this._onInitializeResourceInternal(callback), this._client); } /** @internal */ @@ -17509,7 +17685,7 @@ class ExternalServiceResourceImpl extends ResourceBuilderBase Promise): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._onResourceReadyInternal(callback)); + return new ExternalServiceResourcePromiseImpl(this._onResourceReadyInternal(callback), this._client); } /** @internal */ @@ -17528,7 +17704,7 @@ class ExternalServiceResourceImpl extends ResourceBuilderBase Promise): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._withValidatorInternal(validator)); + return new ExternalServiceResourcePromiseImpl(this._withValidatorInternal(validator), this._client); } /** @internal */ - private async _testWaitForInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _testWaitForInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/testWaitFor', @@ -17674,12 +17851,13 @@ class ExternalServiceResourceImpl extends ResourceBuilderBase): ExternalServiceResourcePromise { + return new ExternalServiceResourcePromiseImpl(this._testWaitForInternal(dependency), this._client); } /** @internal */ - private async _withDependencyInternal(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withDependencyInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/withDependency', @@ -17689,12 +17867,13 @@ class ExternalServiceResourceImpl extends ResourceBuilderBase): ExternalServiceResourcePromise { + return new ExternalServiceResourcePromiseImpl(this._withDependencyInternal(dependency), this._client); } /** @internal */ - private async _withUnionDependencyInternal(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withUnionDependencyInternal(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/withUnionDependency', @@ -17704,8 +17883,8 @@ class ExternalServiceResourceImpl extends ResourceBuilderBase): ExternalServiceResourcePromise { + return new ExternalServiceResourcePromiseImpl(this._withUnionDependencyInternal(dependency), this._client); } /** @internal */ @@ -17720,7 +17899,7 @@ class ExternalServiceResourceImpl extends ResourceBuilderBase Promise): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._withCancellableOperationInternal(operation)); + return new ExternalServiceResourcePromiseImpl(this._withCancellableOperationInternal(operation), this._client); } /** @internal */ @@ -17754,7 +17933,7 @@ class ExternalServiceResourceImpl extends ResourceBuilderBase) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: ExternalServiceResource) => TResult1 | PromiseLike) | null, @@ -17888,93 +18069,93 @@ class ExternalServiceResourcePromiseImpl implements ExternalServiceResourcePromi } /** Configures a resource to use a container registry */ - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withContainerRegistry(registry))); + withContainerRegistry(registry: Awaitable): ExternalServiceResourcePromise { + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withContainerRegistry(registry)), this._client); } /** Sets the base image for a Dockerfile build */ withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withDockerfileBaseImage(options))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withDockerfileBaseImage(options)), this._client); } /** Adds an HTTP health check to an external service */ withExternalServiceHttpHealthCheck(options?: WithExternalServiceHttpHealthCheckOptions): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withExternalServiceHttpHealthCheck(options))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withExternalServiceHttpHealthCheck(options)), this._client); } /** Adds a required command dependency */ withRequiredCommand(command: string, options?: WithRequiredCommandOptions): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withRequiredCommand(command, options))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withRequiredCommand(command, options)), this._client); } /** Customizes displayed URLs via callback */ withUrlsCallback(callback: (obj: ResourceUrlsCallbackContext) => Promise): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withUrlsCallback(callback))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withUrlsCallback(callback)), this._client); } /** Adds or modifies displayed URLs */ withUrl(url: string, options?: WithUrlOptions): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withUrl(url, options))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withUrl(url, options)), this._client); } /** Adds a URL using a reference expression */ withUrlExpression(url: ReferenceExpression, options?: WithUrlExpressionOptions): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withUrlExpression(url, options))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withUrlExpression(url, options)), this._client); } /** Customizes the URL for a specific endpoint via callback */ withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpoint(endpointName, callback))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpoint(endpointName, callback)), this._client); } /** Excludes the resource from the deployment manifest */ excludeFromManifest(): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.excludeFromManifest())); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.excludeFromManifest()), this._client); } /** Prevents resource from starting automatically */ withExplicitStart(): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withExplicitStart())); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withExplicitStart()), this._client); } /** Adds a health check by key */ withHealthCheck(key: string): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withHealthCheck(key))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withHealthCheck(key)), this._client); } /** Adds a resource command */ withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withCommand(name, displayName, executeCommand, options))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withCommand(name, displayName, executeCommand, options)), this._client); } /** Sets the parent relationship */ - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withParentRelationship(parent))); + withParentRelationship(parent: Awaitable): ExternalServiceResourcePromise { + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withParentRelationship(parent)), this._client); } /** Sets a child relationship */ - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withChildRelationship(child))); + withChildRelationship(child: Awaitable): ExternalServiceResourcePromise { + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withChildRelationship(child)), this._client); } /** Sets the icon for the resource */ withIconName(iconName: string, options?: WithIconNameOptions): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withIconName(iconName, options))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withIconName(iconName, options)), this._client); } /** Excludes the resource from MCP server exposure */ excludeFromMcp(): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.excludeFromMcp())); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.excludeFromMcp()), this._client); } /** Adds a pipeline step to the resource */ withPipelineStepFactory(stepName: string, callback: (arg: PipelineStepContext) => Promise, options?: WithPipelineStepFactoryOptions): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withPipelineStepFactory(stepName, callback, options))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withPipelineStepFactory(stepName, callback, options)), this._client); } /** Configures pipeline step dependencies via a callback */ withPipelineConfiguration(callback: (obj: PipelineConfigurationContext) => Promise): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withPipelineConfiguration(callback))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withPipelineConfiguration(callback)), this._client); } /** Gets the resource name */ @@ -17984,132 +18165,132 @@ class ExternalServiceResourcePromiseImpl implements ExternalServiceResourcePromi /** Subscribes to the BeforeResourceStarted event */ onBeforeResourceStarted(callback: (arg: BeforeResourceStartedEvent) => Promise): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.onBeforeResourceStarted(callback))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.onBeforeResourceStarted(callback)), this._client); } /** Subscribes to the ResourceStopped event */ onResourceStopped(callback: (arg: ResourceStoppedEvent) => Promise): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.onResourceStopped(callback))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.onResourceStopped(callback)), this._client); } /** Subscribes to the InitializeResource event */ onInitializeResource(callback: (arg: InitializeResourceEvent) => Promise): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.onInitializeResource(callback))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.onInitializeResource(callback)), this._client); } /** Subscribes to the ResourceReady event */ onResourceReady(callback: (arg: ResourceReadyEvent) => Promise): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.onResourceReady(callback))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.onResourceReady(callback)), this._client); } /** Adds an optional string parameter */ withOptionalString(options?: WithOptionalStringOptions): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withOptionalString(options))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withOptionalString(options)), this._client); } /** Configures the resource with a DTO */ withConfig(config: TestConfigDto): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withConfig(config))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withConfig(config)), this._client); } /** Sets the created timestamp */ withCreatedAt(createdAt: string): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withCreatedAt(createdAt))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withCreatedAt(createdAt)), this._client); } /** Sets the modified timestamp */ withModifiedAt(modifiedAt: string): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withModifiedAt(modifiedAt))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withModifiedAt(modifiedAt)), this._client); } /** Sets the correlation ID */ withCorrelationId(correlationId: string): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withCorrelationId(correlationId))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withCorrelationId(correlationId)), this._client); } /** Configures with optional callback */ withOptionalCallback(options?: WithOptionalCallbackOptions): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withOptionalCallback(options))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withOptionalCallback(options)), this._client); } /** Sets the resource status */ withStatus(status: TestResourceStatus): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withStatus(status))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withStatus(status)), this._client); } /** Configures with nested DTO */ withNestedConfig(config: TestNestedDto): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withNestedConfig(config))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withNestedConfig(config)), this._client); } /** Adds validation callback */ withValidator(validator: (arg: TestResourceContext) => Promise): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withValidator(validator))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withValidator(validator)), this._client); } /** Waits for another resource (test version) */ - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.testWaitFor(dependency))); + testWaitFor(dependency: Awaitable): ExternalServiceResourcePromise { + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.testWaitFor(dependency)), this._client); } /** Adds a dependency on another resource */ - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withDependency(dependency))); + withDependency(dependency: Awaitable): ExternalServiceResourcePromise { + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withDependency(dependency)), this._client); } /** Adds a dependency from a string or another resource */ - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withUnionDependency(dependency))); + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): ExternalServiceResourcePromise { + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withUnionDependency(dependency)), this._client); } /** Sets the endpoints */ withEndpoints(endpoints: string[]): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withEndpoints(endpoints))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withEndpoints(endpoints)), this._client); } /** Performs a cancellable operation */ withCancellableOperation(operation: (arg: CancellationToken) => Promise): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withCancellableOperation(operation))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withCancellableOperation(operation)), this._client); } /** Adds a label to the resource */ withMergeLabel(label: string): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabel(label))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabel(label)), this._client); } /** Adds a categorized label to the resource */ withMergeLabelCategorized(label: string, category: string): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabelCategorized(label, category))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabelCategorized(label, category)), this._client); } /** Configures a named endpoint */ withMergeEndpoint(endpointName: string, port: number): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpoint(endpointName, port))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpoint(endpointName, port)), this._client); } /** Configures a named endpoint with scheme */ withMergeEndpointScheme(endpointName: string, port: number, scheme: string): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpointScheme(endpointName, port, scheme))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpointScheme(endpointName, port, scheme)), this._client); } /** Configures resource logging */ withMergeLogging(logLevel: string, options?: WithMergeLoggingOptions): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withMergeLogging(logLevel, options))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withMergeLogging(logLevel, options)), this._client); } /** Configures resource logging with file path */ withMergeLoggingPath(logLevel: string, logPath: string, options?: WithMergeLoggingPathOptions): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withMergeLoggingPath(logLevel, logPath, options))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withMergeLoggingPath(logLevel, logPath, options)), this._client); } /** Configures a route */ withMergeRoute(path: string, method: string, handler: string, priority: number): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withMergeRoute(path, method, handler, priority))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withMergeRoute(path, method, handler, priority)), this._client); } /** Configures a route with middleware */ withMergeRouteMiddleware(path: string, method: string, handler: string, priority: number, middleware: string): ExternalServiceResourcePromise { - return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withMergeRouteMiddleware(path, method, handler, priority, middleware))); + return new ExternalServiceResourcePromiseImpl(this._promise.then(obj => obj.withMergeRouteMiddleware(path, method, handler, priority, middleware)), this._client); } } @@ -18120,7 +18301,7 @@ class ExternalServiceResourcePromiseImpl implements ExternalServiceResourcePromi export interface ParameterResource { toJSON(): MarshalledHandle; - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ParameterResourcePromise; + withContainerRegistry(registry: Awaitable): ParameterResourcePromise; withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): ParameterResourcePromise; withDescription(description: string, options?: WithDescriptionOptions): ParameterResourcePromise; withRequiredCommand(command: string, options?: WithRequiredCommandOptions): ParameterResourcePromise; @@ -18132,8 +18313,8 @@ export interface ParameterResource { withExplicitStart(): ParameterResourcePromise; withHealthCheck(key: string): ParameterResourcePromise; withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): ParameterResourcePromise; - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ParameterResourcePromise; - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ParameterResourcePromise; + withParentRelationship(parent: Awaitable): ParameterResourcePromise; + withChildRelationship(child: Awaitable): ParameterResourcePromise; withIconName(iconName: string, options?: WithIconNameOptions): ParameterResourcePromise; excludeFromMcp(): ParameterResourcePromise; withPipelineStepFactory(stepName: string, callback: (arg: PipelineStepContext) => Promise, options?: WithPipelineStepFactoryOptions): ParameterResourcePromise; @@ -18152,9 +18333,9 @@ export interface ParameterResource { withStatus(status: TestResourceStatus): ParameterResourcePromise; withNestedConfig(config: TestNestedDto): ParameterResourcePromise; withValidator(validator: (arg: TestResourceContext) => Promise): ParameterResourcePromise; - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ParameterResourcePromise; - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ParameterResourcePromise; - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ParameterResourcePromise; + testWaitFor(dependency: Awaitable): ParameterResourcePromise; + withDependency(dependency: Awaitable): ParameterResourcePromise; + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): ParameterResourcePromise; withEndpoints(endpoints: string[]): ParameterResourcePromise; withCancellableOperation(operation: (arg: CancellationToken) => Promise): ParameterResourcePromise; withMergeLabel(label: string): ParameterResourcePromise; @@ -18168,7 +18349,7 @@ export interface ParameterResource { } export interface ParameterResourcePromise extends PromiseLike { - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ParameterResourcePromise; + withContainerRegistry(registry: Awaitable): ParameterResourcePromise; withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): ParameterResourcePromise; withDescription(description: string, options?: WithDescriptionOptions): ParameterResourcePromise; withRequiredCommand(command: string, options?: WithRequiredCommandOptions): ParameterResourcePromise; @@ -18180,8 +18361,8 @@ export interface ParameterResourcePromise extends PromiseLike withExplicitStart(): ParameterResourcePromise; withHealthCheck(key: string): ParameterResourcePromise; withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): ParameterResourcePromise; - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ParameterResourcePromise; - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ParameterResourcePromise; + withParentRelationship(parent: Awaitable): ParameterResourcePromise; + withChildRelationship(child: Awaitable): ParameterResourcePromise; withIconName(iconName: string, options?: WithIconNameOptions): ParameterResourcePromise; excludeFromMcp(): ParameterResourcePromise; withPipelineStepFactory(stepName: string, callback: (arg: PipelineStepContext) => Promise, options?: WithPipelineStepFactoryOptions): ParameterResourcePromise; @@ -18200,9 +18381,9 @@ export interface ParameterResourcePromise extends PromiseLike withStatus(status: TestResourceStatus): ParameterResourcePromise; withNestedConfig(config: TestNestedDto): ParameterResourcePromise; withValidator(validator: (arg: TestResourceContext) => Promise): ParameterResourcePromise; - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ParameterResourcePromise; - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ParameterResourcePromise; - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ParameterResourcePromise; + testWaitFor(dependency: Awaitable): ParameterResourcePromise; + withDependency(dependency: Awaitable): ParameterResourcePromise; + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): ParameterResourcePromise; withEndpoints(endpoints: string[]): ParameterResourcePromise; withCancellableOperation(operation: (arg: CancellationToken) => Promise): ParameterResourcePromise; withMergeLabel(label: string): ParameterResourcePromise; @@ -18225,7 +18406,8 @@ class ParameterResourceImpl extends ResourceBuilderBase } /** @internal */ - private async _withContainerRegistryInternal(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _withContainerRegistryInternal(registry: Awaitable): Promise { + registry = isPromiseLike(registry) ? await registry : registry; const rpcArgs: Record = { builder: this._handle, registry }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withContainerRegistry', @@ -18235,8 +18417,8 @@ class ParameterResourceImpl extends ResourceBuilderBase } /** Configures a resource to use a container registry */ - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._withContainerRegistryInternal(registry)); + withContainerRegistry(registry: Awaitable): ParameterResourcePromise { + return new ParameterResourcePromiseImpl(this._withContainerRegistryInternal(registry), this._client); } /** @internal */ @@ -18255,7 +18437,7 @@ class ParameterResourceImpl extends ResourceBuilderBase withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): ParameterResourcePromise { const buildImage = options?.buildImage; const runtimeImage = options?.runtimeImage; - return new ParameterResourcePromiseImpl(this._withDockerfileBaseImageInternal(buildImage, runtimeImage)); + return new ParameterResourcePromiseImpl(this._withDockerfileBaseImageInternal(buildImage, runtimeImage), this._client); } /** @internal */ @@ -18272,7 +18454,7 @@ class ParameterResourceImpl extends ResourceBuilderBase /** Sets a parameter description */ withDescription(description: string, options?: WithDescriptionOptions): ParameterResourcePromise { const enableMarkdown = options?.enableMarkdown; - return new ParameterResourcePromiseImpl(this._withDescriptionInternal(description, enableMarkdown)); + return new ParameterResourcePromiseImpl(this._withDescriptionInternal(description, enableMarkdown), this._client); } /** @internal */ @@ -18289,7 +18471,7 @@ class ParameterResourceImpl extends ResourceBuilderBase /** Adds a required command dependency */ withRequiredCommand(command: string, options?: WithRequiredCommandOptions): ParameterResourcePromise { const helpLink = options?.helpLink; - return new ParameterResourcePromiseImpl(this._withRequiredCommandInternal(command, helpLink)); + return new ParameterResourcePromiseImpl(this._withRequiredCommandInternal(command, helpLink), this._client); } /** @internal */ @@ -18309,7 +18491,7 @@ class ParameterResourceImpl extends ResourceBuilderBase /** Customizes displayed URLs via callback */ withUrlsCallback(callback: (obj: ResourceUrlsCallbackContext) => Promise): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._withUrlsCallbackInternal(callback)); + return new ParameterResourcePromiseImpl(this._withUrlsCallbackInternal(callback), this._client); } /** @internal */ @@ -18326,7 +18508,7 @@ class ParameterResourceImpl extends ResourceBuilderBase /** Adds or modifies displayed URLs */ withUrl(url: string, options?: WithUrlOptions): ParameterResourcePromise { const displayText = options?.displayText; - return new ParameterResourcePromiseImpl(this._withUrlInternal(url, displayText)); + return new ParameterResourcePromiseImpl(this._withUrlInternal(url, displayText), this._client); } /** @internal */ @@ -18343,7 +18525,7 @@ class ParameterResourceImpl extends ResourceBuilderBase /** Adds a URL using a reference expression */ withUrlExpression(url: ReferenceExpression, options?: WithUrlExpressionOptions): ParameterResourcePromise { const displayText = options?.displayText; - return new ParameterResourcePromiseImpl(this._withUrlExpressionInternal(url, displayText)); + return new ParameterResourcePromiseImpl(this._withUrlExpressionInternal(url, displayText), this._client); } /** @internal */ @@ -18362,7 +18544,7 @@ class ParameterResourceImpl extends ResourceBuilderBase /** Customizes the URL for a specific endpoint via callback */ withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._withUrlForEndpointInternal(endpointName, callback)); + return new ParameterResourcePromiseImpl(this._withUrlForEndpointInternal(endpointName, callback), this._client); } /** @internal */ @@ -18377,7 +18559,7 @@ class ParameterResourceImpl extends ResourceBuilderBase /** Excludes the resource from the deployment manifest */ excludeFromManifest(): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._excludeFromManifestInternal()); + return new ParameterResourcePromiseImpl(this._excludeFromManifestInternal(), this._client); } /** @internal */ @@ -18392,7 +18574,7 @@ class ParameterResourceImpl extends ResourceBuilderBase /** Prevents resource from starting automatically */ withExplicitStart(): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._withExplicitStartInternal()); + return new ParameterResourcePromiseImpl(this._withExplicitStartInternal(), this._client); } /** @internal */ @@ -18407,7 +18589,7 @@ class ParameterResourceImpl extends ResourceBuilderBase /** Adds a health check by key */ withHealthCheck(key: string): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._withHealthCheckInternal(key)); + return new ParameterResourcePromiseImpl(this._withHealthCheckInternal(key), this._client); } /** @internal */ @@ -18429,11 +18611,12 @@ class ParameterResourceImpl extends ResourceBuilderBase /** Adds a resource command */ withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): ParameterResourcePromise { const commandOptions = options?.commandOptions; - return new ParameterResourcePromiseImpl(this._withCommandInternal(name, displayName, executeCommand, commandOptions)); + return new ParameterResourcePromiseImpl(this._withCommandInternal(name, displayName, executeCommand, commandOptions), this._client); } /** @internal */ - private async _withParentRelationshipInternal(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _withParentRelationshipInternal(parent: Awaitable): Promise { + parent = isPromiseLike(parent) ? await parent : parent; const rpcArgs: Record = { builder: this._handle, parent }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withBuilderParentRelationship', @@ -18443,12 +18626,13 @@ class ParameterResourceImpl extends ResourceBuilderBase } /** Sets the parent relationship */ - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._withParentRelationshipInternal(parent)); + withParentRelationship(parent: Awaitable): ParameterResourcePromise { + return new ParameterResourcePromiseImpl(this._withParentRelationshipInternal(parent), this._client); } /** @internal */ - private async _withChildRelationshipInternal(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _withChildRelationshipInternal(child: Awaitable): Promise { + child = isPromiseLike(child) ? await child : child; const rpcArgs: Record = { builder: this._handle, child }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withBuilderChildRelationship', @@ -18458,8 +18642,8 @@ class ParameterResourceImpl extends ResourceBuilderBase } /** Sets a child relationship */ - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._withChildRelationshipInternal(child)); + withChildRelationship(child: Awaitable): ParameterResourcePromise { + return new ParameterResourcePromiseImpl(this._withChildRelationshipInternal(child), this._client); } /** @internal */ @@ -18476,7 +18660,7 @@ class ParameterResourceImpl extends ResourceBuilderBase /** Sets the icon for the resource */ withIconName(iconName: string, options?: WithIconNameOptions): ParameterResourcePromise { const iconVariant = options?.iconVariant; - return new ParameterResourcePromiseImpl(this._withIconNameInternal(iconName, iconVariant)); + return new ParameterResourcePromiseImpl(this._withIconNameInternal(iconName, iconVariant), this._client); } /** @internal */ @@ -18491,7 +18675,7 @@ class ParameterResourceImpl extends ResourceBuilderBase /** Excludes the resource from MCP server exposure */ excludeFromMcp(): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._excludeFromMcpInternal()); + return new ParameterResourcePromiseImpl(this._excludeFromMcpInternal(), this._client); } /** @internal */ @@ -18519,7 +18703,7 @@ class ParameterResourceImpl extends ResourceBuilderBase const requiredBy = options?.requiredBy; const tags = options?.tags; const description = options?.description; - return new ParameterResourcePromiseImpl(this._withPipelineStepFactoryInternal(stepName, callback, dependsOn, requiredBy, tags, description)); + return new ParameterResourcePromiseImpl(this._withPipelineStepFactoryInternal(stepName, callback, dependsOn, requiredBy, tags, description), this._client); } /** @internal */ @@ -18539,7 +18723,7 @@ class ParameterResourceImpl extends ResourceBuilderBase /** Configures pipeline step dependencies via a callback */ withPipelineConfiguration(callback: (obj: PipelineConfigurationContext) => Promise): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._withPipelineConfigurationInternal(callback)); + return new ParameterResourcePromiseImpl(this._withPipelineConfigurationInternal(callback), this._client); } /** Gets the resource name */ @@ -18568,7 +18752,7 @@ class ParameterResourceImpl extends ResourceBuilderBase /** Subscribes to the BeforeResourceStarted event */ onBeforeResourceStarted(callback: (arg: BeforeResourceStartedEvent) => Promise): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._onBeforeResourceStartedInternal(callback)); + return new ParameterResourcePromiseImpl(this._onBeforeResourceStartedInternal(callback), this._client); } /** @internal */ @@ -18588,7 +18772,7 @@ class ParameterResourceImpl extends ResourceBuilderBase /** Subscribes to the ResourceStopped event */ onResourceStopped(callback: (arg: ResourceStoppedEvent) => Promise): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._onResourceStoppedInternal(callback)); + return new ParameterResourcePromiseImpl(this._onResourceStoppedInternal(callback), this._client); } /** @internal */ @@ -18608,7 +18792,7 @@ class ParameterResourceImpl extends ResourceBuilderBase /** Subscribes to the InitializeResource event */ onInitializeResource(callback: (arg: InitializeResourceEvent) => Promise): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._onInitializeResourceInternal(callback)); + return new ParameterResourcePromiseImpl(this._onInitializeResourceInternal(callback), this._client); } /** @internal */ @@ -18628,7 +18812,7 @@ class ParameterResourceImpl extends ResourceBuilderBase /** Subscribes to the ResourceReady event */ onResourceReady(callback: (arg: ResourceReadyEvent) => Promise): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._onResourceReadyInternal(callback)); + return new ParameterResourcePromiseImpl(this._onResourceReadyInternal(callback), this._client); } /** @internal */ @@ -18647,7 +18831,7 @@ class ParameterResourceImpl extends ResourceBuilderBase withOptionalString(options?: WithOptionalStringOptions): ParameterResourcePromise { const value = options?.value; const enabled = options?.enabled; - return new ParameterResourcePromiseImpl(this._withOptionalStringInternal(value, enabled)); + return new ParameterResourcePromiseImpl(this._withOptionalStringInternal(value, enabled), this._client); } /** @internal */ @@ -18662,7 +18846,7 @@ class ParameterResourceImpl extends ResourceBuilderBase /** Configures the resource with a DTO */ withConfig(config: TestConfigDto): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._withConfigInternal(config)); + return new ParameterResourcePromiseImpl(this._withConfigInternal(config), this._client); } /** @internal */ @@ -18677,7 +18861,7 @@ class ParameterResourceImpl extends ResourceBuilderBase /** Sets the created timestamp */ withCreatedAt(createdAt: string): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._withCreatedAtInternal(createdAt)); + return new ParameterResourcePromiseImpl(this._withCreatedAtInternal(createdAt), this._client); } /** @internal */ @@ -18692,7 +18876,7 @@ class ParameterResourceImpl extends ResourceBuilderBase /** Sets the modified timestamp */ withModifiedAt(modifiedAt: string): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._withModifiedAtInternal(modifiedAt)); + return new ParameterResourcePromiseImpl(this._withModifiedAtInternal(modifiedAt), this._client); } /** @internal */ @@ -18707,7 +18891,7 @@ class ParameterResourceImpl extends ResourceBuilderBase /** Sets the correlation ID */ withCorrelationId(correlationId: string): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._withCorrelationIdInternal(correlationId)); + return new ParameterResourcePromiseImpl(this._withCorrelationIdInternal(correlationId), this._client); } /** @internal */ @@ -18729,7 +18913,7 @@ class ParameterResourceImpl extends ResourceBuilderBase /** Configures with optional callback */ withOptionalCallback(options?: WithOptionalCallbackOptions): ParameterResourcePromise { const callback = options?.callback; - return new ParameterResourcePromiseImpl(this._withOptionalCallbackInternal(callback)); + return new ParameterResourcePromiseImpl(this._withOptionalCallbackInternal(callback), this._client); } /** @internal */ @@ -18744,7 +18928,7 @@ class ParameterResourceImpl extends ResourceBuilderBase /** Sets the resource status */ withStatus(status: TestResourceStatus): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._withStatusInternal(status)); + return new ParameterResourcePromiseImpl(this._withStatusInternal(status), this._client); } /** @internal */ @@ -18759,7 +18943,7 @@ class ParameterResourceImpl extends ResourceBuilderBase /** Configures with nested DTO */ withNestedConfig(config: TestNestedDto): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._withNestedConfigInternal(config)); + return new ParameterResourcePromiseImpl(this._withNestedConfigInternal(config), this._client); } /** @internal */ @@ -18779,11 +18963,12 @@ class ParameterResourceImpl extends ResourceBuilderBase /** Adds validation callback */ withValidator(validator: (arg: TestResourceContext) => Promise): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._withValidatorInternal(validator)); + return new ParameterResourcePromiseImpl(this._withValidatorInternal(validator), this._client); } /** @internal */ - private async _testWaitForInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _testWaitForInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/testWaitFor', @@ -18793,12 +18978,13 @@ class ParameterResourceImpl extends ResourceBuilderBase } /** Waits for another resource (test version) */ - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._testWaitForInternal(dependency)); + testWaitFor(dependency: Awaitable): ParameterResourcePromise { + return new ParameterResourcePromiseImpl(this._testWaitForInternal(dependency), this._client); } /** @internal */ - private async _withDependencyInternal(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withDependencyInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/withDependency', @@ -18808,12 +18994,13 @@ class ParameterResourceImpl extends ResourceBuilderBase } /** Adds a dependency on another resource */ - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._withDependencyInternal(dependency)); + withDependency(dependency: Awaitable): ParameterResourcePromise { + return new ParameterResourcePromiseImpl(this._withDependencyInternal(dependency), this._client); } /** @internal */ - private async _withUnionDependencyInternal(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withUnionDependencyInternal(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/withUnionDependency', @@ -18823,8 +19010,8 @@ class ParameterResourceImpl extends ResourceBuilderBase } /** Adds a dependency from a string or another resource */ - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._withUnionDependencyInternal(dependency)); + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): ParameterResourcePromise { + return new ParameterResourcePromiseImpl(this._withUnionDependencyInternal(dependency), this._client); } /** @internal */ @@ -18839,7 +19026,7 @@ class ParameterResourceImpl extends ResourceBuilderBase /** Sets the endpoints */ withEndpoints(endpoints: string[]): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._withEndpointsInternal(endpoints)); + return new ParameterResourcePromiseImpl(this._withEndpointsInternal(endpoints), this._client); } /** @internal */ @@ -18858,7 +19045,7 @@ class ParameterResourceImpl extends ResourceBuilderBase /** Performs a cancellable operation */ withCancellableOperation(operation: (arg: CancellationToken) => Promise): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._withCancellableOperationInternal(operation)); + return new ParameterResourcePromiseImpl(this._withCancellableOperationInternal(operation), this._client); } /** @internal */ @@ -18873,7 +19060,7 @@ class ParameterResourceImpl extends ResourceBuilderBase /** Adds a label to the resource */ withMergeLabel(label: string): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._withMergeLabelInternal(label)); + return new ParameterResourcePromiseImpl(this._withMergeLabelInternal(label), this._client); } /** @internal */ @@ -18888,7 +19075,7 @@ class ParameterResourceImpl extends ResourceBuilderBase /** Adds a categorized label to the resource */ withMergeLabelCategorized(label: string, category: string): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._withMergeLabelCategorizedInternal(label, category)); + return new ParameterResourcePromiseImpl(this._withMergeLabelCategorizedInternal(label, category), this._client); } /** @internal */ @@ -18903,7 +19090,7 @@ class ParameterResourceImpl extends ResourceBuilderBase /** Configures a named endpoint */ withMergeEndpoint(endpointName: string, port: number): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._withMergeEndpointInternal(endpointName, port)); + return new ParameterResourcePromiseImpl(this._withMergeEndpointInternal(endpointName, port), this._client); } /** @internal */ @@ -18918,7 +19105,7 @@ class ParameterResourceImpl extends ResourceBuilderBase /** Configures a named endpoint with scheme */ withMergeEndpointScheme(endpointName: string, port: number, scheme: string): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._withMergeEndpointSchemeInternal(endpointName, port, scheme)); + return new ParameterResourcePromiseImpl(this._withMergeEndpointSchemeInternal(endpointName, port, scheme), this._client); } /** @internal */ @@ -18937,7 +19124,7 @@ class ParameterResourceImpl extends ResourceBuilderBase withMergeLogging(logLevel: string, options?: WithMergeLoggingOptions): ParameterResourcePromise { const enableConsole = options?.enableConsole; const maxFiles = options?.maxFiles; - return new ParameterResourcePromiseImpl(this._withMergeLoggingInternal(logLevel, enableConsole, maxFiles)); + return new ParameterResourcePromiseImpl(this._withMergeLoggingInternal(logLevel, enableConsole, maxFiles), this._client); } /** @internal */ @@ -18956,7 +19143,7 @@ class ParameterResourceImpl extends ResourceBuilderBase withMergeLoggingPath(logLevel: string, logPath: string, options?: WithMergeLoggingPathOptions): ParameterResourcePromise { const enableConsole = options?.enableConsole; const maxFiles = options?.maxFiles; - return new ParameterResourcePromiseImpl(this._withMergeLoggingPathInternal(logLevel, logPath, enableConsole, maxFiles)); + return new ParameterResourcePromiseImpl(this._withMergeLoggingPathInternal(logLevel, logPath, enableConsole, maxFiles), this._client); } /** @internal */ @@ -18971,7 +19158,7 @@ class ParameterResourceImpl extends ResourceBuilderBase /** Configures a route */ withMergeRoute(path: string, method: string, handler: string, priority: number): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._withMergeRouteInternal(path, method, handler, priority)); + return new ParameterResourcePromiseImpl(this._withMergeRouteInternal(path, method, handler, priority), this._client); } /** @internal */ @@ -18986,7 +19173,7 @@ class ParameterResourceImpl extends ResourceBuilderBase /** Configures a route with middleware */ withMergeRouteMiddleware(path: string, method: string, handler: string, priority: number, middleware: string): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._withMergeRouteMiddlewareInternal(path, method, handler, priority, middleware)); + return new ParameterResourcePromiseImpl(this._withMergeRouteMiddlewareInternal(path, method, handler, priority, middleware), this._client); } } @@ -18997,7 +19184,9 @@ class ParameterResourceImpl extends ResourceBuilderBase * await builder.addSomething().withX().withY(); */ class ParameterResourcePromiseImpl implements ParameterResourcePromise { - constructor(private _promise: Promise) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: ParameterResource) => TResult1 | PromiseLike) | null, @@ -19007,93 +19196,93 @@ class ParameterResourcePromiseImpl implements ParameterResourcePromise { } /** Configures a resource to use a container registry */ - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withContainerRegistry(registry))); + withContainerRegistry(registry: Awaitable): ParameterResourcePromise { + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withContainerRegistry(registry)), this._client); } /** Sets the base image for a Dockerfile build */ withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withDockerfileBaseImage(options))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withDockerfileBaseImage(options)), this._client); } /** Sets a parameter description */ withDescription(description: string, options?: WithDescriptionOptions): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withDescription(description, options))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withDescription(description, options)), this._client); } /** Adds a required command dependency */ withRequiredCommand(command: string, options?: WithRequiredCommandOptions): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withRequiredCommand(command, options))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withRequiredCommand(command, options)), this._client); } /** Customizes displayed URLs via callback */ withUrlsCallback(callback: (obj: ResourceUrlsCallbackContext) => Promise): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withUrlsCallback(callback))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withUrlsCallback(callback)), this._client); } /** Adds or modifies displayed URLs */ withUrl(url: string, options?: WithUrlOptions): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withUrl(url, options))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withUrl(url, options)), this._client); } /** Adds a URL using a reference expression */ withUrlExpression(url: ReferenceExpression, options?: WithUrlExpressionOptions): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withUrlExpression(url, options))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withUrlExpression(url, options)), this._client); } /** Customizes the URL for a specific endpoint via callback */ withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpoint(endpointName, callback))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpoint(endpointName, callback)), this._client); } /** Excludes the resource from the deployment manifest */ excludeFromManifest(): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.excludeFromManifest())); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.excludeFromManifest()), this._client); } /** Prevents resource from starting automatically */ withExplicitStart(): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withExplicitStart())); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withExplicitStart()), this._client); } /** Adds a health check by key */ withHealthCheck(key: string): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withHealthCheck(key))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withHealthCheck(key)), this._client); } /** Adds a resource command */ withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withCommand(name, displayName, executeCommand, options))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withCommand(name, displayName, executeCommand, options)), this._client); } /** Sets the parent relationship */ - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withParentRelationship(parent))); + withParentRelationship(parent: Awaitable): ParameterResourcePromise { + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withParentRelationship(parent)), this._client); } /** Sets a child relationship */ - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withChildRelationship(child))); + withChildRelationship(child: Awaitable): ParameterResourcePromise { + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withChildRelationship(child)), this._client); } /** Sets the icon for the resource */ withIconName(iconName: string, options?: WithIconNameOptions): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withIconName(iconName, options))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withIconName(iconName, options)), this._client); } /** Excludes the resource from MCP server exposure */ excludeFromMcp(): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.excludeFromMcp())); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.excludeFromMcp()), this._client); } /** Adds a pipeline step to the resource */ withPipelineStepFactory(stepName: string, callback: (arg: PipelineStepContext) => Promise, options?: WithPipelineStepFactoryOptions): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withPipelineStepFactory(stepName, callback, options))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withPipelineStepFactory(stepName, callback, options)), this._client); } /** Configures pipeline step dependencies via a callback */ withPipelineConfiguration(callback: (obj: PipelineConfigurationContext) => Promise): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withPipelineConfiguration(callback))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withPipelineConfiguration(callback)), this._client); } /** Gets the resource name */ @@ -19103,132 +19292,132 @@ class ParameterResourcePromiseImpl implements ParameterResourcePromise { /** Subscribes to the BeforeResourceStarted event */ onBeforeResourceStarted(callback: (arg: BeforeResourceStartedEvent) => Promise): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.onBeforeResourceStarted(callback))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.onBeforeResourceStarted(callback)), this._client); } /** Subscribes to the ResourceStopped event */ onResourceStopped(callback: (arg: ResourceStoppedEvent) => Promise): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.onResourceStopped(callback))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.onResourceStopped(callback)), this._client); } /** Subscribes to the InitializeResource event */ onInitializeResource(callback: (arg: InitializeResourceEvent) => Promise): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.onInitializeResource(callback))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.onInitializeResource(callback)), this._client); } /** Subscribes to the ResourceReady event */ onResourceReady(callback: (arg: ResourceReadyEvent) => Promise): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.onResourceReady(callback))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.onResourceReady(callback)), this._client); } /** Adds an optional string parameter */ withOptionalString(options?: WithOptionalStringOptions): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withOptionalString(options))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withOptionalString(options)), this._client); } /** Configures the resource with a DTO */ withConfig(config: TestConfigDto): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withConfig(config))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withConfig(config)), this._client); } /** Sets the created timestamp */ withCreatedAt(createdAt: string): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withCreatedAt(createdAt))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withCreatedAt(createdAt)), this._client); } /** Sets the modified timestamp */ withModifiedAt(modifiedAt: string): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withModifiedAt(modifiedAt))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withModifiedAt(modifiedAt)), this._client); } /** Sets the correlation ID */ withCorrelationId(correlationId: string): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withCorrelationId(correlationId))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withCorrelationId(correlationId)), this._client); } /** Configures with optional callback */ withOptionalCallback(options?: WithOptionalCallbackOptions): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withOptionalCallback(options))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withOptionalCallback(options)), this._client); } /** Sets the resource status */ withStatus(status: TestResourceStatus): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withStatus(status))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withStatus(status)), this._client); } /** Configures with nested DTO */ withNestedConfig(config: TestNestedDto): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withNestedConfig(config))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withNestedConfig(config)), this._client); } /** Adds validation callback */ withValidator(validator: (arg: TestResourceContext) => Promise): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withValidator(validator))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withValidator(validator)), this._client); } /** Waits for another resource (test version) */ - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.testWaitFor(dependency))); + testWaitFor(dependency: Awaitable): ParameterResourcePromise { + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.testWaitFor(dependency)), this._client); } /** Adds a dependency on another resource */ - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withDependency(dependency))); + withDependency(dependency: Awaitable): ParameterResourcePromise { + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withDependency(dependency)), this._client); } /** Adds a dependency from a string or another resource */ - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withUnionDependency(dependency))); + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): ParameterResourcePromise { + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withUnionDependency(dependency)), this._client); } /** Sets the endpoints */ withEndpoints(endpoints: string[]): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withEndpoints(endpoints))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withEndpoints(endpoints)), this._client); } /** Performs a cancellable operation */ withCancellableOperation(operation: (arg: CancellationToken) => Promise): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withCancellableOperation(operation))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withCancellableOperation(operation)), this._client); } /** Adds a label to the resource */ withMergeLabel(label: string): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabel(label))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabel(label)), this._client); } /** Adds a categorized label to the resource */ withMergeLabelCategorized(label: string, category: string): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabelCategorized(label, category))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabelCategorized(label, category)), this._client); } /** Configures a named endpoint */ withMergeEndpoint(endpointName: string, port: number): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpoint(endpointName, port))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpoint(endpointName, port)), this._client); } /** Configures a named endpoint with scheme */ withMergeEndpointScheme(endpointName: string, port: number, scheme: string): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpointScheme(endpointName, port, scheme))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpointScheme(endpointName, port, scheme)), this._client); } /** Configures resource logging */ withMergeLogging(logLevel: string, options?: WithMergeLoggingOptions): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withMergeLogging(logLevel, options))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withMergeLogging(logLevel, options)), this._client); } /** Configures resource logging with file path */ withMergeLoggingPath(logLevel: string, logPath: string, options?: WithMergeLoggingPathOptions): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withMergeLoggingPath(logLevel, logPath, options))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withMergeLoggingPath(logLevel, logPath, options)), this._client); } /** Configures a route */ withMergeRoute(path: string, method: string, handler: string, priority: number): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withMergeRoute(path, method, handler, priority))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withMergeRoute(path, method, handler, priority)), this._client); } /** Configures a route with middleware */ withMergeRouteMiddleware(path: string, method: string, handler: string, priority: number, middleware: string): ParameterResourcePromise { - return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withMergeRouteMiddleware(path, method, handler, priority, middleware))); + return new ParameterResourcePromiseImpl(this._promise.then(obj => obj.withMergeRouteMiddleware(path, method, handler, priority, middleware)), this._client); } } @@ -19239,7 +19428,7 @@ class ParameterResourcePromiseImpl implements ParameterResourcePromise { export interface ProjectResource { toJSON(): MarshalledHandle; - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ProjectResourcePromise; + withContainerRegistry(registry: Awaitable): ProjectResourcePromise; withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): ProjectResourcePromise; withMcpServer(options?: WithMcpServerOptions): ProjectResourcePromise; withOtlpExporter(): ProjectResourcePromise; @@ -19248,18 +19437,18 @@ export interface ProjectResource { disableForwardedHeaders(): ProjectResourcePromise; publishAsDockerFile(options?: PublishAsDockerFileOptions): ProjectResourcePromise; withRequiredCommand(command: string, options?: WithRequiredCommandOptions): ProjectResourcePromise; - withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression): ProjectResourcePromise; + withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): ProjectResourcePromise; withEnvironmentExpression(name: string, value: ReferenceExpression): ProjectResourcePromise; withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): ProjectResourcePromise; - withEnvironmentEndpoint(name: string, endpointReference: EndpointReference): ProjectResourcePromise; - withEnvironmentParameter(name: string, parameter: ParameterResource): ProjectResourcePromise; - withEnvironmentConnectionString(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ProjectResourcePromise; + withEnvironmentEndpoint(name: string, endpointReference: Awaitable): ProjectResourcePromise; + withEnvironmentParameter(name: string, parameter: Awaitable): ProjectResourcePromise; + withEnvironmentConnectionString(envVarName: string, resource: Awaitable): ProjectResourcePromise; withArgs(args: string[]): ProjectResourcePromise; withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) => Promise): ProjectResourcePromise; - withReference(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WithReferenceOptions): ProjectResourcePromise; + withReference(source: Awaitable, options?: WithReferenceOptions): ProjectResourcePromise; withReferenceUri(name: string, uri: string): ProjectResourcePromise; - withReferenceExternalService(externalService: ExternalServiceResource): ProjectResourcePromise; - withReferenceEndpoint(endpointReference: EndpointReference): ProjectResourcePromise; + withReferenceExternalService(externalService: Awaitable): ProjectResourcePromise; + withReferenceEndpoint(endpointReference: Awaitable): ProjectResourcePromise; withEndpoint(options?: WithEndpointOptions): ProjectResourcePromise; withHttpEndpoint(options?: WithHttpEndpointOptions): ProjectResourcePromise; withHttpsEndpoint(options?: WithHttpsEndpointOptions): ProjectResourcePromise; @@ -19271,14 +19460,14 @@ export interface ProjectResource { withUrlExpression(url: ReferenceExpression, options?: WithUrlExpressionOptions): ProjectResourcePromise; withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): ProjectResourcePromise; withUrlForEndpointFactory(endpointName: string, callback: (arg: EndpointReference) => Promise): ProjectResourcePromise; - publishWithContainerFiles(source: ResourceWithContainerFiles, destinationPath: string): ProjectResourcePromise; + publishWithContainerFiles(source: Awaitable, destinationPath: string): ProjectResourcePromise; excludeFromManifest(): ProjectResourcePromise; - waitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ProjectResourcePromise; - waitForWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): ProjectResourcePromise; - waitForStart(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ProjectResourcePromise; - waitForStartWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): ProjectResourcePromise; + waitFor(dependency: Awaitable): ProjectResourcePromise; + waitForWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): ProjectResourcePromise; + waitForStart(dependency: Awaitable): ProjectResourcePromise; + waitForStartWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): ProjectResourcePromise; withExplicitStart(): ProjectResourcePromise; - waitForCompletion(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WaitForCompletionOptions): ProjectResourcePromise; + waitForCompletion(dependency: Awaitable, options?: WaitForCompletionOptions): ProjectResourcePromise; withHealthCheck(key: string): ProjectResourcePromise; withHttpHealthCheck(options?: WithHttpHealthCheckOptions): ProjectResourcePromise; withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): ProjectResourcePromise; @@ -19286,8 +19475,8 @@ export interface ProjectResource { withCertificateTrustScope(scope: CertificateTrustScope): ProjectResourcePromise; withHttpsDeveloperCertificate(options?: WithHttpsDeveloperCertificateOptions): ProjectResourcePromise; withoutHttpsCertificate(): ProjectResourcePromise; - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ProjectResourcePromise; - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ProjectResourcePromise; + withParentRelationship(parent: Awaitable): ProjectResourcePromise; + withChildRelationship(child: Awaitable): ProjectResourcePromise; withIconName(iconName: string, options?: WithIconNameOptions): ProjectResourcePromise; withHttpProbe(probeType: ProbeType, options?: WithHttpProbeOptions): ProjectResourcePromise; excludeFromMcp(): ProjectResourcePromise; @@ -19311,9 +19500,9 @@ export interface ProjectResource { withStatus(status: TestResourceStatus): ProjectResourcePromise; withNestedConfig(config: TestNestedDto): ProjectResourcePromise; withValidator(validator: (arg: TestResourceContext) => Promise): ProjectResourcePromise; - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ProjectResourcePromise; - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ProjectResourcePromise; - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ProjectResourcePromise; + testWaitFor(dependency: Awaitable): ProjectResourcePromise; + withDependency(dependency: Awaitable): ProjectResourcePromise; + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): ProjectResourcePromise; withEndpoints(endpoints: string[]): ProjectResourcePromise; withEnvironmentVariables(variables: Record): ProjectResourcePromise; withCancellableOperation(operation: (arg: CancellationToken) => Promise): ProjectResourcePromise; @@ -19328,7 +19517,7 @@ export interface ProjectResource { } export interface ProjectResourcePromise extends PromiseLike { - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ProjectResourcePromise; + withContainerRegistry(registry: Awaitable): ProjectResourcePromise; withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): ProjectResourcePromise; withMcpServer(options?: WithMcpServerOptions): ProjectResourcePromise; withOtlpExporter(): ProjectResourcePromise; @@ -19337,18 +19526,18 @@ export interface ProjectResourcePromise extends PromiseLike { disableForwardedHeaders(): ProjectResourcePromise; publishAsDockerFile(options?: PublishAsDockerFileOptions): ProjectResourcePromise; withRequiredCommand(command: string, options?: WithRequiredCommandOptions): ProjectResourcePromise; - withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression): ProjectResourcePromise; + withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): ProjectResourcePromise; withEnvironmentExpression(name: string, value: ReferenceExpression): ProjectResourcePromise; withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): ProjectResourcePromise; - withEnvironmentEndpoint(name: string, endpointReference: EndpointReference): ProjectResourcePromise; - withEnvironmentParameter(name: string, parameter: ParameterResource): ProjectResourcePromise; - withEnvironmentConnectionString(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ProjectResourcePromise; + withEnvironmentEndpoint(name: string, endpointReference: Awaitable): ProjectResourcePromise; + withEnvironmentParameter(name: string, parameter: Awaitable): ProjectResourcePromise; + withEnvironmentConnectionString(envVarName: string, resource: Awaitable): ProjectResourcePromise; withArgs(args: string[]): ProjectResourcePromise; withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) => Promise): ProjectResourcePromise; - withReference(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WithReferenceOptions): ProjectResourcePromise; + withReference(source: Awaitable, options?: WithReferenceOptions): ProjectResourcePromise; withReferenceUri(name: string, uri: string): ProjectResourcePromise; - withReferenceExternalService(externalService: ExternalServiceResource): ProjectResourcePromise; - withReferenceEndpoint(endpointReference: EndpointReference): ProjectResourcePromise; + withReferenceExternalService(externalService: Awaitable): ProjectResourcePromise; + withReferenceEndpoint(endpointReference: Awaitable): ProjectResourcePromise; withEndpoint(options?: WithEndpointOptions): ProjectResourcePromise; withHttpEndpoint(options?: WithHttpEndpointOptions): ProjectResourcePromise; withHttpsEndpoint(options?: WithHttpsEndpointOptions): ProjectResourcePromise; @@ -19360,14 +19549,14 @@ export interface ProjectResourcePromise extends PromiseLike { withUrlExpression(url: ReferenceExpression, options?: WithUrlExpressionOptions): ProjectResourcePromise; withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): ProjectResourcePromise; withUrlForEndpointFactory(endpointName: string, callback: (arg: EndpointReference) => Promise): ProjectResourcePromise; - publishWithContainerFiles(source: ResourceWithContainerFiles, destinationPath: string): ProjectResourcePromise; + publishWithContainerFiles(source: Awaitable, destinationPath: string): ProjectResourcePromise; excludeFromManifest(): ProjectResourcePromise; - waitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ProjectResourcePromise; - waitForWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): ProjectResourcePromise; - waitForStart(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ProjectResourcePromise; - waitForStartWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): ProjectResourcePromise; + waitFor(dependency: Awaitable): ProjectResourcePromise; + waitForWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): ProjectResourcePromise; + waitForStart(dependency: Awaitable): ProjectResourcePromise; + waitForStartWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): ProjectResourcePromise; withExplicitStart(): ProjectResourcePromise; - waitForCompletion(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WaitForCompletionOptions): ProjectResourcePromise; + waitForCompletion(dependency: Awaitable, options?: WaitForCompletionOptions): ProjectResourcePromise; withHealthCheck(key: string): ProjectResourcePromise; withHttpHealthCheck(options?: WithHttpHealthCheckOptions): ProjectResourcePromise; withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): ProjectResourcePromise; @@ -19375,8 +19564,8 @@ export interface ProjectResourcePromise extends PromiseLike { withCertificateTrustScope(scope: CertificateTrustScope): ProjectResourcePromise; withHttpsDeveloperCertificate(options?: WithHttpsDeveloperCertificateOptions): ProjectResourcePromise; withoutHttpsCertificate(): ProjectResourcePromise; - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ProjectResourcePromise; - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ProjectResourcePromise; + withParentRelationship(parent: Awaitable): ProjectResourcePromise; + withChildRelationship(child: Awaitable): ProjectResourcePromise; withIconName(iconName: string, options?: WithIconNameOptions): ProjectResourcePromise; withHttpProbe(probeType: ProbeType, options?: WithHttpProbeOptions): ProjectResourcePromise; excludeFromMcp(): ProjectResourcePromise; @@ -19400,9 +19589,9 @@ export interface ProjectResourcePromise extends PromiseLike { withStatus(status: TestResourceStatus): ProjectResourcePromise; withNestedConfig(config: TestNestedDto): ProjectResourcePromise; withValidator(validator: (arg: TestResourceContext) => Promise): ProjectResourcePromise; - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ProjectResourcePromise; - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ProjectResourcePromise; - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ProjectResourcePromise; + testWaitFor(dependency: Awaitable): ProjectResourcePromise; + withDependency(dependency: Awaitable): ProjectResourcePromise; + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): ProjectResourcePromise; withEndpoints(endpoints: string[]): ProjectResourcePromise; withEnvironmentVariables(variables: Record): ProjectResourcePromise; withCancellableOperation(operation: (arg: CancellationToken) => Promise): ProjectResourcePromise; @@ -19426,7 +19615,8 @@ class ProjectResourceImpl extends ResourceBuilderBase imp } /** @internal */ - private async _withContainerRegistryInternal(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _withContainerRegistryInternal(registry: Awaitable): Promise { + registry = isPromiseLike(registry) ? await registry : registry; const rpcArgs: Record = { builder: this._handle, registry }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withContainerRegistry', @@ -19436,8 +19626,8 @@ class ProjectResourceImpl extends ResourceBuilderBase imp } /** Configures a resource to use a container registry */ - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withContainerRegistryInternal(registry)); + withContainerRegistry(registry: Awaitable): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._withContainerRegistryInternal(registry), this._client); } /** @internal */ @@ -19456,7 +19646,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): ProjectResourcePromise { const buildImage = options?.buildImage; const runtimeImage = options?.runtimeImage; - return new ProjectResourcePromiseImpl(this._withDockerfileBaseImageInternal(buildImage, runtimeImage)); + return new ProjectResourcePromiseImpl(this._withDockerfileBaseImageInternal(buildImage, runtimeImage), this._client); } /** @internal */ @@ -19475,7 +19665,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp withMcpServer(options?: WithMcpServerOptions): ProjectResourcePromise { const path = options?.path; const endpointName = options?.endpointName; - return new ProjectResourcePromiseImpl(this._withMcpServerInternal(path, endpointName)); + return new ProjectResourcePromiseImpl(this._withMcpServerInternal(path, endpointName), this._client); } /** @internal */ @@ -19490,7 +19680,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Configures OTLP telemetry export */ withOtlpExporter(): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withOtlpExporterInternal()); + return new ProjectResourcePromiseImpl(this._withOtlpExporterInternal(), this._client); } /** @internal */ @@ -19505,7 +19695,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Configures OTLP telemetry export with specific protocol */ withOtlpExporterProtocol(protocol: OtlpProtocol): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withOtlpExporterProtocolInternal(protocol)); + return new ProjectResourcePromiseImpl(this._withOtlpExporterProtocolInternal(protocol), this._client); } /** @internal */ @@ -19520,7 +19710,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Sets the number of replicas */ withReplicas(replicas: number): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withReplicasInternal(replicas)); + return new ProjectResourcePromiseImpl(this._withReplicasInternal(replicas), this._client); } /** @internal */ @@ -19535,7 +19725,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Disables forwarded headers for the project */ disableForwardedHeaders(): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._disableForwardedHeadersInternal()); + return new ProjectResourcePromiseImpl(this._disableForwardedHeadersInternal(), this._client); } /** @internal */ @@ -19557,7 +19747,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Publishes a project as a Docker file with optional container configuration */ publishAsDockerFile(options?: PublishAsDockerFileOptions): ProjectResourcePromise { const configure = options?.configure; - return new ProjectResourcePromiseImpl(this._publishAsDockerFileInternal(configure)); + return new ProjectResourcePromiseImpl(this._publishAsDockerFileInternal(configure), this._client); } /** @internal */ @@ -19574,11 +19764,12 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Adds a required command dependency */ withRequiredCommand(command: string, options?: WithRequiredCommandOptions): ProjectResourcePromise { const helpLink = options?.helpLink; - return new ProjectResourcePromiseImpl(this._withRequiredCommandInternal(command, helpLink)); + return new ProjectResourcePromiseImpl(this._withRequiredCommandInternal(command, helpLink), this._client); } /** @internal */ - private async _withEnvironmentInternal(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression): Promise { + private async _withEnvironmentInternal(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): Promise { + value = isPromiseLike(value) ? await value : value; const rpcArgs: Record = { builder: this._handle, name, value }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironment', @@ -19588,8 +19779,8 @@ class ProjectResourceImpl extends ResourceBuilderBase imp } /** Sets an environment variable */ - withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withEnvironmentInternal(name, value)); + withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._withEnvironmentInternal(name, value), this._client); } /** @internal */ @@ -19607,7 +19798,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp * @deprecated ATS compatibility shim. Use withEnvironment instead. */ withEnvironmentExpression(name: string, value: ReferenceExpression): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withEnvironmentExpressionInternal(name, value)); + return new ProjectResourcePromiseImpl(this._withEnvironmentExpressionInternal(name, value), this._client); } /** @internal */ @@ -19627,11 +19818,12 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Sets environment variables via callback */ withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withEnvironmentCallbackInternal(callback)); + return new ProjectResourcePromiseImpl(this._withEnvironmentCallbackInternal(callback), this._client); } /** @internal */ - private async _withEnvironmentEndpointInternal(name: string, endpointReference: EndpointReference): Promise { + private async _withEnvironmentEndpointInternal(name: string, endpointReference: Awaitable): Promise { + endpointReference = isPromiseLike(endpointReference) ? await endpointReference : endpointReference; const rpcArgs: Record = { builder: this._handle, name, endpointReference }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironmentEndpoint', @@ -19644,12 +19836,13 @@ class ProjectResourceImpl extends ResourceBuilderBase imp * Sets an environment variable from an endpoint reference * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentEndpoint(name: string, endpointReference: EndpointReference): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withEnvironmentEndpointInternal(name, endpointReference)); + withEnvironmentEndpoint(name: string, endpointReference: Awaitable): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._withEnvironmentEndpointInternal(name, endpointReference), this._client); } /** @internal */ - private async _withEnvironmentParameterInternal(name: string, parameter: ParameterResource): Promise { + private async _withEnvironmentParameterInternal(name: string, parameter: Awaitable): Promise { + parameter = isPromiseLike(parameter) ? await parameter : parameter; const rpcArgs: Record = { builder: this._handle, name, parameter }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironmentParameter', @@ -19662,12 +19855,13 @@ class ProjectResourceImpl extends ResourceBuilderBase imp * Sets an environment variable from a parameter resource * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentParameter(name: string, parameter: ParameterResource): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withEnvironmentParameterInternal(name, parameter)); + withEnvironmentParameter(name: string, parameter: Awaitable): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._withEnvironmentParameterInternal(name, parameter), this._client); } /** @internal */ - private async _withEnvironmentConnectionStringInternal(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withEnvironmentConnectionStringInternal(envVarName: string, resource: Awaitable): Promise { + resource = isPromiseLike(resource) ? await resource : resource; const rpcArgs: Record = { builder: this._handle, envVarName, resource }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironmentConnectionString', @@ -19680,8 +19874,8 @@ class ProjectResourceImpl extends ResourceBuilderBase imp * Sets an environment variable from a connection string resource * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentConnectionString(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withEnvironmentConnectionStringInternal(envVarName, resource)); + withEnvironmentConnectionString(envVarName: string, resource: Awaitable): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._withEnvironmentConnectionStringInternal(envVarName, resource), this._client); } /** @internal */ @@ -19696,7 +19890,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Adds arguments */ withArgs(args: string[]): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withArgsInternal(args)); + return new ProjectResourcePromiseImpl(this._withArgsInternal(args), this._client); } /** @internal */ @@ -19716,11 +19910,12 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Sets command-line arguments via callback */ withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) => Promise): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withArgsCallbackInternal(callback)); + return new ProjectResourcePromiseImpl(this._withArgsCallbackInternal(callback), this._client); } /** @internal */ - private async _withReferenceInternal(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, connectionName?: string, optional?: boolean, name?: string): Promise { + private async _withReferenceInternal(source: Awaitable, connectionName?: string, optional?: boolean, name?: string): Promise { + source = isPromiseLike(source) ? await source : source; const rpcArgs: Record = { builder: this._handle, source }; if (connectionName !== undefined) rpcArgs.connectionName = connectionName; if (optional !== undefined) rpcArgs.optional = optional; @@ -19733,11 +19928,11 @@ class ProjectResourceImpl extends ResourceBuilderBase imp } /** Adds a reference to another resource */ - withReference(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WithReferenceOptions): ProjectResourcePromise { + withReference(source: Awaitable, options?: WithReferenceOptions): ProjectResourcePromise { const connectionName = options?.connectionName; const optional = options?.optional; const name = options?.name; - return new ProjectResourcePromiseImpl(this._withReferenceInternal(source, connectionName, optional, name)); + return new ProjectResourcePromiseImpl(this._withReferenceInternal(source, connectionName, optional, name), this._client); } /** @internal */ @@ -19752,11 +19947,12 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Adds a reference to a URI */ withReferenceUri(name: string, uri: string): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withReferenceUriInternal(name, uri)); + return new ProjectResourcePromiseImpl(this._withReferenceUriInternal(name, uri), this._client); } /** @internal */ - private async _withReferenceExternalServiceInternal(externalService: ExternalServiceResource): Promise { + private async _withReferenceExternalServiceInternal(externalService: Awaitable): Promise { + externalService = isPromiseLike(externalService) ? await externalService : externalService; const rpcArgs: Record = { builder: this._handle, externalService }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withReferenceExternalService', @@ -19766,12 +19962,13 @@ class ProjectResourceImpl extends ResourceBuilderBase imp } /** Adds a reference to an external service */ - withReferenceExternalService(externalService: ExternalServiceResource): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withReferenceExternalServiceInternal(externalService)); + withReferenceExternalService(externalService: Awaitable): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._withReferenceExternalServiceInternal(externalService), this._client); } /** @internal */ - private async _withReferenceEndpointInternal(endpointReference: EndpointReference): Promise { + private async _withReferenceEndpointInternal(endpointReference: Awaitable): Promise { + endpointReference = isPromiseLike(endpointReference) ? await endpointReference : endpointReference; const rpcArgs: Record = { builder: this._handle, endpointReference }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withReferenceEndpoint', @@ -19781,8 +19978,8 @@ class ProjectResourceImpl extends ResourceBuilderBase imp } /** Adds a reference to an endpoint */ - withReferenceEndpoint(endpointReference: EndpointReference): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withReferenceEndpointInternal(endpointReference)); + withReferenceEndpoint(endpointReference: Awaitable): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._withReferenceEndpointInternal(endpointReference), this._client); } /** @internal */ @@ -19813,7 +20010,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp const isProxied = options?.isProxied; const isExternal = options?.isExternal; const protocol = options?.protocol; - return new ProjectResourcePromiseImpl(this._withEndpointInternal(port, targetPort, scheme, name, env, isProxied, isExternal, protocol)); + return new ProjectResourcePromiseImpl(this._withEndpointInternal(port, targetPort, scheme, name, env, isProxied, isExternal, protocol), this._client); } /** @internal */ @@ -19838,7 +20035,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp const name = options?.name; const env = options?.env; const isProxied = options?.isProxied; - return new ProjectResourcePromiseImpl(this._withHttpEndpointInternal(port, targetPort, name, env, isProxied)); + return new ProjectResourcePromiseImpl(this._withHttpEndpointInternal(port, targetPort, name, env, isProxied), this._client); } /** @internal */ @@ -19863,7 +20060,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp const name = options?.name; const env = options?.env; const isProxied = options?.isProxied; - return new ProjectResourcePromiseImpl(this._withHttpsEndpointInternal(port, targetPort, name, env, isProxied)); + return new ProjectResourcePromiseImpl(this._withHttpsEndpointInternal(port, targetPort, name, env, isProxied), this._client); } /** @internal */ @@ -19878,7 +20075,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Makes HTTP endpoints externally accessible */ withExternalHttpEndpoints(): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withExternalHttpEndpointsInternal()); + return new ProjectResourcePromiseImpl(this._withExternalHttpEndpointsInternal(), this._client); } /** Gets an endpoint reference */ @@ -19902,7 +20099,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Configures resource for HTTP/2 */ asHttp2Service(): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._asHttp2ServiceInternal()); + return new ProjectResourcePromiseImpl(this._asHttp2ServiceInternal(), this._client); } /** @internal */ @@ -19922,7 +20119,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Customizes displayed URLs via callback */ withUrlsCallback(callback: (obj: ResourceUrlsCallbackContext) => Promise): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withUrlsCallbackInternal(callback)); + return new ProjectResourcePromiseImpl(this._withUrlsCallbackInternal(callback), this._client); } /** @internal */ @@ -19939,7 +20136,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Adds or modifies displayed URLs */ withUrl(url: string, options?: WithUrlOptions): ProjectResourcePromise { const displayText = options?.displayText; - return new ProjectResourcePromiseImpl(this._withUrlInternal(url, displayText)); + return new ProjectResourcePromiseImpl(this._withUrlInternal(url, displayText), this._client); } /** @internal */ @@ -19956,7 +20153,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Adds a URL using a reference expression */ withUrlExpression(url: ReferenceExpression, options?: WithUrlExpressionOptions): ProjectResourcePromise { const displayText = options?.displayText; - return new ProjectResourcePromiseImpl(this._withUrlExpressionInternal(url, displayText)); + return new ProjectResourcePromiseImpl(this._withUrlExpressionInternal(url, displayText), this._client); } /** @internal */ @@ -19975,7 +20172,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Customizes the URL for a specific endpoint via callback */ withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withUrlForEndpointInternal(endpointName, callback)); + return new ProjectResourcePromiseImpl(this._withUrlForEndpointInternal(endpointName, callback), this._client); } /** @internal */ @@ -19995,11 +20192,12 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Adds a URL for a specific endpoint via factory callback */ withUrlForEndpointFactory(endpointName: string, callback: (arg: EndpointReference) => Promise): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withUrlForEndpointFactoryInternal(endpointName, callback)); + return new ProjectResourcePromiseImpl(this._withUrlForEndpointFactoryInternal(endpointName, callback), this._client); } /** @internal */ - private async _publishWithContainerFilesInternal(source: ResourceWithContainerFiles, destinationPath: string): Promise { + private async _publishWithContainerFilesInternal(source: Awaitable, destinationPath: string): Promise { + source = isPromiseLike(source) ? await source : source; const rpcArgs: Record = { builder: this._handle, source, destinationPath }; const result = await this._client.invokeCapability( 'Aspire.Hosting/publishWithContainerFilesFromResource', @@ -20009,8 +20207,8 @@ class ProjectResourceImpl extends ResourceBuilderBase imp } /** Configures the resource to copy container files from the specified source during publishing */ - publishWithContainerFiles(source: ResourceWithContainerFiles, destinationPath: string): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._publishWithContainerFilesInternal(source, destinationPath)); + publishWithContainerFiles(source: Awaitable, destinationPath: string): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._publishWithContainerFilesInternal(source, destinationPath), this._client); } /** @internal */ @@ -20025,11 +20223,12 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Excludes the resource from the deployment manifest */ excludeFromManifest(): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._excludeFromManifestInternal()); + return new ProjectResourcePromiseImpl(this._excludeFromManifestInternal(), this._client); } /** @internal */ - private async _waitForInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _waitForInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForResource', @@ -20039,12 +20238,13 @@ class ProjectResourceImpl extends ResourceBuilderBase imp } /** Waits for another resource to be ready */ - waitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._waitForInternal(dependency)); + waitFor(dependency: Awaitable): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._waitForInternal(dependency), this._client); } /** @internal */ - private async _waitForWithBehaviorInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): Promise { + private async _waitForWithBehaviorInternal(dependency: Awaitable, waitBehavior: WaitBehavior): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency, waitBehavior }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForWithBehavior', @@ -20054,12 +20254,13 @@ class ProjectResourceImpl extends ResourceBuilderBase imp } /** Waits for another resource with specific behavior */ - waitForWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._waitForWithBehaviorInternal(dependency, waitBehavior)); + waitForWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._waitForWithBehaviorInternal(dependency, waitBehavior), this._client); } /** @internal */ - private async _waitForStartInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _waitForStartInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForResourceStart', @@ -20069,12 +20270,13 @@ class ProjectResourceImpl extends ResourceBuilderBase imp } /** Waits for another resource to start */ - waitForStart(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._waitForStartInternal(dependency)); + waitForStart(dependency: Awaitable): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._waitForStartInternal(dependency), this._client); } /** @internal */ - private async _waitForStartWithBehaviorInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): Promise { + private async _waitForStartWithBehaviorInternal(dependency: Awaitable, waitBehavior: WaitBehavior): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency, waitBehavior }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForStartWithBehavior', @@ -20084,8 +20286,8 @@ class ProjectResourceImpl extends ResourceBuilderBase imp } /** Waits for another resource to start with specific behavior */ - waitForStartWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._waitForStartWithBehaviorInternal(dependency, waitBehavior)); + waitForStartWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._waitForStartWithBehaviorInternal(dependency, waitBehavior), this._client); } /** @internal */ @@ -20100,11 +20302,12 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Prevents resource from starting automatically */ withExplicitStart(): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withExplicitStartInternal()); + return new ProjectResourcePromiseImpl(this._withExplicitStartInternal(), this._client); } /** @internal */ - private async _waitForCompletionInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, exitCode?: number): Promise { + private async _waitForCompletionInternal(dependency: Awaitable, exitCode?: number): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; if (exitCode !== undefined) rpcArgs.exitCode = exitCode; const result = await this._client.invokeCapability( @@ -20115,9 +20318,9 @@ class ProjectResourceImpl extends ResourceBuilderBase imp } /** Waits for resource completion */ - waitForCompletion(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WaitForCompletionOptions): ProjectResourcePromise { + waitForCompletion(dependency: Awaitable, options?: WaitForCompletionOptions): ProjectResourcePromise { const exitCode = options?.exitCode; - return new ProjectResourcePromiseImpl(this._waitForCompletionInternal(dependency, exitCode)); + return new ProjectResourcePromiseImpl(this._waitForCompletionInternal(dependency, exitCode), this._client); } /** @internal */ @@ -20132,7 +20335,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Adds a health check by key */ withHealthCheck(key: string): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withHealthCheckInternal(key)); + return new ProjectResourcePromiseImpl(this._withHealthCheckInternal(key), this._client); } /** @internal */ @@ -20153,7 +20356,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp const path = options?.path; const statusCode = options?.statusCode; const endpointName = options?.endpointName; - return new ProjectResourcePromiseImpl(this._withHttpHealthCheckInternal(path, statusCode, endpointName)); + return new ProjectResourcePromiseImpl(this._withHttpHealthCheckInternal(path, statusCode, endpointName), this._client); } /** @internal */ @@ -20175,7 +20378,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Adds a resource command */ withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): ProjectResourcePromise { const commandOptions = options?.commandOptions; - return new ProjectResourcePromiseImpl(this._withCommandInternal(name, displayName, executeCommand, commandOptions)); + return new ProjectResourcePromiseImpl(this._withCommandInternal(name, displayName, executeCommand, commandOptions), this._client); } /** @internal */ @@ -20190,7 +20393,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Configures developer certificate trust */ withDeveloperCertificateTrust(trust: boolean): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withDeveloperCertificateTrustInternal(trust)); + return new ProjectResourcePromiseImpl(this._withDeveloperCertificateTrustInternal(trust), this._client); } /** @internal */ @@ -20205,11 +20408,12 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Sets the certificate trust scope */ withCertificateTrustScope(scope: CertificateTrustScope): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withCertificateTrustScopeInternal(scope)); + return new ProjectResourcePromiseImpl(this._withCertificateTrustScopeInternal(scope), this._client); } /** @internal */ - private async _withHttpsDeveloperCertificateInternal(password?: ParameterResource): Promise { + private async _withHttpsDeveloperCertificateInternal(password?: Awaitable): Promise { + password = isPromiseLike(password) ? await password : password; const rpcArgs: Record = { builder: this._handle }; if (password !== undefined) rpcArgs.password = password; const result = await this._client.invokeCapability( @@ -20221,8 +20425,8 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Configures HTTPS with a developer certificate */ withHttpsDeveloperCertificate(options?: WithHttpsDeveloperCertificateOptions): ProjectResourcePromise { - const password = options?.password; - return new ProjectResourcePromiseImpl(this._withHttpsDeveloperCertificateInternal(password)); + let password = options?.password; + return new ProjectResourcePromiseImpl(this._withHttpsDeveloperCertificateInternal(password), this._client); } /** @internal */ @@ -20237,11 +20441,12 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Removes HTTPS certificate configuration */ withoutHttpsCertificate(): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withoutHttpsCertificateInternal()); + return new ProjectResourcePromiseImpl(this._withoutHttpsCertificateInternal(), this._client); } /** @internal */ - private async _withParentRelationshipInternal(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _withParentRelationshipInternal(parent: Awaitable): Promise { + parent = isPromiseLike(parent) ? await parent : parent; const rpcArgs: Record = { builder: this._handle, parent }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withBuilderParentRelationship', @@ -20251,12 +20456,13 @@ class ProjectResourceImpl extends ResourceBuilderBase imp } /** Sets the parent relationship */ - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withParentRelationshipInternal(parent)); + withParentRelationship(parent: Awaitable): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._withParentRelationshipInternal(parent), this._client); } /** @internal */ - private async _withChildRelationshipInternal(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _withChildRelationshipInternal(child: Awaitable): Promise { + child = isPromiseLike(child) ? await child : child; const rpcArgs: Record = { builder: this._handle, child }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withBuilderChildRelationship', @@ -20266,8 +20472,8 @@ class ProjectResourceImpl extends ResourceBuilderBase imp } /** Sets a child relationship */ - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withChildRelationshipInternal(child)); + withChildRelationship(child: Awaitable): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._withChildRelationshipInternal(child), this._client); } /** @internal */ @@ -20284,7 +20490,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Sets the icon for the resource */ withIconName(iconName: string, options?: WithIconNameOptions): ProjectResourcePromise { const iconVariant = options?.iconVariant; - return new ProjectResourcePromiseImpl(this._withIconNameInternal(iconName, iconVariant)); + return new ProjectResourcePromiseImpl(this._withIconNameInternal(iconName, iconVariant), this._client); } /** @internal */ @@ -20313,7 +20519,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp const failureThreshold = options?.failureThreshold; const successThreshold = options?.successThreshold; const endpointName = options?.endpointName; - return new ProjectResourcePromiseImpl(this._withHttpProbeInternal(probeType, path, initialDelaySeconds, periodSeconds, timeoutSeconds, failureThreshold, successThreshold, endpointName)); + return new ProjectResourcePromiseImpl(this._withHttpProbeInternal(probeType, path, initialDelaySeconds, periodSeconds, timeoutSeconds, failureThreshold, successThreshold, endpointName), this._client); } /** @internal */ @@ -20328,7 +20534,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Excludes the resource from MCP server exposure */ excludeFromMcp(): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._excludeFromMcpInternal()); + return new ProjectResourcePromiseImpl(this._excludeFromMcpInternal(), this._client); } /** @internal */ @@ -20343,7 +20549,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Sets the remote image name for publishing */ withRemoteImageName(remoteImageName: string): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withRemoteImageNameInternal(remoteImageName)); + return new ProjectResourcePromiseImpl(this._withRemoteImageNameInternal(remoteImageName), this._client); } /** @internal */ @@ -20358,7 +20564,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Sets the remote image tag for publishing */ withRemoteImageTag(remoteImageTag: string): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withRemoteImageTagInternal(remoteImageTag)); + return new ProjectResourcePromiseImpl(this._withRemoteImageTagInternal(remoteImageTag), this._client); } /** @internal */ @@ -20386,7 +20592,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp const requiredBy = options?.requiredBy; const tags = options?.tags; const description = options?.description; - return new ProjectResourcePromiseImpl(this._withPipelineStepFactoryInternal(stepName, callback, dependsOn, requiredBy, tags, description)); + return new ProjectResourcePromiseImpl(this._withPipelineStepFactoryInternal(stepName, callback, dependsOn, requiredBy, tags, description), this._client); } /** @internal */ @@ -20406,7 +20612,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Configures pipeline step dependencies via a callback */ withPipelineConfiguration(callback: (obj: PipelineConfigurationContext) => Promise): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withPipelineConfigurationInternal(callback)); + return new ProjectResourcePromiseImpl(this._withPipelineConfigurationInternal(callback), this._client); } /** Gets the resource name */ @@ -20435,7 +20641,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Subscribes to the BeforeResourceStarted event */ onBeforeResourceStarted(callback: (arg: BeforeResourceStartedEvent) => Promise): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._onBeforeResourceStartedInternal(callback)); + return new ProjectResourcePromiseImpl(this._onBeforeResourceStartedInternal(callback), this._client); } /** @internal */ @@ -20455,7 +20661,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Subscribes to the ResourceStopped event */ onResourceStopped(callback: (arg: ResourceStoppedEvent) => Promise): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._onResourceStoppedInternal(callback)); + return new ProjectResourcePromiseImpl(this._onResourceStoppedInternal(callback), this._client); } /** @internal */ @@ -20475,7 +20681,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Subscribes to the InitializeResource event */ onInitializeResource(callback: (arg: InitializeResourceEvent) => Promise): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._onInitializeResourceInternal(callback)); + return new ProjectResourcePromiseImpl(this._onInitializeResourceInternal(callback), this._client); } /** @internal */ @@ -20495,7 +20701,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Subscribes to the ResourceEndpointsAllocated event */ onResourceEndpointsAllocated(callback: (arg: ResourceEndpointsAllocatedEvent) => Promise): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._onResourceEndpointsAllocatedInternal(callback)); + return new ProjectResourcePromiseImpl(this._onResourceEndpointsAllocatedInternal(callback), this._client); } /** @internal */ @@ -20515,7 +20721,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Subscribes to the ResourceReady event */ onResourceReady(callback: (arg: ResourceReadyEvent) => Promise): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._onResourceReadyInternal(callback)); + return new ProjectResourcePromiseImpl(this._onResourceReadyInternal(callback), this._client); } /** @internal */ @@ -20534,7 +20740,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp withOptionalString(options?: WithOptionalStringOptions): ProjectResourcePromise { const value = options?.value; const enabled = options?.enabled; - return new ProjectResourcePromiseImpl(this._withOptionalStringInternal(value, enabled)); + return new ProjectResourcePromiseImpl(this._withOptionalStringInternal(value, enabled), this._client); } /** @internal */ @@ -20549,7 +20755,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Configures the resource with a DTO */ withConfig(config: TestConfigDto): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withConfigInternal(config)); + return new ProjectResourcePromiseImpl(this._withConfigInternal(config), this._client); } /** @internal */ @@ -20569,7 +20775,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Configures environment with callback (test version) */ testWithEnvironmentCallback(callback: (arg: TestEnvironmentContext) => Promise): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._testWithEnvironmentCallbackInternal(callback)); + return new ProjectResourcePromiseImpl(this._testWithEnvironmentCallbackInternal(callback), this._client); } /** @internal */ @@ -20584,7 +20790,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Sets the created timestamp */ withCreatedAt(createdAt: string): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withCreatedAtInternal(createdAt)); + return new ProjectResourcePromiseImpl(this._withCreatedAtInternal(createdAt), this._client); } /** @internal */ @@ -20599,7 +20805,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Sets the modified timestamp */ withModifiedAt(modifiedAt: string): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withModifiedAtInternal(modifiedAt)); + return new ProjectResourcePromiseImpl(this._withModifiedAtInternal(modifiedAt), this._client); } /** @internal */ @@ -20614,7 +20820,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Sets the correlation ID */ withCorrelationId(correlationId: string): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withCorrelationIdInternal(correlationId)); + return new ProjectResourcePromiseImpl(this._withCorrelationIdInternal(correlationId), this._client); } /** @internal */ @@ -20636,7 +20842,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Configures with optional callback */ withOptionalCallback(options?: WithOptionalCallbackOptions): ProjectResourcePromise { const callback = options?.callback; - return new ProjectResourcePromiseImpl(this._withOptionalCallbackInternal(callback)); + return new ProjectResourcePromiseImpl(this._withOptionalCallbackInternal(callback), this._client); } /** @internal */ @@ -20651,7 +20857,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Sets the resource status */ withStatus(status: TestResourceStatus): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withStatusInternal(status)); + return new ProjectResourcePromiseImpl(this._withStatusInternal(status), this._client); } /** @internal */ @@ -20666,7 +20872,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Configures with nested DTO */ withNestedConfig(config: TestNestedDto): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withNestedConfigInternal(config)); + return new ProjectResourcePromiseImpl(this._withNestedConfigInternal(config), this._client); } /** @internal */ @@ -20686,11 +20892,12 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Adds validation callback */ withValidator(validator: (arg: TestResourceContext) => Promise): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withValidatorInternal(validator)); + return new ProjectResourcePromiseImpl(this._withValidatorInternal(validator), this._client); } /** @internal */ - private async _testWaitForInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _testWaitForInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/testWaitFor', @@ -20700,12 +20907,13 @@ class ProjectResourceImpl extends ResourceBuilderBase imp } /** Waits for another resource (test version) */ - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._testWaitForInternal(dependency)); + testWaitFor(dependency: Awaitable): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._testWaitForInternal(dependency), this._client); } /** @internal */ - private async _withDependencyInternal(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withDependencyInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/withDependency', @@ -20715,12 +20923,13 @@ class ProjectResourceImpl extends ResourceBuilderBase imp } /** Adds a dependency on another resource */ - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withDependencyInternal(dependency)); + withDependency(dependency: Awaitable): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._withDependencyInternal(dependency), this._client); } /** @internal */ - private async _withUnionDependencyInternal(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withUnionDependencyInternal(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/withUnionDependency', @@ -20730,8 +20939,8 @@ class ProjectResourceImpl extends ResourceBuilderBase imp } /** Adds a dependency from a string or another resource */ - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withUnionDependencyInternal(dependency)); + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._withUnionDependencyInternal(dependency), this._client); } /** @internal */ @@ -20746,7 +20955,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Sets the endpoints */ withEndpoints(endpoints: string[]): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withEndpointsInternal(endpoints)); + return new ProjectResourcePromiseImpl(this._withEndpointsInternal(endpoints), this._client); } /** @internal */ @@ -20761,7 +20970,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Sets environment variables */ withEnvironmentVariables(variables: Record): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withEnvironmentVariablesInternal(variables)); + return new ProjectResourcePromiseImpl(this._withEnvironmentVariablesInternal(variables), this._client); } /** @internal */ @@ -20780,7 +20989,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Performs a cancellable operation */ withCancellableOperation(operation: (arg: CancellationToken) => Promise): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withCancellableOperationInternal(operation)); + return new ProjectResourcePromiseImpl(this._withCancellableOperationInternal(operation), this._client); } /** @internal */ @@ -20795,7 +21004,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Adds a label to the resource */ withMergeLabel(label: string): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withMergeLabelInternal(label)); + return new ProjectResourcePromiseImpl(this._withMergeLabelInternal(label), this._client); } /** @internal */ @@ -20810,7 +21019,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Adds a categorized label to the resource */ withMergeLabelCategorized(label: string, category: string): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withMergeLabelCategorizedInternal(label, category)); + return new ProjectResourcePromiseImpl(this._withMergeLabelCategorizedInternal(label, category), this._client); } /** @internal */ @@ -20825,7 +21034,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Configures a named endpoint */ withMergeEndpoint(endpointName: string, port: number): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withMergeEndpointInternal(endpointName, port)); + return new ProjectResourcePromiseImpl(this._withMergeEndpointInternal(endpointName, port), this._client); } /** @internal */ @@ -20840,7 +21049,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Configures a named endpoint with scheme */ withMergeEndpointScheme(endpointName: string, port: number, scheme: string): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withMergeEndpointSchemeInternal(endpointName, port, scheme)); + return new ProjectResourcePromiseImpl(this._withMergeEndpointSchemeInternal(endpointName, port, scheme), this._client); } /** @internal */ @@ -20859,7 +21068,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp withMergeLogging(logLevel: string, options?: WithMergeLoggingOptions): ProjectResourcePromise { const enableConsole = options?.enableConsole; const maxFiles = options?.maxFiles; - return new ProjectResourcePromiseImpl(this._withMergeLoggingInternal(logLevel, enableConsole, maxFiles)); + return new ProjectResourcePromiseImpl(this._withMergeLoggingInternal(logLevel, enableConsole, maxFiles), this._client); } /** @internal */ @@ -20878,7 +21087,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp withMergeLoggingPath(logLevel: string, logPath: string, options?: WithMergeLoggingPathOptions): ProjectResourcePromise { const enableConsole = options?.enableConsole; const maxFiles = options?.maxFiles; - return new ProjectResourcePromiseImpl(this._withMergeLoggingPathInternal(logLevel, logPath, enableConsole, maxFiles)); + return new ProjectResourcePromiseImpl(this._withMergeLoggingPathInternal(logLevel, logPath, enableConsole, maxFiles), this._client); } /** @internal */ @@ -20893,7 +21102,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Configures a route */ withMergeRoute(path: string, method: string, handler: string, priority: number): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withMergeRouteInternal(path, method, handler, priority)); + return new ProjectResourcePromiseImpl(this._withMergeRouteInternal(path, method, handler, priority), this._client); } /** @internal */ @@ -20908,7 +21117,7 @@ class ProjectResourceImpl extends ResourceBuilderBase imp /** Configures a route with middleware */ withMergeRouteMiddleware(path: string, method: string, handler: string, priority: number, middleware: string): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._withMergeRouteMiddlewareInternal(path, method, handler, priority, middleware)); + return new ProjectResourcePromiseImpl(this._withMergeRouteMiddlewareInternal(path, method, handler, priority, middleware), this._client); } } @@ -20919,7 +21128,9 @@ class ProjectResourceImpl extends ResourceBuilderBase imp * await builder.addSomething().withX().withY(); */ class ProjectResourcePromiseImpl implements ProjectResourcePromise { - constructor(private _promise: Promise) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: ProjectResource) => TResult1 | PromiseLike) | null, @@ -20929,53 +21140,53 @@ class ProjectResourcePromiseImpl implements ProjectResourcePromise { } /** Configures a resource to use a container registry */ - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withContainerRegistry(registry))); + withContainerRegistry(registry: Awaitable): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withContainerRegistry(registry)), this._client); } /** Sets the base image for a Dockerfile build */ withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withDockerfileBaseImage(options))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withDockerfileBaseImage(options)), this._client); } /** Configures an MCP server endpoint on the resource */ withMcpServer(options?: WithMcpServerOptions): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withMcpServer(options))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withMcpServer(options)), this._client); } /** Configures OTLP telemetry export */ withOtlpExporter(): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withOtlpExporter())); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withOtlpExporter()), this._client); } /** Configures OTLP telemetry export with specific protocol */ withOtlpExporterProtocol(protocol: OtlpProtocol): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withOtlpExporterProtocol(protocol))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withOtlpExporterProtocol(protocol)), this._client); } /** Sets the number of replicas */ withReplicas(replicas: number): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withReplicas(replicas))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withReplicas(replicas)), this._client); } /** Disables forwarded headers for the project */ disableForwardedHeaders(): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.disableForwardedHeaders())); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.disableForwardedHeaders()), this._client); } /** Publishes a project as a Docker file with optional container configuration */ publishAsDockerFile(options?: PublishAsDockerFileOptions): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.publishAsDockerFile(options))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.publishAsDockerFile(options)), this._client); } /** Adds a required command dependency */ withRequiredCommand(command: string, options?: WithRequiredCommandOptions): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withRequiredCommand(command, options))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withRequiredCommand(command, options)), this._client); } /** Sets an environment variable */ - withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withEnvironment(name, value))); + withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withEnvironment(name, value)), this._client); } /** @@ -20983,86 +21194,86 @@ class ProjectResourcePromiseImpl implements ProjectResourcePromise { * @deprecated ATS compatibility shim. Use withEnvironment instead. */ withEnvironmentExpression(name: string, value: ReferenceExpression): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentExpression(name, value))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentExpression(name, value)), this._client); } /** Sets environment variables via callback */ withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentCallback(callback))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentCallback(callback)), this._client); } /** * Sets an environment variable from an endpoint reference * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentEndpoint(name: string, endpointReference: EndpointReference): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentEndpoint(name, endpointReference))); + withEnvironmentEndpoint(name: string, endpointReference: Awaitable): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentEndpoint(name, endpointReference)), this._client); } /** * Sets an environment variable from a parameter resource * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentParameter(name: string, parameter: ParameterResource): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentParameter(name, parameter))); + withEnvironmentParameter(name: string, parameter: Awaitable): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentParameter(name, parameter)), this._client); } /** * Sets an environment variable from a connection string resource * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentConnectionString(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentConnectionString(envVarName, resource))); + withEnvironmentConnectionString(envVarName: string, resource: Awaitable): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentConnectionString(envVarName, resource)), this._client); } /** Adds arguments */ withArgs(args: string[]): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withArgs(args))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withArgs(args)), this._client); } /** Sets command-line arguments via callback */ withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) => Promise): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withArgsCallback(callback))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withArgsCallback(callback)), this._client); } /** Adds a reference to another resource */ - withReference(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WithReferenceOptions): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withReference(source, options))); + withReference(source: Awaitable, options?: WithReferenceOptions): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withReference(source, options)), this._client); } /** Adds a reference to a URI */ withReferenceUri(name: string, uri: string): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withReferenceUri(name, uri))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withReferenceUri(name, uri)), this._client); } /** Adds a reference to an external service */ - withReferenceExternalService(externalService: ExternalServiceResource): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withReferenceExternalService(externalService))); + withReferenceExternalService(externalService: Awaitable): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withReferenceExternalService(externalService)), this._client); } /** Adds a reference to an endpoint */ - withReferenceEndpoint(endpointReference: EndpointReference): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withReferenceEndpoint(endpointReference))); + withReferenceEndpoint(endpointReference: Awaitable): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withReferenceEndpoint(endpointReference)), this._client); } /** Adds a network endpoint */ withEndpoint(options?: WithEndpointOptions): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withEndpoint(options))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withEndpoint(options)), this._client); } /** Adds an HTTP endpoint */ withHttpEndpoint(options?: WithHttpEndpointOptions): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withHttpEndpoint(options))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withHttpEndpoint(options)), this._client); } /** Adds an HTTPS endpoint */ withHttpsEndpoint(options?: WithHttpsEndpointOptions): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withHttpsEndpoint(options))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withHttpsEndpoint(options)), this._client); } /** Makes HTTP endpoints externally accessible */ withExternalHttpEndpoints(): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withExternalHttpEndpoints())); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withExternalHttpEndpoints()), this._client); } /** Gets an endpoint reference */ @@ -21072,152 +21283,152 @@ class ProjectResourcePromiseImpl implements ProjectResourcePromise { /** Configures resource for HTTP/2 */ asHttp2Service(): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.asHttp2Service())); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.asHttp2Service()), this._client); } /** Customizes displayed URLs via callback */ withUrlsCallback(callback: (obj: ResourceUrlsCallbackContext) => Promise): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withUrlsCallback(callback))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withUrlsCallback(callback)), this._client); } /** Adds or modifies displayed URLs */ withUrl(url: string, options?: WithUrlOptions): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withUrl(url, options))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withUrl(url, options)), this._client); } /** Adds a URL using a reference expression */ withUrlExpression(url: ReferenceExpression, options?: WithUrlExpressionOptions): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withUrlExpression(url, options))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withUrlExpression(url, options)), this._client); } /** Customizes the URL for a specific endpoint via callback */ withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpoint(endpointName, callback))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpoint(endpointName, callback)), this._client); } /** Adds a URL for a specific endpoint via factory callback */ withUrlForEndpointFactory(endpointName: string, callback: (arg: EndpointReference) => Promise): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpointFactory(endpointName, callback))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpointFactory(endpointName, callback)), this._client); } /** Configures the resource to copy container files from the specified source during publishing */ - publishWithContainerFiles(source: ResourceWithContainerFiles, destinationPath: string): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.publishWithContainerFiles(source, destinationPath))); + publishWithContainerFiles(source: Awaitable, destinationPath: string): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.publishWithContainerFiles(source, destinationPath)), this._client); } /** Excludes the resource from the deployment manifest */ excludeFromManifest(): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.excludeFromManifest())); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.excludeFromManifest()), this._client); } /** Waits for another resource to be ready */ - waitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.waitFor(dependency))); + waitFor(dependency: Awaitable): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.waitFor(dependency)), this._client); } /** Waits for another resource with specific behavior */ - waitForWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.waitForWithBehavior(dependency, waitBehavior))); + waitForWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.waitForWithBehavior(dependency, waitBehavior)), this._client); } /** Waits for another resource to start */ - waitForStart(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.waitForStart(dependency))); + waitForStart(dependency: Awaitable): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.waitForStart(dependency)), this._client); } /** Waits for another resource to start with specific behavior */ - waitForStartWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.waitForStartWithBehavior(dependency, waitBehavior))); + waitForStartWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.waitForStartWithBehavior(dependency, waitBehavior)), this._client); } /** Prevents resource from starting automatically */ withExplicitStart(): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withExplicitStart())); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withExplicitStart()), this._client); } /** Waits for resource completion */ - waitForCompletion(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WaitForCompletionOptions): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.waitForCompletion(dependency, options))); + waitForCompletion(dependency: Awaitable, options?: WaitForCompletionOptions): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.waitForCompletion(dependency, options)), this._client); } /** Adds a health check by key */ withHealthCheck(key: string): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withHealthCheck(key))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withHealthCheck(key)), this._client); } /** Adds an HTTP health check */ withHttpHealthCheck(options?: WithHttpHealthCheckOptions): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withHttpHealthCheck(options))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withHttpHealthCheck(options)), this._client); } /** Adds a resource command */ withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withCommand(name, displayName, executeCommand, options))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withCommand(name, displayName, executeCommand, options)), this._client); } /** Configures developer certificate trust */ withDeveloperCertificateTrust(trust: boolean): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withDeveloperCertificateTrust(trust))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withDeveloperCertificateTrust(trust)), this._client); } /** Sets the certificate trust scope */ withCertificateTrustScope(scope: CertificateTrustScope): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withCertificateTrustScope(scope))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withCertificateTrustScope(scope)), this._client); } /** Configures HTTPS with a developer certificate */ withHttpsDeveloperCertificate(options?: WithHttpsDeveloperCertificateOptions): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withHttpsDeveloperCertificate(options))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withHttpsDeveloperCertificate(options)), this._client); } /** Removes HTTPS certificate configuration */ withoutHttpsCertificate(): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withoutHttpsCertificate())); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withoutHttpsCertificate()), this._client); } /** Sets the parent relationship */ - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withParentRelationship(parent))); + withParentRelationship(parent: Awaitable): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withParentRelationship(parent)), this._client); } /** Sets a child relationship */ - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withChildRelationship(child))); + withChildRelationship(child: Awaitable): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withChildRelationship(child)), this._client); } /** Sets the icon for the resource */ withIconName(iconName: string, options?: WithIconNameOptions): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withIconName(iconName, options))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withIconName(iconName, options)), this._client); } /** Adds an HTTP health probe to the resource */ withHttpProbe(probeType: ProbeType, options?: WithHttpProbeOptions): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withHttpProbe(probeType, options))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withHttpProbe(probeType, options)), this._client); } /** Excludes the resource from MCP server exposure */ excludeFromMcp(): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.excludeFromMcp())); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.excludeFromMcp()), this._client); } /** Sets the remote image name for publishing */ withRemoteImageName(remoteImageName: string): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageName(remoteImageName))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageName(remoteImageName)), this._client); } /** Sets the remote image tag for publishing */ withRemoteImageTag(remoteImageTag: string): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageTag(remoteImageTag))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageTag(remoteImageTag)), this._client); } /** Adds a pipeline step to the resource */ withPipelineStepFactory(stepName: string, callback: (arg: PipelineStepContext) => Promise, options?: WithPipelineStepFactoryOptions): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withPipelineStepFactory(stepName, callback, options))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withPipelineStepFactory(stepName, callback, options)), this._client); } /** Configures pipeline step dependencies via a callback */ withPipelineConfiguration(callback: (obj: PipelineConfigurationContext) => Promise): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withPipelineConfiguration(callback))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withPipelineConfiguration(callback)), this._client); } /** Gets the resource name */ @@ -21227,147 +21438,147 @@ class ProjectResourcePromiseImpl implements ProjectResourcePromise { /** Subscribes to the BeforeResourceStarted event */ onBeforeResourceStarted(callback: (arg: BeforeResourceStartedEvent) => Promise): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.onBeforeResourceStarted(callback))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.onBeforeResourceStarted(callback)), this._client); } /** Subscribes to the ResourceStopped event */ onResourceStopped(callback: (arg: ResourceStoppedEvent) => Promise): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.onResourceStopped(callback))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.onResourceStopped(callback)), this._client); } /** Subscribes to the InitializeResource event */ onInitializeResource(callback: (arg: InitializeResourceEvent) => Promise): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.onInitializeResource(callback))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.onInitializeResource(callback)), this._client); } /** Subscribes to the ResourceEndpointsAllocated event */ onResourceEndpointsAllocated(callback: (arg: ResourceEndpointsAllocatedEvent) => Promise): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.onResourceEndpointsAllocated(callback))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.onResourceEndpointsAllocated(callback)), this._client); } /** Subscribes to the ResourceReady event */ onResourceReady(callback: (arg: ResourceReadyEvent) => Promise): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.onResourceReady(callback))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.onResourceReady(callback)), this._client); } /** Adds an optional string parameter */ withOptionalString(options?: WithOptionalStringOptions): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withOptionalString(options))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withOptionalString(options)), this._client); } /** Configures the resource with a DTO */ withConfig(config: TestConfigDto): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withConfig(config))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withConfig(config)), this._client); } /** Configures environment with callback (test version) */ testWithEnvironmentCallback(callback: (arg: TestEnvironmentContext) => Promise): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.testWithEnvironmentCallback(callback))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.testWithEnvironmentCallback(callback)), this._client); } /** Sets the created timestamp */ withCreatedAt(createdAt: string): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withCreatedAt(createdAt))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withCreatedAt(createdAt)), this._client); } /** Sets the modified timestamp */ withModifiedAt(modifiedAt: string): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withModifiedAt(modifiedAt))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withModifiedAt(modifiedAt)), this._client); } /** Sets the correlation ID */ withCorrelationId(correlationId: string): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withCorrelationId(correlationId))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withCorrelationId(correlationId)), this._client); } /** Configures with optional callback */ withOptionalCallback(options?: WithOptionalCallbackOptions): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withOptionalCallback(options))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withOptionalCallback(options)), this._client); } /** Sets the resource status */ withStatus(status: TestResourceStatus): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withStatus(status))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withStatus(status)), this._client); } /** Configures with nested DTO */ withNestedConfig(config: TestNestedDto): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withNestedConfig(config))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withNestedConfig(config)), this._client); } /** Adds validation callback */ withValidator(validator: (arg: TestResourceContext) => Promise): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withValidator(validator))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withValidator(validator)), this._client); } /** Waits for another resource (test version) */ - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.testWaitFor(dependency))); + testWaitFor(dependency: Awaitable): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.testWaitFor(dependency)), this._client); } /** Adds a dependency on another resource */ - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withDependency(dependency))); + withDependency(dependency: Awaitable): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withDependency(dependency)), this._client); } /** Adds a dependency from a string or another resource */ - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withUnionDependency(dependency))); + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): ProjectResourcePromise { + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withUnionDependency(dependency)), this._client); } /** Sets the endpoints */ withEndpoints(endpoints: string[]): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withEndpoints(endpoints))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withEndpoints(endpoints)), this._client); } /** Sets environment variables */ withEnvironmentVariables(variables: Record): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentVariables(variables))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentVariables(variables)), this._client); } /** Performs a cancellable operation */ withCancellableOperation(operation: (arg: CancellationToken) => Promise): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withCancellableOperation(operation))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withCancellableOperation(operation)), this._client); } /** Adds a label to the resource */ withMergeLabel(label: string): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabel(label))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabel(label)), this._client); } /** Adds a categorized label to the resource */ withMergeLabelCategorized(label: string, category: string): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabelCategorized(label, category))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabelCategorized(label, category)), this._client); } /** Configures a named endpoint */ withMergeEndpoint(endpointName: string, port: number): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpoint(endpointName, port))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpoint(endpointName, port)), this._client); } /** Configures a named endpoint with scheme */ withMergeEndpointScheme(endpointName: string, port: number, scheme: string): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpointScheme(endpointName, port, scheme))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpointScheme(endpointName, port, scheme)), this._client); } /** Configures resource logging */ withMergeLogging(logLevel: string, options?: WithMergeLoggingOptions): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withMergeLogging(logLevel, options))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withMergeLogging(logLevel, options)), this._client); } /** Configures resource logging with file path */ withMergeLoggingPath(logLevel: string, logPath: string, options?: WithMergeLoggingPathOptions): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withMergeLoggingPath(logLevel, logPath, options))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withMergeLoggingPath(logLevel, logPath, options)), this._client); } /** Configures a route */ withMergeRoute(path: string, method: string, handler: string, priority: number): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withMergeRoute(path, method, handler, priority))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withMergeRoute(path, method, handler, priority)), this._client); } /** Configures a route with middleware */ withMergeRouteMiddleware(path: string, method: string, handler: string, priority: number, middleware: string): ProjectResourcePromise { - return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withMergeRouteMiddleware(path, method, handler, priority, middleware))); + return new ProjectResourcePromiseImpl(this._promise.then(obj => obj.withMergeRouteMiddleware(path, method, handler, priority, middleware)), this._client); } } @@ -21378,7 +21589,7 @@ class ProjectResourcePromiseImpl implements ProjectResourcePromise { export interface TestDatabaseResource { toJSON(): MarshalledHandle; - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestDatabaseResourcePromise; + withContainerRegistry(registry: Awaitable): TestDatabaseResourcePromise; withBindMount(source: string, target: string, options?: WithBindMountOptions): TestDatabaseResourcePromise; withEntrypoint(entrypoint: string): TestDatabaseResourcePromise; withImageTag(tag: string): TestDatabaseResourcePromise; @@ -21391,8 +21602,8 @@ export interface TestDatabaseResource { publishAsContainer(): TestDatabaseResourcePromise; withDockerfile(contextPath: string, options?: WithDockerfileOptions): TestDatabaseResourcePromise; withContainerName(name: string): TestDatabaseResourcePromise; - withBuildArg(name: string, value: ParameterResource): TestDatabaseResourcePromise; - withBuildSecret(name: string, value: ParameterResource): TestDatabaseResourcePromise; + withBuildArg(name: string, value: Awaitable): TestDatabaseResourcePromise; + withBuildSecret(name: string, value: Awaitable): TestDatabaseResourcePromise; withEndpointProxySupport(proxyEnabled: boolean): TestDatabaseResourcePromise; withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): TestDatabaseResourcePromise; withContainerNetworkAlias(alias: string): TestDatabaseResourcePromise; @@ -21401,18 +21612,18 @@ export interface TestDatabaseResource { withOtlpExporterProtocol(protocol: OtlpProtocol): TestDatabaseResourcePromise; publishAsConnectionString(): TestDatabaseResourcePromise; withRequiredCommand(command: string, options?: WithRequiredCommandOptions): TestDatabaseResourcePromise; - withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression): TestDatabaseResourcePromise; + withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): TestDatabaseResourcePromise; withEnvironmentExpression(name: string, value: ReferenceExpression): TestDatabaseResourcePromise; withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): TestDatabaseResourcePromise; - withEnvironmentEndpoint(name: string, endpointReference: EndpointReference): TestDatabaseResourcePromise; - withEnvironmentParameter(name: string, parameter: ParameterResource): TestDatabaseResourcePromise; - withEnvironmentConnectionString(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): TestDatabaseResourcePromise; + withEnvironmentEndpoint(name: string, endpointReference: Awaitable): TestDatabaseResourcePromise; + withEnvironmentParameter(name: string, parameter: Awaitable): TestDatabaseResourcePromise; + withEnvironmentConnectionString(envVarName: string, resource: Awaitable): TestDatabaseResourcePromise; withArgs(args: string[]): TestDatabaseResourcePromise; withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) => Promise): TestDatabaseResourcePromise; - withReference(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WithReferenceOptions): TestDatabaseResourcePromise; + withReference(source: Awaitable, options?: WithReferenceOptions): TestDatabaseResourcePromise; withReferenceUri(name: string, uri: string): TestDatabaseResourcePromise; - withReferenceExternalService(externalService: ExternalServiceResource): TestDatabaseResourcePromise; - withReferenceEndpoint(endpointReference: EndpointReference): TestDatabaseResourcePromise; + withReferenceExternalService(externalService: Awaitable): TestDatabaseResourcePromise; + withReferenceEndpoint(endpointReference: Awaitable): TestDatabaseResourcePromise; withEndpoint(options?: WithEndpointOptions): TestDatabaseResourcePromise; withHttpEndpoint(options?: WithHttpEndpointOptions): TestDatabaseResourcePromise; withHttpsEndpoint(options?: WithHttpsEndpointOptions): TestDatabaseResourcePromise; @@ -21425,12 +21636,12 @@ export interface TestDatabaseResource { withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): TestDatabaseResourcePromise; withUrlForEndpointFactory(endpointName: string, callback: (arg: EndpointReference) => Promise): TestDatabaseResourcePromise; excludeFromManifest(): TestDatabaseResourcePromise; - waitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestDatabaseResourcePromise; - waitForWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): TestDatabaseResourcePromise; - waitForStart(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestDatabaseResourcePromise; - waitForStartWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): TestDatabaseResourcePromise; + waitFor(dependency: Awaitable): TestDatabaseResourcePromise; + waitForWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): TestDatabaseResourcePromise; + waitForStart(dependency: Awaitable): TestDatabaseResourcePromise; + waitForStartWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): TestDatabaseResourcePromise; withExplicitStart(): TestDatabaseResourcePromise; - waitForCompletion(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WaitForCompletionOptions): TestDatabaseResourcePromise; + waitForCompletion(dependency: Awaitable, options?: WaitForCompletionOptions): TestDatabaseResourcePromise; withHealthCheck(key: string): TestDatabaseResourcePromise; withHttpHealthCheck(options?: WithHttpHealthCheckOptions): TestDatabaseResourcePromise; withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): TestDatabaseResourcePromise; @@ -21438,8 +21649,8 @@ export interface TestDatabaseResource { withCertificateTrustScope(scope: CertificateTrustScope): TestDatabaseResourcePromise; withHttpsDeveloperCertificate(options?: WithHttpsDeveloperCertificateOptions): TestDatabaseResourcePromise; withoutHttpsCertificate(): TestDatabaseResourcePromise; - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestDatabaseResourcePromise; - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestDatabaseResourcePromise; + withParentRelationship(parent: Awaitable): TestDatabaseResourcePromise; + withChildRelationship(child: Awaitable): TestDatabaseResourcePromise; withIconName(iconName: string, options?: WithIconNameOptions): TestDatabaseResourcePromise; withHttpProbe(probeType: ProbeType, options?: WithHttpProbeOptions): TestDatabaseResourcePromise; excludeFromMcp(): TestDatabaseResourcePromise; @@ -21464,9 +21675,9 @@ export interface TestDatabaseResource { withStatus(status: TestResourceStatus): TestDatabaseResourcePromise; withNestedConfig(config: TestNestedDto): TestDatabaseResourcePromise; withValidator(validator: (arg: TestResourceContext) => Promise): TestDatabaseResourcePromise; - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestDatabaseResourcePromise; - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): TestDatabaseResourcePromise; - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): TestDatabaseResourcePromise; + testWaitFor(dependency: Awaitable): TestDatabaseResourcePromise; + withDependency(dependency: Awaitable): TestDatabaseResourcePromise; + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): TestDatabaseResourcePromise; withEndpoints(endpoints: string[]): TestDatabaseResourcePromise; withEnvironmentVariables(variables: Record): TestDatabaseResourcePromise; withCancellableOperation(operation: (arg: CancellationToken) => Promise): TestDatabaseResourcePromise; @@ -21481,7 +21692,7 @@ export interface TestDatabaseResource { } export interface TestDatabaseResourcePromise extends PromiseLike { - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestDatabaseResourcePromise; + withContainerRegistry(registry: Awaitable): TestDatabaseResourcePromise; withBindMount(source: string, target: string, options?: WithBindMountOptions): TestDatabaseResourcePromise; withEntrypoint(entrypoint: string): TestDatabaseResourcePromise; withImageTag(tag: string): TestDatabaseResourcePromise; @@ -21494,8 +21705,8 @@ export interface TestDatabaseResourcePromise extends PromiseLike): TestDatabaseResourcePromise; + withBuildSecret(name: string, value: Awaitable): TestDatabaseResourcePromise; withEndpointProxySupport(proxyEnabled: boolean): TestDatabaseResourcePromise; withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): TestDatabaseResourcePromise; withContainerNetworkAlias(alias: string): TestDatabaseResourcePromise; @@ -21504,18 +21715,18 @@ export interface TestDatabaseResourcePromise extends PromiseLike): TestDatabaseResourcePromise; withEnvironmentExpression(name: string, value: ReferenceExpression): TestDatabaseResourcePromise; withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): TestDatabaseResourcePromise; - withEnvironmentEndpoint(name: string, endpointReference: EndpointReference): TestDatabaseResourcePromise; - withEnvironmentParameter(name: string, parameter: ParameterResource): TestDatabaseResourcePromise; - withEnvironmentConnectionString(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): TestDatabaseResourcePromise; + withEnvironmentEndpoint(name: string, endpointReference: Awaitable): TestDatabaseResourcePromise; + withEnvironmentParameter(name: string, parameter: Awaitable): TestDatabaseResourcePromise; + withEnvironmentConnectionString(envVarName: string, resource: Awaitable): TestDatabaseResourcePromise; withArgs(args: string[]): TestDatabaseResourcePromise; withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) => Promise): TestDatabaseResourcePromise; - withReference(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WithReferenceOptions): TestDatabaseResourcePromise; + withReference(source: Awaitable, options?: WithReferenceOptions): TestDatabaseResourcePromise; withReferenceUri(name: string, uri: string): TestDatabaseResourcePromise; - withReferenceExternalService(externalService: ExternalServiceResource): TestDatabaseResourcePromise; - withReferenceEndpoint(endpointReference: EndpointReference): TestDatabaseResourcePromise; + withReferenceExternalService(externalService: Awaitable): TestDatabaseResourcePromise; + withReferenceEndpoint(endpointReference: Awaitable): TestDatabaseResourcePromise; withEndpoint(options?: WithEndpointOptions): TestDatabaseResourcePromise; withHttpEndpoint(options?: WithHttpEndpointOptions): TestDatabaseResourcePromise; withHttpsEndpoint(options?: WithHttpsEndpointOptions): TestDatabaseResourcePromise; @@ -21528,12 +21739,12 @@ export interface TestDatabaseResourcePromise extends PromiseLike Promise): TestDatabaseResourcePromise; withUrlForEndpointFactory(endpointName: string, callback: (arg: EndpointReference) => Promise): TestDatabaseResourcePromise; excludeFromManifest(): TestDatabaseResourcePromise; - waitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestDatabaseResourcePromise; - waitForWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): TestDatabaseResourcePromise; - waitForStart(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestDatabaseResourcePromise; - waitForStartWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): TestDatabaseResourcePromise; + waitFor(dependency: Awaitable): TestDatabaseResourcePromise; + waitForWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): TestDatabaseResourcePromise; + waitForStart(dependency: Awaitable): TestDatabaseResourcePromise; + waitForStartWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): TestDatabaseResourcePromise; withExplicitStart(): TestDatabaseResourcePromise; - waitForCompletion(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WaitForCompletionOptions): TestDatabaseResourcePromise; + waitForCompletion(dependency: Awaitable, options?: WaitForCompletionOptions): TestDatabaseResourcePromise; withHealthCheck(key: string): TestDatabaseResourcePromise; withHttpHealthCheck(options?: WithHttpHealthCheckOptions): TestDatabaseResourcePromise; withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): TestDatabaseResourcePromise; @@ -21541,8 +21752,8 @@ export interface TestDatabaseResourcePromise extends PromiseLike): TestDatabaseResourcePromise; + withChildRelationship(child: Awaitable): TestDatabaseResourcePromise; withIconName(iconName: string, options?: WithIconNameOptions): TestDatabaseResourcePromise; withHttpProbe(probeType: ProbeType, options?: WithHttpProbeOptions): TestDatabaseResourcePromise; excludeFromMcp(): TestDatabaseResourcePromise; @@ -21567,9 +21778,9 @@ export interface TestDatabaseResourcePromise extends PromiseLike Promise): TestDatabaseResourcePromise; - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestDatabaseResourcePromise; - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): TestDatabaseResourcePromise; - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): TestDatabaseResourcePromise; + testWaitFor(dependency: Awaitable): TestDatabaseResourcePromise; + withDependency(dependency: Awaitable): TestDatabaseResourcePromise; + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): TestDatabaseResourcePromise; withEndpoints(endpoints: string[]): TestDatabaseResourcePromise; withEnvironmentVariables(variables: Record): TestDatabaseResourcePromise; withCancellableOperation(operation: (arg: CancellationToken) => Promise): TestDatabaseResourcePromise; @@ -21593,7 +21804,8 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase { + private async _withContainerRegistryInternal(registry: Awaitable): Promise { + registry = isPromiseLike(registry) ? await registry : registry; const rpcArgs: Record = { builder: this._handle, registry }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withContainerRegistry', @@ -21603,8 +21815,8 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._withContainerRegistryInternal(registry), this._client); } /** @internal */ @@ -21621,7 +21833,7 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase { + private async _withBuildArgInternal(name: string, value: Awaitable): Promise { + value = isPromiseLike(value) ? await value : value; const rpcArgs: Record = { builder: this._handle, name, value }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withParameterBuildArg', @@ -21806,12 +22019,13 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._withBuildArgInternal(name, value), this._client); } /** @internal */ - private async _withBuildSecretInternal(name: string, value: ParameterResource): Promise { + private async _withBuildSecretInternal(name: string, value: Awaitable): Promise { + value = isPromiseLike(value) ? await value : value; const rpcArgs: Record = { builder: this._handle, name, value }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withParameterBuildSecret', @@ -21821,8 +22035,8 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._withBuildSecretInternal(name, value), this._client); } /** @internal */ @@ -21837,7 +22051,7 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase { + private async _withEnvironmentInternal(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): Promise { + value = isPromiseLike(value) ? await value : value; const rpcArgs: Record = { builder: this._handle, name, value }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironment', @@ -21966,8 +22181,8 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._withEnvironmentInternal(name, value), this._client); } /** @internal */ @@ -21985,7 +22200,7 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase Promise): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._withEnvironmentCallbackInternal(callback)); + return new TestDatabaseResourcePromiseImpl(this._withEnvironmentCallbackInternal(callback), this._client); } /** @internal */ - private async _withEnvironmentEndpointInternal(name: string, endpointReference: EndpointReference): Promise { + private async _withEnvironmentEndpointInternal(name: string, endpointReference: Awaitable): Promise { + endpointReference = isPromiseLike(endpointReference) ? await endpointReference : endpointReference; const rpcArgs: Record = { builder: this._handle, name, endpointReference }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironmentEndpoint', @@ -22022,12 +22238,13 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._withEnvironmentEndpointInternal(name, endpointReference), this._client); } /** @internal */ - private async _withEnvironmentParameterInternal(name: string, parameter: ParameterResource): Promise { + private async _withEnvironmentParameterInternal(name: string, parameter: Awaitable): Promise { + parameter = isPromiseLike(parameter) ? await parameter : parameter; const rpcArgs: Record = { builder: this._handle, name, parameter }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironmentParameter', @@ -22040,12 +22257,13 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._withEnvironmentParameterInternal(name, parameter), this._client); } /** @internal */ - private async _withEnvironmentConnectionStringInternal(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withEnvironmentConnectionStringInternal(envVarName: string, resource: Awaitable): Promise { + resource = isPromiseLike(resource) ? await resource : resource; const rpcArgs: Record = { builder: this._handle, envVarName, resource }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironmentConnectionString', @@ -22058,8 +22276,8 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._withEnvironmentConnectionStringInternal(envVarName, resource), this._client); } /** @internal */ @@ -22074,7 +22292,7 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase Promise): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._withArgsCallbackInternal(callback)); + return new TestDatabaseResourcePromiseImpl(this._withArgsCallbackInternal(callback), this._client); } /** @internal */ - private async _withReferenceInternal(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, connectionName?: string, optional?: boolean, name?: string): Promise { + private async _withReferenceInternal(source: Awaitable, connectionName?: string, optional?: boolean, name?: string): Promise { + source = isPromiseLike(source) ? await source : source; const rpcArgs: Record = { builder: this._handle, source }; if (connectionName !== undefined) rpcArgs.connectionName = connectionName; if (optional !== undefined) rpcArgs.optional = optional; @@ -22111,11 +22330,11 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase, options?: WithReferenceOptions): TestDatabaseResourcePromise { const connectionName = options?.connectionName; const optional = options?.optional; const name = options?.name; - return new TestDatabaseResourcePromiseImpl(this._withReferenceInternal(source, connectionName, optional, name)); + return new TestDatabaseResourcePromiseImpl(this._withReferenceInternal(source, connectionName, optional, name), this._client); } /** @internal */ @@ -22130,11 +22349,12 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase { + private async _withReferenceExternalServiceInternal(externalService: Awaitable): Promise { + externalService = isPromiseLike(externalService) ? await externalService : externalService; const rpcArgs: Record = { builder: this._handle, externalService }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withReferenceExternalService', @@ -22144,12 +22364,13 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._withReferenceExternalServiceInternal(externalService), this._client); } /** @internal */ - private async _withReferenceEndpointInternal(endpointReference: EndpointReference): Promise { + private async _withReferenceEndpointInternal(endpointReference: Awaitable): Promise { + endpointReference = isPromiseLike(endpointReference) ? await endpointReference : endpointReference; const rpcArgs: Record = { builder: this._handle, endpointReference }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withReferenceEndpoint', @@ -22159,8 +22380,8 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._withReferenceEndpointInternal(endpointReference), this._client); } /** @internal */ @@ -22191,7 +22412,7 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase Promise): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._withUrlsCallbackInternal(callback)); + return new TestDatabaseResourcePromiseImpl(this._withUrlsCallbackInternal(callback), this._client); } /** @internal */ @@ -22317,7 +22538,7 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase Promise): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._withUrlForEndpointInternal(endpointName, callback)); + return new TestDatabaseResourcePromiseImpl(this._withUrlForEndpointInternal(endpointName, callback), this._client); } /** @internal */ @@ -22373,7 +22594,7 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase Promise): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._withUrlForEndpointFactoryInternal(endpointName, callback)); + return new TestDatabaseResourcePromiseImpl(this._withUrlForEndpointFactoryInternal(endpointName, callback), this._client); } /** @internal */ @@ -22388,11 +22609,12 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase { + private async _waitForInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForResource', @@ -22402,12 +22624,13 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._waitForInternal(dependency), this._client); } /** @internal */ - private async _waitForWithBehaviorInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): Promise { + private async _waitForWithBehaviorInternal(dependency: Awaitable, waitBehavior: WaitBehavior): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency, waitBehavior }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForWithBehavior', @@ -22417,12 +22640,13 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase, waitBehavior: WaitBehavior): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._waitForWithBehaviorInternal(dependency, waitBehavior), this._client); } /** @internal */ - private async _waitForStartInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _waitForStartInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForResourceStart', @@ -22432,12 +22656,13 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._waitForStartInternal(dependency), this._client); } /** @internal */ - private async _waitForStartWithBehaviorInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): Promise { + private async _waitForStartWithBehaviorInternal(dependency: Awaitable, waitBehavior: WaitBehavior): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency, waitBehavior }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForStartWithBehavior', @@ -22447,8 +22672,8 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase, waitBehavior: WaitBehavior): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._waitForStartWithBehaviorInternal(dependency, waitBehavior), this._client); } /** @internal */ @@ -22463,11 +22688,12 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase { + private async _waitForCompletionInternal(dependency: Awaitable, exitCode?: number): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; if (exitCode !== undefined) rpcArgs.exitCode = exitCode; const result = await this._client.invokeCapability( @@ -22478,9 +22704,9 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase, options?: WaitForCompletionOptions): TestDatabaseResourcePromise { const exitCode = options?.exitCode; - return new TestDatabaseResourcePromiseImpl(this._waitForCompletionInternal(dependency, exitCode)); + return new TestDatabaseResourcePromiseImpl(this._waitForCompletionInternal(dependency, exitCode), this._client); } /** @internal */ @@ -22495,7 +22721,7 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase Promise, options?: WithCommandOptions): TestDatabaseResourcePromise { const commandOptions = options?.commandOptions; - return new TestDatabaseResourcePromiseImpl(this._withCommandInternal(name, displayName, executeCommand, commandOptions)); + return new TestDatabaseResourcePromiseImpl(this._withCommandInternal(name, displayName, executeCommand, commandOptions), this._client); } /** @internal */ @@ -22553,7 +22779,7 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase { + private async _withHttpsDeveloperCertificateInternal(password?: Awaitable): Promise { + password = isPromiseLike(password) ? await password : password; const rpcArgs: Record = { builder: this._handle }; if (password !== undefined) rpcArgs.password = password; const result = await this._client.invokeCapability( @@ -22584,8 +22811,8 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase { + private async _withParentRelationshipInternal(parent: Awaitable): Promise { + parent = isPromiseLike(parent) ? await parent : parent; const rpcArgs: Record = { builder: this._handle, parent }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withBuilderParentRelationship', @@ -22614,12 +22842,13 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._withParentRelationshipInternal(parent), this._client); } /** @internal */ - private async _withChildRelationshipInternal(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _withChildRelationshipInternal(child: Awaitable): Promise { + child = isPromiseLike(child) ? await child : child; const rpcArgs: Record = { builder: this._handle, child }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withBuilderChildRelationship', @@ -22629,8 +22858,8 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._withChildRelationshipInternal(child), this._client); } /** @internal */ @@ -22647,7 +22876,7 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase Promise): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._withPipelineConfigurationInternal(callback)); + return new TestDatabaseResourcePromiseImpl(this._withPipelineConfigurationInternal(callback), this._client); } /** @internal */ @@ -22788,7 +23017,7 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase Promise): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._onBeforeResourceStartedInternal(callback)); + return new TestDatabaseResourcePromiseImpl(this._onBeforeResourceStartedInternal(callback), this._client); } /** @internal */ @@ -22837,7 +23066,7 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase Promise): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._onResourceStoppedInternal(callback)); + return new TestDatabaseResourcePromiseImpl(this._onResourceStoppedInternal(callback), this._client); } /** @internal */ @@ -22857,7 +23086,7 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase Promise): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._onInitializeResourceInternal(callback)); + return new TestDatabaseResourcePromiseImpl(this._onInitializeResourceInternal(callback), this._client); } /** @internal */ @@ -22877,7 +23106,7 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase Promise): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._onResourceEndpointsAllocatedInternal(callback)); + return new TestDatabaseResourcePromiseImpl(this._onResourceEndpointsAllocatedInternal(callback), this._client); } /** @internal */ @@ -22897,7 +23126,7 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase Promise): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._onResourceReadyInternal(callback)); + return new TestDatabaseResourcePromiseImpl(this._onResourceReadyInternal(callback), this._client); } /** @internal */ @@ -22916,7 +23145,7 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase Promise): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._testWithEnvironmentCallbackInternal(callback)); + return new TestDatabaseResourcePromiseImpl(this._testWithEnvironmentCallbackInternal(callback), this._client); } /** @internal */ @@ -22966,7 +23195,7 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase Promise): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._withValidatorInternal(validator)); + return new TestDatabaseResourcePromiseImpl(this._withValidatorInternal(validator), this._client); } /** @internal */ - private async _testWaitForInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _testWaitForInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/testWaitFor', @@ -23082,12 +23312,13 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._testWaitForInternal(dependency), this._client); } /** @internal */ - private async _withDependencyInternal(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withDependencyInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/withDependency', @@ -23097,12 +23328,13 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._withDependencyInternal(dependency), this._client); } /** @internal */ - private async _withUnionDependencyInternal(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withUnionDependencyInternal(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/withUnionDependency', @@ -23112,8 +23344,8 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._withUnionDependencyInternal(dependency), this._client); } /** @internal */ @@ -23128,7 +23360,7 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._withEnvironmentVariablesInternal(variables)); + return new TestDatabaseResourcePromiseImpl(this._withEnvironmentVariablesInternal(variables), this._client); } /** @internal */ @@ -23162,7 +23394,7 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase Promise): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._withCancellableOperationInternal(operation)); + return new TestDatabaseResourcePromiseImpl(this._withCancellableOperationInternal(operation), this._client); } /** @internal */ @@ -23177,7 +23409,7 @@ class TestDatabaseResourceImpl extends ResourceBuilderBase) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: TestDatabaseResource) => TResult1 | PromiseLike) | null, @@ -23311,123 +23545,123 @@ class TestDatabaseResourcePromiseImpl implements TestDatabaseResourcePromise { } /** Configures a resource to use a container registry */ - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withContainerRegistry(registry))); + withContainerRegistry(registry: Awaitable): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withContainerRegistry(registry)), this._client); } /** Adds a bind mount */ withBindMount(source: string, target: string, options?: WithBindMountOptions): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withBindMount(source, target, options))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withBindMount(source, target, options)), this._client); } /** Sets the container entrypoint */ withEntrypoint(entrypoint: string): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withEntrypoint(entrypoint))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withEntrypoint(entrypoint)), this._client); } /** Sets the container image tag */ withImageTag(tag: string): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withImageTag(tag))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withImageTag(tag)), this._client); } /** Sets the container image registry */ withImageRegistry(registry: string): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withImageRegistry(registry))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withImageRegistry(registry)), this._client); } /** Sets the container image */ withImage(image: string, options?: WithImageOptions): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withImage(image, options))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withImage(image, options)), this._client); } /** Sets the image SHA256 digest */ withImageSHA256(sha256: string): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withImageSHA256(sha256))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withImageSHA256(sha256)), this._client); } /** Adds runtime arguments for the container */ withContainerRuntimeArgs(args: string[]): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withContainerRuntimeArgs(args))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withContainerRuntimeArgs(args)), this._client); } /** Sets the lifetime behavior of the container resource */ withLifetime(lifetime: ContainerLifetime): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withLifetime(lifetime))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withLifetime(lifetime)), this._client); } /** Sets the container image pull policy */ withImagePullPolicy(pullPolicy: ImagePullPolicy): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withImagePullPolicy(pullPolicy))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withImagePullPolicy(pullPolicy)), this._client); } /** Configures the resource to be published as a container */ publishAsContainer(): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.publishAsContainer())); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.publishAsContainer()), this._client); } /** Configures the resource to use a Dockerfile */ withDockerfile(contextPath: string, options?: WithDockerfileOptions): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withDockerfile(contextPath, options))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withDockerfile(contextPath, options)), this._client); } /** Sets the container name */ withContainerName(name: string): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withContainerName(name))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withContainerName(name)), this._client); } /** Adds a build argument from a parameter resource */ - withBuildArg(name: string, value: ParameterResource): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withBuildArg(name, value))); + withBuildArg(name: string, value: Awaitable): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withBuildArg(name, value)), this._client); } /** Adds a build secret from a parameter resource */ - withBuildSecret(name: string, value: ParameterResource): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withBuildSecret(name, value))); + withBuildSecret(name: string, value: Awaitable): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withBuildSecret(name, value)), this._client); } /** Configures endpoint proxy support */ withEndpointProxySupport(proxyEnabled: boolean): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withEndpointProxySupport(proxyEnabled))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withEndpointProxySupport(proxyEnabled)), this._client); } /** Sets the base image for a Dockerfile build */ withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withDockerfileBaseImage(options))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withDockerfileBaseImage(options)), this._client); } /** Adds a network alias for the container */ withContainerNetworkAlias(alias: string): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withContainerNetworkAlias(alias))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withContainerNetworkAlias(alias)), this._client); } /** Configures an MCP server endpoint on the resource */ withMcpServer(options?: WithMcpServerOptions): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withMcpServer(options))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withMcpServer(options)), this._client); } /** Configures OTLP telemetry export */ withOtlpExporter(): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withOtlpExporter())); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withOtlpExporter()), this._client); } /** Configures OTLP telemetry export with specific protocol */ withOtlpExporterProtocol(protocol: OtlpProtocol): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withOtlpExporterProtocol(protocol))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withOtlpExporterProtocol(protocol)), this._client); } /** Publishes the resource as a connection string */ publishAsConnectionString(): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.publishAsConnectionString())); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.publishAsConnectionString()), this._client); } /** Adds a required command dependency */ withRequiredCommand(command: string, options?: WithRequiredCommandOptions): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withRequiredCommand(command, options))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withRequiredCommand(command, options)), this._client); } /** Sets an environment variable */ - withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withEnvironment(name, value))); + withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withEnvironment(name, value)), this._client); } /** @@ -23435,86 +23669,86 @@ class TestDatabaseResourcePromiseImpl implements TestDatabaseResourcePromise { * @deprecated ATS compatibility shim. Use withEnvironment instead. */ withEnvironmentExpression(name: string, value: ReferenceExpression): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentExpression(name, value))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentExpression(name, value)), this._client); } /** Sets environment variables via callback */ withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentCallback(callback))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentCallback(callback)), this._client); } /** * Sets an environment variable from an endpoint reference * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentEndpoint(name: string, endpointReference: EndpointReference): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentEndpoint(name, endpointReference))); + withEnvironmentEndpoint(name: string, endpointReference: Awaitable): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentEndpoint(name, endpointReference)), this._client); } /** * Sets an environment variable from a parameter resource * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentParameter(name: string, parameter: ParameterResource): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentParameter(name, parameter))); + withEnvironmentParameter(name: string, parameter: Awaitable): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentParameter(name, parameter)), this._client); } /** * Sets an environment variable from a connection string resource * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentConnectionString(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentConnectionString(envVarName, resource))); + withEnvironmentConnectionString(envVarName: string, resource: Awaitable): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentConnectionString(envVarName, resource)), this._client); } /** Adds arguments */ withArgs(args: string[]): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withArgs(args))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withArgs(args)), this._client); } /** Sets command-line arguments via callback */ withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) => Promise): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withArgsCallback(callback))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withArgsCallback(callback)), this._client); } /** Adds a reference to another resource */ - withReference(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WithReferenceOptions): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withReference(source, options))); + withReference(source: Awaitable, options?: WithReferenceOptions): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withReference(source, options)), this._client); } /** Adds a reference to a URI */ withReferenceUri(name: string, uri: string): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withReferenceUri(name, uri))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withReferenceUri(name, uri)), this._client); } /** Adds a reference to an external service */ - withReferenceExternalService(externalService: ExternalServiceResource): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withReferenceExternalService(externalService))); + withReferenceExternalService(externalService: Awaitable): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withReferenceExternalService(externalService)), this._client); } /** Adds a reference to an endpoint */ - withReferenceEndpoint(endpointReference: EndpointReference): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withReferenceEndpoint(endpointReference))); + withReferenceEndpoint(endpointReference: Awaitable): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withReferenceEndpoint(endpointReference)), this._client); } /** Adds a network endpoint */ withEndpoint(options?: WithEndpointOptions): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withEndpoint(options))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withEndpoint(options)), this._client); } /** Adds an HTTP endpoint */ withHttpEndpoint(options?: WithHttpEndpointOptions): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withHttpEndpoint(options))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withHttpEndpoint(options)), this._client); } /** Adds an HTTPS endpoint */ withHttpsEndpoint(options?: WithHttpsEndpointOptions): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withHttpsEndpoint(options))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withHttpsEndpoint(options)), this._client); } /** Makes HTTP endpoints externally accessible */ withExternalHttpEndpoints(): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withExternalHttpEndpoints())); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withExternalHttpEndpoints()), this._client); } /** Gets an endpoint reference */ @@ -23524,152 +23758,152 @@ class TestDatabaseResourcePromiseImpl implements TestDatabaseResourcePromise { /** Configures resource for HTTP/2 */ asHttp2Service(): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.asHttp2Service())); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.asHttp2Service()), this._client); } /** Customizes displayed URLs via callback */ withUrlsCallback(callback: (obj: ResourceUrlsCallbackContext) => Promise): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withUrlsCallback(callback))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withUrlsCallback(callback)), this._client); } /** Adds or modifies displayed URLs */ withUrl(url: string, options?: WithUrlOptions): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withUrl(url, options))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withUrl(url, options)), this._client); } /** Adds a URL using a reference expression */ withUrlExpression(url: ReferenceExpression, options?: WithUrlExpressionOptions): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withUrlExpression(url, options))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withUrlExpression(url, options)), this._client); } /** Customizes the URL for a specific endpoint via callback */ withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpoint(endpointName, callback))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpoint(endpointName, callback)), this._client); } /** Adds a URL for a specific endpoint via factory callback */ withUrlForEndpointFactory(endpointName: string, callback: (arg: EndpointReference) => Promise): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpointFactory(endpointName, callback))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpointFactory(endpointName, callback)), this._client); } /** Excludes the resource from the deployment manifest */ excludeFromManifest(): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.excludeFromManifest())); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.excludeFromManifest()), this._client); } /** Waits for another resource to be ready */ - waitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.waitFor(dependency))); + waitFor(dependency: Awaitable): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.waitFor(dependency)), this._client); } /** Waits for another resource with specific behavior */ - waitForWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.waitForWithBehavior(dependency, waitBehavior))); + waitForWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.waitForWithBehavior(dependency, waitBehavior)), this._client); } /** Waits for another resource to start */ - waitForStart(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.waitForStart(dependency))); + waitForStart(dependency: Awaitable): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.waitForStart(dependency)), this._client); } /** Waits for another resource to start with specific behavior */ - waitForStartWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.waitForStartWithBehavior(dependency, waitBehavior))); + waitForStartWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.waitForStartWithBehavior(dependency, waitBehavior)), this._client); } /** Prevents resource from starting automatically */ withExplicitStart(): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withExplicitStart())); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withExplicitStart()), this._client); } /** Waits for resource completion */ - waitForCompletion(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WaitForCompletionOptions): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.waitForCompletion(dependency, options))); + waitForCompletion(dependency: Awaitable, options?: WaitForCompletionOptions): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.waitForCompletion(dependency, options)), this._client); } /** Adds a health check by key */ withHealthCheck(key: string): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withHealthCheck(key))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withHealthCheck(key)), this._client); } /** Adds an HTTP health check */ withHttpHealthCheck(options?: WithHttpHealthCheckOptions): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withHttpHealthCheck(options))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withHttpHealthCheck(options)), this._client); } /** Adds a resource command */ withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withCommand(name, displayName, executeCommand, options))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withCommand(name, displayName, executeCommand, options)), this._client); } /** Configures developer certificate trust */ withDeveloperCertificateTrust(trust: boolean): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withDeveloperCertificateTrust(trust))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withDeveloperCertificateTrust(trust)), this._client); } /** Sets the certificate trust scope */ withCertificateTrustScope(scope: CertificateTrustScope): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withCertificateTrustScope(scope))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withCertificateTrustScope(scope)), this._client); } /** Configures HTTPS with a developer certificate */ withHttpsDeveloperCertificate(options?: WithHttpsDeveloperCertificateOptions): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withHttpsDeveloperCertificate(options))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withHttpsDeveloperCertificate(options)), this._client); } /** Removes HTTPS certificate configuration */ withoutHttpsCertificate(): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withoutHttpsCertificate())); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withoutHttpsCertificate()), this._client); } /** Sets the parent relationship */ - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withParentRelationship(parent))); + withParentRelationship(parent: Awaitable): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withParentRelationship(parent)), this._client); } /** Sets a child relationship */ - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withChildRelationship(child))); + withChildRelationship(child: Awaitable): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withChildRelationship(child)), this._client); } /** Sets the icon for the resource */ withIconName(iconName: string, options?: WithIconNameOptions): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withIconName(iconName, options))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withIconName(iconName, options)), this._client); } /** Adds an HTTP health probe to the resource */ withHttpProbe(probeType: ProbeType, options?: WithHttpProbeOptions): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withHttpProbe(probeType, options))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withHttpProbe(probeType, options)), this._client); } /** Excludes the resource from MCP server exposure */ excludeFromMcp(): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.excludeFromMcp())); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.excludeFromMcp()), this._client); } /** Sets the remote image name for publishing */ withRemoteImageName(remoteImageName: string): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageName(remoteImageName))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageName(remoteImageName)), this._client); } /** Sets the remote image tag for publishing */ withRemoteImageTag(remoteImageTag: string): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageTag(remoteImageTag))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageTag(remoteImageTag)), this._client); } /** Adds a pipeline step to the resource */ withPipelineStepFactory(stepName: string, callback: (arg: PipelineStepContext) => Promise, options?: WithPipelineStepFactoryOptions): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withPipelineStepFactory(stepName, callback, options))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withPipelineStepFactory(stepName, callback, options)), this._client); } /** Configures pipeline step dependencies via a callback */ withPipelineConfiguration(callback: (obj: PipelineConfigurationContext) => Promise): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withPipelineConfiguration(callback))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withPipelineConfiguration(callback)), this._client); } /** Adds a volume */ withVolume(target: string, options?: WithVolumeOptions): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withVolume(target, options))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withVolume(target, options)), this._client); } /** Gets the resource name */ @@ -23679,147 +23913,147 @@ class TestDatabaseResourcePromiseImpl implements TestDatabaseResourcePromise { /** Subscribes to the BeforeResourceStarted event */ onBeforeResourceStarted(callback: (arg: BeforeResourceStartedEvent) => Promise): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.onBeforeResourceStarted(callback))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.onBeforeResourceStarted(callback)), this._client); } /** Subscribes to the ResourceStopped event */ onResourceStopped(callback: (arg: ResourceStoppedEvent) => Promise): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.onResourceStopped(callback))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.onResourceStopped(callback)), this._client); } /** Subscribes to the InitializeResource event */ onInitializeResource(callback: (arg: InitializeResourceEvent) => Promise): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.onInitializeResource(callback))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.onInitializeResource(callback)), this._client); } /** Subscribes to the ResourceEndpointsAllocated event */ onResourceEndpointsAllocated(callback: (arg: ResourceEndpointsAllocatedEvent) => Promise): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.onResourceEndpointsAllocated(callback))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.onResourceEndpointsAllocated(callback)), this._client); } /** Subscribes to the ResourceReady event */ onResourceReady(callback: (arg: ResourceReadyEvent) => Promise): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.onResourceReady(callback))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.onResourceReady(callback)), this._client); } /** Adds an optional string parameter */ withOptionalString(options?: WithOptionalStringOptions): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withOptionalString(options))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withOptionalString(options)), this._client); } /** Configures the resource with a DTO */ withConfig(config: TestConfigDto): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withConfig(config))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withConfig(config)), this._client); } /** Configures environment with callback (test version) */ testWithEnvironmentCallback(callback: (arg: TestEnvironmentContext) => Promise): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.testWithEnvironmentCallback(callback))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.testWithEnvironmentCallback(callback)), this._client); } /** Sets the created timestamp */ withCreatedAt(createdAt: string): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withCreatedAt(createdAt))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withCreatedAt(createdAt)), this._client); } /** Sets the modified timestamp */ withModifiedAt(modifiedAt: string): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withModifiedAt(modifiedAt))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withModifiedAt(modifiedAt)), this._client); } /** Sets the correlation ID */ withCorrelationId(correlationId: string): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withCorrelationId(correlationId))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withCorrelationId(correlationId)), this._client); } /** Configures with optional callback */ withOptionalCallback(options?: WithOptionalCallbackOptions): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withOptionalCallback(options))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withOptionalCallback(options)), this._client); } /** Sets the resource status */ withStatus(status: TestResourceStatus): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withStatus(status))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withStatus(status)), this._client); } /** Configures with nested DTO */ withNestedConfig(config: TestNestedDto): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withNestedConfig(config))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withNestedConfig(config)), this._client); } /** Adds validation callback */ withValidator(validator: (arg: TestResourceContext) => Promise): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withValidator(validator))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withValidator(validator)), this._client); } /** Waits for another resource (test version) */ - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.testWaitFor(dependency))); + testWaitFor(dependency: Awaitable): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.testWaitFor(dependency)), this._client); } /** Adds a dependency on another resource */ - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withDependency(dependency))); + withDependency(dependency: Awaitable): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withDependency(dependency)), this._client); } /** Adds a dependency from a string or another resource */ - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withUnionDependency(dependency))); + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): TestDatabaseResourcePromise { + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withUnionDependency(dependency)), this._client); } /** Sets the endpoints */ withEndpoints(endpoints: string[]): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withEndpoints(endpoints))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withEndpoints(endpoints)), this._client); } /** Sets environment variables */ withEnvironmentVariables(variables: Record): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentVariables(variables))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentVariables(variables)), this._client); } /** Performs a cancellable operation */ withCancellableOperation(operation: (arg: CancellationToken) => Promise): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withCancellableOperation(operation))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withCancellableOperation(operation)), this._client); } /** Adds a label to the resource */ withMergeLabel(label: string): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabel(label))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabel(label)), this._client); } /** Adds a categorized label to the resource */ withMergeLabelCategorized(label: string, category: string): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabelCategorized(label, category))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabelCategorized(label, category)), this._client); } /** Configures a named endpoint */ withMergeEndpoint(endpointName: string, port: number): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpoint(endpointName, port))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpoint(endpointName, port)), this._client); } /** Configures a named endpoint with scheme */ withMergeEndpointScheme(endpointName: string, port: number, scheme: string): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpointScheme(endpointName, port, scheme))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpointScheme(endpointName, port, scheme)), this._client); } /** Configures resource logging */ withMergeLogging(logLevel: string, options?: WithMergeLoggingOptions): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withMergeLogging(logLevel, options))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withMergeLogging(logLevel, options)), this._client); } /** Configures resource logging with file path */ withMergeLoggingPath(logLevel: string, logPath: string, options?: WithMergeLoggingPathOptions): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withMergeLoggingPath(logLevel, logPath, options))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withMergeLoggingPath(logLevel, logPath, options)), this._client); } /** Configures a route */ withMergeRoute(path: string, method: string, handler: string, priority: number): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withMergeRoute(path, method, handler, priority))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withMergeRoute(path, method, handler, priority)), this._client); } /** Configures a route with middleware */ withMergeRouteMiddleware(path: string, method: string, handler: string, priority: number, middleware: string): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withMergeRouteMiddleware(path, method, handler, priority, middleware))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.withMergeRouteMiddleware(path, method, handler, priority, middleware)), this._client); } } @@ -23830,7 +24064,7 @@ class TestDatabaseResourcePromiseImpl implements TestDatabaseResourcePromise { export interface TestRedisResource { toJSON(): MarshalledHandle; - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestRedisResourcePromise; + withContainerRegistry(registry: Awaitable): TestRedisResourcePromise; withBindMount(source: string, target: string, options?: WithBindMountOptions): TestRedisResourcePromise; withEntrypoint(entrypoint: string): TestRedisResourcePromise; withImageTag(tag: string): TestRedisResourcePromise; @@ -23843,8 +24077,8 @@ export interface TestRedisResource { publishAsContainer(): TestRedisResourcePromise; withDockerfile(contextPath: string, options?: WithDockerfileOptions): TestRedisResourcePromise; withContainerName(name: string): TestRedisResourcePromise; - withBuildArg(name: string, value: ParameterResource): TestRedisResourcePromise; - withBuildSecret(name: string, value: ParameterResource): TestRedisResourcePromise; + withBuildArg(name: string, value: Awaitable): TestRedisResourcePromise; + withBuildSecret(name: string, value: Awaitable): TestRedisResourcePromise; withEndpointProxySupport(proxyEnabled: boolean): TestRedisResourcePromise; withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): TestRedisResourcePromise; withContainerNetworkAlias(alias: string): TestRedisResourcePromise; @@ -23853,21 +24087,21 @@ export interface TestRedisResource { withOtlpExporterProtocol(protocol: OtlpProtocol): TestRedisResourcePromise; publishAsConnectionString(): TestRedisResourcePromise; withRequiredCommand(command: string, options?: WithRequiredCommandOptions): TestRedisResourcePromise; - withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression): TestRedisResourcePromise; + withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): TestRedisResourcePromise; withEnvironmentExpression(name: string, value: ReferenceExpression): TestRedisResourcePromise; withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): TestRedisResourcePromise; - withEnvironmentEndpoint(name: string, endpointReference: EndpointReference): TestRedisResourcePromise; - withEnvironmentParameter(name: string, parameter: ParameterResource): TestRedisResourcePromise; - withEnvironmentConnectionString(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): TestRedisResourcePromise; + withEnvironmentEndpoint(name: string, endpointReference: Awaitable): TestRedisResourcePromise; + withEnvironmentParameter(name: string, parameter: Awaitable): TestRedisResourcePromise; + withEnvironmentConnectionString(envVarName: string, resource: Awaitable): TestRedisResourcePromise; withConnectionProperty(name: string, value: ReferenceExpression): TestRedisResourcePromise; withConnectionPropertyValue(name: string, value: string): TestRedisResourcePromise; withArgs(args: string[]): TestRedisResourcePromise; withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) => Promise): TestRedisResourcePromise; - withReference(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WithReferenceOptions): TestRedisResourcePromise; + withReference(source: Awaitable, options?: WithReferenceOptions): TestRedisResourcePromise; getConnectionProperty(key: string): Promise; withReferenceUri(name: string, uri: string): TestRedisResourcePromise; - withReferenceExternalService(externalService: ExternalServiceResource): TestRedisResourcePromise; - withReferenceEndpoint(endpointReference: EndpointReference): TestRedisResourcePromise; + withReferenceExternalService(externalService: Awaitable): TestRedisResourcePromise; + withReferenceEndpoint(endpointReference: Awaitable): TestRedisResourcePromise; withEndpoint(options?: WithEndpointOptions): TestRedisResourcePromise; withHttpEndpoint(options?: WithHttpEndpointOptions): TestRedisResourcePromise; withHttpsEndpoint(options?: WithHttpsEndpointOptions): TestRedisResourcePromise; @@ -23880,12 +24114,12 @@ export interface TestRedisResource { withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): TestRedisResourcePromise; withUrlForEndpointFactory(endpointName: string, callback: (arg: EndpointReference) => Promise): TestRedisResourcePromise; excludeFromManifest(): TestRedisResourcePromise; - waitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestRedisResourcePromise; - waitForWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): TestRedisResourcePromise; - waitForStart(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestRedisResourcePromise; - waitForStartWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): TestRedisResourcePromise; + waitFor(dependency: Awaitable): TestRedisResourcePromise; + waitForWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): TestRedisResourcePromise; + waitForStart(dependency: Awaitable): TestRedisResourcePromise; + waitForStartWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): TestRedisResourcePromise; withExplicitStart(): TestRedisResourcePromise; - waitForCompletion(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WaitForCompletionOptions): TestRedisResourcePromise; + waitForCompletion(dependency: Awaitable, options?: WaitForCompletionOptions): TestRedisResourcePromise; withHealthCheck(key: string): TestRedisResourcePromise; withHttpHealthCheck(options?: WithHttpHealthCheckOptions): TestRedisResourcePromise; withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): TestRedisResourcePromise; @@ -23893,8 +24127,8 @@ export interface TestRedisResource { withCertificateTrustScope(scope: CertificateTrustScope): TestRedisResourcePromise; withHttpsDeveloperCertificate(options?: WithHttpsDeveloperCertificateOptions): TestRedisResourcePromise; withoutHttpsCertificate(): TestRedisResourcePromise; - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestRedisResourcePromise; - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestRedisResourcePromise; + withParentRelationship(parent: Awaitable): TestRedisResourcePromise; + withChildRelationship(child: Awaitable): TestRedisResourcePromise; withIconName(iconName: string, options?: WithIconNameOptions): TestRedisResourcePromise; withHttpProbe(probeType: ProbeType, options?: WithHttpProbeOptions): TestRedisResourcePromise; excludeFromMcp(): TestRedisResourcePromise; @@ -23925,12 +24159,12 @@ export interface TestRedisResource { withStatus(status: TestResourceStatus): TestRedisResourcePromise; withNestedConfig(config: TestNestedDto): TestRedisResourcePromise; withValidator(validator: (arg: TestResourceContext) => Promise): TestRedisResourcePromise; - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestRedisResourcePromise; + testWaitFor(dependency: Awaitable): TestRedisResourcePromise; getEndpoints(): Promise; withConnectionStringDirect(connectionString: string): TestRedisResourcePromise; withRedisSpecific(option: string): TestRedisResourcePromise; - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): TestRedisResourcePromise; - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): TestRedisResourcePromise; + withDependency(dependency: Awaitable): TestRedisResourcePromise; + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): TestRedisResourcePromise; withEndpoints(endpoints: string[]): TestRedisResourcePromise; withEnvironmentVariables(variables: Record): TestRedisResourcePromise; getStatusAsync(options?: GetStatusAsyncOptions): Promise; @@ -23949,7 +24183,7 @@ export interface TestRedisResource { } export interface TestRedisResourcePromise extends PromiseLike { - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestRedisResourcePromise; + withContainerRegistry(registry: Awaitable): TestRedisResourcePromise; withBindMount(source: string, target: string, options?: WithBindMountOptions): TestRedisResourcePromise; withEntrypoint(entrypoint: string): TestRedisResourcePromise; withImageTag(tag: string): TestRedisResourcePromise; @@ -23962,8 +24196,8 @@ export interface TestRedisResourcePromise extends PromiseLike publishAsContainer(): TestRedisResourcePromise; withDockerfile(contextPath: string, options?: WithDockerfileOptions): TestRedisResourcePromise; withContainerName(name: string): TestRedisResourcePromise; - withBuildArg(name: string, value: ParameterResource): TestRedisResourcePromise; - withBuildSecret(name: string, value: ParameterResource): TestRedisResourcePromise; + withBuildArg(name: string, value: Awaitable): TestRedisResourcePromise; + withBuildSecret(name: string, value: Awaitable): TestRedisResourcePromise; withEndpointProxySupport(proxyEnabled: boolean): TestRedisResourcePromise; withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): TestRedisResourcePromise; withContainerNetworkAlias(alias: string): TestRedisResourcePromise; @@ -23972,21 +24206,21 @@ export interface TestRedisResourcePromise extends PromiseLike withOtlpExporterProtocol(protocol: OtlpProtocol): TestRedisResourcePromise; publishAsConnectionString(): TestRedisResourcePromise; withRequiredCommand(command: string, options?: WithRequiredCommandOptions): TestRedisResourcePromise; - withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression): TestRedisResourcePromise; + withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): TestRedisResourcePromise; withEnvironmentExpression(name: string, value: ReferenceExpression): TestRedisResourcePromise; withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): TestRedisResourcePromise; - withEnvironmentEndpoint(name: string, endpointReference: EndpointReference): TestRedisResourcePromise; - withEnvironmentParameter(name: string, parameter: ParameterResource): TestRedisResourcePromise; - withEnvironmentConnectionString(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): TestRedisResourcePromise; + withEnvironmentEndpoint(name: string, endpointReference: Awaitable): TestRedisResourcePromise; + withEnvironmentParameter(name: string, parameter: Awaitable): TestRedisResourcePromise; + withEnvironmentConnectionString(envVarName: string, resource: Awaitable): TestRedisResourcePromise; withConnectionProperty(name: string, value: ReferenceExpression): TestRedisResourcePromise; withConnectionPropertyValue(name: string, value: string): TestRedisResourcePromise; withArgs(args: string[]): TestRedisResourcePromise; withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) => Promise): TestRedisResourcePromise; - withReference(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WithReferenceOptions): TestRedisResourcePromise; + withReference(source: Awaitable, options?: WithReferenceOptions): TestRedisResourcePromise; getConnectionProperty(key: string): Promise; withReferenceUri(name: string, uri: string): TestRedisResourcePromise; - withReferenceExternalService(externalService: ExternalServiceResource): TestRedisResourcePromise; - withReferenceEndpoint(endpointReference: EndpointReference): TestRedisResourcePromise; + withReferenceExternalService(externalService: Awaitable): TestRedisResourcePromise; + withReferenceEndpoint(endpointReference: Awaitable): TestRedisResourcePromise; withEndpoint(options?: WithEndpointOptions): TestRedisResourcePromise; withHttpEndpoint(options?: WithHttpEndpointOptions): TestRedisResourcePromise; withHttpsEndpoint(options?: WithHttpsEndpointOptions): TestRedisResourcePromise; @@ -23999,12 +24233,12 @@ export interface TestRedisResourcePromise extends PromiseLike withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): TestRedisResourcePromise; withUrlForEndpointFactory(endpointName: string, callback: (arg: EndpointReference) => Promise): TestRedisResourcePromise; excludeFromManifest(): TestRedisResourcePromise; - waitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestRedisResourcePromise; - waitForWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): TestRedisResourcePromise; - waitForStart(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestRedisResourcePromise; - waitForStartWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): TestRedisResourcePromise; + waitFor(dependency: Awaitable): TestRedisResourcePromise; + waitForWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): TestRedisResourcePromise; + waitForStart(dependency: Awaitable): TestRedisResourcePromise; + waitForStartWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): TestRedisResourcePromise; withExplicitStart(): TestRedisResourcePromise; - waitForCompletion(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WaitForCompletionOptions): TestRedisResourcePromise; + waitForCompletion(dependency: Awaitable, options?: WaitForCompletionOptions): TestRedisResourcePromise; withHealthCheck(key: string): TestRedisResourcePromise; withHttpHealthCheck(options?: WithHttpHealthCheckOptions): TestRedisResourcePromise; withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): TestRedisResourcePromise; @@ -24012,8 +24246,8 @@ export interface TestRedisResourcePromise extends PromiseLike withCertificateTrustScope(scope: CertificateTrustScope): TestRedisResourcePromise; withHttpsDeveloperCertificate(options?: WithHttpsDeveloperCertificateOptions): TestRedisResourcePromise; withoutHttpsCertificate(): TestRedisResourcePromise; - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestRedisResourcePromise; - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestRedisResourcePromise; + withParentRelationship(parent: Awaitable): TestRedisResourcePromise; + withChildRelationship(child: Awaitable): TestRedisResourcePromise; withIconName(iconName: string, options?: WithIconNameOptions): TestRedisResourcePromise; withHttpProbe(probeType: ProbeType, options?: WithHttpProbeOptions): TestRedisResourcePromise; excludeFromMcp(): TestRedisResourcePromise; @@ -24044,12 +24278,12 @@ export interface TestRedisResourcePromise extends PromiseLike withStatus(status: TestResourceStatus): TestRedisResourcePromise; withNestedConfig(config: TestNestedDto): TestRedisResourcePromise; withValidator(validator: (arg: TestResourceContext) => Promise): TestRedisResourcePromise; - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestRedisResourcePromise; + testWaitFor(dependency: Awaitable): TestRedisResourcePromise; getEndpoints(): Promise; withConnectionStringDirect(connectionString: string): TestRedisResourcePromise; withRedisSpecific(option: string): TestRedisResourcePromise; - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): TestRedisResourcePromise; - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): TestRedisResourcePromise; + withDependency(dependency: Awaitable): TestRedisResourcePromise; + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): TestRedisResourcePromise; withEndpoints(endpoints: string[]): TestRedisResourcePromise; withEnvironmentVariables(variables: Record): TestRedisResourcePromise; getStatusAsync(options?: GetStatusAsyncOptions): Promise; @@ -24077,7 +24311,8 @@ class TestRedisResourceImpl extends ResourceBuilderBase } /** @internal */ - private async _withContainerRegistryInternal(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _withContainerRegistryInternal(registry: Awaitable): Promise { + registry = isPromiseLike(registry) ? await registry : registry; const rpcArgs: Record = { builder: this._handle, registry }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withContainerRegistry', @@ -24087,8 +24322,8 @@ class TestRedisResourceImpl extends ResourceBuilderBase } /** Configures a resource to use a container registry */ - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withContainerRegistryInternal(registry)); + withContainerRegistry(registry: Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._withContainerRegistryInternal(registry), this._client); } /** @internal */ @@ -24105,7 +24340,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Adds a bind mount */ withBindMount(source: string, target: string, options?: WithBindMountOptions): TestRedisResourcePromise { const isReadOnly = options?.isReadOnly; - return new TestRedisResourcePromiseImpl(this._withBindMountInternal(source, target, isReadOnly)); + return new TestRedisResourcePromiseImpl(this._withBindMountInternal(source, target, isReadOnly), this._client); } /** @internal */ @@ -24120,7 +24355,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Sets the container entrypoint */ withEntrypoint(entrypoint: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withEntrypointInternal(entrypoint)); + return new TestRedisResourcePromiseImpl(this._withEntrypointInternal(entrypoint), this._client); } /** @internal */ @@ -24135,7 +24370,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Sets the container image tag */ withImageTag(tag: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withImageTagInternal(tag)); + return new TestRedisResourcePromiseImpl(this._withImageTagInternal(tag), this._client); } /** @internal */ @@ -24150,7 +24385,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Sets the container image registry */ withImageRegistry(registry: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withImageRegistryInternal(registry)); + return new TestRedisResourcePromiseImpl(this._withImageRegistryInternal(registry), this._client); } /** @internal */ @@ -24167,7 +24402,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Sets the container image */ withImage(image: string, options?: WithImageOptions): TestRedisResourcePromise { const tag = options?.tag; - return new TestRedisResourcePromiseImpl(this._withImageInternal(image, tag)); + return new TestRedisResourcePromiseImpl(this._withImageInternal(image, tag), this._client); } /** @internal */ @@ -24182,7 +24417,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Sets the image SHA256 digest */ withImageSHA256(sha256: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withImageSHA256Internal(sha256)); + return new TestRedisResourcePromiseImpl(this._withImageSHA256Internal(sha256), this._client); } /** @internal */ @@ -24197,7 +24432,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Adds runtime arguments for the container */ withContainerRuntimeArgs(args: string[]): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withContainerRuntimeArgsInternal(args)); + return new TestRedisResourcePromiseImpl(this._withContainerRuntimeArgsInternal(args), this._client); } /** @internal */ @@ -24212,7 +24447,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Sets the lifetime behavior of the container resource */ withLifetime(lifetime: ContainerLifetime): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withLifetimeInternal(lifetime)); + return new TestRedisResourcePromiseImpl(this._withLifetimeInternal(lifetime), this._client); } /** @internal */ @@ -24227,7 +24462,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Sets the container image pull policy */ withImagePullPolicy(pullPolicy: ImagePullPolicy): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withImagePullPolicyInternal(pullPolicy)); + return new TestRedisResourcePromiseImpl(this._withImagePullPolicyInternal(pullPolicy), this._client); } /** @internal */ @@ -24242,7 +24477,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Configures the resource to be published as a container */ publishAsContainer(): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._publishAsContainerInternal()); + return new TestRedisResourcePromiseImpl(this._publishAsContainerInternal(), this._client); } /** @internal */ @@ -24261,7 +24496,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase withDockerfile(contextPath: string, options?: WithDockerfileOptions): TestRedisResourcePromise { const dockerfilePath = options?.dockerfilePath; const stage = options?.stage; - return new TestRedisResourcePromiseImpl(this._withDockerfileInternal(contextPath, dockerfilePath, stage)); + return new TestRedisResourcePromiseImpl(this._withDockerfileInternal(contextPath, dockerfilePath, stage), this._client); } /** @internal */ @@ -24276,11 +24511,12 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Sets the container name */ withContainerName(name: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withContainerNameInternal(name)); + return new TestRedisResourcePromiseImpl(this._withContainerNameInternal(name), this._client); } /** @internal */ - private async _withBuildArgInternal(name: string, value: ParameterResource): Promise { + private async _withBuildArgInternal(name: string, value: Awaitable): Promise { + value = isPromiseLike(value) ? await value : value; const rpcArgs: Record = { builder: this._handle, name, value }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withParameterBuildArg', @@ -24290,12 +24526,13 @@ class TestRedisResourceImpl extends ResourceBuilderBase } /** Adds a build argument from a parameter resource */ - withBuildArg(name: string, value: ParameterResource): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withBuildArgInternal(name, value)); + withBuildArg(name: string, value: Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._withBuildArgInternal(name, value), this._client); } /** @internal */ - private async _withBuildSecretInternal(name: string, value: ParameterResource): Promise { + private async _withBuildSecretInternal(name: string, value: Awaitable): Promise { + value = isPromiseLike(value) ? await value : value; const rpcArgs: Record = { builder: this._handle, name, value }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withParameterBuildSecret', @@ -24305,8 +24542,8 @@ class TestRedisResourceImpl extends ResourceBuilderBase } /** Adds a build secret from a parameter resource */ - withBuildSecret(name: string, value: ParameterResource): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withBuildSecretInternal(name, value)); + withBuildSecret(name: string, value: Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._withBuildSecretInternal(name, value), this._client); } /** @internal */ @@ -24321,7 +24558,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Configures endpoint proxy support */ withEndpointProxySupport(proxyEnabled: boolean): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withEndpointProxySupportInternal(proxyEnabled)); + return new TestRedisResourcePromiseImpl(this._withEndpointProxySupportInternal(proxyEnabled), this._client); } /** @internal */ @@ -24340,7 +24577,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): TestRedisResourcePromise { const buildImage = options?.buildImage; const runtimeImage = options?.runtimeImage; - return new TestRedisResourcePromiseImpl(this._withDockerfileBaseImageInternal(buildImage, runtimeImage)); + return new TestRedisResourcePromiseImpl(this._withDockerfileBaseImageInternal(buildImage, runtimeImage), this._client); } /** @internal */ @@ -24355,7 +24592,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Adds a network alias for the container */ withContainerNetworkAlias(alias: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withContainerNetworkAliasInternal(alias)); + return new TestRedisResourcePromiseImpl(this._withContainerNetworkAliasInternal(alias), this._client); } /** @internal */ @@ -24374,7 +24611,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase withMcpServer(options?: WithMcpServerOptions): TestRedisResourcePromise { const path = options?.path; const endpointName = options?.endpointName; - return new TestRedisResourcePromiseImpl(this._withMcpServerInternal(path, endpointName)); + return new TestRedisResourcePromiseImpl(this._withMcpServerInternal(path, endpointName), this._client); } /** @internal */ @@ -24389,7 +24626,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Configures OTLP telemetry export */ withOtlpExporter(): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withOtlpExporterInternal()); + return new TestRedisResourcePromiseImpl(this._withOtlpExporterInternal(), this._client); } /** @internal */ @@ -24404,7 +24641,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Configures OTLP telemetry export with specific protocol */ withOtlpExporterProtocol(protocol: OtlpProtocol): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withOtlpExporterProtocolInternal(protocol)); + return new TestRedisResourcePromiseImpl(this._withOtlpExporterProtocolInternal(protocol), this._client); } /** @internal */ @@ -24419,7 +24656,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Publishes the resource as a connection string */ publishAsConnectionString(): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._publishAsConnectionStringInternal()); + return new TestRedisResourcePromiseImpl(this._publishAsConnectionStringInternal(), this._client); } /** @internal */ @@ -24436,11 +24673,12 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Adds a required command dependency */ withRequiredCommand(command: string, options?: WithRequiredCommandOptions): TestRedisResourcePromise { const helpLink = options?.helpLink; - return new TestRedisResourcePromiseImpl(this._withRequiredCommandInternal(command, helpLink)); + return new TestRedisResourcePromiseImpl(this._withRequiredCommandInternal(command, helpLink), this._client); } /** @internal */ - private async _withEnvironmentInternal(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression): Promise { + private async _withEnvironmentInternal(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): Promise { + value = isPromiseLike(value) ? await value : value; const rpcArgs: Record = { builder: this._handle, name, value }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironment', @@ -24450,8 +24688,8 @@ class TestRedisResourceImpl extends ResourceBuilderBase } /** Sets an environment variable */ - withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withEnvironmentInternal(name, value)); + withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._withEnvironmentInternal(name, value), this._client); } /** @internal */ @@ -24469,7 +24707,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase * @deprecated ATS compatibility shim. Use withEnvironment instead. */ withEnvironmentExpression(name: string, value: ReferenceExpression): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withEnvironmentExpressionInternal(name, value)); + return new TestRedisResourcePromiseImpl(this._withEnvironmentExpressionInternal(name, value), this._client); } /** @internal */ @@ -24489,11 +24727,12 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Sets environment variables via callback */ withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withEnvironmentCallbackInternal(callback)); + return new TestRedisResourcePromiseImpl(this._withEnvironmentCallbackInternal(callback), this._client); } /** @internal */ - private async _withEnvironmentEndpointInternal(name: string, endpointReference: EndpointReference): Promise { + private async _withEnvironmentEndpointInternal(name: string, endpointReference: Awaitable): Promise { + endpointReference = isPromiseLike(endpointReference) ? await endpointReference : endpointReference; const rpcArgs: Record = { builder: this._handle, name, endpointReference }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironmentEndpoint', @@ -24506,12 +24745,13 @@ class TestRedisResourceImpl extends ResourceBuilderBase * Sets an environment variable from an endpoint reference * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentEndpoint(name: string, endpointReference: EndpointReference): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withEnvironmentEndpointInternal(name, endpointReference)); + withEnvironmentEndpoint(name: string, endpointReference: Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._withEnvironmentEndpointInternal(name, endpointReference), this._client); } /** @internal */ - private async _withEnvironmentParameterInternal(name: string, parameter: ParameterResource): Promise { + private async _withEnvironmentParameterInternal(name: string, parameter: Awaitable): Promise { + parameter = isPromiseLike(parameter) ? await parameter : parameter; const rpcArgs: Record = { builder: this._handle, name, parameter }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironmentParameter', @@ -24524,12 +24764,13 @@ class TestRedisResourceImpl extends ResourceBuilderBase * Sets an environment variable from a parameter resource * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentParameter(name: string, parameter: ParameterResource): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withEnvironmentParameterInternal(name, parameter)); + withEnvironmentParameter(name: string, parameter: Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._withEnvironmentParameterInternal(name, parameter), this._client); } /** @internal */ - private async _withEnvironmentConnectionStringInternal(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withEnvironmentConnectionStringInternal(envVarName: string, resource: Awaitable): Promise { + resource = isPromiseLike(resource) ? await resource : resource; const rpcArgs: Record = { builder: this._handle, envVarName, resource }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironmentConnectionString', @@ -24542,8 +24783,8 @@ class TestRedisResourceImpl extends ResourceBuilderBase * Sets an environment variable from a connection string resource * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentConnectionString(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withEnvironmentConnectionStringInternal(envVarName, resource)); + withEnvironmentConnectionString(envVarName: string, resource: Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._withEnvironmentConnectionStringInternal(envVarName, resource), this._client); } /** @internal */ @@ -24558,7 +24799,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Adds a connection property with a reference expression */ withConnectionProperty(name: string, value: ReferenceExpression): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withConnectionPropertyInternal(name, value)); + return new TestRedisResourcePromiseImpl(this._withConnectionPropertyInternal(name, value), this._client); } /** @internal */ @@ -24573,7 +24814,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Adds a connection property with a string value */ withConnectionPropertyValue(name: string, value: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withConnectionPropertyValueInternal(name, value)); + return new TestRedisResourcePromiseImpl(this._withConnectionPropertyValueInternal(name, value), this._client); } /** @internal */ @@ -24588,7 +24829,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Adds arguments */ withArgs(args: string[]): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withArgsInternal(args)); + return new TestRedisResourcePromiseImpl(this._withArgsInternal(args), this._client); } /** @internal */ @@ -24608,11 +24849,12 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Sets command-line arguments via callback */ withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withArgsCallbackInternal(callback)); + return new TestRedisResourcePromiseImpl(this._withArgsCallbackInternal(callback), this._client); } /** @internal */ - private async _withReferenceInternal(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, connectionName?: string, optional?: boolean, name?: string): Promise { + private async _withReferenceInternal(source: Awaitable, connectionName?: string, optional?: boolean, name?: string): Promise { + source = isPromiseLike(source) ? await source : source; const rpcArgs: Record = { builder: this._handle, source }; if (connectionName !== undefined) rpcArgs.connectionName = connectionName; if (optional !== undefined) rpcArgs.optional = optional; @@ -24625,11 +24867,11 @@ class TestRedisResourceImpl extends ResourceBuilderBase } /** Adds a reference to another resource */ - withReference(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WithReferenceOptions): TestRedisResourcePromise { + withReference(source: Awaitable, options?: WithReferenceOptions): TestRedisResourcePromise { const connectionName = options?.connectionName; const optional = options?.optional; const name = options?.name; - return new TestRedisResourcePromiseImpl(this._withReferenceInternal(source, connectionName, optional, name)); + return new TestRedisResourcePromiseImpl(this._withReferenceInternal(source, connectionName, optional, name), this._client); } /** Gets a connection property by key */ @@ -24653,11 +24895,12 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Adds a reference to a URI */ withReferenceUri(name: string, uri: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withReferenceUriInternal(name, uri)); + return new TestRedisResourcePromiseImpl(this._withReferenceUriInternal(name, uri), this._client); } /** @internal */ - private async _withReferenceExternalServiceInternal(externalService: ExternalServiceResource): Promise { + private async _withReferenceExternalServiceInternal(externalService: Awaitable): Promise { + externalService = isPromiseLike(externalService) ? await externalService : externalService; const rpcArgs: Record = { builder: this._handle, externalService }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withReferenceExternalService', @@ -24667,12 +24910,13 @@ class TestRedisResourceImpl extends ResourceBuilderBase } /** Adds a reference to an external service */ - withReferenceExternalService(externalService: ExternalServiceResource): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withReferenceExternalServiceInternal(externalService)); + withReferenceExternalService(externalService: Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._withReferenceExternalServiceInternal(externalService), this._client); } /** @internal */ - private async _withReferenceEndpointInternal(endpointReference: EndpointReference): Promise { + private async _withReferenceEndpointInternal(endpointReference: Awaitable): Promise { + endpointReference = isPromiseLike(endpointReference) ? await endpointReference : endpointReference; const rpcArgs: Record = { builder: this._handle, endpointReference }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withReferenceEndpoint', @@ -24682,8 +24926,8 @@ class TestRedisResourceImpl extends ResourceBuilderBase } /** Adds a reference to an endpoint */ - withReferenceEndpoint(endpointReference: EndpointReference): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withReferenceEndpointInternal(endpointReference)); + withReferenceEndpoint(endpointReference: Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._withReferenceEndpointInternal(endpointReference), this._client); } /** @internal */ @@ -24714,7 +24958,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase const isProxied = options?.isProxied; const isExternal = options?.isExternal; const protocol = options?.protocol; - return new TestRedisResourcePromiseImpl(this._withEndpointInternal(port, targetPort, scheme, name, env, isProxied, isExternal, protocol)); + return new TestRedisResourcePromiseImpl(this._withEndpointInternal(port, targetPort, scheme, name, env, isProxied, isExternal, protocol), this._client); } /** @internal */ @@ -24739,7 +24983,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase const name = options?.name; const env = options?.env; const isProxied = options?.isProxied; - return new TestRedisResourcePromiseImpl(this._withHttpEndpointInternal(port, targetPort, name, env, isProxied)); + return new TestRedisResourcePromiseImpl(this._withHttpEndpointInternal(port, targetPort, name, env, isProxied), this._client); } /** @internal */ @@ -24764,7 +25008,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase const name = options?.name; const env = options?.env; const isProxied = options?.isProxied; - return new TestRedisResourcePromiseImpl(this._withHttpsEndpointInternal(port, targetPort, name, env, isProxied)); + return new TestRedisResourcePromiseImpl(this._withHttpsEndpointInternal(port, targetPort, name, env, isProxied), this._client); } /** @internal */ @@ -24779,7 +25023,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Makes HTTP endpoints externally accessible */ withExternalHttpEndpoints(): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withExternalHttpEndpointsInternal()); + return new TestRedisResourcePromiseImpl(this._withExternalHttpEndpointsInternal(), this._client); } /** Gets an endpoint reference */ @@ -24803,7 +25047,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Configures resource for HTTP/2 */ asHttp2Service(): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._asHttp2ServiceInternal()); + return new TestRedisResourcePromiseImpl(this._asHttp2ServiceInternal(), this._client); } /** @internal */ @@ -24823,7 +25067,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Customizes displayed URLs via callback */ withUrlsCallback(callback: (obj: ResourceUrlsCallbackContext) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withUrlsCallbackInternal(callback)); + return new TestRedisResourcePromiseImpl(this._withUrlsCallbackInternal(callback), this._client); } /** @internal */ @@ -24840,7 +25084,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Adds or modifies displayed URLs */ withUrl(url: string, options?: WithUrlOptions): TestRedisResourcePromise { const displayText = options?.displayText; - return new TestRedisResourcePromiseImpl(this._withUrlInternal(url, displayText)); + return new TestRedisResourcePromiseImpl(this._withUrlInternal(url, displayText), this._client); } /** @internal */ @@ -24857,7 +25101,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Adds a URL using a reference expression */ withUrlExpression(url: ReferenceExpression, options?: WithUrlExpressionOptions): TestRedisResourcePromise { const displayText = options?.displayText; - return new TestRedisResourcePromiseImpl(this._withUrlExpressionInternal(url, displayText)); + return new TestRedisResourcePromiseImpl(this._withUrlExpressionInternal(url, displayText), this._client); } /** @internal */ @@ -24876,7 +25120,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Customizes the URL for a specific endpoint via callback */ withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withUrlForEndpointInternal(endpointName, callback)); + return new TestRedisResourcePromiseImpl(this._withUrlForEndpointInternal(endpointName, callback), this._client); } /** @internal */ @@ -24896,7 +25140,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Adds a URL for a specific endpoint via factory callback */ withUrlForEndpointFactory(endpointName: string, callback: (arg: EndpointReference) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withUrlForEndpointFactoryInternal(endpointName, callback)); + return new TestRedisResourcePromiseImpl(this._withUrlForEndpointFactoryInternal(endpointName, callback), this._client); } /** @internal */ @@ -24911,11 +25155,12 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Excludes the resource from the deployment manifest */ excludeFromManifest(): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._excludeFromManifestInternal()); + return new TestRedisResourcePromiseImpl(this._excludeFromManifestInternal(), this._client); } /** @internal */ - private async _waitForInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _waitForInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForResource', @@ -24925,12 +25170,13 @@ class TestRedisResourceImpl extends ResourceBuilderBase } /** Waits for another resource to be ready */ - waitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._waitForInternal(dependency)); + waitFor(dependency: Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._waitForInternal(dependency), this._client); } /** @internal */ - private async _waitForWithBehaviorInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): Promise { + private async _waitForWithBehaviorInternal(dependency: Awaitable, waitBehavior: WaitBehavior): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency, waitBehavior }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForWithBehavior', @@ -24940,12 +25186,13 @@ class TestRedisResourceImpl extends ResourceBuilderBase } /** Waits for another resource with specific behavior */ - waitForWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._waitForWithBehaviorInternal(dependency, waitBehavior)); + waitForWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._waitForWithBehaviorInternal(dependency, waitBehavior), this._client); } /** @internal */ - private async _waitForStartInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _waitForStartInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForResourceStart', @@ -24955,12 +25202,13 @@ class TestRedisResourceImpl extends ResourceBuilderBase } /** Waits for another resource to start */ - waitForStart(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._waitForStartInternal(dependency)); + waitForStart(dependency: Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._waitForStartInternal(dependency), this._client); } /** @internal */ - private async _waitForStartWithBehaviorInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): Promise { + private async _waitForStartWithBehaviorInternal(dependency: Awaitable, waitBehavior: WaitBehavior): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency, waitBehavior }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForStartWithBehavior', @@ -24970,8 +25218,8 @@ class TestRedisResourceImpl extends ResourceBuilderBase } /** Waits for another resource to start with specific behavior */ - waitForStartWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._waitForStartWithBehaviorInternal(dependency, waitBehavior)); + waitForStartWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._waitForStartWithBehaviorInternal(dependency, waitBehavior), this._client); } /** @internal */ @@ -24986,11 +25234,12 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Prevents resource from starting automatically */ withExplicitStart(): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withExplicitStartInternal()); + return new TestRedisResourcePromiseImpl(this._withExplicitStartInternal(), this._client); } /** @internal */ - private async _waitForCompletionInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, exitCode?: number): Promise { + private async _waitForCompletionInternal(dependency: Awaitable, exitCode?: number): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; if (exitCode !== undefined) rpcArgs.exitCode = exitCode; const result = await this._client.invokeCapability( @@ -25001,9 +25250,9 @@ class TestRedisResourceImpl extends ResourceBuilderBase } /** Waits for resource completion */ - waitForCompletion(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WaitForCompletionOptions): TestRedisResourcePromise { + waitForCompletion(dependency: Awaitable, options?: WaitForCompletionOptions): TestRedisResourcePromise { const exitCode = options?.exitCode; - return new TestRedisResourcePromiseImpl(this._waitForCompletionInternal(dependency, exitCode)); + return new TestRedisResourcePromiseImpl(this._waitForCompletionInternal(dependency, exitCode), this._client); } /** @internal */ @@ -25018,7 +25267,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Adds a health check by key */ withHealthCheck(key: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withHealthCheckInternal(key)); + return new TestRedisResourcePromiseImpl(this._withHealthCheckInternal(key), this._client); } /** @internal */ @@ -25039,7 +25288,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase const path = options?.path; const statusCode = options?.statusCode; const endpointName = options?.endpointName; - return new TestRedisResourcePromiseImpl(this._withHttpHealthCheckInternal(path, statusCode, endpointName)); + return new TestRedisResourcePromiseImpl(this._withHttpHealthCheckInternal(path, statusCode, endpointName), this._client); } /** @internal */ @@ -25061,7 +25310,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Adds a resource command */ withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): TestRedisResourcePromise { const commandOptions = options?.commandOptions; - return new TestRedisResourcePromiseImpl(this._withCommandInternal(name, displayName, executeCommand, commandOptions)); + return new TestRedisResourcePromiseImpl(this._withCommandInternal(name, displayName, executeCommand, commandOptions), this._client); } /** @internal */ @@ -25076,7 +25325,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Configures developer certificate trust */ withDeveloperCertificateTrust(trust: boolean): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withDeveloperCertificateTrustInternal(trust)); + return new TestRedisResourcePromiseImpl(this._withDeveloperCertificateTrustInternal(trust), this._client); } /** @internal */ @@ -25091,11 +25340,12 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Sets the certificate trust scope */ withCertificateTrustScope(scope: CertificateTrustScope): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withCertificateTrustScopeInternal(scope)); + return new TestRedisResourcePromiseImpl(this._withCertificateTrustScopeInternal(scope), this._client); } /** @internal */ - private async _withHttpsDeveloperCertificateInternal(password?: ParameterResource): Promise { + private async _withHttpsDeveloperCertificateInternal(password?: Awaitable): Promise { + password = isPromiseLike(password) ? await password : password; const rpcArgs: Record = { builder: this._handle }; if (password !== undefined) rpcArgs.password = password; const result = await this._client.invokeCapability( @@ -25107,8 +25357,8 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Configures HTTPS with a developer certificate */ withHttpsDeveloperCertificate(options?: WithHttpsDeveloperCertificateOptions): TestRedisResourcePromise { - const password = options?.password; - return new TestRedisResourcePromiseImpl(this._withHttpsDeveloperCertificateInternal(password)); + let password = options?.password; + return new TestRedisResourcePromiseImpl(this._withHttpsDeveloperCertificateInternal(password), this._client); } /** @internal */ @@ -25123,11 +25373,12 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Removes HTTPS certificate configuration */ withoutHttpsCertificate(): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withoutHttpsCertificateInternal()); + return new TestRedisResourcePromiseImpl(this._withoutHttpsCertificateInternal(), this._client); } /** @internal */ - private async _withParentRelationshipInternal(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _withParentRelationshipInternal(parent: Awaitable): Promise { + parent = isPromiseLike(parent) ? await parent : parent; const rpcArgs: Record = { builder: this._handle, parent }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withBuilderParentRelationship', @@ -25137,12 +25388,13 @@ class TestRedisResourceImpl extends ResourceBuilderBase } /** Sets the parent relationship */ - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withParentRelationshipInternal(parent)); + withParentRelationship(parent: Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._withParentRelationshipInternal(parent), this._client); } /** @internal */ - private async _withChildRelationshipInternal(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _withChildRelationshipInternal(child: Awaitable): Promise { + child = isPromiseLike(child) ? await child : child; const rpcArgs: Record = { builder: this._handle, child }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withBuilderChildRelationship', @@ -25152,8 +25404,8 @@ class TestRedisResourceImpl extends ResourceBuilderBase } /** Sets a child relationship */ - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withChildRelationshipInternal(child)); + withChildRelationship(child: Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._withChildRelationshipInternal(child), this._client); } /** @internal */ @@ -25170,7 +25422,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Sets the icon for the resource */ withIconName(iconName: string, options?: WithIconNameOptions): TestRedisResourcePromise { const iconVariant = options?.iconVariant; - return new TestRedisResourcePromiseImpl(this._withIconNameInternal(iconName, iconVariant)); + return new TestRedisResourcePromiseImpl(this._withIconNameInternal(iconName, iconVariant), this._client); } /** @internal */ @@ -25199,7 +25451,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase const failureThreshold = options?.failureThreshold; const successThreshold = options?.successThreshold; const endpointName = options?.endpointName; - return new TestRedisResourcePromiseImpl(this._withHttpProbeInternal(probeType, path, initialDelaySeconds, periodSeconds, timeoutSeconds, failureThreshold, successThreshold, endpointName)); + return new TestRedisResourcePromiseImpl(this._withHttpProbeInternal(probeType, path, initialDelaySeconds, periodSeconds, timeoutSeconds, failureThreshold, successThreshold, endpointName), this._client); } /** @internal */ @@ -25214,7 +25466,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Excludes the resource from MCP server exposure */ excludeFromMcp(): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._excludeFromMcpInternal()); + return new TestRedisResourcePromiseImpl(this._excludeFromMcpInternal(), this._client); } /** @internal */ @@ -25229,7 +25481,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Sets the remote image name for publishing */ withRemoteImageName(remoteImageName: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withRemoteImageNameInternal(remoteImageName)); + return new TestRedisResourcePromiseImpl(this._withRemoteImageNameInternal(remoteImageName), this._client); } /** @internal */ @@ -25244,7 +25496,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Sets the remote image tag for publishing */ withRemoteImageTag(remoteImageTag: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withRemoteImageTagInternal(remoteImageTag)); + return new TestRedisResourcePromiseImpl(this._withRemoteImageTagInternal(remoteImageTag), this._client); } /** @internal */ @@ -25272,7 +25524,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase const requiredBy = options?.requiredBy; const tags = options?.tags; const description = options?.description; - return new TestRedisResourcePromiseImpl(this._withPipelineStepFactoryInternal(stepName, callback, dependsOn, requiredBy, tags, description)); + return new TestRedisResourcePromiseImpl(this._withPipelineStepFactoryInternal(stepName, callback, dependsOn, requiredBy, tags, description), this._client); } /** @internal */ @@ -25292,7 +25544,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Configures pipeline step dependencies via a callback */ withPipelineConfiguration(callback: (obj: PipelineConfigurationContext) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withPipelineConfigurationInternal(callback)); + return new TestRedisResourcePromiseImpl(this._withPipelineConfigurationInternal(callback), this._client); } /** @internal */ @@ -25311,7 +25563,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase withVolume(target: string, options?: WithVolumeOptions): TestRedisResourcePromise { const name = options?.name; const isReadOnly = options?.isReadOnly; - return new TestRedisResourcePromiseImpl(this._withVolumeInternal(target, name, isReadOnly)); + return new TestRedisResourcePromiseImpl(this._withVolumeInternal(target, name, isReadOnly), this._client); } /** Gets the resource name */ @@ -25340,7 +25592,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Subscribes to the BeforeResourceStarted event */ onBeforeResourceStarted(callback: (arg: BeforeResourceStartedEvent) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._onBeforeResourceStartedInternal(callback)); + return new TestRedisResourcePromiseImpl(this._onBeforeResourceStartedInternal(callback), this._client); } /** @internal */ @@ -25360,7 +25612,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Subscribes to the ResourceStopped event */ onResourceStopped(callback: (arg: ResourceStoppedEvent) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._onResourceStoppedInternal(callback)); + return new TestRedisResourcePromiseImpl(this._onResourceStoppedInternal(callback), this._client); } /** @internal */ @@ -25380,7 +25632,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Subscribes to the ConnectionStringAvailable event */ onConnectionStringAvailable(callback: (arg: ConnectionStringAvailableEvent) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._onConnectionStringAvailableInternal(callback)); + return new TestRedisResourcePromiseImpl(this._onConnectionStringAvailableInternal(callback), this._client); } /** @internal */ @@ -25400,7 +25652,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Subscribes to the InitializeResource event */ onInitializeResource(callback: (arg: InitializeResourceEvent) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._onInitializeResourceInternal(callback)); + return new TestRedisResourcePromiseImpl(this._onInitializeResourceInternal(callback), this._client); } /** @internal */ @@ -25420,7 +25672,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Subscribes to the ResourceEndpointsAllocated event */ onResourceEndpointsAllocated(callback: (arg: ResourceEndpointsAllocatedEvent) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._onResourceEndpointsAllocatedInternal(callback)); + return new TestRedisResourcePromiseImpl(this._onResourceEndpointsAllocatedInternal(callback), this._client); } /** @internal */ @@ -25440,7 +25692,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Subscribes to the ResourceReady event */ onResourceReady(callback: (arg: ResourceReadyEvent) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._onResourceReadyInternal(callback)); + return new TestRedisResourcePromiseImpl(this._onResourceReadyInternal(callback), this._client); } /** @internal */ @@ -25457,7 +25709,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Adds a child database to a test Redis resource */ addTestChildDatabase(name: string, options?: AddTestChildDatabaseOptions): TestDatabaseResourcePromise { const databaseName = options?.databaseName; - return new TestDatabaseResourcePromiseImpl(this._addTestChildDatabaseInternal(name, databaseName)); + return new TestDatabaseResourcePromiseImpl(this._addTestChildDatabaseInternal(name, databaseName), this._client); } /** @internal */ @@ -25474,7 +25726,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Configures the Redis resource with persistence */ withPersistence(options?: WithPersistenceOptions): TestRedisResourcePromise { const mode = options?.mode; - return new TestRedisResourcePromiseImpl(this._withPersistenceInternal(mode)); + return new TestRedisResourcePromiseImpl(this._withPersistenceInternal(mode), this._client); } /** @internal */ @@ -25493,7 +25745,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase withOptionalString(options?: WithOptionalStringOptions): TestRedisResourcePromise { const value = options?.value; const enabled = options?.enabled; - return new TestRedisResourcePromiseImpl(this._withOptionalStringInternal(value, enabled)); + return new TestRedisResourcePromiseImpl(this._withOptionalStringInternal(value, enabled), this._client); } /** @internal */ @@ -25508,7 +25760,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Configures the resource with a DTO */ withConfig(config: TestConfigDto): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withConfigInternal(config)); + return new TestRedisResourcePromiseImpl(this._withConfigInternal(config), this._client); } /** Gets the tags for the resource */ @@ -25541,7 +25793,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Sets the connection string using a reference expression */ withConnectionString(connectionString: ReferenceExpression): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withConnectionStringInternal(connectionString)); + return new TestRedisResourcePromiseImpl(this._withConnectionStringInternal(connectionString), this._client); } /** @internal */ @@ -25561,7 +25813,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Configures environment with callback (test version) */ testWithEnvironmentCallback(callback: (arg: TestEnvironmentContext) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._testWithEnvironmentCallbackInternal(callback)); + return new TestRedisResourcePromiseImpl(this._testWithEnvironmentCallbackInternal(callback), this._client); } /** @internal */ @@ -25576,7 +25828,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Sets the created timestamp */ withCreatedAt(createdAt: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withCreatedAtInternal(createdAt)); + return new TestRedisResourcePromiseImpl(this._withCreatedAtInternal(createdAt), this._client); } /** @internal */ @@ -25591,7 +25843,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Sets the modified timestamp */ withModifiedAt(modifiedAt: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withModifiedAtInternal(modifiedAt)); + return new TestRedisResourcePromiseImpl(this._withModifiedAtInternal(modifiedAt), this._client); } /** @internal */ @@ -25606,7 +25858,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Sets the correlation ID */ withCorrelationId(correlationId: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withCorrelationIdInternal(correlationId)); + return new TestRedisResourcePromiseImpl(this._withCorrelationIdInternal(correlationId), this._client); } /** @internal */ @@ -25628,7 +25880,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Configures with optional callback */ withOptionalCallback(options?: WithOptionalCallbackOptions): TestRedisResourcePromise { const callback = options?.callback; - return new TestRedisResourcePromiseImpl(this._withOptionalCallbackInternal(callback)); + return new TestRedisResourcePromiseImpl(this._withOptionalCallbackInternal(callback), this._client); } /** @internal */ @@ -25643,7 +25895,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Sets the resource status */ withStatus(status: TestResourceStatus): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withStatusInternal(status)); + return new TestRedisResourcePromiseImpl(this._withStatusInternal(status), this._client); } /** @internal */ @@ -25658,7 +25910,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Configures with nested DTO */ withNestedConfig(config: TestNestedDto): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withNestedConfigInternal(config)); + return new TestRedisResourcePromiseImpl(this._withNestedConfigInternal(config), this._client); } /** @internal */ @@ -25678,11 +25930,12 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Adds validation callback */ withValidator(validator: (arg: TestResourceContext) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withValidatorInternal(validator)); + return new TestRedisResourcePromiseImpl(this._withValidatorInternal(validator), this._client); } /** @internal */ - private async _testWaitForInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _testWaitForInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/testWaitFor', @@ -25692,8 +25945,8 @@ class TestRedisResourceImpl extends ResourceBuilderBase } /** Waits for another resource (test version) */ - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._testWaitForInternal(dependency)); + testWaitFor(dependency: Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._testWaitForInternal(dependency), this._client); } /** Gets the endpoints */ @@ -25717,7 +25970,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Sets connection string using direct interface target */ withConnectionStringDirect(connectionString: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withConnectionStringDirectInternal(connectionString)); + return new TestRedisResourcePromiseImpl(this._withConnectionStringDirectInternal(connectionString), this._client); } /** @internal */ @@ -25732,11 +25985,12 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Redis-specific configuration */ withRedisSpecific(option: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withRedisSpecificInternal(option)); + return new TestRedisResourcePromiseImpl(this._withRedisSpecificInternal(option), this._client); } /** @internal */ - private async _withDependencyInternal(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withDependencyInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/withDependency', @@ -25746,12 +26000,13 @@ class TestRedisResourceImpl extends ResourceBuilderBase } /** Adds a dependency on another resource */ - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withDependencyInternal(dependency)); + withDependency(dependency: Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._withDependencyInternal(dependency), this._client); } /** @internal */ - private async _withUnionDependencyInternal(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withUnionDependencyInternal(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/withUnionDependency', @@ -25761,8 +26016,8 @@ class TestRedisResourceImpl extends ResourceBuilderBase } /** Adds a dependency from a string or another resource */ - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withUnionDependencyInternal(dependency)); + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._withUnionDependencyInternal(dependency), this._client); } /** @internal */ @@ -25777,7 +26032,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Sets the endpoints */ withEndpoints(endpoints: string[]): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withEndpointsInternal(endpoints)); + return new TestRedisResourcePromiseImpl(this._withEndpointsInternal(endpoints), this._client); } /** @internal */ @@ -25792,7 +26047,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Sets environment variables */ withEnvironmentVariables(variables: Record): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withEnvironmentVariablesInternal(variables)); + return new TestRedisResourcePromiseImpl(this._withEnvironmentVariablesInternal(variables), this._client); } /** Gets the status of the resource asynchronously */ @@ -25822,7 +26077,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Performs a cancellable operation */ withCancellableOperation(operation: (arg: CancellationToken) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withCancellableOperationInternal(operation)); + return new TestRedisResourcePromiseImpl(this._withCancellableOperationInternal(operation), this._client); } /** Waits for the resource to be ready */ @@ -25855,7 +26110,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Tests multi-param callback destructuring */ withMultiParamHandleCallback(callback: (arg1: TestCallbackContext, arg2: TestEnvironmentContext) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withMultiParamHandleCallbackInternal(callback)); + return new TestRedisResourcePromiseImpl(this._withMultiParamHandleCallbackInternal(callback), this._client); } /** @internal */ @@ -25874,7 +26129,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase withDataVolume(options?: WithDataVolumeOptions): TestRedisResourcePromise { const name = options?.name; const isReadOnly = options?.isReadOnly; - return new TestRedisResourcePromiseImpl(this._withDataVolumeInternal(name, isReadOnly)); + return new TestRedisResourcePromiseImpl(this._withDataVolumeInternal(name, isReadOnly), this._client); } /** @internal */ @@ -25889,7 +26144,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Adds a label to the resource */ withMergeLabel(label: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withMergeLabelInternal(label)); + return new TestRedisResourcePromiseImpl(this._withMergeLabelInternal(label), this._client); } /** @internal */ @@ -25904,7 +26159,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Adds a categorized label to the resource */ withMergeLabelCategorized(label: string, category: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withMergeLabelCategorizedInternal(label, category)); + return new TestRedisResourcePromiseImpl(this._withMergeLabelCategorizedInternal(label, category), this._client); } /** @internal */ @@ -25919,7 +26174,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Configures a named endpoint */ withMergeEndpoint(endpointName: string, port: number): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withMergeEndpointInternal(endpointName, port)); + return new TestRedisResourcePromiseImpl(this._withMergeEndpointInternal(endpointName, port), this._client); } /** @internal */ @@ -25934,7 +26189,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Configures a named endpoint with scheme */ withMergeEndpointScheme(endpointName: string, port: number, scheme: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withMergeEndpointSchemeInternal(endpointName, port, scheme)); + return new TestRedisResourcePromiseImpl(this._withMergeEndpointSchemeInternal(endpointName, port, scheme), this._client); } /** @internal */ @@ -25953,7 +26208,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase withMergeLogging(logLevel: string, options?: WithMergeLoggingOptions): TestRedisResourcePromise { const enableConsole = options?.enableConsole; const maxFiles = options?.maxFiles; - return new TestRedisResourcePromiseImpl(this._withMergeLoggingInternal(logLevel, enableConsole, maxFiles)); + return new TestRedisResourcePromiseImpl(this._withMergeLoggingInternal(logLevel, enableConsole, maxFiles), this._client); } /** @internal */ @@ -25972,7 +26227,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase withMergeLoggingPath(logLevel: string, logPath: string, options?: WithMergeLoggingPathOptions): TestRedisResourcePromise { const enableConsole = options?.enableConsole; const maxFiles = options?.maxFiles; - return new TestRedisResourcePromiseImpl(this._withMergeLoggingPathInternal(logLevel, logPath, enableConsole, maxFiles)); + return new TestRedisResourcePromiseImpl(this._withMergeLoggingPathInternal(logLevel, logPath, enableConsole, maxFiles), this._client); } /** @internal */ @@ -25987,7 +26242,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Configures a route */ withMergeRoute(path: string, method: string, handler: string, priority: number): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withMergeRouteInternal(path, method, handler, priority)); + return new TestRedisResourcePromiseImpl(this._withMergeRouteInternal(path, method, handler, priority), this._client); } /** @internal */ @@ -26002,7 +26257,7 @@ class TestRedisResourceImpl extends ResourceBuilderBase /** Configures a route with middleware */ withMergeRouteMiddleware(path: string, method: string, handler: string, priority: number, middleware: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._withMergeRouteMiddlewareInternal(path, method, handler, priority, middleware)); + return new TestRedisResourcePromiseImpl(this._withMergeRouteMiddlewareInternal(path, method, handler, priority, middleware), this._client); } } @@ -26013,7 +26268,9 @@ class TestRedisResourceImpl extends ResourceBuilderBase * await builder.addSomething().withX().withY(); */ class TestRedisResourcePromiseImpl implements TestRedisResourcePromise { - constructor(private _promise: Promise) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: TestRedisResource) => TResult1 | PromiseLike) | null, @@ -26023,123 +26280,123 @@ class TestRedisResourcePromiseImpl implements TestRedisResourcePromise { } /** Configures a resource to use a container registry */ - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withContainerRegistry(registry))); + withContainerRegistry(registry: Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withContainerRegistry(registry)), this._client); } /** Adds a bind mount */ withBindMount(source: string, target: string, options?: WithBindMountOptions): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withBindMount(source, target, options))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withBindMount(source, target, options)), this._client); } /** Sets the container entrypoint */ withEntrypoint(entrypoint: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withEntrypoint(entrypoint))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withEntrypoint(entrypoint)), this._client); } /** Sets the container image tag */ withImageTag(tag: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withImageTag(tag))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withImageTag(tag)), this._client); } /** Sets the container image registry */ withImageRegistry(registry: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withImageRegistry(registry))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withImageRegistry(registry)), this._client); } /** Sets the container image */ withImage(image: string, options?: WithImageOptions): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withImage(image, options))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withImage(image, options)), this._client); } /** Sets the image SHA256 digest */ withImageSHA256(sha256: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withImageSHA256(sha256))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withImageSHA256(sha256)), this._client); } /** Adds runtime arguments for the container */ withContainerRuntimeArgs(args: string[]): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withContainerRuntimeArgs(args))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withContainerRuntimeArgs(args)), this._client); } /** Sets the lifetime behavior of the container resource */ withLifetime(lifetime: ContainerLifetime): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withLifetime(lifetime))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withLifetime(lifetime)), this._client); } /** Sets the container image pull policy */ withImagePullPolicy(pullPolicy: ImagePullPolicy): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withImagePullPolicy(pullPolicy))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withImagePullPolicy(pullPolicy)), this._client); } /** Configures the resource to be published as a container */ publishAsContainer(): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.publishAsContainer())); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.publishAsContainer()), this._client); } /** Configures the resource to use a Dockerfile */ withDockerfile(contextPath: string, options?: WithDockerfileOptions): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withDockerfile(contextPath, options))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withDockerfile(contextPath, options)), this._client); } /** Sets the container name */ withContainerName(name: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withContainerName(name))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withContainerName(name)), this._client); } /** Adds a build argument from a parameter resource */ - withBuildArg(name: string, value: ParameterResource): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withBuildArg(name, value))); + withBuildArg(name: string, value: Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withBuildArg(name, value)), this._client); } /** Adds a build secret from a parameter resource */ - withBuildSecret(name: string, value: ParameterResource): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withBuildSecret(name, value))); + withBuildSecret(name: string, value: Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withBuildSecret(name, value)), this._client); } /** Configures endpoint proxy support */ withEndpointProxySupport(proxyEnabled: boolean): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withEndpointProxySupport(proxyEnabled))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withEndpointProxySupport(proxyEnabled)), this._client); } /** Sets the base image for a Dockerfile build */ withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withDockerfileBaseImage(options))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withDockerfileBaseImage(options)), this._client); } /** Adds a network alias for the container */ withContainerNetworkAlias(alias: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withContainerNetworkAlias(alias))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withContainerNetworkAlias(alias)), this._client); } /** Configures an MCP server endpoint on the resource */ withMcpServer(options?: WithMcpServerOptions): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMcpServer(options))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMcpServer(options)), this._client); } /** Configures OTLP telemetry export */ withOtlpExporter(): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withOtlpExporter())); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withOtlpExporter()), this._client); } /** Configures OTLP telemetry export with specific protocol */ withOtlpExporterProtocol(protocol: OtlpProtocol): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withOtlpExporterProtocol(protocol))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withOtlpExporterProtocol(protocol)), this._client); } /** Publishes the resource as a connection string */ publishAsConnectionString(): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.publishAsConnectionString())); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.publishAsConnectionString()), this._client); } /** Adds a required command dependency */ withRequiredCommand(command: string, options?: WithRequiredCommandOptions): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withRequiredCommand(command, options))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withRequiredCommand(command, options)), this._client); } /** Sets an environment variable */ - withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withEnvironment(name, value))); + withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withEnvironment(name, value)), this._client); } /** @@ -26147,61 +26404,61 @@ class TestRedisResourcePromiseImpl implements TestRedisResourcePromise { * @deprecated ATS compatibility shim. Use withEnvironment instead. */ withEnvironmentExpression(name: string, value: ReferenceExpression): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentExpression(name, value))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentExpression(name, value)), this._client); } /** Sets environment variables via callback */ withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentCallback(callback))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentCallback(callback)), this._client); } /** * Sets an environment variable from an endpoint reference * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentEndpoint(name: string, endpointReference: EndpointReference): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentEndpoint(name, endpointReference))); + withEnvironmentEndpoint(name: string, endpointReference: Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentEndpoint(name, endpointReference)), this._client); } /** * Sets an environment variable from a parameter resource * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentParameter(name: string, parameter: ParameterResource): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentParameter(name, parameter))); + withEnvironmentParameter(name: string, parameter: Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentParameter(name, parameter)), this._client); } /** * Sets an environment variable from a connection string resource * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentConnectionString(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentConnectionString(envVarName, resource))); + withEnvironmentConnectionString(envVarName: string, resource: Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentConnectionString(envVarName, resource)), this._client); } /** Adds a connection property with a reference expression */ withConnectionProperty(name: string, value: ReferenceExpression): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withConnectionProperty(name, value))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withConnectionProperty(name, value)), this._client); } /** Adds a connection property with a string value */ withConnectionPropertyValue(name: string, value: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withConnectionPropertyValue(name, value))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withConnectionPropertyValue(name, value)), this._client); } /** Adds arguments */ withArgs(args: string[]): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withArgs(args))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withArgs(args)), this._client); } /** Sets command-line arguments via callback */ withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withArgsCallback(callback))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withArgsCallback(callback)), this._client); } /** Adds a reference to another resource */ - withReference(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WithReferenceOptions): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withReference(source, options))); + withReference(source: Awaitable, options?: WithReferenceOptions): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withReference(source, options)), this._client); } /** Gets a connection property by key */ @@ -26211,37 +26468,37 @@ class TestRedisResourcePromiseImpl implements TestRedisResourcePromise { /** Adds a reference to a URI */ withReferenceUri(name: string, uri: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withReferenceUri(name, uri))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withReferenceUri(name, uri)), this._client); } /** Adds a reference to an external service */ - withReferenceExternalService(externalService: ExternalServiceResource): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withReferenceExternalService(externalService))); + withReferenceExternalService(externalService: Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withReferenceExternalService(externalService)), this._client); } /** Adds a reference to an endpoint */ - withReferenceEndpoint(endpointReference: EndpointReference): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withReferenceEndpoint(endpointReference))); + withReferenceEndpoint(endpointReference: Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withReferenceEndpoint(endpointReference)), this._client); } /** Adds a network endpoint */ withEndpoint(options?: WithEndpointOptions): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withEndpoint(options))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withEndpoint(options)), this._client); } /** Adds an HTTP endpoint */ withHttpEndpoint(options?: WithHttpEndpointOptions): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withHttpEndpoint(options))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withHttpEndpoint(options)), this._client); } /** Adds an HTTPS endpoint */ withHttpsEndpoint(options?: WithHttpsEndpointOptions): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withHttpsEndpoint(options))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withHttpsEndpoint(options)), this._client); } /** Makes HTTP endpoints externally accessible */ withExternalHttpEndpoints(): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withExternalHttpEndpoints())); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withExternalHttpEndpoints()), this._client); } /** Gets an endpoint reference */ @@ -26251,152 +26508,152 @@ class TestRedisResourcePromiseImpl implements TestRedisResourcePromise { /** Configures resource for HTTP/2 */ asHttp2Service(): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.asHttp2Service())); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.asHttp2Service()), this._client); } /** Customizes displayed URLs via callback */ withUrlsCallback(callback: (obj: ResourceUrlsCallbackContext) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withUrlsCallback(callback))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withUrlsCallback(callback)), this._client); } /** Adds or modifies displayed URLs */ withUrl(url: string, options?: WithUrlOptions): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withUrl(url, options))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withUrl(url, options)), this._client); } /** Adds a URL using a reference expression */ withUrlExpression(url: ReferenceExpression, options?: WithUrlExpressionOptions): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withUrlExpression(url, options))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withUrlExpression(url, options)), this._client); } /** Customizes the URL for a specific endpoint via callback */ withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpoint(endpointName, callback))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpoint(endpointName, callback)), this._client); } /** Adds a URL for a specific endpoint via factory callback */ withUrlForEndpointFactory(endpointName: string, callback: (arg: EndpointReference) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpointFactory(endpointName, callback))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpointFactory(endpointName, callback)), this._client); } /** Excludes the resource from the deployment manifest */ excludeFromManifest(): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.excludeFromManifest())); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.excludeFromManifest()), this._client); } /** Waits for another resource to be ready */ - waitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.waitFor(dependency))); + waitFor(dependency: Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.waitFor(dependency)), this._client); } /** Waits for another resource with specific behavior */ - waitForWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.waitForWithBehavior(dependency, waitBehavior))); + waitForWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.waitForWithBehavior(dependency, waitBehavior)), this._client); } /** Waits for another resource to start */ - waitForStart(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.waitForStart(dependency))); + waitForStart(dependency: Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.waitForStart(dependency)), this._client); } /** Waits for another resource to start with specific behavior */ - waitForStartWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.waitForStartWithBehavior(dependency, waitBehavior))); + waitForStartWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.waitForStartWithBehavior(dependency, waitBehavior)), this._client); } /** Prevents resource from starting automatically */ withExplicitStart(): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withExplicitStart())); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withExplicitStart()), this._client); } /** Waits for resource completion */ - waitForCompletion(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WaitForCompletionOptions): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.waitForCompletion(dependency, options))); + waitForCompletion(dependency: Awaitable, options?: WaitForCompletionOptions): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.waitForCompletion(dependency, options)), this._client); } /** Adds a health check by key */ withHealthCheck(key: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withHealthCheck(key))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withHealthCheck(key)), this._client); } /** Adds an HTTP health check */ withHttpHealthCheck(options?: WithHttpHealthCheckOptions): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withHttpHealthCheck(options))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withHttpHealthCheck(options)), this._client); } /** Adds a resource command */ withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withCommand(name, displayName, executeCommand, options))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withCommand(name, displayName, executeCommand, options)), this._client); } /** Configures developer certificate trust */ withDeveloperCertificateTrust(trust: boolean): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withDeveloperCertificateTrust(trust))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withDeveloperCertificateTrust(trust)), this._client); } /** Sets the certificate trust scope */ withCertificateTrustScope(scope: CertificateTrustScope): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withCertificateTrustScope(scope))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withCertificateTrustScope(scope)), this._client); } /** Configures HTTPS with a developer certificate */ withHttpsDeveloperCertificate(options?: WithHttpsDeveloperCertificateOptions): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withHttpsDeveloperCertificate(options))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withHttpsDeveloperCertificate(options)), this._client); } /** Removes HTTPS certificate configuration */ withoutHttpsCertificate(): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withoutHttpsCertificate())); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withoutHttpsCertificate()), this._client); } /** Sets the parent relationship */ - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withParentRelationship(parent))); + withParentRelationship(parent: Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withParentRelationship(parent)), this._client); } /** Sets a child relationship */ - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withChildRelationship(child))); + withChildRelationship(child: Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withChildRelationship(child)), this._client); } /** Sets the icon for the resource */ withIconName(iconName: string, options?: WithIconNameOptions): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withIconName(iconName, options))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withIconName(iconName, options)), this._client); } /** Adds an HTTP health probe to the resource */ withHttpProbe(probeType: ProbeType, options?: WithHttpProbeOptions): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withHttpProbe(probeType, options))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withHttpProbe(probeType, options)), this._client); } /** Excludes the resource from MCP server exposure */ excludeFromMcp(): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.excludeFromMcp())); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.excludeFromMcp()), this._client); } /** Sets the remote image name for publishing */ withRemoteImageName(remoteImageName: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageName(remoteImageName))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageName(remoteImageName)), this._client); } /** Sets the remote image tag for publishing */ withRemoteImageTag(remoteImageTag: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageTag(remoteImageTag))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageTag(remoteImageTag)), this._client); } /** Adds a pipeline step to the resource */ withPipelineStepFactory(stepName: string, callback: (arg: PipelineStepContext) => Promise, options?: WithPipelineStepFactoryOptions): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withPipelineStepFactory(stepName, callback, options))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withPipelineStepFactory(stepName, callback, options)), this._client); } /** Configures pipeline step dependencies via a callback */ withPipelineConfiguration(callback: (obj: PipelineConfigurationContext) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withPipelineConfiguration(callback))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withPipelineConfiguration(callback)), this._client); } /** Adds a volume */ withVolume(target: string, options?: WithVolumeOptions): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withVolume(target, options))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withVolume(target, options)), this._client); } /** Gets the resource name */ @@ -26406,52 +26663,52 @@ class TestRedisResourcePromiseImpl implements TestRedisResourcePromise { /** Subscribes to the BeforeResourceStarted event */ onBeforeResourceStarted(callback: (arg: BeforeResourceStartedEvent) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.onBeforeResourceStarted(callback))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.onBeforeResourceStarted(callback)), this._client); } /** Subscribes to the ResourceStopped event */ onResourceStopped(callback: (arg: ResourceStoppedEvent) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.onResourceStopped(callback))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.onResourceStopped(callback)), this._client); } /** Subscribes to the ConnectionStringAvailable event */ onConnectionStringAvailable(callback: (arg: ConnectionStringAvailableEvent) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.onConnectionStringAvailable(callback))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.onConnectionStringAvailable(callback)), this._client); } /** Subscribes to the InitializeResource event */ onInitializeResource(callback: (arg: InitializeResourceEvent) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.onInitializeResource(callback))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.onInitializeResource(callback)), this._client); } /** Subscribes to the ResourceEndpointsAllocated event */ onResourceEndpointsAllocated(callback: (arg: ResourceEndpointsAllocatedEvent) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.onResourceEndpointsAllocated(callback))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.onResourceEndpointsAllocated(callback)), this._client); } /** Subscribes to the ResourceReady event */ onResourceReady(callback: (arg: ResourceReadyEvent) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.onResourceReady(callback))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.onResourceReady(callback)), this._client); } /** Adds a child database to a test Redis resource */ addTestChildDatabase(name: string, options?: AddTestChildDatabaseOptions): TestDatabaseResourcePromise { - return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.addTestChildDatabase(name, options))); + return new TestDatabaseResourcePromiseImpl(this._promise.then(obj => obj.addTestChildDatabase(name, options)), this._client); } /** Configures the Redis resource with persistence */ withPersistence(options?: WithPersistenceOptions): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withPersistence(options))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withPersistence(options)), this._client); } /** Adds an optional string parameter */ withOptionalString(options?: WithOptionalStringOptions): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withOptionalString(options))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withOptionalString(options)), this._client); } /** Configures the resource with a DTO */ withConfig(config: TestConfigDto): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withConfig(config))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withConfig(config)), this._client); } /** Gets the tags for the resource */ @@ -26466,52 +26723,52 @@ class TestRedisResourcePromiseImpl implements TestRedisResourcePromise { /** Sets the connection string using a reference expression */ withConnectionString(connectionString: ReferenceExpression): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withConnectionString(connectionString))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withConnectionString(connectionString)), this._client); } /** Configures environment with callback (test version) */ testWithEnvironmentCallback(callback: (arg: TestEnvironmentContext) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.testWithEnvironmentCallback(callback))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.testWithEnvironmentCallback(callback)), this._client); } /** Sets the created timestamp */ withCreatedAt(createdAt: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withCreatedAt(createdAt))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withCreatedAt(createdAt)), this._client); } /** Sets the modified timestamp */ withModifiedAt(modifiedAt: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withModifiedAt(modifiedAt))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withModifiedAt(modifiedAt)), this._client); } /** Sets the correlation ID */ withCorrelationId(correlationId: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withCorrelationId(correlationId))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withCorrelationId(correlationId)), this._client); } /** Configures with optional callback */ withOptionalCallback(options?: WithOptionalCallbackOptions): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withOptionalCallback(options))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withOptionalCallback(options)), this._client); } /** Sets the resource status */ withStatus(status: TestResourceStatus): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withStatus(status))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withStatus(status)), this._client); } /** Configures with nested DTO */ withNestedConfig(config: TestNestedDto): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withNestedConfig(config))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withNestedConfig(config)), this._client); } /** Adds validation callback */ withValidator(validator: (arg: TestResourceContext) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withValidator(validator))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withValidator(validator)), this._client); } /** Waits for another resource (test version) */ - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.testWaitFor(dependency))); + testWaitFor(dependency: Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.testWaitFor(dependency)), this._client); } /** Gets the endpoints */ @@ -26521,32 +26778,32 @@ class TestRedisResourcePromiseImpl implements TestRedisResourcePromise { /** Sets connection string using direct interface target */ withConnectionStringDirect(connectionString: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withConnectionStringDirect(connectionString))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withConnectionStringDirect(connectionString)), this._client); } /** Redis-specific configuration */ withRedisSpecific(option: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withRedisSpecific(option))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withRedisSpecific(option)), this._client); } /** Adds a dependency on another resource */ - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withDependency(dependency))); + withDependency(dependency: Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withDependency(dependency)), this._client); } /** Adds a dependency from a string or another resource */ - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withUnionDependency(dependency))); + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): TestRedisResourcePromise { + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withUnionDependency(dependency)), this._client); } /** Sets the endpoints */ withEndpoints(endpoints: string[]): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withEndpoints(endpoints))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withEndpoints(endpoints)), this._client); } /** Sets environment variables */ withEnvironmentVariables(variables: Record): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentVariables(variables))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentVariables(variables)), this._client); } /** Gets the status of the resource asynchronously */ @@ -26556,7 +26813,7 @@ class TestRedisResourcePromiseImpl implements TestRedisResourcePromise { /** Performs a cancellable operation */ withCancellableOperation(operation: (arg: CancellationToken) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withCancellableOperation(operation))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withCancellableOperation(operation)), this._client); } /** Waits for the resource to be ready */ @@ -26566,52 +26823,52 @@ class TestRedisResourcePromiseImpl implements TestRedisResourcePromise { /** Tests multi-param callback destructuring */ withMultiParamHandleCallback(callback: (arg1: TestCallbackContext, arg2: TestEnvironmentContext) => Promise): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMultiParamHandleCallback(callback))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMultiParamHandleCallback(callback)), this._client); } /** Adds a data volume with persistence */ withDataVolume(options?: WithDataVolumeOptions): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withDataVolume(options))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withDataVolume(options)), this._client); } /** Adds a label to the resource */ withMergeLabel(label: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabel(label))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabel(label)), this._client); } /** Adds a categorized label to the resource */ withMergeLabelCategorized(label: string, category: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabelCategorized(label, category))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabelCategorized(label, category)), this._client); } /** Configures a named endpoint */ withMergeEndpoint(endpointName: string, port: number): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpoint(endpointName, port))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpoint(endpointName, port)), this._client); } /** Configures a named endpoint with scheme */ withMergeEndpointScheme(endpointName: string, port: number, scheme: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpointScheme(endpointName, port, scheme))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpointScheme(endpointName, port, scheme)), this._client); } /** Configures resource logging */ withMergeLogging(logLevel: string, options?: WithMergeLoggingOptions): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMergeLogging(logLevel, options))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMergeLogging(logLevel, options)), this._client); } /** Configures resource logging with file path */ withMergeLoggingPath(logLevel: string, logPath: string, options?: WithMergeLoggingPathOptions): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMergeLoggingPath(logLevel, logPath, options))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMergeLoggingPath(logLevel, logPath, options)), this._client); } /** Configures a route */ withMergeRoute(path: string, method: string, handler: string, priority: number): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMergeRoute(path, method, handler, priority))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMergeRoute(path, method, handler, priority)), this._client); } /** Configures a route with middleware */ withMergeRouteMiddleware(path: string, method: string, handler: string, priority: number, middleware: string): TestRedisResourcePromise { - return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMergeRouteMiddleware(path, method, handler, priority, middleware))); + return new TestRedisResourcePromiseImpl(this._promise.then(obj => obj.withMergeRouteMiddleware(path, method, handler, priority, middleware)), this._client); } } @@ -26622,7 +26879,7 @@ class TestRedisResourcePromiseImpl implements TestRedisResourcePromise { export interface TestVaultResource { toJSON(): MarshalledHandle; - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestVaultResourcePromise; + withContainerRegistry(registry: Awaitable): TestVaultResourcePromise; withBindMount(source: string, target: string, options?: WithBindMountOptions): TestVaultResourcePromise; withEntrypoint(entrypoint: string): TestVaultResourcePromise; withImageTag(tag: string): TestVaultResourcePromise; @@ -26635,8 +26892,8 @@ export interface TestVaultResource { publishAsContainer(): TestVaultResourcePromise; withDockerfile(contextPath: string, options?: WithDockerfileOptions): TestVaultResourcePromise; withContainerName(name: string): TestVaultResourcePromise; - withBuildArg(name: string, value: ParameterResource): TestVaultResourcePromise; - withBuildSecret(name: string, value: ParameterResource): TestVaultResourcePromise; + withBuildArg(name: string, value: Awaitable): TestVaultResourcePromise; + withBuildSecret(name: string, value: Awaitable): TestVaultResourcePromise; withEndpointProxySupport(proxyEnabled: boolean): TestVaultResourcePromise; withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): TestVaultResourcePromise; withContainerNetworkAlias(alias: string): TestVaultResourcePromise; @@ -26645,18 +26902,18 @@ export interface TestVaultResource { withOtlpExporterProtocol(protocol: OtlpProtocol): TestVaultResourcePromise; publishAsConnectionString(): TestVaultResourcePromise; withRequiredCommand(command: string, options?: WithRequiredCommandOptions): TestVaultResourcePromise; - withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression): TestVaultResourcePromise; + withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): TestVaultResourcePromise; withEnvironmentExpression(name: string, value: ReferenceExpression): TestVaultResourcePromise; withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): TestVaultResourcePromise; - withEnvironmentEndpoint(name: string, endpointReference: EndpointReference): TestVaultResourcePromise; - withEnvironmentParameter(name: string, parameter: ParameterResource): TestVaultResourcePromise; - withEnvironmentConnectionString(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): TestVaultResourcePromise; + withEnvironmentEndpoint(name: string, endpointReference: Awaitable): TestVaultResourcePromise; + withEnvironmentParameter(name: string, parameter: Awaitable): TestVaultResourcePromise; + withEnvironmentConnectionString(envVarName: string, resource: Awaitable): TestVaultResourcePromise; withArgs(args: string[]): TestVaultResourcePromise; withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) => Promise): TestVaultResourcePromise; - withReference(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WithReferenceOptions): TestVaultResourcePromise; + withReference(source: Awaitable, options?: WithReferenceOptions): TestVaultResourcePromise; withReferenceUri(name: string, uri: string): TestVaultResourcePromise; - withReferenceExternalService(externalService: ExternalServiceResource): TestVaultResourcePromise; - withReferenceEndpoint(endpointReference: EndpointReference): TestVaultResourcePromise; + withReferenceExternalService(externalService: Awaitable): TestVaultResourcePromise; + withReferenceEndpoint(endpointReference: Awaitable): TestVaultResourcePromise; withEndpoint(options?: WithEndpointOptions): TestVaultResourcePromise; withHttpEndpoint(options?: WithHttpEndpointOptions): TestVaultResourcePromise; withHttpsEndpoint(options?: WithHttpsEndpointOptions): TestVaultResourcePromise; @@ -26669,12 +26926,12 @@ export interface TestVaultResource { withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): TestVaultResourcePromise; withUrlForEndpointFactory(endpointName: string, callback: (arg: EndpointReference) => Promise): TestVaultResourcePromise; excludeFromManifest(): TestVaultResourcePromise; - waitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestVaultResourcePromise; - waitForWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): TestVaultResourcePromise; - waitForStart(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestVaultResourcePromise; - waitForStartWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): TestVaultResourcePromise; + waitFor(dependency: Awaitable): TestVaultResourcePromise; + waitForWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): TestVaultResourcePromise; + waitForStart(dependency: Awaitable): TestVaultResourcePromise; + waitForStartWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): TestVaultResourcePromise; withExplicitStart(): TestVaultResourcePromise; - waitForCompletion(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WaitForCompletionOptions): TestVaultResourcePromise; + waitForCompletion(dependency: Awaitable, options?: WaitForCompletionOptions): TestVaultResourcePromise; withHealthCheck(key: string): TestVaultResourcePromise; withHttpHealthCheck(options?: WithHttpHealthCheckOptions): TestVaultResourcePromise; withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): TestVaultResourcePromise; @@ -26682,8 +26939,8 @@ export interface TestVaultResource { withCertificateTrustScope(scope: CertificateTrustScope): TestVaultResourcePromise; withHttpsDeveloperCertificate(options?: WithHttpsDeveloperCertificateOptions): TestVaultResourcePromise; withoutHttpsCertificate(): TestVaultResourcePromise; - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestVaultResourcePromise; - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestVaultResourcePromise; + withParentRelationship(parent: Awaitable): TestVaultResourcePromise; + withChildRelationship(child: Awaitable): TestVaultResourcePromise; withIconName(iconName: string, options?: WithIconNameOptions): TestVaultResourcePromise; withHttpProbe(probeType: ProbeType, options?: WithHttpProbeOptions): TestVaultResourcePromise; excludeFromMcp(): TestVaultResourcePromise; @@ -26708,9 +26965,9 @@ export interface TestVaultResource { withStatus(status: TestResourceStatus): TestVaultResourcePromise; withNestedConfig(config: TestNestedDto): TestVaultResourcePromise; withValidator(validator: (arg: TestResourceContext) => Promise): TestVaultResourcePromise; - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestVaultResourcePromise; - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): TestVaultResourcePromise; - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): TestVaultResourcePromise; + testWaitFor(dependency: Awaitable): TestVaultResourcePromise; + withDependency(dependency: Awaitable): TestVaultResourcePromise; + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): TestVaultResourcePromise; withEndpoints(endpoints: string[]): TestVaultResourcePromise; withEnvironmentVariables(variables: Record): TestVaultResourcePromise; withCancellableOperation(operation: (arg: CancellationToken) => Promise): TestVaultResourcePromise; @@ -26726,7 +26983,7 @@ export interface TestVaultResource { } export interface TestVaultResourcePromise extends PromiseLike { - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestVaultResourcePromise; + withContainerRegistry(registry: Awaitable): TestVaultResourcePromise; withBindMount(source: string, target: string, options?: WithBindMountOptions): TestVaultResourcePromise; withEntrypoint(entrypoint: string): TestVaultResourcePromise; withImageTag(tag: string): TestVaultResourcePromise; @@ -26739,8 +26996,8 @@ export interface TestVaultResourcePromise extends PromiseLike publishAsContainer(): TestVaultResourcePromise; withDockerfile(contextPath: string, options?: WithDockerfileOptions): TestVaultResourcePromise; withContainerName(name: string): TestVaultResourcePromise; - withBuildArg(name: string, value: ParameterResource): TestVaultResourcePromise; - withBuildSecret(name: string, value: ParameterResource): TestVaultResourcePromise; + withBuildArg(name: string, value: Awaitable): TestVaultResourcePromise; + withBuildSecret(name: string, value: Awaitable): TestVaultResourcePromise; withEndpointProxySupport(proxyEnabled: boolean): TestVaultResourcePromise; withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): TestVaultResourcePromise; withContainerNetworkAlias(alias: string): TestVaultResourcePromise; @@ -26749,18 +27006,18 @@ export interface TestVaultResourcePromise extends PromiseLike withOtlpExporterProtocol(protocol: OtlpProtocol): TestVaultResourcePromise; publishAsConnectionString(): TestVaultResourcePromise; withRequiredCommand(command: string, options?: WithRequiredCommandOptions): TestVaultResourcePromise; - withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression): TestVaultResourcePromise; + withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): TestVaultResourcePromise; withEnvironmentExpression(name: string, value: ReferenceExpression): TestVaultResourcePromise; withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): TestVaultResourcePromise; - withEnvironmentEndpoint(name: string, endpointReference: EndpointReference): TestVaultResourcePromise; - withEnvironmentParameter(name: string, parameter: ParameterResource): TestVaultResourcePromise; - withEnvironmentConnectionString(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): TestVaultResourcePromise; + withEnvironmentEndpoint(name: string, endpointReference: Awaitable): TestVaultResourcePromise; + withEnvironmentParameter(name: string, parameter: Awaitable): TestVaultResourcePromise; + withEnvironmentConnectionString(envVarName: string, resource: Awaitable): TestVaultResourcePromise; withArgs(args: string[]): TestVaultResourcePromise; withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) => Promise): TestVaultResourcePromise; - withReference(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WithReferenceOptions): TestVaultResourcePromise; + withReference(source: Awaitable, options?: WithReferenceOptions): TestVaultResourcePromise; withReferenceUri(name: string, uri: string): TestVaultResourcePromise; - withReferenceExternalService(externalService: ExternalServiceResource): TestVaultResourcePromise; - withReferenceEndpoint(endpointReference: EndpointReference): TestVaultResourcePromise; + withReferenceExternalService(externalService: Awaitable): TestVaultResourcePromise; + withReferenceEndpoint(endpointReference: Awaitable): TestVaultResourcePromise; withEndpoint(options?: WithEndpointOptions): TestVaultResourcePromise; withHttpEndpoint(options?: WithHttpEndpointOptions): TestVaultResourcePromise; withHttpsEndpoint(options?: WithHttpsEndpointOptions): TestVaultResourcePromise; @@ -26773,12 +27030,12 @@ export interface TestVaultResourcePromise extends PromiseLike withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): TestVaultResourcePromise; withUrlForEndpointFactory(endpointName: string, callback: (arg: EndpointReference) => Promise): TestVaultResourcePromise; excludeFromManifest(): TestVaultResourcePromise; - waitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestVaultResourcePromise; - waitForWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): TestVaultResourcePromise; - waitForStart(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestVaultResourcePromise; - waitForStartWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): TestVaultResourcePromise; + waitFor(dependency: Awaitable): TestVaultResourcePromise; + waitForWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): TestVaultResourcePromise; + waitForStart(dependency: Awaitable): TestVaultResourcePromise; + waitForStartWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): TestVaultResourcePromise; withExplicitStart(): TestVaultResourcePromise; - waitForCompletion(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WaitForCompletionOptions): TestVaultResourcePromise; + waitForCompletion(dependency: Awaitable, options?: WaitForCompletionOptions): TestVaultResourcePromise; withHealthCheck(key: string): TestVaultResourcePromise; withHttpHealthCheck(options?: WithHttpHealthCheckOptions): TestVaultResourcePromise; withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): TestVaultResourcePromise; @@ -26786,8 +27043,8 @@ export interface TestVaultResourcePromise extends PromiseLike withCertificateTrustScope(scope: CertificateTrustScope): TestVaultResourcePromise; withHttpsDeveloperCertificate(options?: WithHttpsDeveloperCertificateOptions): TestVaultResourcePromise; withoutHttpsCertificate(): TestVaultResourcePromise; - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestVaultResourcePromise; - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestVaultResourcePromise; + withParentRelationship(parent: Awaitable): TestVaultResourcePromise; + withChildRelationship(child: Awaitable): TestVaultResourcePromise; withIconName(iconName: string, options?: WithIconNameOptions): TestVaultResourcePromise; withHttpProbe(probeType: ProbeType, options?: WithHttpProbeOptions): TestVaultResourcePromise; excludeFromMcp(): TestVaultResourcePromise; @@ -26812,9 +27069,9 @@ export interface TestVaultResourcePromise extends PromiseLike withStatus(status: TestResourceStatus): TestVaultResourcePromise; withNestedConfig(config: TestNestedDto): TestVaultResourcePromise; withValidator(validator: (arg: TestResourceContext) => Promise): TestVaultResourcePromise; - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestVaultResourcePromise; - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): TestVaultResourcePromise; - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): TestVaultResourcePromise; + testWaitFor(dependency: Awaitable): TestVaultResourcePromise; + withDependency(dependency: Awaitable): TestVaultResourcePromise; + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): TestVaultResourcePromise; withEndpoints(endpoints: string[]): TestVaultResourcePromise; withEnvironmentVariables(variables: Record): TestVaultResourcePromise; withCancellableOperation(operation: (arg: CancellationToken) => Promise): TestVaultResourcePromise; @@ -26839,7 +27096,8 @@ class TestVaultResourceImpl extends ResourceBuilderBase } /** @internal */ - private async _withContainerRegistryInternal(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _withContainerRegistryInternal(registry: Awaitable): Promise { + registry = isPromiseLike(registry) ? await registry : registry; const rpcArgs: Record = { builder: this._handle, registry }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withContainerRegistry', @@ -26849,8 +27107,8 @@ class TestVaultResourceImpl extends ResourceBuilderBase } /** Configures a resource to use a container registry */ - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withContainerRegistryInternal(registry)); + withContainerRegistry(registry: Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._withContainerRegistryInternal(registry), this._client); } /** @internal */ @@ -26867,7 +27125,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Adds a bind mount */ withBindMount(source: string, target: string, options?: WithBindMountOptions): TestVaultResourcePromise { const isReadOnly = options?.isReadOnly; - return new TestVaultResourcePromiseImpl(this._withBindMountInternal(source, target, isReadOnly)); + return new TestVaultResourcePromiseImpl(this._withBindMountInternal(source, target, isReadOnly), this._client); } /** @internal */ @@ -26882,7 +27140,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Sets the container entrypoint */ withEntrypoint(entrypoint: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withEntrypointInternal(entrypoint)); + return new TestVaultResourcePromiseImpl(this._withEntrypointInternal(entrypoint), this._client); } /** @internal */ @@ -26897,7 +27155,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Sets the container image tag */ withImageTag(tag: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withImageTagInternal(tag)); + return new TestVaultResourcePromiseImpl(this._withImageTagInternal(tag), this._client); } /** @internal */ @@ -26912,7 +27170,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Sets the container image registry */ withImageRegistry(registry: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withImageRegistryInternal(registry)); + return new TestVaultResourcePromiseImpl(this._withImageRegistryInternal(registry), this._client); } /** @internal */ @@ -26929,7 +27187,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Sets the container image */ withImage(image: string, options?: WithImageOptions): TestVaultResourcePromise { const tag = options?.tag; - return new TestVaultResourcePromiseImpl(this._withImageInternal(image, tag)); + return new TestVaultResourcePromiseImpl(this._withImageInternal(image, tag), this._client); } /** @internal */ @@ -26944,7 +27202,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Sets the image SHA256 digest */ withImageSHA256(sha256: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withImageSHA256Internal(sha256)); + return new TestVaultResourcePromiseImpl(this._withImageSHA256Internal(sha256), this._client); } /** @internal */ @@ -26959,7 +27217,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Adds runtime arguments for the container */ withContainerRuntimeArgs(args: string[]): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withContainerRuntimeArgsInternal(args)); + return new TestVaultResourcePromiseImpl(this._withContainerRuntimeArgsInternal(args), this._client); } /** @internal */ @@ -26974,7 +27232,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Sets the lifetime behavior of the container resource */ withLifetime(lifetime: ContainerLifetime): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withLifetimeInternal(lifetime)); + return new TestVaultResourcePromiseImpl(this._withLifetimeInternal(lifetime), this._client); } /** @internal */ @@ -26989,7 +27247,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Sets the container image pull policy */ withImagePullPolicy(pullPolicy: ImagePullPolicy): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withImagePullPolicyInternal(pullPolicy)); + return new TestVaultResourcePromiseImpl(this._withImagePullPolicyInternal(pullPolicy), this._client); } /** @internal */ @@ -27004,7 +27262,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Configures the resource to be published as a container */ publishAsContainer(): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._publishAsContainerInternal()); + return new TestVaultResourcePromiseImpl(this._publishAsContainerInternal(), this._client); } /** @internal */ @@ -27023,7 +27281,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase withDockerfile(contextPath: string, options?: WithDockerfileOptions): TestVaultResourcePromise { const dockerfilePath = options?.dockerfilePath; const stage = options?.stage; - return new TestVaultResourcePromiseImpl(this._withDockerfileInternal(contextPath, dockerfilePath, stage)); + return new TestVaultResourcePromiseImpl(this._withDockerfileInternal(contextPath, dockerfilePath, stage), this._client); } /** @internal */ @@ -27038,11 +27296,12 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Sets the container name */ withContainerName(name: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withContainerNameInternal(name)); + return new TestVaultResourcePromiseImpl(this._withContainerNameInternal(name), this._client); } /** @internal */ - private async _withBuildArgInternal(name: string, value: ParameterResource): Promise { + private async _withBuildArgInternal(name: string, value: Awaitable): Promise { + value = isPromiseLike(value) ? await value : value; const rpcArgs: Record = { builder: this._handle, name, value }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withParameterBuildArg', @@ -27052,12 +27311,13 @@ class TestVaultResourceImpl extends ResourceBuilderBase } /** Adds a build argument from a parameter resource */ - withBuildArg(name: string, value: ParameterResource): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withBuildArgInternal(name, value)); + withBuildArg(name: string, value: Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._withBuildArgInternal(name, value), this._client); } /** @internal */ - private async _withBuildSecretInternal(name: string, value: ParameterResource): Promise { + private async _withBuildSecretInternal(name: string, value: Awaitable): Promise { + value = isPromiseLike(value) ? await value : value; const rpcArgs: Record = { builder: this._handle, name, value }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withParameterBuildSecret', @@ -27067,8 +27327,8 @@ class TestVaultResourceImpl extends ResourceBuilderBase } /** Adds a build secret from a parameter resource */ - withBuildSecret(name: string, value: ParameterResource): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withBuildSecretInternal(name, value)); + withBuildSecret(name: string, value: Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._withBuildSecretInternal(name, value), this._client); } /** @internal */ @@ -27083,7 +27343,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Configures endpoint proxy support */ withEndpointProxySupport(proxyEnabled: boolean): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withEndpointProxySupportInternal(proxyEnabled)); + return new TestVaultResourcePromiseImpl(this._withEndpointProxySupportInternal(proxyEnabled), this._client); } /** @internal */ @@ -27102,7 +27362,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): TestVaultResourcePromise { const buildImage = options?.buildImage; const runtimeImage = options?.runtimeImage; - return new TestVaultResourcePromiseImpl(this._withDockerfileBaseImageInternal(buildImage, runtimeImage)); + return new TestVaultResourcePromiseImpl(this._withDockerfileBaseImageInternal(buildImage, runtimeImage), this._client); } /** @internal */ @@ -27117,7 +27377,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Adds a network alias for the container */ withContainerNetworkAlias(alias: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withContainerNetworkAliasInternal(alias)); + return new TestVaultResourcePromiseImpl(this._withContainerNetworkAliasInternal(alias), this._client); } /** @internal */ @@ -27136,7 +27396,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase withMcpServer(options?: WithMcpServerOptions): TestVaultResourcePromise { const path = options?.path; const endpointName = options?.endpointName; - return new TestVaultResourcePromiseImpl(this._withMcpServerInternal(path, endpointName)); + return new TestVaultResourcePromiseImpl(this._withMcpServerInternal(path, endpointName), this._client); } /** @internal */ @@ -27151,7 +27411,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Configures OTLP telemetry export */ withOtlpExporter(): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withOtlpExporterInternal()); + return new TestVaultResourcePromiseImpl(this._withOtlpExporterInternal(), this._client); } /** @internal */ @@ -27166,7 +27426,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Configures OTLP telemetry export with specific protocol */ withOtlpExporterProtocol(protocol: OtlpProtocol): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withOtlpExporterProtocolInternal(protocol)); + return new TestVaultResourcePromiseImpl(this._withOtlpExporterProtocolInternal(protocol), this._client); } /** @internal */ @@ -27181,7 +27441,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Publishes the resource as a connection string */ publishAsConnectionString(): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._publishAsConnectionStringInternal()); + return new TestVaultResourcePromiseImpl(this._publishAsConnectionStringInternal(), this._client); } /** @internal */ @@ -27198,11 +27458,12 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Adds a required command dependency */ withRequiredCommand(command: string, options?: WithRequiredCommandOptions): TestVaultResourcePromise { const helpLink = options?.helpLink; - return new TestVaultResourcePromiseImpl(this._withRequiredCommandInternal(command, helpLink)); + return new TestVaultResourcePromiseImpl(this._withRequiredCommandInternal(command, helpLink), this._client); } /** @internal */ - private async _withEnvironmentInternal(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression): Promise { + private async _withEnvironmentInternal(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): Promise { + value = isPromiseLike(value) ? await value : value; const rpcArgs: Record = { builder: this._handle, name, value }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironment', @@ -27212,8 +27473,8 @@ class TestVaultResourceImpl extends ResourceBuilderBase } /** Sets an environment variable */ - withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withEnvironmentInternal(name, value)); + withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._withEnvironmentInternal(name, value), this._client); } /** @internal */ @@ -27231,7 +27492,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase * @deprecated ATS compatibility shim. Use withEnvironment instead. */ withEnvironmentExpression(name: string, value: ReferenceExpression): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withEnvironmentExpressionInternal(name, value)); + return new TestVaultResourcePromiseImpl(this._withEnvironmentExpressionInternal(name, value), this._client); } /** @internal */ @@ -27251,11 +27512,12 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Sets environment variables via callback */ withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withEnvironmentCallbackInternal(callback)); + return new TestVaultResourcePromiseImpl(this._withEnvironmentCallbackInternal(callback), this._client); } /** @internal */ - private async _withEnvironmentEndpointInternal(name: string, endpointReference: EndpointReference): Promise { + private async _withEnvironmentEndpointInternal(name: string, endpointReference: Awaitable): Promise { + endpointReference = isPromiseLike(endpointReference) ? await endpointReference : endpointReference; const rpcArgs: Record = { builder: this._handle, name, endpointReference }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironmentEndpoint', @@ -27268,12 +27530,13 @@ class TestVaultResourceImpl extends ResourceBuilderBase * Sets an environment variable from an endpoint reference * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentEndpoint(name: string, endpointReference: EndpointReference): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withEnvironmentEndpointInternal(name, endpointReference)); + withEnvironmentEndpoint(name: string, endpointReference: Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._withEnvironmentEndpointInternal(name, endpointReference), this._client); } /** @internal */ - private async _withEnvironmentParameterInternal(name: string, parameter: ParameterResource): Promise { + private async _withEnvironmentParameterInternal(name: string, parameter: Awaitable): Promise { + parameter = isPromiseLike(parameter) ? await parameter : parameter; const rpcArgs: Record = { builder: this._handle, name, parameter }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironmentParameter', @@ -27286,12 +27549,13 @@ class TestVaultResourceImpl extends ResourceBuilderBase * Sets an environment variable from a parameter resource * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentParameter(name: string, parameter: ParameterResource): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withEnvironmentParameterInternal(name, parameter)); + withEnvironmentParameter(name: string, parameter: Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._withEnvironmentParameterInternal(name, parameter), this._client); } /** @internal */ - private async _withEnvironmentConnectionStringInternal(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withEnvironmentConnectionStringInternal(envVarName: string, resource: Awaitable): Promise { + resource = isPromiseLike(resource) ? await resource : resource; const rpcArgs: Record = { builder: this._handle, envVarName, resource }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironmentConnectionString', @@ -27304,8 +27568,8 @@ class TestVaultResourceImpl extends ResourceBuilderBase * Sets an environment variable from a connection string resource * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentConnectionString(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withEnvironmentConnectionStringInternal(envVarName, resource)); + withEnvironmentConnectionString(envVarName: string, resource: Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._withEnvironmentConnectionStringInternal(envVarName, resource), this._client); } /** @internal */ @@ -27320,7 +27584,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Adds arguments */ withArgs(args: string[]): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withArgsInternal(args)); + return new TestVaultResourcePromiseImpl(this._withArgsInternal(args), this._client); } /** @internal */ @@ -27340,11 +27604,12 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Sets command-line arguments via callback */ withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) => Promise): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withArgsCallbackInternal(callback)); + return new TestVaultResourcePromiseImpl(this._withArgsCallbackInternal(callback), this._client); } /** @internal */ - private async _withReferenceInternal(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, connectionName?: string, optional?: boolean, name?: string): Promise { + private async _withReferenceInternal(source: Awaitable, connectionName?: string, optional?: boolean, name?: string): Promise { + source = isPromiseLike(source) ? await source : source; const rpcArgs: Record = { builder: this._handle, source }; if (connectionName !== undefined) rpcArgs.connectionName = connectionName; if (optional !== undefined) rpcArgs.optional = optional; @@ -27357,11 +27622,11 @@ class TestVaultResourceImpl extends ResourceBuilderBase } /** Adds a reference to another resource */ - withReference(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WithReferenceOptions): TestVaultResourcePromise { + withReference(source: Awaitable, options?: WithReferenceOptions): TestVaultResourcePromise { const connectionName = options?.connectionName; const optional = options?.optional; const name = options?.name; - return new TestVaultResourcePromiseImpl(this._withReferenceInternal(source, connectionName, optional, name)); + return new TestVaultResourcePromiseImpl(this._withReferenceInternal(source, connectionName, optional, name), this._client); } /** @internal */ @@ -27376,11 +27641,12 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Adds a reference to a URI */ withReferenceUri(name: string, uri: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withReferenceUriInternal(name, uri)); + return new TestVaultResourcePromiseImpl(this._withReferenceUriInternal(name, uri), this._client); } /** @internal */ - private async _withReferenceExternalServiceInternal(externalService: ExternalServiceResource): Promise { + private async _withReferenceExternalServiceInternal(externalService: Awaitable): Promise { + externalService = isPromiseLike(externalService) ? await externalService : externalService; const rpcArgs: Record = { builder: this._handle, externalService }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withReferenceExternalService', @@ -27390,12 +27656,13 @@ class TestVaultResourceImpl extends ResourceBuilderBase } /** Adds a reference to an external service */ - withReferenceExternalService(externalService: ExternalServiceResource): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withReferenceExternalServiceInternal(externalService)); + withReferenceExternalService(externalService: Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._withReferenceExternalServiceInternal(externalService), this._client); } /** @internal */ - private async _withReferenceEndpointInternal(endpointReference: EndpointReference): Promise { + private async _withReferenceEndpointInternal(endpointReference: Awaitable): Promise { + endpointReference = isPromiseLike(endpointReference) ? await endpointReference : endpointReference; const rpcArgs: Record = { builder: this._handle, endpointReference }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withReferenceEndpoint', @@ -27405,8 +27672,8 @@ class TestVaultResourceImpl extends ResourceBuilderBase } /** Adds a reference to an endpoint */ - withReferenceEndpoint(endpointReference: EndpointReference): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withReferenceEndpointInternal(endpointReference)); + withReferenceEndpoint(endpointReference: Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._withReferenceEndpointInternal(endpointReference), this._client); } /** @internal */ @@ -27437,7 +27704,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase const isProxied = options?.isProxied; const isExternal = options?.isExternal; const protocol = options?.protocol; - return new TestVaultResourcePromiseImpl(this._withEndpointInternal(port, targetPort, scheme, name, env, isProxied, isExternal, protocol)); + return new TestVaultResourcePromiseImpl(this._withEndpointInternal(port, targetPort, scheme, name, env, isProxied, isExternal, protocol), this._client); } /** @internal */ @@ -27462,7 +27729,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase const name = options?.name; const env = options?.env; const isProxied = options?.isProxied; - return new TestVaultResourcePromiseImpl(this._withHttpEndpointInternal(port, targetPort, name, env, isProxied)); + return new TestVaultResourcePromiseImpl(this._withHttpEndpointInternal(port, targetPort, name, env, isProxied), this._client); } /** @internal */ @@ -27487,7 +27754,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase const name = options?.name; const env = options?.env; const isProxied = options?.isProxied; - return new TestVaultResourcePromiseImpl(this._withHttpsEndpointInternal(port, targetPort, name, env, isProxied)); + return new TestVaultResourcePromiseImpl(this._withHttpsEndpointInternal(port, targetPort, name, env, isProxied), this._client); } /** @internal */ @@ -27502,7 +27769,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Makes HTTP endpoints externally accessible */ withExternalHttpEndpoints(): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withExternalHttpEndpointsInternal()); + return new TestVaultResourcePromiseImpl(this._withExternalHttpEndpointsInternal(), this._client); } /** Gets an endpoint reference */ @@ -27526,7 +27793,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Configures resource for HTTP/2 */ asHttp2Service(): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._asHttp2ServiceInternal()); + return new TestVaultResourcePromiseImpl(this._asHttp2ServiceInternal(), this._client); } /** @internal */ @@ -27546,7 +27813,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Customizes displayed URLs via callback */ withUrlsCallback(callback: (obj: ResourceUrlsCallbackContext) => Promise): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withUrlsCallbackInternal(callback)); + return new TestVaultResourcePromiseImpl(this._withUrlsCallbackInternal(callback), this._client); } /** @internal */ @@ -27563,7 +27830,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Adds or modifies displayed URLs */ withUrl(url: string, options?: WithUrlOptions): TestVaultResourcePromise { const displayText = options?.displayText; - return new TestVaultResourcePromiseImpl(this._withUrlInternal(url, displayText)); + return new TestVaultResourcePromiseImpl(this._withUrlInternal(url, displayText), this._client); } /** @internal */ @@ -27580,7 +27847,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Adds a URL using a reference expression */ withUrlExpression(url: ReferenceExpression, options?: WithUrlExpressionOptions): TestVaultResourcePromise { const displayText = options?.displayText; - return new TestVaultResourcePromiseImpl(this._withUrlExpressionInternal(url, displayText)); + return new TestVaultResourcePromiseImpl(this._withUrlExpressionInternal(url, displayText), this._client); } /** @internal */ @@ -27599,7 +27866,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Customizes the URL for a specific endpoint via callback */ withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withUrlForEndpointInternal(endpointName, callback)); + return new TestVaultResourcePromiseImpl(this._withUrlForEndpointInternal(endpointName, callback), this._client); } /** @internal */ @@ -27619,7 +27886,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Adds a URL for a specific endpoint via factory callback */ withUrlForEndpointFactory(endpointName: string, callback: (arg: EndpointReference) => Promise): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withUrlForEndpointFactoryInternal(endpointName, callback)); + return new TestVaultResourcePromiseImpl(this._withUrlForEndpointFactoryInternal(endpointName, callback), this._client); } /** @internal */ @@ -27634,11 +27901,12 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Excludes the resource from the deployment manifest */ excludeFromManifest(): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._excludeFromManifestInternal()); + return new TestVaultResourcePromiseImpl(this._excludeFromManifestInternal(), this._client); } /** @internal */ - private async _waitForInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _waitForInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForResource', @@ -27648,12 +27916,13 @@ class TestVaultResourceImpl extends ResourceBuilderBase } /** Waits for another resource to be ready */ - waitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._waitForInternal(dependency)); + waitFor(dependency: Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._waitForInternal(dependency), this._client); } /** @internal */ - private async _waitForWithBehaviorInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): Promise { + private async _waitForWithBehaviorInternal(dependency: Awaitable, waitBehavior: WaitBehavior): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency, waitBehavior }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForWithBehavior', @@ -27663,12 +27932,13 @@ class TestVaultResourceImpl extends ResourceBuilderBase } /** Waits for another resource with specific behavior */ - waitForWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._waitForWithBehaviorInternal(dependency, waitBehavior)); + waitForWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._waitForWithBehaviorInternal(dependency, waitBehavior), this._client); } /** @internal */ - private async _waitForStartInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _waitForStartInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForResourceStart', @@ -27678,12 +27948,13 @@ class TestVaultResourceImpl extends ResourceBuilderBase } /** Waits for another resource to start */ - waitForStart(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._waitForStartInternal(dependency)); + waitForStart(dependency: Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._waitForStartInternal(dependency), this._client); } /** @internal */ - private async _waitForStartWithBehaviorInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): Promise { + private async _waitForStartWithBehaviorInternal(dependency: Awaitable, waitBehavior: WaitBehavior): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency, waitBehavior }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForStartWithBehavior', @@ -27693,8 +27964,8 @@ class TestVaultResourceImpl extends ResourceBuilderBase } /** Waits for another resource to start with specific behavior */ - waitForStartWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._waitForStartWithBehaviorInternal(dependency, waitBehavior)); + waitForStartWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._waitForStartWithBehaviorInternal(dependency, waitBehavior), this._client); } /** @internal */ @@ -27709,11 +27980,12 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Prevents resource from starting automatically */ withExplicitStart(): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withExplicitStartInternal()); + return new TestVaultResourcePromiseImpl(this._withExplicitStartInternal(), this._client); } /** @internal */ - private async _waitForCompletionInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, exitCode?: number): Promise { + private async _waitForCompletionInternal(dependency: Awaitable, exitCode?: number): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; if (exitCode !== undefined) rpcArgs.exitCode = exitCode; const result = await this._client.invokeCapability( @@ -27724,9 +27996,9 @@ class TestVaultResourceImpl extends ResourceBuilderBase } /** Waits for resource completion */ - waitForCompletion(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WaitForCompletionOptions): TestVaultResourcePromise { + waitForCompletion(dependency: Awaitable, options?: WaitForCompletionOptions): TestVaultResourcePromise { const exitCode = options?.exitCode; - return new TestVaultResourcePromiseImpl(this._waitForCompletionInternal(dependency, exitCode)); + return new TestVaultResourcePromiseImpl(this._waitForCompletionInternal(dependency, exitCode), this._client); } /** @internal */ @@ -27741,7 +28013,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Adds a health check by key */ withHealthCheck(key: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withHealthCheckInternal(key)); + return new TestVaultResourcePromiseImpl(this._withHealthCheckInternal(key), this._client); } /** @internal */ @@ -27762,7 +28034,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase const path = options?.path; const statusCode = options?.statusCode; const endpointName = options?.endpointName; - return new TestVaultResourcePromiseImpl(this._withHttpHealthCheckInternal(path, statusCode, endpointName)); + return new TestVaultResourcePromiseImpl(this._withHttpHealthCheckInternal(path, statusCode, endpointName), this._client); } /** @internal */ @@ -27784,7 +28056,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Adds a resource command */ withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): TestVaultResourcePromise { const commandOptions = options?.commandOptions; - return new TestVaultResourcePromiseImpl(this._withCommandInternal(name, displayName, executeCommand, commandOptions)); + return new TestVaultResourcePromiseImpl(this._withCommandInternal(name, displayName, executeCommand, commandOptions), this._client); } /** @internal */ @@ -27799,7 +28071,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Configures developer certificate trust */ withDeveloperCertificateTrust(trust: boolean): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withDeveloperCertificateTrustInternal(trust)); + return new TestVaultResourcePromiseImpl(this._withDeveloperCertificateTrustInternal(trust), this._client); } /** @internal */ @@ -27814,11 +28086,12 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Sets the certificate trust scope */ withCertificateTrustScope(scope: CertificateTrustScope): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withCertificateTrustScopeInternal(scope)); + return new TestVaultResourcePromiseImpl(this._withCertificateTrustScopeInternal(scope), this._client); } /** @internal */ - private async _withHttpsDeveloperCertificateInternal(password?: ParameterResource): Promise { + private async _withHttpsDeveloperCertificateInternal(password?: Awaitable): Promise { + password = isPromiseLike(password) ? await password : password; const rpcArgs: Record = { builder: this._handle }; if (password !== undefined) rpcArgs.password = password; const result = await this._client.invokeCapability( @@ -27830,8 +28103,8 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Configures HTTPS with a developer certificate */ withHttpsDeveloperCertificate(options?: WithHttpsDeveloperCertificateOptions): TestVaultResourcePromise { - const password = options?.password; - return new TestVaultResourcePromiseImpl(this._withHttpsDeveloperCertificateInternal(password)); + let password = options?.password; + return new TestVaultResourcePromiseImpl(this._withHttpsDeveloperCertificateInternal(password), this._client); } /** @internal */ @@ -27846,11 +28119,12 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Removes HTTPS certificate configuration */ withoutHttpsCertificate(): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withoutHttpsCertificateInternal()); + return new TestVaultResourcePromiseImpl(this._withoutHttpsCertificateInternal(), this._client); } /** @internal */ - private async _withParentRelationshipInternal(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _withParentRelationshipInternal(parent: Awaitable): Promise { + parent = isPromiseLike(parent) ? await parent : parent; const rpcArgs: Record = { builder: this._handle, parent }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withBuilderParentRelationship', @@ -27860,12 +28134,13 @@ class TestVaultResourceImpl extends ResourceBuilderBase } /** Sets the parent relationship */ - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withParentRelationshipInternal(parent)); + withParentRelationship(parent: Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._withParentRelationshipInternal(parent), this._client); } /** @internal */ - private async _withChildRelationshipInternal(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _withChildRelationshipInternal(child: Awaitable): Promise { + child = isPromiseLike(child) ? await child : child; const rpcArgs: Record = { builder: this._handle, child }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withBuilderChildRelationship', @@ -27875,8 +28150,8 @@ class TestVaultResourceImpl extends ResourceBuilderBase } /** Sets a child relationship */ - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withChildRelationshipInternal(child)); + withChildRelationship(child: Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._withChildRelationshipInternal(child), this._client); } /** @internal */ @@ -27893,7 +28168,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Sets the icon for the resource */ withIconName(iconName: string, options?: WithIconNameOptions): TestVaultResourcePromise { const iconVariant = options?.iconVariant; - return new TestVaultResourcePromiseImpl(this._withIconNameInternal(iconName, iconVariant)); + return new TestVaultResourcePromiseImpl(this._withIconNameInternal(iconName, iconVariant), this._client); } /** @internal */ @@ -27922,7 +28197,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase const failureThreshold = options?.failureThreshold; const successThreshold = options?.successThreshold; const endpointName = options?.endpointName; - return new TestVaultResourcePromiseImpl(this._withHttpProbeInternal(probeType, path, initialDelaySeconds, periodSeconds, timeoutSeconds, failureThreshold, successThreshold, endpointName)); + return new TestVaultResourcePromiseImpl(this._withHttpProbeInternal(probeType, path, initialDelaySeconds, periodSeconds, timeoutSeconds, failureThreshold, successThreshold, endpointName), this._client); } /** @internal */ @@ -27937,7 +28212,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Excludes the resource from MCP server exposure */ excludeFromMcp(): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._excludeFromMcpInternal()); + return new TestVaultResourcePromiseImpl(this._excludeFromMcpInternal(), this._client); } /** @internal */ @@ -27952,7 +28227,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Sets the remote image name for publishing */ withRemoteImageName(remoteImageName: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withRemoteImageNameInternal(remoteImageName)); + return new TestVaultResourcePromiseImpl(this._withRemoteImageNameInternal(remoteImageName), this._client); } /** @internal */ @@ -27967,7 +28242,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Sets the remote image tag for publishing */ withRemoteImageTag(remoteImageTag: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withRemoteImageTagInternal(remoteImageTag)); + return new TestVaultResourcePromiseImpl(this._withRemoteImageTagInternal(remoteImageTag), this._client); } /** @internal */ @@ -27995,7 +28270,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase const requiredBy = options?.requiredBy; const tags = options?.tags; const description = options?.description; - return new TestVaultResourcePromiseImpl(this._withPipelineStepFactoryInternal(stepName, callback, dependsOn, requiredBy, tags, description)); + return new TestVaultResourcePromiseImpl(this._withPipelineStepFactoryInternal(stepName, callback, dependsOn, requiredBy, tags, description), this._client); } /** @internal */ @@ -28015,7 +28290,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Configures pipeline step dependencies via a callback */ withPipelineConfiguration(callback: (obj: PipelineConfigurationContext) => Promise): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withPipelineConfigurationInternal(callback)); + return new TestVaultResourcePromiseImpl(this._withPipelineConfigurationInternal(callback), this._client); } /** @internal */ @@ -28034,7 +28309,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase withVolume(target: string, options?: WithVolumeOptions): TestVaultResourcePromise { const name = options?.name; const isReadOnly = options?.isReadOnly; - return new TestVaultResourcePromiseImpl(this._withVolumeInternal(target, name, isReadOnly)); + return new TestVaultResourcePromiseImpl(this._withVolumeInternal(target, name, isReadOnly), this._client); } /** Gets the resource name */ @@ -28063,7 +28338,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Subscribes to the BeforeResourceStarted event */ onBeforeResourceStarted(callback: (arg: BeforeResourceStartedEvent) => Promise): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._onBeforeResourceStartedInternal(callback)); + return new TestVaultResourcePromiseImpl(this._onBeforeResourceStartedInternal(callback), this._client); } /** @internal */ @@ -28083,7 +28358,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Subscribes to the ResourceStopped event */ onResourceStopped(callback: (arg: ResourceStoppedEvent) => Promise): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._onResourceStoppedInternal(callback)); + return new TestVaultResourcePromiseImpl(this._onResourceStoppedInternal(callback), this._client); } /** @internal */ @@ -28103,7 +28378,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Subscribes to the InitializeResource event */ onInitializeResource(callback: (arg: InitializeResourceEvent) => Promise): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._onInitializeResourceInternal(callback)); + return new TestVaultResourcePromiseImpl(this._onInitializeResourceInternal(callback), this._client); } /** @internal */ @@ -28123,7 +28398,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Subscribes to the ResourceEndpointsAllocated event */ onResourceEndpointsAllocated(callback: (arg: ResourceEndpointsAllocatedEvent) => Promise): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._onResourceEndpointsAllocatedInternal(callback)); + return new TestVaultResourcePromiseImpl(this._onResourceEndpointsAllocatedInternal(callback), this._client); } /** @internal */ @@ -28143,7 +28418,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Subscribes to the ResourceReady event */ onResourceReady(callback: (arg: ResourceReadyEvent) => Promise): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._onResourceReadyInternal(callback)); + return new TestVaultResourcePromiseImpl(this._onResourceReadyInternal(callback), this._client); } /** @internal */ @@ -28162,7 +28437,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase withOptionalString(options?: WithOptionalStringOptions): TestVaultResourcePromise { const value = options?.value; const enabled = options?.enabled; - return new TestVaultResourcePromiseImpl(this._withOptionalStringInternal(value, enabled)); + return new TestVaultResourcePromiseImpl(this._withOptionalStringInternal(value, enabled), this._client); } /** @internal */ @@ -28177,7 +28452,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Configures the resource with a DTO */ withConfig(config: TestConfigDto): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withConfigInternal(config)); + return new TestVaultResourcePromiseImpl(this._withConfigInternal(config), this._client); } /** @internal */ @@ -28197,7 +28472,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Configures environment with callback (test version) */ testWithEnvironmentCallback(callback: (arg: TestEnvironmentContext) => Promise): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._testWithEnvironmentCallbackInternal(callback)); + return new TestVaultResourcePromiseImpl(this._testWithEnvironmentCallbackInternal(callback), this._client); } /** @internal */ @@ -28212,7 +28487,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Sets the created timestamp */ withCreatedAt(createdAt: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withCreatedAtInternal(createdAt)); + return new TestVaultResourcePromiseImpl(this._withCreatedAtInternal(createdAt), this._client); } /** @internal */ @@ -28227,7 +28502,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Sets the modified timestamp */ withModifiedAt(modifiedAt: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withModifiedAtInternal(modifiedAt)); + return new TestVaultResourcePromiseImpl(this._withModifiedAtInternal(modifiedAt), this._client); } /** @internal */ @@ -28242,7 +28517,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Sets the correlation ID */ withCorrelationId(correlationId: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withCorrelationIdInternal(correlationId)); + return new TestVaultResourcePromiseImpl(this._withCorrelationIdInternal(correlationId), this._client); } /** @internal */ @@ -28264,7 +28539,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Configures with optional callback */ withOptionalCallback(options?: WithOptionalCallbackOptions): TestVaultResourcePromise { const callback = options?.callback; - return new TestVaultResourcePromiseImpl(this._withOptionalCallbackInternal(callback)); + return new TestVaultResourcePromiseImpl(this._withOptionalCallbackInternal(callback), this._client); } /** @internal */ @@ -28279,7 +28554,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Sets the resource status */ withStatus(status: TestResourceStatus): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withStatusInternal(status)); + return new TestVaultResourcePromiseImpl(this._withStatusInternal(status), this._client); } /** @internal */ @@ -28294,7 +28569,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Configures with nested DTO */ withNestedConfig(config: TestNestedDto): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withNestedConfigInternal(config)); + return new TestVaultResourcePromiseImpl(this._withNestedConfigInternal(config), this._client); } /** @internal */ @@ -28314,11 +28589,12 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Adds validation callback */ withValidator(validator: (arg: TestResourceContext) => Promise): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withValidatorInternal(validator)); + return new TestVaultResourcePromiseImpl(this._withValidatorInternal(validator), this._client); } /** @internal */ - private async _testWaitForInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _testWaitForInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/testWaitFor', @@ -28328,12 +28604,13 @@ class TestVaultResourceImpl extends ResourceBuilderBase } /** Waits for another resource (test version) */ - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._testWaitForInternal(dependency)); + testWaitFor(dependency: Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._testWaitForInternal(dependency), this._client); } /** @internal */ - private async _withDependencyInternal(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withDependencyInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/withDependency', @@ -28343,12 +28620,13 @@ class TestVaultResourceImpl extends ResourceBuilderBase } /** Adds a dependency on another resource */ - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withDependencyInternal(dependency)); + withDependency(dependency: Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._withDependencyInternal(dependency), this._client); } /** @internal */ - private async _withUnionDependencyInternal(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withUnionDependencyInternal(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/withUnionDependency', @@ -28358,8 +28636,8 @@ class TestVaultResourceImpl extends ResourceBuilderBase } /** Adds a dependency from a string or another resource */ - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withUnionDependencyInternal(dependency)); + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._withUnionDependencyInternal(dependency), this._client); } /** @internal */ @@ -28374,7 +28652,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Sets the endpoints */ withEndpoints(endpoints: string[]): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withEndpointsInternal(endpoints)); + return new TestVaultResourcePromiseImpl(this._withEndpointsInternal(endpoints), this._client); } /** @internal */ @@ -28389,7 +28667,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Sets environment variables */ withEnvironmentVariables(variables: Record): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withEnvironmentVariablesInternal(variables)); + return new TestVaultResourcePromiseImpl(this._withEnvironmentVariablesInternal(variables), this._client); } /** @internal */ @@ -28408,7 +28686,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Performs a cancellable operation */ withCancellableOperation(operation: (arg: CancellationToken) => Promise): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withCancellableOperationInternal(operation)); + return new TestVaultResourcePromiseImpl(this._withCancellableOperationInternal(operation), this._client); } /** @internal */ @@ -28423,7 +28701,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Configures vault using direct interface target */ withVaultDirect(option: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withVaultDirectInternal(option)); + return new TestVaultResourcePromiseImpl(this._withVaultDirectInternal(option), this._client); } /** @internal */ @@ -28438,7 +28716,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Adds a label to the resource */ withMergeLabel(label: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withMergeLabelInternal(label)); + return new TestVaultResourcePromiseImpl(this._withMergeLabelInternal(label), this._client); } /** @internal */ @@ -28453,7 +28731,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Adds a categorized label to the resource */ withMergeLabelCategorized(label: string, category: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withMergeLabelCategorizedInternal(label, category)); + return new TestVaultResourcePromiseImpl(this._withMergeLabelCategorizedInternal(label, category), this._client); } /** @internal */ @@ -28468,7 +28746,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Configures a named endpoint */ withMergeEndpoint(endpointName: string, port: number): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withMergeEndpointInternal(endpointName, port)); + return new TestVaultResourcePromiseImpl(this._withMergeEndpointInternal(endpointName, port), this._client); } /** @internal */ @@ -28483,7 +28761,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Configures a named endpoint with scheme */ withMergeEndpointScheme(endpointName: string, port: number, scheme: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withMergeEndpointSchemeInternal(endpointName, port, scheme)); + return new TestVaultResourcePromiseImpl(this._withMergeEndpointSchemeInternal(endpointName, port, scheme), this._client); } /** @internal */ @@ -28502,7 +28780,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase withMergeLogging(logLevel: string, options?: WithMergeLoggingOptions): TestVaultResourcePromise { const enableConsole = options?.enableConsole; const maxFiles = options?.maxFiles; - return new TestVaultResourcePromiseImpl(this._withMergeLoggingInternal(logLevel, enableConsole, maxFiles)); + return new TestVaultResourcePromiseImpl(this._withMergeLoggingInternal(logLevel, enableConsole, maxFiles), this._client); } /** @internal */ @@ -28521,7 +28799,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase withMergeLoggingPath(logLevel: string, logPath: string, options?: WithMergeLoggingPathOptions): TestVaultResourcePromise { const enableConsole = options?.enableConsole; const maxFiles = options?.maxFiles; - return new TestVaultResourcePromiseImpl(this._withMergeLoggingPathInternal(logLevel, logPath, enableConsole, maxFiles)); + return new TestVaultResourcePromiseImpl(this._withMergeLoggingPathInternal(logLevel, logPath, enableConsole, maxFiles), this._client); } /** @internal */ @@ -28536,7 +28814,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Configures a route */ withMergeRoute(path: string, method: string, handler: string, priority: number): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withMergeRouteInternal(path, method, handler, priority)); + return new TestVaultResourcePromiseImpl(this._withMergeRouteInternal(path, method, handler, priority), this._client); } /** @internal */ @@ -28551,7 +28829,7 @@ class TestVaultResourceImpl extends ResourceBuilderBase /** Configures a route with middleware */ withMergeRouteMiddleware(path: string, method: string, handler: string, priority: number, middleware: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._withMergeRouteMiddlewareInternal(path, method, handler, priority, middleware)); + return new TestVaultResourcePromiseImpl(this._withMergeRouteMiddlewareInternal(path, method, handler, priority, middleware), this._client); } } @@ -28562,7 +28840,9 @@ class TestVaultResourceImpl extends ResourceBuilderBase * await builder.addSomething().withX().withY(); */ class TestVaultResourcePromiseImpl implements TestVaultResourcePromise { - constructor(private _promise: Promise) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: TestVaultResource) => TResult1 | PromiseLike) | null, @@ -28572,123 +28852,123 @@ class TestVaultResourcePromiseImpl implements TestVaultResourcePromise { } /** Configures a resource to use a container registry */ - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withContainerRegistry(registry))); + withContainerRegistry(registry: Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withContainerRegistry(registry)), this._client); } /** Adds a bind mount */ withBindMount(source: string, target: string, options?: WithBindMountOptions): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withBindMount(source, target, options))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withBindMount(source, target, options)), this._client); } /** Sets the container entrypoint */ withEntrypoint(entrypoint: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withEntrypoint(entrypoint))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withEntrypoint(entrypoint)), this._client); } /** Sets the container image tag */ withImageTag(tag: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withImageTag(tag))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withImageTag(tag)), this._client); } /** Sets the container image registry */ withImageRegistry(registry: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withImageRegistry(registry))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withImageRegistry(registry)), this._client); } /** Sets the container image */ withImage(image: string, options?: WithImageOptions): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withImage(image, options))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withImage(image, options)), this._client); } /** Sets the image SHA256 digest */ withImageSHA256(sha256: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withImageSHA256(sha256))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withImageSHA256(sha256)), this._client); } /** Adds runtime arguments for the container */ withContainerRuntimeArgs(args: string[]): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withContainerRuntimeArgs(args))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withContainerRuntimeArgs(args)), this._client); } /** Sets the lifetime behavior of the container resource */ withLifetime(lifetime: ContainerLifetime): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withLifetime(lifetime))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withLifetime(lifetime)), this._client); } /** Sets the container image pull policy */ withImagePullPolicy(pullPolicy: ImagePullPolicy): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withImagePullPolicy(pullPolicy))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withImagePullPolicy(pullPolicy)), this._client); } /** Configures the resource to be published as a container */ publishAsContainer(): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.publishAsContainer())); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.publishAsContainer()), this._client); } /** Configures the resource to use a Dockerfile */ withDockerfile(contextPath: string, options?: WithDockerfileOptions): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withDockerfile(contextPath, options))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withDockerfile(contextPath, options)), this._client); } /** Sets the container name */ withContainerName(name: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withContainerName(name))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withContainerName(name)), this._client); } /** Adds a build argument from a parameter resource */ - withBuildArg(name: string, value: ParameterResource): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withBuildArg(name, value))); + withBuildArg(name: string, value: Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withBuildArg(name, value)), this._client); } /** Adds a build secret from a parameter resource */ - withBuildSecret(name: string, value: ParameterResource): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withBuildSecret(name, value))); + withBuildSecret(name: string, value: Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withBuildSecret(name, value)), this._client); } /** Configures endpoint proxy support */ withEndpointProxySupport(proxyEnabled: boolean): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withEndpointProxySupport(proxyEnabled))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withEndpointProxySupport(proxyEnabled)), this._client); } /** Sets the base image for a Dockerfile build */ withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withDockerfileBaseImage(options))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withDockerfileBaseImage(options)), this._client); } /** Adds a network alias for the container */ withContainerNetworkAlias(alias: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withContainerNetworkAlias(alias))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withContainerNetworkAlias(alias)), this._client); } /** Configures an MCP server endpoint on the resource */ withMcpServer(options?: WithMcpServerOptions): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withMcpServer(options))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withMcpServer(options)), this._client); } /** Configures OTLP telemetry export */ withOtlpExporter(): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withOtlpExporter())); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withOtlpExporter()), this._client); } /** Configures OTLP telemetry export with specific protocol */ withOtlpExporterProtocol(protocol: OtlpProtocol): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withOtlpExporterProtocol(protocol))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withOtlpExporterProtocol(protocol)), this._client); } /** Publishes the resource as a connection string */ publishAsConnectionString(): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.publishAsConnectionString())); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.publishAsConnectionString()), this._client); } /** Adds a required command dependency */ withRequiredCommand(command: string, options?: WithRequiredCommandOptions): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withRequiredCommand(command, options))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withRequiredCommand(command, options)), this._client); } /** Sets an environment variable */ - withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withEnvironment(name, value))); + withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withEnvironment(name, value)), this._client); } /** @@ -28696,86 +28976,86 @@ class TestVaultResourcePromiseImpl implements TestVaultResourcePromise { * @deprecated ATS compatibility shim. Use withEnvironment instead. */ withEnvironmentExpression(name: string, value: ReferenceExpression): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentExpression(name, value))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentExpression(name, value)), this._client); } /** Sets environment variables via callback */ withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentCallback(callback))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentCallback(callback)), this._client); } /** * Sets an environment variable from an endpoint reference * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentEndpoint(name: string, endpointReference: EndpointReference): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentEndpoint(name, endpointReference))); + withEnvironmentEndpoint(name: string, endpointReference: Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentEndpoint(name, endpointReference)), this._client); } /** * Sets an environment variable from a parameter resource * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentParameter(name: string, parameter: ParameterResource): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentParameter(name, parameter))); + withEnvironmentParameter(name: string, parameter: Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentParameter(name, parameter)), this._client); } /** * Sets an environment variable from a connection string resource * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentConnectionString(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentConnectionString(envVarName, resource))); + withEnvironmentConnectionString(envVarName: string, resource: Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentConnectionString(envVarName, resource)), this._client); } /** Adds arguments */ withArgs(args: string[]): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withArgs(args))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withArgs(args)), this._client); } /** Sets command-line arguments via callback */ withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) => Promise): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withArgsCallback(callback))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withArgsCallback(callback)), this._client); } /** Adds a reference to another resource */ - withReference(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WithReferenceOptions): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withReference(source, options))); + withReference(source: Awaitable, options?: WithReferenceOptions): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withReference(source, options)), this._client); } /** Adds a reference to a URI */ withReferenceUri(name: string, uri: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withReferenceUri(name, uri))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withReferenceUri(name, uri)), this._client); } /** Adds a reference to an external service */ - withReferenceExternalService(externalService: ExternalServiceResource): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withReferenceExternalService(externalService))); + withReferenceExternalService(externalService: Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withReferenceExternalService(externalService)), this._client); } /** Adds a reference to an endpoint */ - withReferenceEndpoint(endpointReference: EndpointReference): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withReferenceEndpoint(endpointReference))); + withReferenceEndpoint(endpointReference: Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withReferenceEndpoint(endpointReference)), this._client); } /** Adds a network endpoint */ withEndpoint(options?: WithEndpointOptions): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withEndpoint(options))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withEndpoint(options)), this._client); } /** Adds an HTTP endpoint */ withHttpEndpoint(options?: WithHttpEndpointOptions): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withHttpEndpoint(options))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withHttpEndpoint(options)), this._client); } /** Adds an HTTPS endpoint */ withHttpsEndpoint(options?: WithHttpsEndpointOptions): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withHttpsEndpoint(options))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withHttpsEndpoint(options)), this._client); } /** Makes HTTP endpoints externally accessible */ withExternalHttpEndpoints(): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withExternalHttpEndpoints())); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withExternalHttpEndpoints()), this._client); } /** Gets an endpoint reference */ @@ -28785,152 +29065,152 @@ class TestVaultResourcePromiseImpl implements TestVaultResourcePromise { /** Configures resource for HTTP/2 */ asHttp2Service(): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.asHttp2Service())); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.asHttp2Service()), this._client); } /** Customizes displayed URLs via callback */ withUrlsCallback(callback: (obj: ResourceUrlsCallbackContext) => Promise): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withUrlsCallback(callback))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withUrlsCallback(callback)), this._client); } /** Adds or modifies displayed URLs */ withUrl(url: string, options?: WithUrlOptions): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withUrl(url, options))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withUrl(url, options)), this._client); } /** Adds a URL using a reference expression */ withUrlExpression(url: ReferenceExpression, options?: WithUrlExpressionOptions): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withUrlExpression(url, options))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withUrlExpression(url, options)), this._client); } /** Customizes the URL for a specific endpoint via callback */ withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpoint(endpointName, callback))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpoint(endpointName, callback)), this._client); } /** Adds a URL for a specific endpoint via factory callback */ withUrlForEndpointFactory(endpointName: string, callback: (arg: EndpointReference) => Promise): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpointFactory(endpointName, callback))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpointFactory(endpointName, callback)), this._client); } /** Excludes the resource from the deployment manifest */ excludeFromManifest(): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.excludeFromManifest())); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.excludeFromManifest()), this._client); } /** Waits for another resource to be ready */ - waitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.waitFor(dependency))); + waitFor(dependency: Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.waitFor(dependency)), this._client); } /** Waits for another resource with specific behavior */ - waitForWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.waitForWithBehavior(dependency, waitBehavior))); + waitForWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.waitForWithBehavior(dependency, waitBehavior)), this._client); } /** Waits for another resource to start */ - waitForStart(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.waitForStart(dependency))); + waitForStart(dependency: Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.waitForStart(dependency)), this._client); } /** Waits for another resource to start with specific behavior */ - waitForStartWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.waitForStartWithBehavior(dependency, waitBehavior))); + waitForStartWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.waitForStartWithBehavior(dependency, waitBehavior)), this._client); } /** Prevents resource from starting automatically */ withExplicitStart(): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withExplicitStart())); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withExplicitStart()), this._client); } /** Waits for resource completion */ - waitForCompletion(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WaitForCompletionOptions): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.waitForCompletion(dependency, options))); + waitForCompletion(dependency: Awaitable, options?: WaitForCompletionOptions): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.waitForCompletion(dependency, options)), this._client); } /** Adds a health check by key */ withHealthCheck(key: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withHealthCheck(key))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withHealthCheck(key)), this._client); } /** Adds an HTTP health check */ withHttpHealthCheck(options?: WithHttpHealthCheckOptions): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withHttpHealthCheck(options))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withHttpHealthCheck(options)), this._client); } /** Adds a resource command */ withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withCommand(name, displayName, executeCommand, options))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withCommand(name, displayName, executeCommand, options)), this._client); } /** Configures developer certificate trust */ withDeveloperCertificateTrust(trust: boolean): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withDeveloperCertificateTrust(trust))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withDeveloperCertificateTrust(trust)), this._client); } /** Sets the certificate trust scope */ withCertificateTrustScope(scope: CertificateTrustScope): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withCertificateTrustScope(scope))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withCertificateTrustScope(scope)), this._client); } /** Configures HTTPS with a developer certificate */ withHttpsDeveloperCertificate(options?: WithHttpsDeveloperCertificateOptions): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withHttpsDeveloperCertificate(options))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withHttpsDeveloperCertificate(options)), this._client); } /** Removes HTTPS certificate configuration */ withoutHttpsCertificate(): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withoutHttpsCertificate())); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withoutHttpsCertificate()), this._client); } /** Sets the parent relationship */ - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withParentRelationship(parent))); + withParentRelationship(parent: Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withParentRelationship(parent)), this._client); } /** Sets a child relationship */ - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withChildRelationship(child))); + withChildRelationship(child: Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withChildRelationship(child)), this._client); } /** Sets the icon for the resource */ withIconName(iconName: string, options?: WithIconNameOptions): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withIconName(iconName, options))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withIconName(iconName, options)), this._client); } /** Adds an HTTP health probe to the resource */ withHttpProbe(probeType: ProbeType, options?: WithHttpProbeOptions): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withHttpProbe(probeType, options))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withHttpProbe(probeType, options)), this._client); } /** Excludes the resource from MCP server exposure */ excludeFromMcp(): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.excludeFromMcp())); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.excludeFromMcp()), this._client); } /** Sets the remote image name for publishing */ withRemoteImageName(remoteImageName: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageName(remoteImageName))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageName(remoteImageName)), this._client); } /** Sets the remote image tag for publishing */ withRemoteImageTag(remoteImageTag: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageTag(remoteImageTag))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageTag(remoteImageTag)), this._client); } /** Adds a pipeline step to the resource */ withPipelineStepFactory(stepName: string, callback: (arg: PipelineStepContext) => Promise, options?: WithPipelineStepFactoryOptions): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withPipelineStepFactory(stepName, callback, options))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withPipelineStepFactory(stepName, callback, options)), this._client); } /** Configures pipeline step dependencies via a callback */ withPipelineConfiguration(callback: (obj: PipelineConfigurationContext) => Promise): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withPipelineConfiguration(callback))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withPipelineConfiguration(callback)), this._client); } /** Adds a volume */ withVolume(target: string, options?: WithVolumeOptions): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withVolume(target, options))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withVolume(target, options)), this._client); } /** Gets the resource name */ @@ -28940,152 +29220,152 @@ class TestVaultResourcePromiseImpl implements TestVaultResourcePromise { /** Subscribes to the BeforeResourceStarted event */ onBeforeResourceStarted(callback: (arg: BeforeResourceStartedEvent) => Promise): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.onBeforeResourceStarted(callback))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.onBeforeResourceStarted(callback)), this._client); } /** Subscribes to the ResourceStopped event */ onResourceStopped(callback: (arg: ResourceStoppedEvent) => Promise): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.onResourceStopped(callback))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.onResourceStopped(callback)), this._client); } /** Subscribes to the InitializeResource event */ onInitializeResource(callback: (arg: InitializeResourceEvent) => Promise): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.onInitializeResource(callback))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.onInitializeResource(callback)), this._client); } /** Subscribes to the ResourceEndpointsAllocated event */ onResourceEndpointsAllocated(callback: (arg: ResourceEndpointsAllocatedEvent) => Promise): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.onResourceEndpointsAllocated(callback))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.onResourceEndpointsAllocated(callback)), this._client); } /** Subscribes to the ResourceReady event */ onResourceReady(callback: (arg: ResourceReadyEvent) => Promise): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.onResourceReady(callback))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.onResourceReady(callback)), this._client); } /** Adds an optional string parameter */ withOptionalString(options?: WithOptionalStringOptions): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withOptionalString(options))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withOptionalString(options)), this._client); } /** Configures the resource with a DTO */ withConfig(config: TestConfigDto): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withConfig(config))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withConfig(config)), this._client); } /** Configures environment with callback (test version) */ testWithEnvironmentCallback(callback: (arg: TestEnvironmentContext) => Promise): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.testWithEnvironmentCallback(callback))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.testWithEnvironmentCallback(callback)), this._client); } /** Sets the created timestamp */ withCreatedAt(createdAt: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withCreatedAt(createdAt))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withCreatedAt(createdAt)), this._client); } /** Sets the modified timestamp */ withModifiedAt(modifiedAt: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withModifiedAt(modifiedAt))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withModifiedAt(modifiedAt)), this._client); } /** Sets the correlation ID */ withCorrelationId(correlationId: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withCorrelationId(correlationId))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withCorrelationId(correlationId)), this._client); } /** Configures with optional callback */ withOptionalCallback(options?: WithOptionalCallbackOptions): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withOptionalCallback(options))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withOptionalCallback(options)), this._client); } /** Sets the resource status */ withStatus(status: TestResourceStatus): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withStatus(status))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withStatus(status)), this._client); } /** Configures with nested DTO */ withNestedConfig(config: TestNestedDto): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withNestedConfig(config))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withNestedConfig(config)), this._client); } /** Adds validation callback */ withValidator(validator: (arg: TestResourceContext) => Promise): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withValidator(validator))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withValidator(validator)), this._client); } /** Waits for another resource (test version) */ - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.testWaitFor(dependency))); + testWaitFor(dependency: Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.testWaitFor(dependency)), this._client); } /** Adds a dependency on another resource */ - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withDependency(dependency))); + withDependency(dependency: Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withDependency(dependency)), this._client); } /** Adds a dependency from a string or another resource */ - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withUnionDependency(dependency))); + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): TestVaultResourcePromise { + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withUnionDependency(dependency)), this._client); } /** Sets the endpoints */ withEndpoints(endpoints: string[]): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withEndpoints(endpoints))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withEndpoints(endpoints)), this._client); } /** Sets environment variables */ withEnvironmentVariables(variables: Record): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentVariables(variables))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withEnvironmentVariables(variables)), this._client); } /** Performs a cancellable operation */ withCancellableOperation(operation: (arg: CancellationToken) => Promise): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withCancellableOperation(operation))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withCancellableOperation(operation)), this._client); } /** Configures vault using direct interface target */ withVaultDirect(option: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withVaultDirect(option))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withVaultDirect(option)), this._client); } /** Adds a label to the resource */ withMergeLabel(label: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabel(label))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabel(label)), this._client); } /** Adds a categorized label to the resource */ withMergeLabelCategorized(label: string, category: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabelCategorized(label, category))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabelCategorized(label, category)), this._client); } /** Configures a named endpoint */ withMergeEndpoint(endpointName: string, port: number): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpoint(endpointName, port))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpoint(endpointName, port)), this._client); } /** Configures a named endpoint with scheme */ withMergeEndpointScheme(endpointName: string, port: number, scheme: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpointScheme(endpointName, port, scheme))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpointScheme(endpointName, port, scheme)), this._client); } /** Configures resource logging */ withMergeLogging(logLevel: string, options?: WithMergeLoggingOptions): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withMergeLogging(logLevel, options))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withMergeLogging(logLevel, options)), this._client); } /** Configures resource logging with file path */ withMergeLoggingPath(logLevel: string, logPath: string, options?: WithMergeLoggingPathOptions): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withMergeLoggingPath(logLevel, logPath, options))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withMergeLoggingPath(logLevel, logPath, options)), this._client); } /** Configures a route */ withMergeRoute(path: string, method: string, handler: string, priority: number): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withMergeRoute(path, method, handler, priority))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withMergeRoute(path, method, handler, priority)), this._client); } /** Configures a route with middleware */ withMergeRouteMiddleware(path: string, method: string, handler: string, priority: number, middleware: string): TestVaultResourcePromise { - return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withMergeRouteMiddleware(path, method, handler, priority, middleware))); + return new TestVaultResourcePromiseImpl(this._promise.then(obj => obj.withMergeRouteMiddleware(path, method, handler, priority, middleware)), this._client); } } @@ -29126,7 +29406,7 @@ class ComputeResourceImpl extends ResourceBuilderBase im /** Sets the remote image name for publishing */ withRemoteImageName(remoteImageName: string): ComputeResourcePromise { - return new ComputeResourcePromiseImpl(this._withRemoteImageNameInternal(remoteImageName)); + return new ComputeResourcePromiseImpl(this._withRemoteImageNameInternal(remoteImageName), this._client); } /** @internal */ @@ -29141,7 +29421,7 @@ class ComputeResourceImpl extends ResourceBuilderBase im /** Sets the remote image tag for publishing */ withRemoteImageTag(remoteImageTag: string): ComputeResourcePromise { - return new ComputeResourcePromiseImpl(this._withRemoteImageTagInternal(remoteImageTag)); + return new ComputeResourcePromiseImpl(this._withRemoteImageTagInternal(remoteImageTag), this._client); } } @@ -29152,7 +29432,9 @@ class ComputeResourceImpl extends ResourceBuilderBase im * await builder.addSomething().withX().withY(); */ class ComputeResourcePromiseImpl implements ComputeResourcePromise { - constructor(private _promise: Promise) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: ComputeResource) => TResult1 | PromiseLike) | null, @@ -29163,12 +29445,12 @@ class ComputeResourcePromiseImpl implements ComputeResourcePromise { /** Sets the remote image name for publishing */ withRemoteImageName(remoteImageName: string): ComputeResourcePromise { - return new ComputeResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageName(remoteImageName))); + return new ComputeResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageName(remoteImageName)), this._client); } /** Sets the remote image tag for publishing */ withRemoteImageTag(remoteImageTag: string): ComputeResourcePromise { - return new ComputeResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageTag(remoteImageTag))); + return new ComputeResourcePromiseImpl(this._promise.then(obj => obj.withRemoteImageTag(remoteImageTag)), this._client); } } @@ -29179,11 +29461,11 @@ class ComputeResourcePromiseImpl implements ComputeResourcePromise { export interface ContainerFilesDestinationResource { toJSON(): MarshalledHandle; - publishWithContainerFiles(source: ResourceWithContainerFiles, destinationPath: string): ContainerFilesDestinationResourcePromise; + publishWithContainerFiles(source: Awaitable, destinationPath: string): ContainerFilesDestinationResourcePromise; } export interface ContainerFilesDestinationResourcePromise extends PromiseLike { - publishWithContainerFiles(source: ResourceWithContainerFiles, destinationPath: string): ContainerFilesDestinationResourcePromise; + publishWithContainerFiles(source: Awaitable, destinationPath: string): ContainerFilesDestinationResourcePromise; } // ============================================================================ @@ -29196,7 +29478,8 @@ class ContainerFilesDestinationResourceImpl extends ResourceBuilderBase { + private async _publishWithContainerFilesInternal(source: Awaitable, destinationPath: string): Promise { + source = isPromiseLike(source) ? await source : source; const rpcArgs: Record = { builder: this._handle, source, destinationPath }; const result = await this._client.invokeCapability( 'Aspire.Hosting/publishWithContainerFilesFromResource', @@ -29206,8 +29489,8 @@ class ContainerFilesDestinationResourceImpl extends ResourceBuilderBase, destinationPath: string): ContainerFilesDestinationResourcePromise { + return new ContainerFilesDestinationResourcePromiseImpl(this._publishWithContainerFilesInternal(source, destinationPath), this._client); } } @@ -29218,7 +29501,9 @@ class ContainerFilesDestinationResourceImpl extends ResourceBuilderBase) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: ContainerFilesDestinationResource) => TResult1 | PromiseLike) | null, @@ -29228,8 +29513,8 @@ class ContainerFilesDestinationResourcePromiseImpl implements ContainerFilesDest } /** Configures the resource to copy container files from the specified source during publishing */ - publishWithContainerFiles(source: ResourceWithContainerFiles, destinationPath: string): ContainerFilesDestinationResourcePromise { - return new ContainerFilesDestinationResourcePromiseImpl(this._promise.then(obj => obj.publishWithContainerFiles(source, destinationPath))); + publishWithContainerFiles(source: Awaitable, destinationPath: string): ContainerFilesDestinationResourcePromise { + return new ContainerFilesDestinationResourcePromiseImpl(this._promise.then(obj => obj.publishWithContainerFiles(source, destinationPath)), this._client); } } @@ -29240,7 +29525,7 @@ class ContainerFilesDestinationResourcePromiseImpl implements ContainerFilesDest export interface Resource { toJSON(): MarshalledHandle; - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ResourcePromise; + withContainerRegistry(registry: Awaitable): ResourcePromise; withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): ResourcePromise; withRequiredCommand(command: string, options?: WithRequiredCommandOptions): ResourcePromise; withUrlsCallback(callback: (obj: ResourceUrlsCallbackContext) => Promise): ResourcePromise; @@ -29251,8 +29536,8 @@ export interface Resource { withExplicitStart(): ResourcePromise; withHealthCheck(key: string): ResourcePromise; withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): ResourcePromise; - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ResourcePromise; - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ResourcePromise; + withParentRelationship(parent: Awaitable): ResourcePromise; + withChildRelationship(child: Awaitable): ResourcePromise; withIconName(iconName: string, options?: WithIconNameOptions): ResourcePromise; excludeFromMcp(): ResourcePromise; withPipelineStepFactory(stepName: string, callback: (arg: PipelineStepContext) => Promise, options?: WithPipelineStepFactoryOptions): ResourcePromise; @@ -29271,9 +29556,9 @@ export interface Resource { withStatus(status: TestResourceStatus): ResourcePromise; withNestedConfig(config: TestNestedDto): ResourcePromise; withValidator(validator: (arg: TestResourceContext) => Promise): ResourcePromise; - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ResourcePromise; - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ResourcePromise; - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ResourcePromise; + testWaitFor(dependency: Awaitable): ResourcePromise; + withDependency(dependency: Awaitable): ResourcePromise; + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): ResourcePromise; withEndpoints(endpoints: string[]): ResourcePromise; withCancellableOperation(operation: (arg: CancellationToken) => Promise): ResourcePromise; withMergeLabel(label: string): ResourcePromise; @@ -29287,7 +29572,7 @@ export interface Resource { } export interface ResourcePromise extends PromiseLike { - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ResourcePromise; + withContainerRegistry(registry: Awaitable): ResourcePromise; withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): ResourcePromise; withRequiredCommand(command: string, options?: WithRequiredCommandOptions): ResourcePromise; withUrlsCallback(callback: (obj: ResourceUrlsCallbackContext) => Promise): ResourcePromise; @@ -29298,8 +29583,8 @@ export interface ResourcePromise extends PromiseLike { withExplicitStart(): ResourcePromise; withHealthCheck(key: string): ResourcePromise; withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): ResourcePromise; - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ResourcePromise; - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ResourcePromise; + withParentRelationship(parent: Awaitable): ResourcePromise; + withChildRelationship(child: Awaitable): ResourcePromise; withIconName(iconName: string, options?: WithIconNameOptions): ResourcePromise; excludeFromMcp(): ResourcePromise; withPipelineStepFactory(stepName: string, callback: (arg: PipelineStepContext) => Promise, options?: WithPipelineStepFactoryOptions): ResourcePromise; @@ -29318,9 +29603,9 @@ export interface ResourcePromise extends PromiseLike { withStatus(status: TestResourceStatus): ResourcePromise; withNestedConfig(config: TestNestedDto): ResourcePromise; withValidator(validator: (arg: TestResourceContext) => Promise): ResourcePromise; - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ResourcePromise; - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ResourcePromise; - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ResourcePromise; + testWaitFor(dependency: Awaitable): ResourcePromise; + withDependency(dependency: Awaitable): ResourcePromise; + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): ResourcePromise; withEndpoints(endpoints: string[]): ResourcePromise; withCancellableOperation(operation: (arg: CancellationToken) => Promise): ResourcePromise; withMergeLabel(label: string): ResourcePromise; @@ -29343,7 +29628,8 @@ class ResourceImpl extends ResourceBuilderBase implements Resou } /** @internal */ - private async _withContainerRegistryInternal(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _withContainerRegistryInternal(registry: Awaitable): Promise { + registry = isPromiseLike(registry) ? await registry : registry; const rpcArgs: Record = { builder: this._handle, registry }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withContainerRegistry', @@ -29353,8 +29639,8 @@ class ResourceImpl extends ResourceBuilderBase implements Resou } /** Configures a resource to use a container registry */ - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ResourcePromise { - return new ResourcePromiseImpl(this._withContainerRegistryInternal(registry)); + withContainerRegistry(registry: Awaitable): ResourcePromise { + return new ResourcePromiseImpl(this._withContainerRegistryInternal(registry), this._client); } /** @internal */ @@ -29373,7 +29659,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): ResourcePromise { const buildImage = options?.buildImage; const runtimeImage = options?.runtimeImage; - return new ResourcePromiseImpl(this._withDockerfileBaseImageInternal(buildImage, runtimeImage)); + return new ResourcePromiseImpl(this._withDockerfileBaseImageInternal(buildImage, runtimeImage), this._client); } /** @internal */ @@ -29390,7 +29676,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Adds a required command dependency */ withRequiredCommand(command: string, options?: WithRequiredCommandOptions): ResourcePromise { const helpLink = options?.helpLink; - return new ResourcePromiseImpl(this._withRequiredCommandInternal(command, helpLink)); + return new ResourcePromiseImpl(this._withRequiredCommandInternal(command, helpLink), this._client); } /** @internal */ @@ -29410,7 +29696,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Customizes displayed URLs via callback */ withUrlsCallback(callback: (obj: ResourceUrlsCallbackContext) => Promise): ResourcePromise { - return new ResourcePromiseImpl(this._withUrlsCallbackInternal(callback)); + return new ResourcePromiseImpl(this._withUrlsCallbackInternal(callback), this._client); } /** @internal */ @@ -29427,7 +29713,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Adds or modifies displayed URLs */ withUrl(url: string, options?: WithUrlOptions): ResourcePromise { const displayText = options?.displayText; - return new ResourcePromiseImpl(this._withUrlInternal(url, displayText)); + return new ResourcePromiseImpl(this._withUrlInternal(url, displayText), this._client); } /** @internal */ @@ -29444,7 +29730,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Adds a URL using a reference expression */ withUrlExpression(url: ReferenceExpression, options?: WithUrlExpressionOptions): ResourcePromise { const displayText = options?.displayText; - return new ResourcePromiseImpl(this._withUrlExpressionInternal(url, displayText)); + return new ResourcePromiseImpl(this._withUrlExpressionInternal(url, displayText), this._client); } /** @internal */ @@ -29463,7 +29749,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Customizes the URL for a specific endpoint via callback */ withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): ResourcePromise { - return new ResourcePromiseImpl(this._withUrlForEndpointInternal(endpointName, callback)); + return new ResourcePromiseImpl(this._withUrlForEndpointInternal(endpointName, callback), this._client); } /** @internal */ @@ -29478,7 +29764,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Excludes the resource from the deployment manifest */ excludeFromManifest(): ResourcePromise { - return new ResourcePromiseImpl(this._excludeFromManifestInternal()); + return new ResourcePromiseImpl(this._excludeFromManifestInternal(), this._client); } /** @internal */ @@ -29493,7 +29779,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Prevents resource from starting automatically */ withExplicitStart(): ResourcePromise { - return new ResourcePromiseImpl(this._withExplicitStartInternal()); + return new ResourcePromiseImpl(this._withExplicitStartInternal(), this._client); } /** @internal */ @@ -29508,7 +29794,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Adds a health check by key */ withHealthCheck(key: string): ResourcePromise { - return new ResourcePromiseImpl(this._withHealthCheckInternal(key)); + return new ResourcePromiseImpl(this._withHealthCheckInternal(key), this._client); } /** @internal */ @@ -29530,11 +29816,12 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Adds a resource command */ withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): ResourcePromise { const commandOptions = options?.commandOptions; - return new ResourcePromiseImpl(this._withCommandInternal(name, displayName, executeCommand, commandOptions)); + return new ResourcePromiseImpl(this._withCommandInternal(name, displayName, executeCommand, commandOptions), this._client); } /** @internal */ - private async _withParentRelationshipInternal(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _withParentRelationshipInternal(parent: Awaitable): Promise { + parent = isPromiseLike(parent) ? await parent : parent; const rpcArgs: Record = { builder: this._handle, parent }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withBuilderParentRelationship', @@ -29544,12 +29831,13 @@ class ResourceImpl extends ResourceBuilderBase implements Resou } /** Sets the parent relationship */ - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ResourcePromise { - return new ResourcePromiseImpl(this._withParentRelationshipInternal(parent)); + withParentRelationship(parent: Awaitable): ResourcePromise { + return new ResourcePromiseImpl(this._withParentRelationshipInternal(parent), this._client); } /** @internal */ - private async _withChildRelationshipInternal(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _withChildRelationshipInternal(child: Awaitable): Promise { + child = isPromiseLike(child) ? await child : child; const rpcArgs: Record = { builder: this._handle, child }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withBuilderChildRelationship', @@ -29559,8 +29847,8 @@ class ResourceImpl extends ResourceBuilderBase implements Resou } /** Sets a child relationship */ - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ResourcePromise { - return new ResourcePromiseImpl(this._withChildRelationshipInternal(child)); + withChildRelationship(child: Awaitable): ResourcePromise { + return new ResourcePromiseImpl(this._withChildRelationshipInternal(child), this._client); } /** @internal */ @@ -29577,7 +29865,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Sets the icon for the resource */ withIconName(iconName: string, options?: WithIconNameOptions): ResourcePromise { const iconVariant = options?.iconVariant; - return new ResourcePromiseImpl(this._withIconNameInternal(iconName, iconVariant)); + return new ResourcePromiseImpl(this._withIconNameInternal(iconName, iconVariant), this._client); } /** @internal */ @@ -29592,7 +29880,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Excludes the resource from MCP server exposure */ excludeFromMcp(): ResourcePromise { - return new ResourcePromiseImpl(this._excludeFromMcpInternal()); + return new ResourcePromiseImpl(this._excludeFromMcpInternal(), this._client); } /** @internal */ @@ -29620,7 +29908,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou const requiredBy = options?.requiredBy; const tags = options?.tags; const description = options?.description; - return new ResourcePromiseImpl(this._withPipelineStepFactoryInternal(stepName, callback, dependsOn, requiredBy, tags, description)); + return new ResourcePromiseImpl(this._withPipelineStepFactoryInternal(stepName, callback, dependsOn, requiredBy, tags, description), this._client); } /** @internal */ @@ -29640,7 +29928,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Configures pipeline step dependencies via a callback */ withPipelineConfiguration(callback: (obj: PipelineConfigurationContext) => Promise): ResourcePromise { - return new ResourcePromiseImpl(this._withPipelineConfigurationInternal(callback)); + return new ResourcePromiseImpl(this._withPipelineConfigurationInternal(callback), this._client); } /** Gets the resource name */ @@ -29669,7 +29957,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Subscribes to the BeforeResourceStarted event */ onBeforeResourceStarted(callback: (arg: BeforeResourceStartedEvent) => Promise): ResourcePromise { - return new ResourcePromiseImpl(this._onBeforeResourceStartedInternal(callback)); + return new ResourcePromiseImpl(this._onBeforeResourceStartedInternal(callback), this._client); } /** @internal */ @@ -29689,7 +29977,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Subscribes to the ResourceStopped event */ onResourceStopped(callback: (arg: ResourceStoppedEvent) => Promise): ResourcePromise { - return new ResourcePromiseImpl(this._onResourceStoppedInternal(callback)); + return new ResourcePromiseImpl(this._onResourceStoppedInternal(callback), this._client); } /** @internal */ @@ -29709,7 +29997,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Subscribes to the InitializeResource event */ onInitializeResource(callback: (arg: InitializeResourceEvent) => Promise): ResourcePromise { - return new ResourcePromiseImpl(this._onInitializeResourceInternal(callback)); + return new ResourcePromiseImpl(this._onInitializeResourceInternal(callback), this._client); } /** @internal */ @@ -29729,7 +30017,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Subscribes to the ResourceReady event */ onResourceReady(callback: (arg: ResourceReadyEvent) => Promise): ResourcePromise { - return new ResourcePromiseImpl(this._onResourceReadyInternal(callback)); + return new ResourcePromiseImpl(this._onResourceReadyInternal(callback), this._client); } /** @internal */ @@ -29748,7 +30036,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou withOptionalString(options?: WithOptionalStringOptions): ResourcePromise { const value = options?.value; const enabled = options?.enabled; - return new ResourcePromiseImpl(this._withOptionalStringInternal(value, enabled)); + return new ResourcePromiseImpl(this._withOptionalStringInternal(value, enabled), this._client); } /** @internal */ @@ -29763,7 +30051,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Configures the resource with a DTO */ withConfig(config: TestConfigDto): ResourcePromise { - return new ResourcePromiseImpl(this._withConfigInternal(config)); + return new ResourcePromiseImpl(this._withConfigInternal(config), this._client); } /** @internal */ @@ -29778,7 +30066,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Sets the created timestamp */ withCreatedAt(createdAt: string): ResourcePromise { - return new ResourcePromiseImpl(this._withCreatedAtInternal(createdAt)); + return new ResourcePromiseImpl(this._withCreatedAtInternal(createdAt), this._client); } /** @internal */ @@ -29793,7 +30081,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Sets the modified timestamp */ withModifiedAt(modifiedAt: string): ResourcePromise { - return new ResourcePromiseImpl(this._withModifiedAtInternal(modifiedAt)); + return new ResourcePromiseImpl(this._withModifiedAtInternal(modifiedAt), this._client); } /** @internal */ @@ -29808,7 +30096,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Sets the correlation ID */ withCorrelationId(correlationId: string): ResourcePromise { - return new ResourcePromiseImpl(this._withCorrelationIdInternal(correlationId)); + return new ResourcePromiseImpl(this._withCorrelationIdInternal(correlationId), this._client); } /** @internal */ @@ -29830,7 +30118,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Configures with optional callback */ withOptionalCallback(options?: WithOptionalCallbackOptions): ResourcePromise { const callback = options?.callback; - return new ResourcePromiseImpl(this._withOptionalCallbackInternal(callback)); + return new ResourcePromiseImpl(this._withOptionalCallbackInternal(callback), this._client); } /** @internal */ @@ -29845,7 +30133,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Sets the resource status */ withStatus(status: TestResourceStatus): ResourcePromise { - return new ResourcePromiseImpl(this._withStatusInternal(status)); + return new ResourcePromiseImpl(this._withStatusInternal(status), this._client); } /** @internal */ @@ -29860,7 +30148,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Configures with nested DTO */ withNestedConfig(config: TestNestedDto): ResourcePromise { - return new ResourcePromiseImpl(this._withNestedConfigInternal(config)); + return new ResourcePromiseImpl(this._withNestedConfigInternal(config), this._client); } /** @internal */ @@ -29880,11 +30168,12 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Adds validation callback */ withValidator(validator: (arg: TestResourceContext) => Promise): ResourcePromise { - return new ResourcePromiseImpl(this._withValidatorInternal(validator)); + return new ResourcePromiseImpl(this._withValidatorInternal(validator), this._client); } /** @internal */ - private async _testWaitForInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _testWaitForInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/testWaitFor', @@ -29894,12 +30183,13 @@ class ResourceImpl extends ResourceBuilderBase implements Resou } /** Waits for another resource (test version) */ - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ResourcePromise { - return new ResourcePromiseImpl(this._testWaitForInternal(dependency)); + testWaitFor(dependency: Awaitable): ResourcePromise { + return new ResourcePromiseImpl(this._testWaitForInternal(dependency), this._client); } /** @internal */ - private async _withDependencyInternal(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withDependencyInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/withDependency', @@ -29909,12 +30199,13 @@ class ResourceImpl extends ResourceBuilderBase implements Resou } /** Adds a dependency on another resource */ - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ResourcePromise { - return new ResourcePromiseImpl(this._withDependencyInternal(dependency)); + withDependency(dependency: Awaitable): ResourcePromise { + return new ResourcePromiseImpl(this._withDependencyInternal(dependency), this._client); } /** @internal */ - private async _withUnionDependencyInternal(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withUnionDependencyInternal(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting.CodeGeneration.TypeScript.Tests/withUnionDependency', @@ -29924,8 +30215,8 @@ class ResourceImpl extends ResourceBuilderBase implements Resou } /** Adds a dependency from a string or another resource */ - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ResourcePromise { - return new ResourcePromiseImpl(this._withUnionDependencyInternal(dependency)); + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): ResourcePromise { + return new ResourcePromiseImpl(this._withUnionDependencyInternal(dependency), this._client); } /** @internal */ @@ -29940,7 +30231,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Sets the endpoints */ withEndpoints(endpoints: string[]): ResourcePromise { - return new ResourcePromiseImpl(this._withEndpointsInternal(endpoints)); + return new ResourcePromiseImpl(this._withEndpointsInternal(endpoints), this._client); } /** @internal */ @@ -29959,7 +30250,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Performs a cancellable operation */ withCancellableOperation(operation: (arg: CancellationToken) => Promise): ResourcePromise { - return new ResourcePromiseImpl(this._withCancellableOperationInternal(operation)); + return new ResourcePromiseImpl(this._withCancellableOperationInternal(operation), this._client); } /** @internal */ @@ -29974,7 +30265,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Adds a label to the resource */ withMergeLabel(label: string): ResourcePromise { - return new ResourcePromiseImpl(this._withMergeLabelInternal(label)); + return new ResourcePromiseImpl(this._withMergeLabelInternal(label), this._client); } /** @internal */ @@ -29989,7 +30280,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Adds a categorized label to the resource */ withMergeLabelCategorized(label: string, category: string): ResourcePromise { - return new ResourcePromiseImpl(this._withMergeLabelCategorizedInternal(label, category)); + return new ResourcePromiseImpl(this._withMergeLabelCategorizedInternal(label, category), this._client); } /** @internal */ @@ -30004,7 +30295,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Configures a named endpoint */ withMergeEndpoint(endpointName: string, port: number): ResourcePromise { - return new ResourcePromiseImpl(this._withMergeEndpointInternal(endpointName, port)); + return new ResourcePromiseImpl(this._withMergeEndpointInternal(endpointName, port), this._client); } /** @internal */ @@ -30019,7 +30310,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Configures a named endpoint with scheme */ withMergeEndpointScheme(endpointName: string, port: number, scheme: string): ResourcePromise { - return new ResourcePromiseImpl(this._withMergeEndpointSchemeInternal(endpointName, port, scheme)); + return new ResourcePromiseImpl(this._withMergeEndpointSchemeInternal(endpointName, port, scheme), this._client); } /** @internal */ @@ -30038,7 +30329,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou withMergeLogging(logLevel: string, options?: WithMergeLoggingOptions): ResourcePromise { const enableConsole = options?.enableConsole; const maxFiles = options?.maxFiles; - return new ResourcePromiseImpl(this._withMergeLoggingInternal(logLevel, enableConsole, maxFiles)); + return new ResourcePromiseImpl(this._withMergeLoggingInternal(logLevel, enableConsole, maxFiles), this._client); } /** @internal */ @@ -30057,7 +30348,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou withMergeLoggingPath(logLevel: string, logPath: string, options?: WithMergeLoggingPathOptions): ResourcePromise { const enableConsole = options?.enableConsole; const maxFiles = options?.maxFiles; - return new ResourcePromiseImpl(this._withMergeLoggingPathInternal(logLevel, logPath, enableConsole, maxFiles)); + return new ResourcePromiseImpl(this._withMergeLoggingPathInternal(logLevel, logPath, enableConsole, maxFiles), this._client); } /** @internal */ @@ -30072,7 +30363,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Configures a route */ withMergeRoute(path: string, method: string, handler: string, priority: number): ResourcePromise { - return new ResourcePromiseImpl(this._withMergeRouteInternal(path, method, handler, priority)); + return new ResourcePromiseImpl(this._withMergeRouteInternal(path, method, handler, priority), this._client); } /** @internal */ @@ -30087,7 +30378,7 @@ class ResourceImpl extends ResourceBuilderBase implements Resou /** Configures a route with middleware */ withMergeRouteMiddleware(path: string, method: string, handler: string, priority: number, middleware: string): ResourcePromise { - return new ResourcePromiseImpl(this._withMergeRouteMiddlewareInternal(path, method, handler, priority, middleware)); + return new ResourcePromiseImpl(this._withMergeRouteMiddlewareInternal(path, method, handler, priority, middleware), this._client); } } @@ -30098,7 +30389,9 @@ class ResourceImpl extends ResourceBuilderBase implements Resou * await builder.addSomething().withX().withY(); */ class ResourcePromiseImpl implements ResourcePromise { - constructor(private _promise: Promise) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: Resource) => TResult1 | PromiseLike) | null, @@ -30108,88 +30401,88 @@ class ResourcePromiseImpl implements ResourcePromise { } /** Configures a resource to use a container registry */ - withContainerRegistry(registry: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withContainerRegistry(registry))); + withContainerRegistry(registry: Awaitable): ResourcePromise { + return new ResourcePromiseImpl(this._promise.then(obj => obj.withContainerRegistry(registry)), this._client); } /** Sets the base image for a Dockerfile build */ withDockerfileBaseImage(options?: WithDockerfileBaseImageOptions): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withDockerfileBaseImage(options))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withDockerfileBaseImage(options)), this._client); } /** Adds a required command dependency */ withRequiredCommand(command: string, options?: WithRequiredCommandOptions): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withRequiredCommand(command, options))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withRequiredCommand(command, options)), this._client); } /** Customizes displayed URLs via callback */ withUrlsCallback(callback: (obj: ResourceUrlsCallbackContext) => Promise): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withUrlsCallback(callback))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withUrlsCallback(callback)), this._client); } /** Adds or modifies displayed URLs */ withUrl(url: string, options?: WithUrlOptions): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withUrl(url, options))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withUrl(url, options)), this._client); } /** Adds a URL using a reference expression */ withUrlExpression(url: ReferenceExpression, options?: WithUrlExpressionOptions): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withUrlExpression(url, options))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withUrlExpression(url, options)), this._client); } /** Customizes the URL for a specific endpoint via callback */ withUrlForEndpoint(endpointName: string, callback: (obj: ResourceUrlAnnotation) => Promise): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpoint(endpointName, callback))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withUrlForEndpoint(endpointName, callback)), this._client); } /** Excludes the resource from the deployment manifest */ excludeFromManifest(): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.excludeFromManifest())); + return new ResourcePromiseImpl(this._promise.then(obj => obj.excludeFromManifest()), this._client); } /** Prevents resource from starting automatically */ withExplicitStart(): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withExplicitStart())); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withExplicitStart()), this._client); } /** Adds a health check by key */ withHealthCheck(key: string): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withHealthCheck(key))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withHealthCheck(key)), this._client); } /** Adds a resource command */ withCommand(name: string, displayName: string, executeCommand: (arg: ExecuteCommandContext) => Promise, options?: WithCommandOptions): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withCommand(name, displayName, executeCommand, options))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withCommand(name, displayName, executeCommand, options)), this._client); } /** Sets the parent relationship */ - withParentRelationship(parent: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withParentRelationship(parent))); + withParentRelationship(parent: Awaitable): ResourcePromise { + return new ResourcePromiseImpl(this._promise.then(obj => obj.withParentRelationship(parent)), this._client); } /** Sets a child relationship */ - withChildRelationship(child: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withChildRelationship(child))); + withChildRelationship(child: Awaitable): ResourcePromise { + return new ResourcePromiseImpl(this._promise.then(obj => obj.withChildRelationship(child)), this._client); } /** Sets the icon for the resource */ withIconName(iconName: string, options?: WithIconNameOptions): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withIconName(iconName, options))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withIconName(iconName, options)), this._client); } /** Excludes the resource from MCP server exposure */ excludeFromMcp(): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.excludeFromMcp())); + return new ResourcePromiseImpl(this._promise.then(obj => obj.excludeFromMcp()), this._client); } /** Adds a pipeline step to the resource */ withPipelineStepFactory(stepName: string, callback: (arg: PipelineStepContext) => Promise, options?: WithPipelineStepFactoryOptions): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withPipelineStepFactory(stepName, callback, options))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withPipelineStepFactory(stepName, callback, options)), this._client); } /** Configures pipeline step dependencies via a callback */ withPipelineConfiguration(callback: (obj: PipelineConfigurationContext) => Promise): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withPipelineConfiguration(callback))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withPipelineConfiguration(callback)), this._client); } /** Gets the resource name */ @@ -30199,132 +30492,132 @@ class ResourcePromiseImpl implements ResourcePromise { /** Subscribes to the BeforeResourceStarted event */ onBeforeResourceStarted(callback: (arg: BeforeResourceStartedEvent) => Promise): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.onBeforeResourceStarted(callback))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.onBeforeResourceStarted(callback)), this._client); } /** Subscribes to the ResourceStopped event */ onResourceStopped(callback: (arg: ResourceStoppedEvent) => Promise): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.onResourceStopped(callback))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.onResourceStopped(callback)), this._client); } /** Subscribes to the InitializeResource event */ onInitializeResource(callback: (arg: InitializeResourceEvent) => Promise): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.onInitializeResource(callback))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.onInitializeResource(callback)), this._client); } /** Subscribes to the ResourceReady event */ onResourceReady(callback: (arg: ResourceReadyEvent) => Promise): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.onResourceReady(callback))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.onResourceReady(callback)), this._client); } /** Adds an optional string parameter */ withOptionalString(options?: WithOptionalStringOptions): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withOptionalString(options))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withOptionalString(options)), this._client); } /** Configures the resource with a DTO */ withConfig(config: TestConfigDto): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withConfig(config))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withConfig(config)), this._client); } /** Sets the created timestamp */ withCreatedAt(createdAt: string): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withCreatedAt(createdAt))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withCreatedAt(createdAt)), this._client); } /** Sets the modified timestamp */ withModifiedAt(modifiedAt: string): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withModifiedAt(modifiedAt))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withModifiedAt(modifiedAt)), this._client); } /** Sets the correlation ID */ withCorrelationId(correlationId: string): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withCorrelationId(correlationId))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withCorrelationId(correlationId)), this._client); } /** Configures with optional callback */ withOptionalCallback(options?: WithOptionalCallbackOptions): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withOptionalCallback(options))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withOptionalCallback(options)), this._client); } /** Sets the resource status */ withStatus(status: TestResourceStatus): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withStatus(status))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withStatus(status)), this._client); } /** Configures with nested DTO */ withNestedConfig(config: TestNestedDto): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withNestedConfig(config))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withNestedConfig(config)), this._client); } /** Adds validation callback */ withValidator(validator: (arg: TestResourceContext) => Promise): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withValidator(validator))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withValidator(validator)), this._client); } /** Waits for another resource (test version) */ - testWaitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.testWaitFor(dependency))); + testWaitFor(dependency: Awaitable): ResourcePromise { + return new ResourcePromiseImpl(this._promise.then(obj => obj.testWaitFor(dependency)), this._client); } /** Adds a dependency on another resource */ - withDependency(dependency: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withDependency(dependency))); + withDependency(dependency: Awaitable): ResourcePromise { + return new ResourcePromiseImpl(this._promise.then(obj => obj.withDependency(dependency)), this._client); } /** Adds a dependency from a string or another resource */ - withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withUnionDependency(dependency))); + withUnionDependency(dependency: string | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | Awaitable): ResourcePromise { + return new ResourcePromiseImpl(this._promise.then(obj => obj.withUnionDependency(dependency)), this._client); } /** Sets the endpoints */ withEndpoints(endpoints: string[]): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withEndpoints(endpoints))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withEndpoints(endpoints)), this._client); } /** Performs a cancellable operation */ withCancellableOperation(operation: (arg: CancellationToken) => Promise): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withCancellableOperation(operation))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withCancellableOperation(operation)), this._client); } /** Adds a label to the resource */ withMergeLabel(label: string): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabel(label))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabel(label)), this._client); } /** Adds a categorized label to the resource */ withMergeLabelCategorized(label: string, category: string): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabelCategorized(label, category))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withMergeLabelCategorized(label, category)), this._client); } /** Configures a named endpoint */ withMergeEndpoint(endpointName: string, port: number): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpoint(endpointName, port))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpoint(endpointName, port)), this._client); } /** Configures a named endpoint with scheme */ withMergeEndpointScheme(endpointName: string, port: number, scheme: string): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpointScheme(endpointName, port, scheme))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withMergeEndpointScheme(endpointName, port, scheme)), this._client); } /** Configures resource logging */ withMergeLogging(logLevel: string, options?: WithMergeLoggingOptions): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withMergeLogging(logLevel, options))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withMergeLogging(logLevel, options)), this._client); } /** Configures resource logging with file path */ withMergeLoggingPath(logLevel: string, logPath: string, options?: WithMergeLoggingPathOptions): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withMergeLoggingPath(logLevel, logPath, options))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withMergeLoggingPath(logLevel, logPath, options)), this._client); } /** Configures a route */ withMergeRoute(path: string, method: string, handler: string, priority: number): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withMergeRoute(path, method, handler, priority))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withMergeRoute(path, method, handler, priority)), this._client); } /** Configures a route with middleware */ withMergeRouteMiddleware(path: string, method: string, handler: string, priority: number, middleware: string): ResourcePromise { - return new ResourcePromiseImpl(this._promise.then(obj => obj.withMergeRouteMiddleware(path, method, handler, priority, middleware))); + return new ResourcePromiseImpl(this._promise.then(obj => obj.withMergeRouteMiddleware(path, method, handler, priority, middleware)), this._client); } } @@ -30365,7 +30658,7 @@ class ResourceWithArgsImpl extends ResourceBuilderBase /** Adds arguments */ withArgs(args: string[]): ResourceWithArgsPromise { - return new ResourceWithArgsPromiseImpl(this._withArgsInternal(args)); + return new ResourceWithArgsPromiseImpl(this._withArgsInternal(args), this._client); } /** @internal */ @@ -30385,7 +30678,7 @@ class ResourceWithArgsImpl extends ResourceBuilderBase /** Sets command-line arguments via callback */ withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) => Promise): ResourceWithArgsPromise { - return new ResourceWithArgsPromiseImpl(this._withArgsCallbackInternal(callback)); + return new ResourceWithArgsPromiseImpl(this._withArgsCallbackInternal(callback), this._client); } } @@ -30396,7 +30689,9 @@ class ResourceWithArgsImpl extends ResourceBuilderBase * await builder.addSomething().withX().withY(); */ class ResourceWithArgsPromiseImpl implements ResourceWithArgsPromise { - constructor(private _promise: Promise) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: ResourceWithArgs) => TResult1 | PromiseLike) | null, @@ -30407,12 +30702,12 @@ class ResourceWithArgsPromiseImpl implements ResourceWithArgsPromise { /** Adds arguments */ withArgs(args: string[]): ResourceWithArgsPromise { - return new ResourceWithArgsPromiseImpl(this._promise.then(obj => obj.withArgs(args))); + return new ResourceWithArgsPromiseImpl(this._promise.then(obj => obj.withArgs(args)), this._client); } /** Sets command-line arguments via callback */ withArgsCallback(callback: (obj: CommandLineArgsCallbackContext) => Promise): ResourceWithArgsPromise { - return new ResourceWithArgsPromiseImpl(this._promise.then(obj => obj.withArgsCallback(callback))); + return new ResourceWithArgsPromiseImpl(this._promise.then(obj => obj.withArgsCallback(callback)), this._client); } } @@ -30461,7 +30756,7 @@ class ResourceWithConnectionStringImpl extends ResourceBuilderBase Promise): ResourceWithConnectionStringPromise { - return new ResourceWithConnectionStringPromiseImpl(this._onConnectionStringAvailableInternal(callback)); + return new ResourceWithConnectionStringPromiseImpl(this._onConnectionStringAvailableInternal(callback), this._client); } /** @internal */ @@ -30520,7 +30815,7 @@ class ResourceWithConnectionStringImpl extends ResourceBuilderBase) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: ResourceWithConnectionString) => TResult1 | PromiseLike) | null, @@ -30557,12 +30854,12 @@ class ResourceWithConnectionStringPromiseImpl implements ResourceWithConnectionS /** Adds a connection property with a reference expression */ withConnectionProperty(name: string, value: ReferenceExpression): ResourceWithConnectionStringPromise { - return new ResourceWithConnectionStringPromiseImpl(this._promise.then(obj => obj.withConnectionProperty(name, value))); + return new ResourceWithConnectionStringPromiseImpl(this._promise.then(obj => obj.withConnectionProperty(name, value)), this._client); } /** Adds a connection property with a string value */ withConnectionPropertyValue(name: string, value: string): ResourceWithConnectionStringPromise { - return new ResourceWithConnectionStringPromiseImpl(this._promise.then(obj => obj.withConnectionPropertyValue(name, value))); + return new ResourceWithConnectionStringPromiseImpl(this._promise.then(obj => obj.withConnectionPropertyValue(name, value)), this._client); } /** Gets a connection property by key */ @@ -30572,17 +30869,17 @@ class ResourceWithConnectionStringPromiseImpl implements ResourceWithConnectionS /** Subscribes to the ConnectionStringAvailable event */ onConnectionStringAvailable(callback: (arg: ConnectionStringAvailableEvent) => Promise): ResourceWithConnectionStringPromise { - return new ResourceWithConnectionStringPromiseImpl(this._promise.then(obj => obj.onConnectionStringAvailable(callback))); + return new ResourceWithConnectionStringPromiseImpl(this._promise.then(obj => obj.onConnectionStringAvailable(callback)), this._client); } /** Sets the connection string using a reference expression */ withConnectionString(connectionString: ReferenceExpression): ResourceWithConnectionStringPromise { - return new ResourceWithConnectionStringPromiseImpl(this._promise.then(obj => obj.withConnectionString(connectionString))); + return new ResourceWithConnectionStringPromiseImpl(this._promise.then(obj => obj.withConnectionString(connectionString)), this._client); } /** Sets connection string using direct interface target */ withConnectionStringDirect(connectionString: string): ResourceWithConnectionStringPromise { - return new ResourceWithConnectionStringPromiseImpl(this._promise.then(obj => obj.withConnectionStringDirect(connectionString))); + return new ResourceWithConnectionStringPromiseImpl(this._promise.then(obj => obj.withConnectionStringDirect(connectionString)), this._client); } } @@ -30623,7 +30920,7 @@ class ResourceWithContainerFilesImpl extends ResourceBuilderBase) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: ResourceWithContainerFiles) => TResult1 | PromiseLike) | null, @@ -30660,12 +30959,12 @@ class ResourceWithContainerFilesPromiseImpl implements ResourceWithContainerFile /** Sets the source directory for container files */ withContainerFilesSource(sourcePath: string): ResourceWithContainerFilesPromise { - return new ResourceWithContainerFilesPromiseImpl(this._promise.then(obj => obj.withContainerFilesSource(sourcePath))); + return new ResourceWithContainerFilesPromiseImpl(this._promise.then(obj => obj.withContainerFilesSource(sourcePath)), this._client); } /** Clears all container file sources */ clearContainerFilesSources(): ResourceWithContainerFilesPromise { - return new ResourceWithContainerFilesPromiseImpl(this._promise.then(obj => obj.clearContainerFilesSources())); + return new ResourceWithContainerFilesPromiseImpl(this._promise.then(obj => obj.clearContainerFilesSources()), this._client); } } @@ -30728,7 +31027,7 @@ class ResourceWithEndpointsImpl extends ResourceBuilderBase Promise): ResourceWithEndpointsPromise { - return new ResourceWithEndpointsPromiseImpl(this._withUrlForEndpointFactoryInternal(endpointName, callback)); + return new ResourceWithEndpointsPromiseImpl(this._withUrlForEndpointFactoryInternal(endpointName, callback), this._client); } /** @internal */ @@ -30889,7 +31188,7 @@ class ResourceWithEndpointsImpl extends ResourceBuilderBase Promise): ResourceWithEndpointsPromise { - return new ResourceWithEndpointsPromiseImpl(this._onResourceEndpointsAllocatedInternal(callback)); + return new ResourceWithEndpointsPromiseImpl(this._onResourceEndpointsAllocatedInternal(callback), this._client); } } @@ -30949,7 +31248,9 @@ class ResourceWithEndpointsImpl extends ResourceBuilderBase) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: ResourceWithEndpoints) => TResult1 | PromiseLike) | null, @@ -30960,27 +31261,27 @@ class ResourceWithEndpointsPromiseImpl implements ResourceWithEndpointsPromise { /** Configures an MCP server endpoint on the resource */ withMcpServer(options?: WithMcpServerOptions): ResourceWithEndpointsPromise { - return new ResourceWithEndpointsPromiseImpl(this._promise.then(obj => obj.withMcpServer(options))); + return new ResourceWithEndpointsPromiseImpl(this._promise.then(obj => obj.withMcpServer(options)), this._client); } /** Adds a network endpoint */ withEndpoint(options?: WithEndpointOptions): ResourceWithEndpointsPromise { - return new ResourceWithEndpointsPromiseImpl(this._promise.then(obj => obj.withEndpoint(options))); + return new ResourceWithEndpointsPromiseImpl(this._promise.then(obj => obj.withEndpoint(options)), this._client); } /** Adds an HTTP endpoint */ withHttpEndpoint(options?: WithHttpEndpointOptions): ResourceWithEndpointsPromise { - return new ResourceWithEndpointsPromiseImpl(this._promise.then(obj => obj.withHttpEndpoint(options))); + return new ResourceWithEndpointsPromiseImpl(this._promise.then(obj => obj.withHttpEndpoint(options)), this._client); } /** Adds an HTTPS endpoint */ withHttpsEndpoint(options?: WithHttpsEndpointOptions): ResourceWithEndpointsPromise { - return new ResourceWithEndpointsPromiseImpl(this._promise.then(obj => obj.withHttpsEndpoint(options))); + return new ResourceWithEndpointsPromiseImpl(this._promise.then(obj => obj.withHttpsEndpoint(options)), this._client); } /** Makes HTTP endpoints externally accessible */ withExternalHttpEndpoints(): ResourceWithEndpointsPromise { - return new ResourceWithEndpointsPromiseImpl(this._promise.then(obj => obj.withExternalHttpEndpoints())); + return new ResourceWithEndpointsPromiseImpl(this._promise.then(obj => obj.withExternalHttpEndpoints()), this._client); } /** Gets an endpoint reference */ @@ -30990,27 +31291,27 @@ class ResourceWithEndpointsPromiseImpl implements ResourceWithEndpointsPromise { /** Configures resource for HTTP/2 */ asHttp2Service(): ResourceWithEndpointsPromise { - return new ResourceWithEndpointsPromiseImpl(this._promise.then(obj => obj.asHttp2Service())); + return new ResourceWithEndpointsPromiseImpl(this._promise.then(obj => obj.asHttp2Service()), this._client); } /** Adds a URL for a specific endpoint via factory callback */ withUrlForEndpointFactory(endpointName: string, callback: (arg: EndpointReference) => Promise): ResourceWithEndpointsPromise { - return new ResourceWithEndpointsPromiseImpl(this._promise.then(obj => obj.withUrlForEndpointFactory(endpointName, callback))); + return new ResourceWithEndpointsPromiseImpl(this._promise.then(obj => obj.withUrlForEndpointFactory(endpointName, callback)), this._client); } /** Adds an HTTP health check */ withHttpHealthCheck(options?: WithHttpHealthCheckOptions): ResourceWithEndpointsPromise { - return new ResourceWithEndpointsPromiseImpl(this._promise.then(obj => obj.withHttpHealthCheck(options))); + return new ResourceWithEndpointsPromiseImpl(this._promise.then(obj => obj.withHttpHealthCheck(options)), this._client); } /** Adds an HTTP health probe to the resource */ withHttpProbe(probeType: ProbeType, options?: WithHttpProbeOptions): ResourceWithEndpointsPromise { - return new ResourceWithEndpointsPromiseImpl(this._promise.then(obj => obj.withHttpProbe(probeType, options))); + return new ResourceWithEndpointsPromiseImpl(this._promise.then(obj => obj.withHttpProbe(probeType, options)), this._client); } /** Subscribes to the ResourceEndpointsAllocated event */ onResourceEndpointsAllocated(callback: (arg: ResourceEndpointsAllocatedEvent) => Promise): ResourceWithEndpointsPromise { - return new ResourceWithEndpointsPromiseImpl(this._promise.then(obj => obj.onResourceEndpointsAllocated(callback))); + return new ResourceWithEndpointsPromiseImpl(this._promise.then(obj => obj.onResourceEndpointsAllocated(callback)), this._client); } } @@ -31023,16 +31324,16 @@ export interface ResourceWithEnvironment { toJSON(): MarshalledHandle; withOtlpExporter(): ResourceWithEnvironmentPromise; withOtlpExporterProtocol(protocol: OtlpProtocol): ResourceWithEnvironmentPromise; - withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression): ResourceWithEnvironmentPromise; + withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): ResourceWithEnvironmentPromise; withEnvironmentExpression(name: string, value: ReferenceExpression): ResourceWithEnvironmentPromise; withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): ResourceWithEnvironmentPromise; - withEnvironmentEndpoint(name: string, endpointReference: EndpointReference): ResourceWithEnvironmentPromise; - withEnvironmentParameter(name: string, parameter: ParameterResource): ResourceWithEnvironmentPromise; - withEnvironmentConnectionString(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ResourceWithEnvironmentPromise; - withReference(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WithReferenceOptions): ResourceWithEnvironmentPromise; + withEnvironmentEndpoint(name: string, endpointReference: Awaitable): ResourceWithEnvironmentPromise; + withEnvironmentParameter(name: string, parameter: Awaitable): ResourceWithEnvironmentPromise; + withEnvironmentConnectionString(envVarName: string, resource: Awaitable): ResourceWithEnvironmentPromise; + withReference(source: Awaitable, options?: WithReferenceOptions): ResourceWithEnvironmentPromise; withReferenceUri(name: string, uri: string): ResourceWithEnvironmentPromise; - withReferenceExternalService(externalService: ExternalServiceResource): ResourceWithEnvironmentPromise; - withReferenceEndpoint(endpointReference: EndpointReference): ResourceWithEnvironmentPromise; + withReferenceExternalService(externalService: Awaitable): ResourceWithEnvironmentPromise; + withReferenceEndpoint(endpointReference: Awaitable): ResourceWithEnvironmentPromise; withDeveloperCertificateTrust(trust: boolean): ResourceWithEnvironmentPromise; withCertificateTrustScope(scope: CertificateTrustScope): ResourceWithEnvironmentPromise; withHttpsDeveloperCertificate(options?: WithHttpsDeveloperCertificateOptions): ResourceWithEnvironmentPromise; @@ -31044,16 +31345,16 @@ export interface ResourceWithEnvironment { export interface ResourceWithEnvironmentPromise extends PromiseLike { withOtlpExporter(): ResourceWithEnvironmentPromise; withOtlpExporterProtocol(protocol: OtlpProtocol): ResourceWithEnvironmentPromise; - withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression): ResourceWithEnvironmentPromise; + withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): ResourceWithEnvironmentPromise; withEnvironmentExpression(name: string, value: ReferenceExpression): ResourceWithEnvironmentPromise; withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): ResourceWithEnvironmentPromise; - withEnvironmentEndpoint(name: string, endpointReference: EndpointReference): ResourceWithEnvironmentPromise; - withEnvironmentParameter(name: string, parameter: ParameterResource): ResourceWithEnvironmentPromise; - withEnvironmentConnectionString(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ResourceWithEnvironmentPromise; - withReference(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WithReferenceOptions): ResourceWithEnvironmentPromise; + withEnvironmentEndpoint(name: string, endpointReference: Awaitable): ResourceWithEnvironmentPromise; + withEnvironmentParameter(name: string, parameter: Awaitable): ResourceWithEnvironmentPromise; + withEnvironmentConnectionString(envVarName: string, resource: Awaitable): ResourceWithEnvironmentPromise; + withReference(source: Awaitable, options?: WithReferenceOptions): ResourceWithEnvironmentPromise; withReferenceUri(name: string, uri: string): ResourceWithEnvironmentPromise; - withReferenceExternalService(externalService: ExternalServiceResource): ResourceWithEnvironmentPromise; - withReferenceEndpoint(endpointReference: EndpointReference): ResourceWithEnvironmentPromise; + withReferenceExternalService(externalService: Awaitable): ResourceWithEnvironmentPromise; + withReferenceEndpoint(endpointReference: Awaitable): ResourceWithEnvironmentPromise; withDeveloperCertificateTrust(trust: boolean): ResourceWithEnvironmentPromise; withCertificateTrustScope(scope: CertificateTrustScope): ResourceWithEnvironmentPromise; withHttpsDeveloperCertificate(options?: WithHttpsDeveloperCertificateOptions): ResourceWithEnvironmentPromise; @@ -31083,7 +31384,7 @@ class ResourceWithEnvironmentImpl extends ResourceBuilderBase { + private async _withEnvironmentInternal(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): Promise { + value = isPromiseLike(value) ? await value : value; const rpcArgs: Record = { builder: this._handle, name, value }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironment', @@ -31112,8 +31414,8 @@ class ResourceWithEnvironmentImpl extends ResourceBuilderBase): ResourceWithEnvironmentPromise { + return new ResourceWithEnvironmentPromiseImpl(this._withEnvironmentInternal(name, value), this._client); } /** @internal */ @@ -31131,7 +31433,7 @@ class ResourceWithEnvironmentImpl extends ResourceBuilderBase Promise): ResourceWithEnvironmentPromise { - return new ResourceWithEnvironmentPromiseImpl(this._withEnvironmentCallbackInternal(callback)); + return new ResourceWithEnvironmentPromiseImpl(this._withEnvironmentCallbackInternal(callback), this._client); } /** @internal */ - private async _withEnvironmentEndpointInternal(name: string, endpointReference: EndpointReference): Promise { + private async _withEnvironmentEndpointInternal(name: string, endpointReference: Awaitable): Promise { + endpointReference = isPromiseLike(endpointReference) ? await endpointReference : endpointReference; const rpcArgs: Record = { builder: this._handle, name, endpointReference }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironmentEndpoint', @@ -31168,12 +31471,13 @@ class ResourceWithEnvironmentImpl extends ResourceBuilderBase): ResourceWithEnvironmentPromise { + return new ResourceWithEnvironmentPromiseImpl(this._withEnvironmentEndpointInternal(name, endpointReference), this._client); } /** @internal */ - private async _withEnvironmentParameterInternal(name: string, parameter: ParameterResource): Promise { + private async _withEnvironmentParameterInternal(name: string, parameter: Awaitable): Promise { + parameter = isPromiseLike(parameter) ? await parameter : parameter; const rpcArgs: Record = { builder: this._handle, name, parameter }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironmentParameter', @@ -31186,12 +31490,13 @@ class ResourceWithEnvironmentImpl extends ResourceBuilderBase): ResourceWithEnvironmentPromise { + return new ResourceWithEnvironmentPromiseImpl(this._withEnvironmentParameterInternal(name, parameter), this._client); } /** @internal */ - private async _withEnvironmentConnectionStringInternal(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): Promise { + private async _withEnvironmentConnectionStringInternal(envVarName: string, resource: Awaitable): Promise { + resource = isPromiseLike(resource) ? await resource : resource; const rpcArgs: Record = { builder: this._handle, envVarName, resource }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withEnvironmentConnectionString', @@ -31204,12 +31509,13 @@ class ResourceWithEnvironmentImpl extends ResourceBuilderBase): ResourceWithEnvironmentPromise { + return new ResourceWithEnvironmentPromiseImpl(this._withEnvironmentConnectionStringInternal(envVarName, resource), this._client); } /** @internal */ - private async _withReferenceInternal(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, connectionName?: string, optional?: boolean, name?: string): Promise { + private async _withReferenceInternal(source: Awaitable, connectionName?: string, optional?: boolean, name?: string): Promise { + source = isPromiseLike(source) ? await source : source; const rpcArgs: Record = { builder: this._handle, source }; if (connectionName !== undefined) rpcArgs.connectionName = connectionName; if (optional !== undefined) rpcArgs.optional = optional; @@ -31222,11 +31528,11 @@ class ResourceWithEnvironmentImpl extends ResourceBuilderBase, options?: WithReferenceOptions): ResourceWithEnvironmentPromise { const connectionName = options?.connectionName; const optional = options?.optional; const name = options?.name; - return new ResourceWithEnvironmentPromiseImpl(this._withReferenceInternal(source, connectionName, optional, name)); + return new ResourceWithEnvironmentPromiseImpl(this._withReferenceInternal(source, connectionName, optional, name), this._client); } /** @internal */ @@ -31241,11 +31547,12 @@ class ResourceWithEnvironmentImpl extends ResourceBuilderBase { + private async _withReferenceExternalServiceInternal(externalService: Awaitable): Promise { + externalService = isPromiseLike(externalService) ? await externalService : externalService; const rpcArgs: Record = { builder: this._handle, externalService }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withReferenceExternalService', @@ -31255,12 +31562,13 @@ class ResourceWithEnvironmentImpl extends ResourceBuilderBase): ResourceWithEnvironmentPromise { + return new ResourceWithEnvironmentPromiseImpl(this._withReferenceExternalServiceInternal(externalService), this._client); } /** @internal */ - private async _withReferenceEndpointInternal(endpointReference: EndpointReference): Promise { + private async _withReferenceEndpointInternal(endpointReference: Awaitable): Promise { + endpointReference = isPromiseLike(endpointReference) ? await endpointReference : endpointReference; const rpcArgs: Record = { builder: this._handle, endpointReference }; const result = await this._client.invokeCapability( 'Aspire.Hosting/withReferenceEndpoint', @@ -31270,8 +31578,8 @@ class ResourceWithEnvironmentImpl extends ResourceBuilderBase): ResourceWithEnvironmentPromise { + return new ResourceWithEnvironmentPromiseImpl(this._withReferenceEndpointInternal(endpointReference), this._client); } /** @internal */ @@ -31286,7 +31594,7 @@ class ResourceWithEnvironmentImpl extends ResourceBuilderBase { + private async _withHttpsDeveloperCertificateInternal(password?: Awaitable): Promise { + password = isPromiseLike(password) ? await password : password; const rpcArgs: Record = { builder: this._handle }; if (password !== undefined) rpcArgs.password = password; const result = await this._client.invokeCapability( @@ -31317,8 +31626,8 @@ class ResourceWithEnvironmentImpl extends ResourceBuilderBase Promise): ResourceWithEnvironmentPromise { - return new ResourceWithEnvironmentPromiseImpl(this._testWithEnvironmentCallbackInternal(callback)); + return new ResourceWithEnvironmentPromiseImpl(this._testWithEnvironmentCallbackInternal(callback), this._client); } /** @internal */ @@ -31368,7 +31677,7 @@ class ResourceWithEnvironmentImpl extends ResourceBuilderBase): ResourceWithEnvironmentPromise { - return new ResourceWithEnvironmentPromiseImpl(this._withEnvironmentVariablesInternal(variables)); + return new ResourceWithEnvironmentPromiseImpl(this._withEnvironmentVariablesInternal(variables), this._client); } } @@ -31379,7 +31688,9 @@ class ResourceWithEnvironmentImpl extends ResourceBuilderBase) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: ResourceWithEnvironment) => TResult1 | PromiseLike) | null, @@ -31390,17 +31701,17 @@ class ResourceWithEnvironmentPromiseImpl implements ResourceWithEnvironmentPromi /** Configures OTLP telemetry export */ withOtlpExporter(): ResourceWithEnvironmentPromise { - return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withOtlpExporter())); + return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withOtlpExporter()), this._client); } /** Configures OTLP telemetry export with specific protocol */ withOtlpExporterProtocol(protocol: OtlpProtocol): ResourceWithEnvironmentPromise { - return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withOtlpExporterProtocol(protocol))); + return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withOtlpExporterProtocol(protocol)), this._client); } /** Sets an environment variable */ - withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression): ResourceWithEnvironmentPromise { - return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withEnvironment(name, value))); + withEnvironment(name: string, value: string | ReferenceExpression | EndpointReference | ParameterResource | ConnectionStringResource | ResourceWithConnectionString | TestRedisResource | EndpointReferenceExpression | Awaitable): ResourceWithEnvironmentPromise { + return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withEnvironment(name, value)), this._client); } /** @@ -31408,86 +31719,86 @@ class ResourceWithEnvironmentPromiseImpl implements ResourceWithEnvironmentPromi * @deprecated ATS compatibility shim. Use withEnvironment instead. */ withEnvironmentExpression(name: string, value: ReferenceExpression): ResourceWithEnvironmentPromise { - return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withEnvironmentExpression(name, value))); + return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withEnvironmentExpression(name, value)), this._client); } /** Sets environment variables via callback */ withEnvironmentCallback(callback: (arg: EnvironmentCallbackContext) => Promise): ResourceWithEnvironmentPromise { - return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withEnvironmentCallback(callback))); + return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withEnvironmentCallback(callback)), this._client); } /** * Sets an environment variable from an endpoint reference * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentEndpoint(name: string, endpointReference: EndpointReference): ResourceWithEnvironmentPromise { - return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withEnvironmentEndpoint(name, endpointReference))); + withEnvironmentEndpoint(name: string, endpointReference: Awaitable): ResourceWithEnvironmentPromise { + return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withEnvironmentEndpoint(name, endpointReference)), this._client); } /** * Sets an environment variable from a parameter resource * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentParameter(name: string, parameter: ParameterResource): ResourceWithEnvironmentPromise { - return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withEnvironmentParameter(name, parameter))); + withEnvironmentParameter(name: string, parameter: Awaitable): ResourceWithEnvironmentPromise { + return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withEnvironmentParameter(name, parameter)), this._client); } /** * Sets an environment variable from a connection string resource * @deprecated ATS compatibility shim. Use withEnvironment instead. */ - withEnvironmentConnectionString(envVarName: string, resource: ConnectionStringResource | ResourceWithConnectionString | TestRedisResource): ResourceWithEnvironmentPromise { - return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withEnvironmentConnectionString(envVarName, resource))); + withEnvironmentConnectionString(envVarName: string, resource: Awaitable): ResourceWithEnvironmentPromise { + return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withEnvironmentConnectionString(envVarName, resource)), this._client); } /** Adds a reference to another resource */ - withReference(source: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WithReferenceOptions): ResourceWithEnvironmentPromise { - return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withReference(source, options))); + withReference(source: Awaitable, options?: WithReferenceOptions): ResourceWithEnvironmentPromise { + return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withReference(source, options)), this._client); } /** Adds a reference to a URI */ withReferenceUri(name: string, uri: string): ResourceWithEnvironmentPromise { - return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withReferenceUri(name, uri))); + return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withReferenceUri(name, uri)), this._client); } /** Adds a reference to an external service */ - withReferenceExternalService(externalService: ExternalServiceResource): ResourceWithEnvironmentPromise { - return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withReferenceExternalService(externalService))); + withReferenceExternalService(externalService: Awaitable): ResourceWithEnvironmentPromise { + return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withReferenceExternalService(externalService)), this._client); } /** Adds a reference to an endpoint */ - withReferenceEndpoint(endpointReference: EndpointReference): ResourceWithEnvironmentPromise { - return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withReferenceEndpoint(endpointReference))); + withReferenceEndpoint(endpointReference: Awaitable): ResourceWithEnvironmentPromise { + return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withReferenceEndpoint(endpointReference)), this._client); } /** Configures developer certificate trust */ withDeveloperCertificateTrust(trust: boolean): ResourceWithEnvironmentPromise { - return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withDeveloperCertificateTrust(trust))); + return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withDeveloperCertificateTrust(trust)), this._client); } /** Sets the certificate trust scope */ withCertificateTrustScope(scope: CertificateTrustScope): ResourceWithEnvironmentPromise { - return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withCertificateTrustScope(scope))); + return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withCertificateTrustScope(scope)), this._client); } /** Configures HTTPS with a developer certificate */ withHttpsDeveloperCertificate(options?: WithHttpsDeveloperCertificateOptions): ResourceWithEnvironmentPromise { - return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withHttpsDeveloperCertificate(options))); + return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withHttpsDeveloperCertificate(options)), this._client); } /** Removes HTTPS certificate configuration */ withoutHttpsCertificate(): ResourceWithEnvironmentPromise { - return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withoutHttpsCertificate())); + return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withoutHttpsCertificate()), this._client); } /** Configures environment with callback (test version) */ testWithEnvironmentCallback(callback: (arg: TestEnvironmentContext) => Promise): ResourceWithEnvironmentPromise { - return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.testWithEnvironmentCallback(callback))); + return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.testWithEnvironmentCallback(callback)), this._client); } /** Sets environment variables */ withEnvironmentVariables(variables: Record): ResourceWithEnvironmentPromise { - return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withEnvironmentVariables(variables))); + return new ResourceWithEnvironmentPromiseImpl(this._promise.then(obj => obj.withEnvironmentVariables(variables)), this._client); } } @@ -31498,19 +31809,19 @@ class ResourceWithEnvironmentPromiseImpl implements ResourceWithEnvironmentPromi export interface ResourceWithWaitSupport { toJSON(): MarshalledHandle; - waitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ResourceWithWaitSupportPromise; - waitForWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): ResourceWithWaitSupportPromise; - waitForStart(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ResourceWithWaitSupportPromise; - waitForStartWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): ResourceWithWaitSupportPromise; - waitForCompletion(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WaitForCompletionOptions): ResourceWithWaitSupportPromise; + waitFor(dependency: Awaitable): ResourceWithWaitSupportPromise; + waitForWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): ResourceWithWaitSupportPromise; + waitForStart(dependency: Awaitable): ResourceWithWaitSupportPromise; + waitForStartWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): ResourceWithWaitSupportPromise; + waitForCompletion(dependency: Awaitable, options?: WaitForCompletionOptions): ResourceWithWaitSupportPromise; } export interface ResourceWithWaitSupportPromise extends PromiseLike { - waitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ResourceWithWaitSupportPromise; - waitForWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): ResourceWithWaitSupportPromise; - waitForStart(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ResourceWithWaitSupportPromise; - waitForStartWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): ResourceWithWaitSupportPromise; - waitForCompletion(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WaitForCompletionOptions): ResourceWithWaitSupportPromise; + waitFor(dependency: Awaitable): ResourceWithWaitSupportPromise; + waitForWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): ResourceWithWaitSupportPromise; + waitForStart(dependency: Awaitable): ResourceWithWaitSupportPromise; + waitForStartWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): ResourceWithWaitSupportPromise; + waitForCompletion(dependency: Awaitable, options?: WaitForCompletionOptions): ResourceWithWaitSupportPromise; } // ============================================================================ @@ -31523,7 +31834,8 @@ class ResourceWithWaitSupportImpl extends ResourceBuilderBase { + private async _waitForInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForResource', @@ -31533,12 +31845,13 @@ class ResourceWithWaitSupportImpl extends ResourceBuilderBase): ResourceWithWaitSupportPromise { + return new ResourceWithWaitSupportPromiseImpl(this._waitForInternal(dependency), this._client); } /** @internal */ - private async _waitForWithBehaviorInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): Promise { + private async _waitForWithBehaviorInternal(dependency: Awaitable, waitBehavior: WaitBehavior): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency, waitBehavior }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForWithBehavior', @@ -31548,12 +31861,13 @@ class ResourceWithWaitSupportImpl extends ResourceBuilderBase, waitBehavior: WaitBehavior): ResourceWithWaitSupportPromise { + return new ResourceWithWaitSupportPromiseImpl(this._waitForWithBehaviorInternal(dependency, waitBehavior), this._client); } /** @internal */ - private async _waitForStartInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): Promise { + private async _waitForStartInternal(dependency: Awaitable): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForResourceStart', @@ -31563,12 +31877,13 @@ class ResourceWithWaitSupportImpl extends ResourceBuilderBase): ResourceWithWaitSupportPromise { + return new ResourceWithWaitSupportPromiseImpl(this._waitForStartInternal(dependency), this._client); } /** @internal */ - private async _waitForStartWithBehaviorInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): Promise { + private async _waitForStartWithBehaviorInternal(dependency: Awaitable, waitBehavior: WaitBehavior): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency, waitBehavior }; const result = await this._client.invokeCapability( 'Aspire.Hosting/waitForStartWithBehavior', @@ -31578,12 +31893,13 @@ class ResourceWithWaitSupportImpl extends ResourceBuilderBase, waitBehavior: WaitBehavior): ResourceWithWaitSupportPromise { + return new ResourceWithWaitSupportPromiseImpl(this._waitForStartWithBehaviorInternal(dependency, waitBehavior), this._client); } /** @internal */ - private async _waitForCompletionInternal(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, exitCode?: number): Promise { + private async _waitForCompletionInternal(dependency: Awaitable, exitCode?: number): Promise { + dependency = isPromiseLike(dependency) ? await dependency : dependency; const rpcArgs: Record = { builder: this._handle, dependency }; if (exitCode !== undefined) rpcArgs.exitCode = exitCode; const result = await this._client.invokeCapability( @@ -31594,9 +31910,9 @@ class ResourceWithWaitSupportImpl extends ResourceBuilderBase, options?: WaitForCompletionOptions): ResourceWithWaitSupportPromise { const exitCode = options?.exitCode; - return new ResourceWithWaitSupportPromiseImpl(this._waitForCompletionInternal(dependency, exitCode)); + return new ResourceWithWaitSupportPromiseImpl(this._waitForCompletionInternal(dependency, exitCode), this._client); } } @@ -31607,7 +31923,9 @@ class ResourceWithWaitSupportImpl extends ResourceBuilderBase) {} + constructor(private _promise: Promise, private _client: AspireClientRpc) { + _client.trackPromise(_promise); + } then( onfulfilled?: ((value: ResourceWithWaitSupport) => TResult1 | PromiseLike) | null, @@ -31617,28 +31935,28 @@ class ResourceWithWaitSupportPromiseImpl implements ResourceWithWaitSupportPromi } /** Waits for another resource to be ready */ - waitFor(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ResourceWithWaitSupportPromise { - return new ResourceWithWaitSupportPromiseImpl(this._promise.then(obj => obj.waitFor(dependency))); + waitFor(dependency: Awaitable): ResourceWithWaitSupportPromise { + return new ResourceWithWaitSupportPromiseImpl(this._promise.then(obj => obj.waitFor(dependency)), this._client); } /** Waits for another resource with specific behavior */ - waitForWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): ResourceWithWaitSupportPromise { - return new ResourceWithWaitSupportPromiseImpl(this._promise.then(obj => obj.waitForWithBehavior(dependency, waitBehavior))); + waitForWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): ResourceWithWaitSupportPromise { + return new ResourceWithWaitSupportPromiseImpl(this._promise.then(obj => obj.waitForWithBehavior(dependency, waitBehavior)), this._client); } /** Waits for another resource to start */ - waitForStart(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource): ResourceWithWaitSupportPromise { - return new ResourceWithWaitSupportPromiseImpl(this._promise.then(obj => obj.waitForStart(dependency))); + waitForStart(dependency: Awaitable): ResourceWithWaitSupportPromise { + return new ResourceWithWaitSupportPromiseImpl(this._promise.then(obj => obj.waitForStart(dependency)), this._client); } /** Waits for another resource to start with specific behavior */ - waitForStartWithBehavior(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, waitBehavior: WaitBehavior): ResourceWithWaitSupportPromise { - return new ResourceWithWaitSupportPromiseImpl(this._promise.then(obj => obj.waitForStartWithBehavior(dependency, waitBehavior))); + waitForStartWithBehavior(dependency: Awaitable, waitBehavior: WaitBehavior): ResourceWithWaitSupportPromise { + return new ResourceWithWaitSupportPromiseImpl(this._promise.then(obj => obj.waitForStartWithBehavior(dependency, waitBehavior)), this._client); } /** Waits for resource completion */ - waitForCompletion(dependency: CSharpAppResource | ComputeResource | ConnectionStringResource | ContainerFilesDestinationResource | ContainerRegistryResource | ContainerResource | DotnetToolResource | ExecutableResource | ExternalServiceResource | ParameterResource | ProjectResource | Resource | ResourceWithArgs | ResourceWithConnectionString | ResourceWithContainerFiles | ResourceWithEndpoints | ResourceWithEnvironment | ResourceWithWaitSupport | TestDatabaseResource | TestRedisResource | TestVaultResource, options?: WaitForCompletionOptions): ResourceWithWaitSupportPromise { - return new ResourceWithWaitSupportPromiseImpl(this._promise.then(obj => obj.waitForCompletion(dependency, options))); + waitForCompletion(dependency: Awaitable, options?: WaitForCompletionOptions): ResourceWithWaitSupportPromise { + return new ResourceWithWaitSupportPromiseImpl(this._promise.then(obj => obj.waitForCompletion(dependency, options)), this._client); } } @@ -31708,7 +32026,7 @@ export async function createBuilder(options?: CreateBuilderOptions): Promise = T | PromiseLike; + // ============================================================================ // Reference Expression // ============================================================================ diff --git a/tests/Aspire.Hosting.CodeGeneration.TypeScript.Tests/Snapshots/transport.verified.ts b/tests/Aspire.Hosting.CodeGeneration.TypeScript.Tests/Snapshots/transport.verified.ts index 01233e6f1d6..2382fb605b3 100644 --- a/tests/Aspire.Hosting.CodeGeneration.TypeScript.Tests/Snapshots/transport.verified.ts +++ b/tests/Aspire.Hosting.CodeGeneration.TypeScript.Tests/Snapshots/transport.verified.ts @@ -1,4 +1,4 @@ -// transport.ts - ATS transport layer: RPC, Handle, errors, callbacks +// transport.ts - ATS transport layer: RPC, Handle, errors, callbacks import * as net from 'net'; import * as rpc from 'vscode-jsonrpc/node.js'; @@ -14,6 +14,8 @@ export interface AspireClientRpc { readonly connected: boolean; invokeCapability(capabilityId: string, args?: Record): Promise; cancelToken(cancellationId: string): Promise; + trackPromise(promise: Promise): void; + flushPendingPromises(): Promise; } /** @@ -383,7 +385,7 @@ export class AppHostUsageError extends Error { } } -function isPromiseLike(value: unknown): value is PromiseLike { +export function isPromiseLike(value: unknown): value is PromiseLike { return ( value !== null && (typeof value === 'object' || typeof value === 'function') && @@ -753,9 +755,26 @@ export class AspireClient implements AspireClientRpc { private _pendingCalls = 0; private _connectPromise: Promise | null = null; private _disconnectNotified = false; + private _pendingPromises: Set> = new Set(); constructor(private socketPath: string) { } + trackPromise(promise: Promise): void { + this._pendingPromises.add(promise); + promise.finally(() => this._pendingPromises.delete(promise)).catch(() => {}); + } + + async flushPendingPromises(): Promise { + if (this._pendingPromises.size > 0) { + console.warn(`Flushing ${this._pendingPromises.size} pending promise(s). Consider awaiting fluent calls to avoid implicit flushing.`); + } + // Loop because awaiting existing promises may cause new ones to be enqueued. + // Awaiting a tracked promise also removes it from the set via the .finally() handler. + while (this._pendingPromises.size > 0) { + await Promise.all(this._pendingPromises); + } + } + /** * Register a callback to be called when the connection is lost */