@@ -56,22 +56,22 @@ export abstract class Resource<T extends StringIndexedObject> {
5656
5757 // Refresh resource parameters
5858 // This refreshes the parameters that configure the resource itself
59- const keysToRefresh = new Set ( Object . keys ( resourceParameters ) ) ;
60- const currentParameters = await this . refresh ( keysToRefresh ) ;
59+ const entriesToRefresh = new Map ( Object . entries ( resourceParameters ) ) ;
60+ const currentParameters = await this . refresh ( entriesToRefresh ) ;
6161
6262 // Short circuit here. If resource is non-existent, then there's no point checking stateful parameters
6363 if ( currentParameters == null ) {
6464 return Plan . create ( desiredParameters , null , resourceMetadata , planConfiguration ) ;
6565 }
6666
67- this . validateRefreshResults ( currentParameters , keysToRefresh ) ;
67+ this . validateRefreshResults ( currentParameters , entriesToRefresh ) ;
6868
6969 // Refresh stateful parameters
7070 // This refreshes parameters that are stateful (they can be added, deleted separately from the resource)
7171 for ( const statefulParameter of statefulParameters ) {
7272 const desiredValue = desiredParameters [ statefulParameter . name ] ;
7373
74- let currentValue = await statefulParameter . refresh ( ) ?? undefined ;
74+ let currentValue = await statefulParameter . refresh ( desiredValue ?? null ) ?? undefined ;
7575
7676 // In stateless mode, filter the refreshed parameters by the desired to ensure that no deletes happen
7777 if ( Array . isArray ( currentValue )
@@ -224,11 +224,12 @@ export abstract class Resource<T extends StringIndexedObject> {
224224
225225 }
226226
227- private validateRefreshResults ( refresh : Partial < T > | null , desiredKeys : Set < keyof T > ) {
227+ private validateRefreshResults ( refresh : Partial < T > | null , desiredMap : Map < keyof T , T [ keyof T ] > ) {
228228 if ( ! refresh ) {
229229 return ;
230230 }
231231
232+ const desiredKeys = new Set < keyof T > ( desiredMap . keys ( ) ) ;
232233 const refreshKeys = new Set ( Object . keys ( refresh ) ) as Set < keyof T > ;
233234
234235 if ( ! setsEqual ( desiredKeys , refreshKeys ) ) {
@@ -243,7 +244,7 @@ Additional: ${[...refreshKeys].filter(k => !desiredKeys.has(k))};`
243244
244245 abstract validate ( parameters : unknown ) : Promise < ValidationResult > ;
245246
246- abstract refresh ( keys : Set < keyof T > ) : Promise < Partial < T > | null > ;
247+ abstract refresh ( keys : Map < keyof T , T [ keyof T ] > ) : Promise < Partial < T > | null > ;
247248
248249 abstract applyCreate ( plan : Plan < T > ) : Promise < void > ;
249250
0 commit comments