codify-plugin-lib 1.0.78 → 1.0.79
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.
- package/dist/plan/change-set.d.ts +1 -1
- package/dist/plan/change-set.js +5 -5
- package/dist/plan/plan.d.ts +1 -1
- package/dist/plan/plan.js +2 -2
- package/dist/resource/resource-settings.d.ts +2 -2
- package/package.json +1 -1
- package/src/plan/change-set.ts +8 -8
- package/src/plan/plan.ts +3 -3
- package/src/resource/parsed-resource-settings.ts +1 -1
- package/src/resource/resource-settings.ts +2 -2
|
@@ -30,7 +30,7 @@ export declare class ChangeSet<T extends StringIndexedObject> {
|
|
|
30
30
|
static empty<T extends StringIndexedObject>(): ChangeSet<T>;
|
|
31
31
|
static create<T extends StringIndexedObject>(desired: Partial<T>): ChangeSet<T>;
|
|
32
32
|
static destroy<T extends StringIndexedObject>(current: Partial<T>): ChangeSet<T>;
|
|
33
|
-
static calculateModification<T extends StringIndexedObject>(desired: Partial<T>, current: Partial<T>, parameterSettings?: Partial<Record<keyof T, ParameterSetting>>): ChangeSet<T
|
|
33
|
+
static calculateModification<T extends StringIndexedObject>(desired: Partial<T>, current: Partial<T>, parameterSettings?: Partial<Record<keyof T, ParameterSetting>>): Promise<ChangeSet<T>>;
|
|
34
34
|
/**
|
|
35
35
|
* Calculates the differences between the desired and current parameters,
|
|
36
36
|
* and returns a list of parameter changes that describe what needs to be added,
|
package/dist/plan/change-set.js
CHANGED
|
@@ -45,8 +45,8 @@ export class ChangeSet {
|
|
|
45
45
|
}));
|
|
46
46
|
return new ChangeSet(ResourceOperation.DESTROY, parameterChanges);
|
|
47
47
|
}
|
|
48
|
-
static calculateModification(desired, current, parameterSettings = {}) {
|
|
49
|
-
const pc = ChangeSet.calculateParameterChanges(desired, current, parameterSettings);
|
|
48
|
+
static async calculateModification(desired, current, parameterSettings = {}) {
|
|
49
|
+
const pc = await ChangeSet.calculateParameterChanges(desired, current, parameterSettings);
|
|
50
50
|
const statefulParameterKeys = new Set(Object.entries(parameterSettings)
|
|
51
51
|
.filter(([, v]) => v?.type === 'stateful')
|
|
52
52
|
.map(([k]) => k));
|
|
@@ -77,7 +77,7 @@ export class ChangeSet {
|
|
|
77
77
|
* @param {Partial<Record<keyof T, ParameterSetting>>} [parameterOptions] - Optional settings used when comparing parameters.
|
|
78
78
|
* @return {ParameterChange<T>[]} A list of changes required to transition from the current state to the desired state.
|
|
79
79
|
*/
|
|
80
|
-
static calculateParameterChanges(desiredParameters, currentParameters, parameterOptions) {
|
|
80
|
+
static async calculateParameterChanges(desiredParameters, currentParameters, parameterOptions) {
|
|
81
81
|
const parameterChangeSet = new Array();
|
|
82
82
|
// Filter out null and undefined values or else the diff below will not work
|
|
83
83
|
const desired = Object.fromEntries(Object.entries(desiredParameters).filter(([, v]) => v !== null && v !== undefined));
|
|
@@ -93,7 +93,7 @@ export class ChangeSet {
|
|
|
93
93
|
delete current[k];
|
|
94
94
|
continue;
|
|
95
95
|
}
|
|
96
|
-
if (!ChangeSet.isSame(desired[k], current[k], parameterOptions?.[k])) {
|
|
96
|
+
if (!await ChangeSet.isSame(desired[k], current[k], parameterOptions?.[k])) {
|
|
97
97
|
parameterChangeSet.push({
|
|
98
98
|
name: k,
|
|
99
99
|
previousValue: v ?? null,
|
|
@@ -138,7 +138,7 @@ export class ChangeSet {
|
|
|
138
138
|
const indexNext = orderOfOperations.indexOf(next);
|
|
139
139
|
return orderOfOperations[Math.max(indexPrev, indexNext)];
|
|
140
140
|
}
|
|
141
|
-
static isSame(desired, current, setting) {
|
|
141
|
+
static async isSame(desired, current, setting) {
|
|
142
142
|
switch (setting?.type) {
|
|
143
143
|
case 'stateful': {
|
|
144
144
|
const statefulSetting = setting.definition.getSettings();
|
package/dist/plan/plan.d.ts
CHANGED
|
@@ -41,7 +41,7 @@ export declare class Plan<T extends StringIndexedObject> {
|
|
|
41
41
|
coreParameters: ResourceConfig;
|
|
42
42
|
settings: ParsedResourceSettings<T>;
|
|
43
43
|
statefulMode: boolean;
|
|
44
|
-
}): Plan<T
|
|
44
|
+
}): Promise<Plan<T>>;
|
|
45
45
|
/**
|
|
46
46
|
* Only keep relevant params for the plan. We don't want to change settings that were not already
|
|
47
47
|
* defined.
|
package/dist/plan/plan.js
CHANGED
|
@@ -70,7 +70,7 @@ export class Plan {
|
|
|
70
70
|
getResourceType() {
|
|
71
71
|
return this.coreParameters.type;
|
|
72
72
|
}
|
|
73
|
-
static calculate(params) {
|
|
73
|
+
static async calculate(params) {
|
|
74
74
|
const { desiredParameters, currentParametersArray, stateParameters, coreParameters, settings, statefulMode } = params;
|
|
75
75
|
const currentParameters = Plan.matchCurrentParameters({
|
|
76
76
|
desiredParameters,
|
|
@@ -99,7 +99,7 @@ export class Plan {
|
|
|
99
99
|
return new Plan(uuidV4(), ChangeSet.destroy(filteredCurrentParameters), coreParameters);
|
|
100
100
|
}
|
|
101
101
|
// NO-OP, MODIFY or RE-CREATE
|
|
102
|
-
const changeSet = ChangeSet.calculateModification(desiredParameters, filteredCurrentParameters, settings.parameterSettings);
|
|
102
|
+
const changeSet = await ChangeSet.calculateModification(desiredParameters, filteredCurrentParameters, settings.parameterSettings);
|
|
103
103
|
return new Plan(uuidV4(), changeSet, coreParameters);
|
|
104
104
|
}
|
|
105
105
|
/**
|
|
@@ -97,7 +97,7 @@ export interface DefaultParameterSetting {
|
|
|
97
97
|
*
|
|
98
98
|
* @return Return true if equal
|
|
99
99
|
*/
|
|
100
|
-
isEqual?: (desired: any, current: any) => boolean;
|
|
100
|
+
isEqual?: (desired: any, current: any) => Promise<boolean> | boolean;
|
|
101
101
|
/**
|
|
102
102
|
* Chose if the resource can be modified instead of re-created when there is a change to this parameter.
|
|
103
103
|
* Defaults to false (re-create).
|
|
@@ -123,7 +123,7 @@ export interface ArrayParameterSetting extends DefaultParameterSetting {
|
|
|
123
123
|
*
|
|
124
124
|
* @return Return true if desired is equivalent to current.
|
|
125
125
|
*/
|
|
126
|
-
isElementEqual?: (desired: any, current: any) => boolean;
|
|
126
|
+
isElementEqual?: (desired: any, current: any) => Promise<boolean> | boolean;
|
|
127
127
|
}
|
|
128
128
|
/**
|
|
129
129
|
* Stateful parameter type specific settings. A stateful parameter is a sub-resource that can hold its own
|
package/package.json
CHANGED
package/src/plan/change-set.ts
CHANGED
|
@@ -85,12 +85,12 @@ export class ChangeSet<T extends StringIndexedObject> {
|
|
|
85
85
|
return new ChangeSet(ResourceOperation.DESTROY, parameterChanges);
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
-
static calculateModification<T extends StringIndexedObject>(
|
|
88
|
+
static async calculateModification<T extends StringIndexedObject>(
|
|
89
89
|
desired: Partial<T>,
|
|
90
90
|
current: Partial<T>,
|
|
91
91
|
parameterSettings: Partial<Record<keyof T, ParameterSetting>> = {},
|
|
92
|
-
): ChangeSet<T
|
|
93
|
-
const pc = ChangeSet.calculateParameterChanges(desired, current, parameterSettings);
|
|
92
|
+
): Promise<ChangeSet<T>> {
|
|
93
|
+
const pc = await ChangeSet.calculateParameterChanges(desired, current, parameterSettings);
|
|
94
94
|
|
|
95
95
|
const statefulParameterKeys = new Set(
|
|
96
96
|
Object.entries(parameterSettings)
|
|
@@ -126,11 +126,11 @@ export class ChangeSet<T extends StringIndexedObject> {
|
|
|
126
126
|
* @param {Partial<Record<keyof T, ParameterSetting>>} [parameterOptions] - Optional settings used when comparing parameters.
|
|
127
127
|
* @return {ParameterChange<T>[]} A list of changes required to transition from the current state to the desired state.
|
|
128
128
|
*/
|
|
129
|
-
private static calculateParameterChanges<T extends StringIndexedObject>(
|
|
129
|
+
private static async calculateParameterChanges<T extends StringIndexedObject>(
|
|
130
130
|
desiredParameters: Partial<T>,
|
|
131
131
|
currentParameters: Partial<T>,
|
|
132
132
|
parameterOptions?: Partial<Record<keyof T, ParameterSetting>>,
|
|
133
|
-
): ParameterChange<T>[] {
|
|
133
|
+
): Promise<ParameterChange<T>[]> {
|
|
134
134
|
const parameterChangeSet = new Array<ParameterChange<T>>();
|
|
135
135
|
|
|
136
136
|
// Filter out null and undefined values or else the diff below will not work
|
|
@@ -155,7 +155,7 @@ export class ChangeSet<T extends StringIndexedObject> {
|
|
|
155
155
|
continue;
|
|
156
156
|
}
|
|
157
157
|
|
|
158
|
-
if (!ChangeSet.isSame(desired[k], current[k], parameterOptions?.[k])) {
|
|
158
|
+
if (!await ChangeSet.isSame(desired[k], current[k], parameterOptions?.[k])) {
|
|
159
159
|
parameterChangeSet.push({
|
|
160
160
|
name: k,
|
|
161
161
|
previousValue: v ?? null,
|
|
@@ -210,11 +210,11 @@ export class ChangeSet<T extends StringIndexedObject> {
|
|
|
210
210
|
return orderOfOperations[Math.max(indexPrev, indexNext)];
|
|
211
211
|
}
|
|
212
212
|
|
|
213
|
-
private static isSame(
|
|
213
|
+
private static async isSame(
|
|
214
214
|
desired: unknown,
|
|
215
215
|
current: unknown,
|
|
216
216
|
setting?: ParameterSetting,
|
|
217
|
-
): boolean {
|
|
217
|
+
): Promise<boolean> {
|
|
218
218
|
switch (setting?.type) {
|
|
219
219
|
case 'stateful': {
|
|
220
220
|
const statefulSetting = (setting as StatefulParameterSetting).definition.getSettings()
|
package/src/plan/plan.ts
CHANGED
|
@@ -105,14 +105,14 @@ export class Plan<T extends StringIndexedObject> {
|
|
|
105
105
|
return this.coreParameters.type
|
|
106
106
|
}
|
|
107
107
|
|
|
108
|
-
static calculate<T extends StringIndexedObject>(params: {
|
|
108
|
+
static async calculate<T extends StringIndexedObject>(params: {
|
|
109
109
|
desiredParameters: Partial<T> | null,
|
|
110
110
|
currentParametersArray: Partial<T>[] | null,
|
|
111
111
|
stateParameters: Partial<T> | null,
|
|
112
112
|
coreParameters: ResourceConfig,
|
|
113
113
|
settings: ParsedResourceSettings<T>,
|
|
114
114
|
statefulMode: boolean,
|
|
115
|
-
}): Plan<T
|
|
115
|
+
}): Promise<Plan<T>> {
|
|
116
116
|
const {
|
|
117
117
|
desiredParameters,
|
|
118
118
|
currentParametersArray,
|
|
@@ -166,7 +166,7 @@ export class Plan<T extends StringIndexedObject> {
|
|
|
166
166
|
}
|
|
167
167
|
|
|
168
168
|
// NO-OP, MODIFY or RE-CREATE
|
|
169
|
-
const changeSet = ChangeSet.calculateModification(
|
|
169
|
+
const changeSet = await ChangeSet.calculateModification(
|
|
170
170
|
desiredParameters!,
|
|
171
171
|
filteredCurrentParameters!,
|
|
172
172
|
settings.parameterSettings,
|
|
@@ -154,7 +154,7 @@ export class ParsedResourceSettings<T extends StringIndexedObject> implements Re
|
|
|
154
154
|
// The rest of the types have defaults set already
|
|
155
155
|
}
|
|
156
156
|
|
|
157
|
-
private resolveEqualsFn(parameter: ParameterSetting, key: string): (desired: unknown, current: unknown) => boolean {
|
|
157
|
+
private resolveEqualsFn(parameter: ParameterSetting, key: string): (desired: unknown, current: unknown) => Promise<boolean> | boolean {
|
|
158
158
|
if (parameter.type === 'array') {
|
|
159
159
|
return parameter.isEqual ?? areArraysEqual.bind(areArraysEqual, parameter as ArrayParameterSetting)
|
|
160
160
|
}
|
|
@@ -127,7 +127,7 @@ export interface DefaultParameterSetting {
|
|
|
127
127
|
*
|
|
128
128
|
* @return Return true if equal
|
|
129
129
|
*/
|
|
130
|
-
isEqual?: (desired: any, current: any) => boolean;
|
|
130
|
+
isEqual?: (desired: any, current: any) => Promise<boolean> | boolean;
|
|
131
131
|
|
|
132
132
|
/**
|
|
133
133
|
* Chose if the resource can be modified instead of re-created when there is a change to this parameter.
|
|
@@ -156,7 +156,7 @@ export interface ArrayParameterSetting extends DefaultParameterSetting {
|
|
|
156
156
|
*
|
|
157
157
|
* @return Return true if desired is equivalent to current.
|
|
158
158
|
*/
|
|
159
|
-
isElementEqual?: (desired: any, current: any) => boolean
|
|
159
|
+
isElementEqual?: (desired: any, current: any) => Promise<boolean> | boolean;
|
|
160
160
|
}
|
|
161
161
|
|
|
162
162
|
/**
|