codify-plugin-lib 1.0.51 → 1.0.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -55,9 +55,9 @@ export class Resource {
55
55
  parameterOptions: this.parameterOptions,
56
56
  };
57
57
  const parsedConfig = new ConfigParser(desiredConfig, this.statefulParameters, this.transformParameters);
58
- const { parameters: desiredParameters, resourceMetadata, resourceParameters, statefulParameters } = parsedConfig;
58
+ const { parameters: desiredParameters, resourceMetadata, resourceParameters, statefulParameters, transformParameters, } = parsedConfig;
59
59
  this.addDefaultValues(resourceParameters);
60
- await this.applyTransformParameters(resourceParameters);
60
+ await this.applyTransformParameters(transformParameters, resourceParameters);
61
61
  const currentParameters = await this.refreshResourceParameters(resourceParameters);
62
62
  if (currentParameters == null) {
63
63
  return Plan.create(desiredParameters, null, resourceMetadata, planOptions);
@@ -151,8 +151,8 @@ Missing: ${[...desiredKeys].filter((k) => !refreshKeys.has(k))};
151
151
  Additional: ${[...refreshKeys].filter(k => !desiredKeys.has(k))};`);
152
152
  }
153
153
  }
154
- async applyTransformParameters(desired) {
155
- const orderedEntries = [...this.transformParameters.entries()]
154
+ async applyTransformParameters(transformParameters, desired) {
155
+ const orderedEntries = [...Object.entries(transformParameters)]
156
156
  .sort(([keyA], [keyB]) => this.transformParameterOrder.get(keyA) - this.transformParameterOrder.get(keyB));
157
157
  for (const [key, tp] of orderedEntries) {
158
158
  if (desired[key] !== null) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codify-plugin-lib",
3
- "version": "1.0.51",
3
+ "version": "1.0.52",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "typings": "dist/index.d.ts",
@@ -407,6 +407,43 @@ describe('Resource parameters tests', () => {
407
407
  expect(plan.changeSet.operation).to.eq(ResourceOperation.NOOP);
408
408
  })
409
409
 
410
+ it('Does not call transform parameters unless they are specified in the user config', async () => {
411
+ const transformParameter = spy(new class extends TransformParameter<TestConfig> {
412
+ async transform(value: any): Promise<Partial<TestConfig>> {
413
+ return {
414
+ propA: 'propA',
415
+ propB: 10,
416
+ }
417
+ }
418
+ })
419
+
420
+ const resource = spy(new class extends TestResource {
421
+ constructor() {
422
+ super({
423
+ type: 'resourceType',
424
+ parameterOptions: {
425
+ propC: { transformParameter }
426
+ },
427
+ });
428
+ }
429
+
430
+ async refresh(): Promise<Partial<TestConfig> | null> {
431
+ return {
432
+ propA: 'propA',
433
+ propB: 10,
434
+ }
435
+ }
436
+ });
437
+
438
+ const plan = await resource.plan({ type: 'resourceType', propA: 'propA', propB: 10 } as any);
439
+
440
+ expect(transformParameter.transform.called).to.be.false;
441
+ expect(resource.refresh.getCall(0).firstArg.has('propA')).to.be.true;
442
+ expect(resource.refresh.getCall(0).firstArg.has('propB')).to.be.true;
443
+
444
+ expect(plan.changeSet.operation).to.eq(ResourceOperation.NOOP);
445
+ })
446
+
410
447
  it('Plans transform parameters in the order specified', async () => {
411
448
  const transformParameterA = spy(new class extends TransformParameter<TestConfig> {
412
449
  async transform(value: any): Promise<Partial<TestConfig>> {
@@ -89,11 +89,12 @@ export abstract class Resource<T extends StringIndexedObject> {
89
89
  parameters: desiredParameters,
90
90
  resourceMetadata,
91
91
  resourceParameters,
92
- statefulParameters
92
+ statefulParameters,
93
+ transformParameters,
93
94
  } = parsedConfig;
94
95
 
95
96
  this.addDefaultValues(resourceParameters);
96
- await this.applyTransformParameters(resourceParameters);
97
+ await this.applyTransformParameters(transformParameters, resourceParameters);
97
98
 
98
99
  // Refresh resource parameters. This refreshes the parameters that configure the resource itself
99
100
  const currentParameters = await this.refreshResourceParameters(resourceParameters);
@@ -223,8 +224,8 @@ Additional: ${[...refreshKeys].filter(k => !desiredKeys.has(k))};`
223
224
  }
224
225
  }
225
226
 
226
- private async applyTransformParameters(desired: Partial<T>): Promise<void> {
227
- const orderedEntries = [...this.transformParameters.entries()]
227
+ private async applyTransformParameters(transformParameters: Partial<T>, desired: Partial<T>): Promise<void> {
228
+ const orderedEntries = [...Object.entries(transformParameters)]
228
229
  .sort(([keyA], [keyB]) => this.transformParameterOrder.get(keyA)! - this.transformParameterOrder.get(keyB)!)
229
230
 
230
231
  for (const [key, tp] of orderedEntries) {