11import { ParameterOperation , ResourceOperation , StringIndexedObject } from 'codify-schemas' ;
22
33import { ParsedParameterSetting } from '../resource/parsed-resource-settings.js' ;
4+ import { ResourceSettings } from '../resource/resource-settings.js' ;
45
56/**
67 * A parameter change describes a parameter level change to a resource.
@@ -25,6 +26,11 @@ export interface ParameterChange<T extends StringIndexedObject> {
2526 * The new value of the resource (the desired value)
2627 */
2728 newValue : any | null ;
29+
30+ /**
31+ * Whether the parameter is sensitive
32+ */
33+ isSensitive : boolean ;
2834}
2935
3036// Change set will coerce undefined values to null because undefined is not valid JSON
@@ -60,37 +66,40 @@ export class ChangeSet<T extends StringIndexedObject> {
6066 return new ChangeSet < T > ( ResourceOperation . NOOP , [ ] ) ;
6167 }
6268
63- static create < T extends StringIndexedObject > ( desired : Partial < T > ) : ChangeSet < T > {
69+ static create < T extends StringIndexedObject > ( desired : Partial < T > , settings ?: ResourceSettings < T > ) : ChangeSet < T > {
6470 const parameterChanges = Object . entries ( desired )
6571 . map ( ( [ k , v ] ) => ( {
6672 name : k ,
6773 operation : ParameterOperation . ADD ,
6874 previousValue : null ,
6975 newValue : v ?? null ,
76+ isSensitive : settings ?. parameterSettings ?. [ k ] ?. isSensitive ?? false ,
7077 } ) )
7178
7279 return new ChangeSet ( ResourceOperation . CREATE , parameterChanges ) ;
7380 }
7481
75- static noop < T extends StringIndexedObject > ( parameters : Partial < T > ) : ChangeSet < T > {
82+ static noop < T extends StringIndexedObject > ( parameters : Partial < T > , settings ?: ResourceSettings < T > ) : ChangeSet < T > {
7683 const parameterChanges = Object . entries ( parameters )
7784 . map ( ( [ k , v ] ) => ( {
7885 name : k ,
7986 operation : ParameterOperation . NOOP ,
8087 previousValue : v ?? null ,
8188 newValue : v ?? null ,
89+ isSensitive : settings ?. parameterSettings ?. [ k ] ?. isSensitive ?? false ,
8290 } ) )
8391
8492 return new ChangeSet ( ResourceOperation . NOOP , parameterChanges ) ;
8593 }
8694
87- static destroy < T extends StringIndexedObject > ( current : Partial < T > ) : ChangeSet < T > {
95+ static destroy < T extends StringIndexedObject > ( current : Partial < T > , settings ?: ResourceSettings < T > ) : ChangeSet < T > {
8896 const parameterChanges = Object . entries ( current )
8997 . map ( ( [ k , v ] ) => ( {
9098 name : k ,
9199 operation : ParameterOperation . REMOVE ,
92100 previousValue : v ?? null ,
93101 newValue : null ,
102+ isSensitive : settings ?. parameterSettings ?. [ k ] ?. isSensitive ?? false ,
94103 } ) )
95104
96105 return new ChangeSet ( ResourceOperation . DESTROY , parameterChanges ) ;
@@ -160,6 +169,7 @@ export class ChangeSet<T extends StringIndexedObject> {
160169 previousValue : current [ k ] ?? null ,
161170 newValue : desired [ k ] ?? null ,
162171 operation : ParameterOperation . NOOP ,
172+ isSensitive : parameterOptions ?. [ k ] ?. isSensitive ?? false ,
163173 } )
164174
165175 continue ;
@@ -171,6 +181,7 @@ export class ChangeSet<T extends StringIndexedObject> {
171181 previousValue : current [ k ] ?? null ,
172182 newValue : null ,
173183 operation : ParameterOperation . REMOVE ,
184+ isSensitive : parameterOptions ?. [ k ] ?. isSensitive ?? false ,
174185 } )
175186
176187 continue ;
@@ -182,6 +193,7 @@ export class ChangeSet<T extends StringIndexedObject> {
182193 previousValue : null ,
183194 newValue : desired [ k ] ?? null ,
184195 operation : ParameterOperation . ADD ,
196+ isSensitive : parameterOptions ?. [ k ] ?. isSensitive ?? false ,
185197 } )
186198
187199 continue ;
@@ -192,6 +204,7 @@ export class ChangeSet<T extends StringIndexedObject> {
192204 previousValue : current [ k ] ?? null ,
193205 newValue : desired [ k ] ?? null ,
194206 operation : ParameterOperation . MODIFY ,
207+ isSensitive : parameterOptions ?. [ k ] ?. isSensitive ?? false ,
195208 } )
196209 }
197210
0 commit comments