codify-plugin-lib 1.0.76 → 1.0.77
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/.eslintrc.json +11 -4
- package/.github/workflows/release.yaml +19 -0
- package/.github/workflows/unit-test-ci.yaml +19 -0
- package/dist/errors.d.ts +4 -0
- package/dist/errors.js +7 -0
- package/dist/index.d.ts +10 -10
- package/dist/index.js +9 -9
- package/dist/messages/handlers.d.ts +1 -1
- package/dist/messages/handlers.js +2 -1
- package/dist/plan/change-set.d.ts +37 -0
- package/dist/plan/change-set.js +146 -0
- package/dist/plan/plan-types.d.ts +23 -0
- package/dist/plan/plan-types.js +1 -0
- package/dist/plan/plan.d.ts +59 -0
- package/dist/plan/plan.js +228 -0
- package/dist/plugin/plugin.d.ts +17 -0
- package/dist/plugin/plugin.js +83 -0
- package/dist/resource/config-parser.d.ts +14 -0
- package/dist/resource/config-parser.js +48 -0
- package/dist/resource/parsed-resource-settings.d.ts +26 -0
- package/dist/resource/parsed-resource-settings.js +126 -0
- package/dist/resource/resource-controller.d.ts +30 -0
- package/dist/resource/resource-controller.js +247 -0
- package/dist/resource/resource-settings.d.ts +149 -0
- package/dist/resource/resource-settings.js +9 -0
- package/dist/resource/resource.d.ts +137 -0
- package/dist/resource/resource.js +44 -0
- package/dist/resource/stateful-parameter.d.ts +164 -0
- package/dist/resource/stateful-parameter.js +94 -0
- package/dist/utils/utils.d.ts +19 -3
- package/dist/utils/utils.js +52 -3
- package/package.json +5 -3
- package/src/index.ts +10 -11
- package/src/messages/handlers.test.ts +10 -37
- package/src/messages/handlers.ts +2 -2
- package/src/plan/change-set.test.ts +220 -0
- package/src/plan/change-set.ts +225 -0
- package/src/plan/plan-types.ts +27 -0
- package/src/{entities → plan}/plan.test.ts +35 -29
- package/src/plan/plan.ts +353 -0
- package/src/{entities → plugin}/plugin.test.ts +14 -13
- package/src/{entities → plugin}/plugin.ts +28 -24
- package/src/resource/config-parser.ts +77 -0
- package/src/{entities/resource-options.test.ts → resource/parsed-resource-settings.test.ts} +8 -7
- package/src/resource/parsed-resource-settings.ts +179 -0
- package/src/{entities/resource-stateful-mode.test.ts → resource/resource-controller-stateful-mode.test.ts} +36 -39
- package/src/{entities/resource.test.ts → resource/resource-controller.test.ts} +116 -176
- package/src/resource/resource-controller.ts +340 -0
- package/src/resource/resource-settings.test.ts +494 -0
- package/src/resource/resource-settings.ts +192 -0
- package/src/resource/resource.ts +149 -0
- package/src/resource/stateful-parameter.test.ts +93 -0
- package/src/resource/stateful-parameter.ts +217 -0
- package/src/utils/test-utils.test.ts +87 -0
- package/src/utils/utils.test.ts +2 -2
- package/src/utils/utils.ts +51 -5
- package/tsconfig.json +0 -1
- package/vitest.config.ts +10 -0
- package/src/entities/change-set.test.ts +0 -155
- package/src/entities/change-set.ts +0 -244
- package/src/entities/plan-types.ts +0 -44
- package/src/entities/plan.ts +0 -178
- package/src/entities/resource-options.ts +0 -155
- package/src/entities/resource-parameters.test.ts +0 -604
- package/src/entities/resource-types.ts +0 -31
- package/src/entities/resource.ts +0 -470
- package/src/entities/stateful-parameter.test.ts +0 -114
- package/src/entities/stateful-parameter.ts +0 -92
- package/src/entities/transform-parameter.ts +0 -13
- /package/src/{entities/errors.ts → errors.ts} +0 -0
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
import { StringIndexedObject } from 'codify-schemas';
|
|
2
|
-
|
|
3
|
-
import { ParameterOptions } from './plan-types.js';
|
|
4
|
-
import { ResourceParameterOptions } from './resource-types.js';
|
|
5
|
-
import { StatefulParameter } from './stateful-parameter.js';
|
|
6
|
-
import { TransformParameter } from './transform-parameter.js';
|
|
7
|
-
|
|
8
|
-
export interface ResourceOptions<T extends StringIndexedObject> {
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* If true, statefulParameter.applyRemove() will be called before resource destruction.
|
|
12
|
-
* Defaults to false.
|
|
13
|
-
*/
|
|
14
|
-
callStatefulParameterRemoveOnDestroy?: boolean,
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* An array of type ids of resources that this resource depends on. This affects the order in which the resources are
|
|
18
|
-
* planned and applied.
|
|
19
|
-
*/
|
|
20
|
-
dependencies?: string[];
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Additional options for configuring parameters.
|
|
24
|
-
*/
|
|
25
|
-
parameterOptions?: Partial<Record<keyof T,
|
|
26
|
-
ResourceParameterOptions
|
|
27
|
-
| ResourceStatefulParameterOptions<T>
|
|
28
|
-
| ResourceTransformParameterOptions<T>
|
|
29
|
-
>>
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Schema to validate user configs with. Must be in the format JSON Schema draft07
|
|
33
|
-
*/
|
|
34
|
-
schema?: unknown
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* The id of the resource.
|
|
38
|
-
*/
|
|
39
|
-
type: string;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export interface ResourceStatefulParameterOptions<T extends StringIndexedObject> {
|
|
43
|
-
order?: number;
|
|
44
|
-
statefulParameter: StatefulParameter<T, T[keyof T]>;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
export interface ResourceTransformParameterOptions<T extends StringIndexedObject> {
|
|
48
|
-
order?: number;
|
|
49
|
-
transformParameter: TransformParameter<T>;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
export class ResourceOptionsParser<T extends StringIndexedObject> {
|
|
53
|
-
private options: ResourceOptions<T>;
|
|
54
|
-
|
|
55
|
-
constructor(options: ResourceOptions<T>) {
|
|
56
|
-
this.options = options;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
get statefulParameters(): Map<keyof T, StatefulParameter<T, T[keyof T]>> {
|
|
60
|
-
const statefulParameters = Object.entries(this.options.parameterOptions ?? {})
|
|
61
|
-
.filter(([, p]) => p?.hasOwnProperty('statefulParameter'))
|
|
62
|
-
.map(([k, v]) => [k, v as ResourceStatefulParameterOptions<T>] as const)
|
|
63
|
-
.map(([k, v]) => [k, v.statefulParameter] as const)
|
|
64
|
-
|
|
65
|
-
return new Map(statefulParameters);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
get transformParameters(): Map<keyof T, TransformParameter<T>> {
|
|
69
|
-
const transformParameters =
|
|
70
|
-
Object.entries(this.options.parameterOptions ?? {})
|
|
71
|
-
.filter(([, p]) => p?.hasOwnProperty('transformParameter'))
|
|
72
|
-
.map(([k, v]) => [k, v as ResourceTransformParameterOptions<T>] as const)
|
|
73
|
-
.map(([k, v]) => [k, v.transformParameter] as const)
|
|
74
|
-
|
|
75
|
-
return new Map(transformParameters);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
get resourceParameters(): Map<keyof T, ResourceParameterOptions> {
|
|
79
|
-
const resourceParameters =
|
|
80
|
-
Object.entries(this.options.parameterOptions ?? {})
|
|
81
|
-
.filter(([, p]) => !(p?.hasOwnProperty('statefulParameter') || p?.hasOwnProperty('transformParameter')))
|
|
82
|
-
.map(([k, v]) => [k, v as ResourceParameterOptions] as const)
|
|
83
|
-
|
|
84
|
-
return new Map(resourceParameters);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
get changeSetParameterOptions(): Record<keyof T, ParameterOptions> {
|
|
88
|
-
const resourceParameters = Object.fromEntries(
|
|
89
|
-
[...this.resourceParameters.entries()]
|
|
90
|
-
.map(([name, value]) => ([name, { ...value, isStatefulParameter: false }]))
|
|
91
|
-
);
|
|
92
|
-
|
|
93
|
-
const statefulParameters = [...this.statefulParameters.entries()]
|
|
94
|
-
?.reduce((obj, sp) => ({
|
|
95
|
-
...obj,
|
|
96
|
-
[sp[0]]: {
|
|
97
|
-
...sp[1].options,
|
|
98
|
-
isStatefulParameter: true,
|
|
99
|
-
}
|
|
100
|
-
}), {} as Record<keyof T, ParameterOptions>)
|
|
101
|
-
|
|
102
|
-
return {
|
|
103
|
-
...resourceParameters,
|
|
104
|
-
...statefulParameters,
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
get defaultValues(): Partial<Record<keyof T, unknown>> {
|
|
109
|
-
if (!this.options.parameterOptions) {
|
|
110
|
-
return {};
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
return Object.fromEntries(
|
|
114
|
-
[...this.resourceParameters.entries()]
|
|
115
|
-
.filter(([, rp]) => rp.default !== undefined)
|
|
116
|
-
.map(([name, rp]) => [name, rp.default])
|
|
117
|
-
) as Partial<Record<keyof T, unknown>>;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
get statefulParameterOrder(): Map<keyof T, number> {
|
|
121
|
-
const entries = Object.entries(this.options.parameterOptions ?? {})
|
|
122
|
-
.filter(([, v]) => v?.hasOwnProperty('statefulParameter'))
|
|
123
|
-
.map(([k, v]) => [k, v as ResourceStatefulParameterOptions<T>] as const)
|
|
124
|
-
|
|
125
|
-
const orderedEntries = entries.filter(([, v]) => v.order !== undefined)
|
|
126
|
-
const unorderedEntries = entries.filter(([, v]) => v.order === undefined)
|
|
127
|
-
|
|
128
|
-
orderedEntries.sort((a, b) => a[1].order! - b[1].order!);
|
|
129
|
-
|
|
130
|
-
const resultArray = [
|
|
131
|
-
...orderedEntries.map(([k]) => k),
|
|
132
|
-
...unorderedEntries.map(([k]) => k)
|
|
133
|
-
]
|
|
134
|
-
|
|
135
|
-
return new Map(resultArray.map((key, idx) => [key, idx]));
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
get transformParameterOrder(): Map<keyof T, number> {
|
|
139
|
-
const entries = Object.entries(this.options.parameterOptions ?? {})
|
|
140
|
-
.filter(([, v]) => v?.hasOwnProperty('transformParameter'))
|
|
141
|
-
.map(([k, v]) => [k, v as ResourceTransformParameterOptions<T>] as const)
|
|
142
|
-
|
|
143
|
-
const orderedEntries = entries.filter(([, v]) => v.order !== undefined)
|
|
144
|
-
const unorderedEntries = entries.filter(([, v]) => v.order === undefined)
|
|
145
|
-
|
|
146
|
-
orderedEntries.sort((a, b) => a[1].order! - b[1].order!);
|
|
147
|
-
|
|
148
|
-
const resultArray = [
|
|
149
|
-
...orderedEntries.map(([k]) => k),
|
|
150
|
-
...unorderedEntries.map(([k]) => k)
|
|
151
|
-
]
|
|
152
|
-
|
|
153
|
-
return new Map(resultArray.map((key, idx) => [key, idx]));
|
|
154
|
-
}
|
|
155
|
-
}
|