timonel 2.8.0-beta.5 → 2.8.1

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.
Files changed (128) hide show
  1. package/CHANGELOG.md +11 -21
  2. package/README.md +12 -55
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/{src/cli.js → cli.js} +115 -82
  5. package/dist/cli.js.map +1 -0
  6. package/dist/index.d.ts +14 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +13 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/{src/lib → lib}/helm.d.ts +234 -4
  11. package/dist/lib/helm.d.ts.map +1 -0
  12. package/dist/{src/lib → lib}/helm.js +309 -20
  13. package/dist/lib/helm.js.map +1 -0
  14. package/dist/lib/helmChartWriter.d.ts.map +1 -0
  15. package/dist/{src/lib → lib}/helmChartWriter.js +5 -19
  16. package/dist/lib/helmChartWriter.js.map +1 -0
  17. package/dist/{src/lib → lib}/resources/baseResourceProvider.d.ts +1 -1
  18. package/dist/lib/resources/baseResourceProvider.d.ts.map +1 -0
  19. package/dist/lib/resources/baseResourceProvider.js.map +1 -0
  20. package/dist/{src/lib → lib}/resources/cloud/aws/awsResources.d.ts +5 -14
  21. package/dist/lib/resources/cloud/aws/awsResources.d.ts.map +1 -0
  22. package/dist/{src/lib → lib}/resources/cloud/aws/awsResources.js +63 -78
  23. package/dist/lib/resources/cloud/aws/awsResources.js.map +1 -0
  24. package/dist/lib/resources/cloud/aws/karpenterResources.d.ts.map +1 -0
  25. package/dist/lib/resources/cloud/aws/karpenterResources.js.map +1 -0
  26. package/dist/lib/rutter.d.ts +445 -0
  27. package/dist/lib/rutter.d.ts.map +1 -0
  28. package/dist/lib/rutter.js +585 -0
  29. package/dist/lib/rutter.js.map +1 -0
  30. package/dist/{src/lib → lib}/security.d.ts +2 -72
  31. package/dist/lib/security.d.ts.map +1 -0
  32. package/dist/lib/security.js +390 -0
  33. package/dist/lib/security.js.map +1 -0
  34. package/dist/lib/umbrella.d.ts.map +1 -0
  35. package/dist/lib/umbrella.js.map +1 -0
  36. package/dist/{src/lib → lib}/umbrellaRutter.d.ts +1 -1
  37. package/dist/lib/umbrellaRutter.d.ts.map +1 -0
  38. package/dist/lib/umbrellaRutter.js.map +1 -0
  39. package/dist/{src/lib → lib}/utils/helmHelpers.d.ts +2 -12
  40. package/dist/lib/utils/helmHelpers.d.ts.map +1 -0
  41. package/dist/{src/lib → lib}/utils/helmHelpers.js +2 -46
  42. package/dist/lib/utils/helmHelpers.js.map +1 -0
  43. package/package.json +3 -4
  44. package/dist/src/cli.d.ts.map +0 -1
  45. package/dist/src/cli.js.map +0 -1
  46. package/dist/src/index.d.ts +0 -23
  47. package/dist/src/index.d.ts.map +0 -1
  48. package/dist/src/index.js +0 -15
  49. package/dist/src/index.js.map +0 -1
  50. package/dist/src/lib/constants.d.ts +0 -142
  51. package/dist/src/lib/constants.d.ts.map +0 -1
  52. package/dist/src/lib/constants.js +0 -167
  53. package/dist/src/lib/constants.js.map +0 -1
  54. package/dist/src/lib/helm.d.ts.map +0 -1
  55. package/dist/src/lib/helm.js.map +0 -1
  56. package/dist/src/lib/helmChartWriter.d.ts.map +0 -1
  57. package/dist/src/lib/helmChartWriter.js.map +0 -1
  58. package/dist/src/lib/resources/autoscaling/autoscalingResources.d.ts +0 -248
  59. package/dist/src/lib/resources/autoscaling/autoscalingResources.d.ts.map +0 -1
  60. package/dist/src/lib/resources/autoscaling/autoscalingResources.js +0 -81
  61. package/dist/src/lib/resources/autoscaling/autoscalingResources.js.map +0 -1
  62. package/dist/src/lib/resources/baseResourceProvider.d.ts.map +0 -1
  63. package/dist/src/lib/resources/baseResourceProvider.js.map +0 -1
  64. package/dist/src/lib/resources/cloud/aws/awsResources.d.ts.map +0 -1
  65. package/dist/src/lib/resources/cloud/aws/awsResources.js.map +0 -1
  66. package/dist/src/lib/resources/cloud/aws/karpenterResources.d.ts.map +0 -1
  67. package/dist/src/lib/resources/cloud/aws/karpenterResources.js.map +0 -1
  68. package/dist/src/lib/resources/cloud/azure/azureResources.d.ts +0 -169
  69. package/dist/src/lib/resources/cloud/azure/azureResources.d.ts.map +0 -1
  70. package/dist/src/lib/resources/cloud/azure/azureResources.js +0 -218
  71. package/dist/src/lib/resources/cloud/azure/azureResources.js.map +0 -1
  72. package/dist/src/lib/resources/cloud/gcp/gcpResources.d.ts +0 -164
  73. package/dist/src/lib/resources/cloud/gcp/gcpResources.d.ts.map +0 -1
  74. package/dist/src/lib/resources/cloud/gcp/gcpResources.js +0 -192
  75. package/dist/src/lib/resources/cloud/gcp/gcpResources.js.map +0 -1
  76. package/dist/src/lib/resources/core/coreResources.d.ts +0 -790
  77. package/dist/src/lib/resources/core/coreResources.d.ts.map +0 -1
  78. package/dist/src/lib/resources/core/coreResources.js +0 -1115
  79. package/dist/src/lib/resources/core/coreResources.js.map +0 -1
  80. package/dist/src/lib/resources/core/storageResources.d.ts +0 -133
  81. package/dist/src/lib/resources/core/storageResources.d.ts.map +0 -1
  82. package/dist/src/lib/resources/core/storageResources.js +0 -120
  83. package/dist/src/lib/resources/core/storageResources.js.map +0 -1
  84. package/dist/src/lib/resources/network/networkResources.d.ts +0 -515
  85. package/dist/src/lib/resources/network/networkResources.d.ts.map +0 -1
  86. package/dist/src/lib/resources/network/networkResources.js +0 -784
  87. package/dist/src/lib/resources/network/networkResources.js.map +0 -1
  88. package/dist/src/lib/resources/security/encryption.d.ts +0 -290
  89. package/dist/src/lib/resources/security/encryption.d.ts.map +0 -1
  90. package/dist/src/lib/resources/security/encryption.js +0 -295
  91. package/dist/src/lib/resources/security/encryption.js.map +0 -1
  92. package/dist/src/lib/resources/security/index.d.ts +0 -6
  93. package/dist/src/lib/resources/security/index.d.ts.map +0 -1
  94. package/dist/src/lib/resources/security/index.js +0 -6
  95. package/dist/src/lib/resources/security/index.js.map +0 -1
  96. package/dist/src/lib/resources/validation/validationResources.d.ts +0 -26
  97. package/dist/src/lib/resources/validation/validationResources.d.ts.map +0 -1
  98. package/dist/src/lib/resources/validation/validationResources.js +0 -33
  99. package/dist/src/lib/resources/validation/validationResources.js.map +0 -1
  100. package/dist/src/lib/rutter.d.ts +0 -1106
  101. package/dist/src/lib/rutter.d.ts.map +0 -1
  102. package/dist/src/lib/rutter.js +0 -1295
  103. package/dist/src/lib/rutter.js.map +0 -1
  104. package/dist/src/lib/security.d.ts.map +0 -1
  105. package/dist/src/lib/security.js +0 -569
  106. package/dist/src/lib/security.js.map +0 -1
  107. package/dist/src/lib/umbrella.d.ts.map +0 -1
  108. package/dist/src/lib/umbrella.js.map +0 -1
  109. package/dist/src/lib/umbrellaRutter.d.ts.map +0 -1
  110. package/dist/src/lib/umbrellaRutter.js.map +0 -1
  111. package/dist/src/lib/utils/helmHelpers.d.ts.map +0 -1
  112. package/dist/src/lib/utils/helmHelpers.js.map +0 -1
  113. package/dist/src/lib/utils/podTemplates.d.ts +0 -192
  114. package/dist/src/lib/utils/podTemplates.d.ts.map +0 -1
  115. package/dist/src/lib/utils/podTemplates.js +0 -331
  116. package/dist/src/lib/utils/podTemplates.js.map +0 -1
  117. package/dist/src/lib/utils/resourceNaming.d.ts +0 -57
  118. package/dist/src/lib/utils/resourceNaming.d.ts.map +0 -1
  119. package/dist/src/lib/utils/resourceNaming.js +0 -82
  120. package/dist/src/lib/utils/resourceNaming.js.map +0 -1
  121. /package/dist/{src/cli.d.ts → cli.d.ts} +0 -0
  122. /package/dist/{src/lib → lib}/helmChartWriter.d.ts +0 -0
  123. /package/dist/{src/lib → lib}/resources/baseResourceProvider.js +0 -0
  124. /package/dist/{src/lib → lib}/resources/cloud/aws/karpenterResources.d.ts +0 -0
  125. /package/dist/{src/lib → lib}/resources/cloud/aws/karpenterResources.js +0 -0
  126. /package/dist/{src/lib → lib}/umbrella.d.ts +0 -0
  127. /package/dist/{src/lib → lib}/umbrella.js +0 -0
  128. /package/dist/{src/lib → lib}/umbrellaRutter.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rutter.d.ts","sourceRoot":"","sources":["../../src/lib/rutter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,585 @@
1
+ import { ApiObject, App, Chart, Testing } from 'cdk8s';
2
+ import YAML from 'yaml';
3
+ import { helm, include } from './helm.js';
4
+ import { HelmChartWriter } from './helmChartWriter.js';
5
+ import { AWSResources } from './resources/cloud/aws/awsResources.js';
6
+ import { KarpenterResources } from './resources/cloud/aws/karpenterResources.js';
7
+ import { generateHelpersTemplate } from './utils/helmHelpers.js';
8
+ /**
9
+ * Rutter class with modular architecture
10
+ * Provides a clean API while delegating to specialized resource providers
11
+ * Maintains full backward compatibility with the original Rutter class
12
+ *
13
+ * @since 2.4.0
14
+ */
15
+ export class Rutter {
16
+ constructor(props) {
17
+ this.assets = [];
18
+ this.props = props;
19
+ this.meta = props.meta;
20
+ this.defaultValues = props.defaultValues ?? {};
21
+ this.envValues = props.envValues ?? {};
22
+ // Create CDK8s infrastructure
23
+ this.app = new App();
24
+ this.chart = new Chart(this.app, props.meta.name, {
25
+ ...props.chartProps,
26
+ ...(props.namespace ? { namespace: props.namespace } : {}),
27
+ });
28
+ // Initialize resource providers
29
+ this.awsResources = new AWSResources(this.chart);
30
+ this.karpenterResources = new KarpenterResources(this.chart);
31
+ }
32
+ // AWS Resources
33
+ /**
34
+ * Creates an AWS EBS StorageClass
35
+ * @param spec - EBS StorageClass specification
36
+ * @returns Created StorageClass ApiObject
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * rutter.addAWSEBSStorageClass({
41
+ * name: 'fast-ebs',
42
+ * volumeType: 'gp3',
43
+ * encrypted: true,
44
+ * allowVolumeExpansion: true
45
+ * });
46
+ * ```
47
+ *
48
+ * @since 1.0.0
49
+ */
50
+ addAWSEBSStorageClass(spec) {
51
+ return this.awsResources.addEBSStorageClass(spec);
52
+ }
53
+ /**
54
+ * Creates an AWS EFS StorageClass
55
+ * @param spec - EFS StorageClass specification
56
+ * @returns Created StorageClass ApiObject
57
+ *
58
+ * @example
59
+ * ```typescript
60
+ * rutter.addAWSEFSStorageClass({
61
+ * name: 'efs-storage',
62
+ * fileSystemId: 'fs-12345678',
63
+ * directoryPerms: '0755'
64
+ * });
65
+ * ```
66
+ *
67
+ * @since 1.0.0
68
+ */
69
+ addAWSEFSStorageClass(spec) {
70
+ return this.awsResources.addEFSStorageClass(spec);
71
+ }
72
+ /**
73
+ * Creates an AWS IRSA ServiceAccount
74
+ * @param spec - IRSA ServiceAccount specification
75
+ * @returns Created ServiceAccount ApiObject
76
+ *
77
+ * @example
78
+ * ```typescript
79
+ * rutter.addAWSIRSAServiceAccount({
80
+ * name: 'my-service-account',
81
+ * roleArn: 'arn:aws:iam::ACCOUNT_ID:role/MyRole'
82
+ * });
83
+ * ```
84
+ *
85
+ * @since 1.0.0
86
+ */
87
+ addAWSIRSAServiceAccount(spec) {
88
+ return this.awsResources.addIRSAServiceAccount(spec);
89
+ }
90
+ /**
91
+ * Creates an AWS ALB Ingress
92
+ * @param spec - ALB Ingress specification
93
+ * @returns Created Ingress ApiObject
94
+ *
95
+ * @example
96
+ * ```typescript
97
+ * rutter.addAWSALBIngress({
98
+ * name: 'web-ingress',
99
+ * rules: [{
100
+ * paths: [{
101
+ * path: '/',
102
+ * pathType: 'Prefix',
103
+ * backend: { service: { name: 'web-service', port: { number: 80 } } }
104
+ * }]
105
+ * }],
106
+ * scheme: 'internet-facing'
107
+ * });
108
+ * ```
109
+ *
110
+ * @since 1.0.0
111
+ */
112
+ addAWSALBIngress(spec) {
113
+ return this.awsResources.addALBIngress(spec);
114
+ }
115
+ // AWS Karpenter Resources
116
+ /**
117
+ * Creates a Karpenter NodePool resource
118
+ * @param spec - NodePool specification
119
+ * @returns Created NodePool ApiObject
120
+ *
121
+ * @example
122
+ * ```typescript
123
+ * rutter.addKarpenterNodePool({
124
+ * name: 'default-nodepool',
125
+ * template: {
126
+ * spec: {
127
+ * nodeClassRef: {
128
+ * apiVersion: 'karpenter.k8s.aws/v1beta1',
129
+ * kind: 'EC2NodeClass',
130
+ * name: 'default'
131
+ * }
132
+ * }
133
+ * }
134
+ * });
135
+ * ```
136
+ *
137
+ * @since 2.7.0
138
+ */
139
+ addKarpenterNodePool(spec) {
140
+ return this.karpenterResources.addKarpenterNodePool(spec);
141
+ }
142
+ /**
143
+ * Creates a Karpenter NodeClaim resource
144
+ * @param spec - NodeClaim specification
145
+ * @returns Created NodeClaim ApiObject
146
+ *
147
+ * @example
148
+ * ```typescript
149
+ * rutter.addKarpenterNodeClaim({
150
+ * name: 'my-node-claim',
151
+ * nodeClassRef: {
152
+ * apiVersion: 'karpenter.k8s.aws/v1beta1',
153
+ * kind: 'EC2NodeClass',
154
+ * name: 'default'
155
+ * }
156
+ * });
157
+ * ```
158
+ *
159
+ * @since 2.7.0
160
+ */
161
+ addKarpenterNodeClaim(spec) {
162
+ return this.karpenterResources.addKarpenterNodeClaim(spec);
163
+ }
164
+ /**
165
+ * Creates a Karpenter EC2NodeClass resource
166
+ * @param spec - EC2NodeClass specification
167
+ * @returns Created EC2NodeClass ApiObject
168
+ *
169
+ * @example
170
+ * ```typescript
171
+ * rutter.addKarpenterEC2NodeClass({
172
+ * name: 'default',
173
+ * amiFamily: 'AL2',
174
+ * subnetSelectorTerms: [{ tags: { 'karpenter.sh/discovery': 'my-cluster' } }],
175
+ * securityGroupSelectorTerms: [{ tags: { 'karpenter.sh/discovery': 'my-cluster' } }]
176
+ * });
177
+ * ```
178
+ *
179
+ * @since 2.7.0
180
+ */
181
+ addKarpenterEC2NodeClass(spec) {
182
+ return this.karpenterResources.addKarpenterEC2NodeClass(spec);
183
+ }
184
+ /**
185
+ * Creates a Karpenter NodePool with optimized disruption settings for cost efficiency
186
+ * @param spec - NodePool specification with disruption optimization
187
+ * @returns Created NodePool ApiObject
188
+ *
189
+ * @example
190
+ * ```typescript
191
+ * rutter.addKarpenterNodePoolWithDisruption({
192
+ * name: 'cost-optimized',
193
+ * nodeClassRef: {
194
+ * apiVersion: 'karpenter.k8s.aws/v1beta1',
195
+ * kind: 'EC2NodeClass',
196
+ * name: 'default'
197
+ * },
198
+ * consolidationPolicy: 'WhenEmptyOrUnderutilized',
199
+ * consolidateAfter: '30s',
200
+ * expireAfter: '24h',
201
+ * disruptionBudgets: [
202
+ * { nodes: '20%' },
203
+ * { nodes: '0', schedule: '0 9 * * 1-5', duration: '8h' }
204
+ * ]
205
+ * });
206
+ * ```
207
+ *
208
+ * @since 2.7.1
209
+ */
210
+ addKarpenterNodePoolWithDisruption(spec) {
211
+ return this.karpenterResources.addKarpenterNodePoolWithDisruption(spec);
212
+ }
213
+ /**
214
+ * Creates a Karpenter NodePool with scheduling constraints and priorities
215
+ * @param spec - NodePool specification with scheduling optimization
216
+ * @returns Created NodePool ApiObject
217
+ *
218
+ * @example
219
+ * ```typescript
220
+ * rutter.addKarpenterNodePoolWithScheduling({
221
+ * name: 'gpu-workloads',
222
+ * nodeClassRef: {
223
+ * apiVersion: 'karpenter.k8s.aws/v1beta1',
224
+ * kind: 'EC2NodeClass',
225
+ * name: 'gpu-nodeclass'
226
+ * },
227
+ * requirements: [
228
+ * { key: 'node.kubernetes.io/instance-type', operator: 'In', values: ['g4dn.xlarge', 'g4dn.2xlarge'] }
229
+ * ],
230
+ * taints: [
231
+ * { key: 'nvidia.com/gpu', effect: 'NoSchedule' }
232
+ * ],
233
+ * terminationGracePeriod: '60s',
234
+ * weight: 100
235
+ * });
236
+ * ```
237
+ *
238
+ * @since 2.7.1
239
+ */
240
+ addKarpenterNodePoolWithScheduling(spec) {
241
+ return this.karpenterResources.addKarpenterNodePoolWithScheduling(spec);
242
+ }
243
+ // AWS ECR ServiceAccount
244
+ /**
245
+ * Creates a ServiceAccount with ECR access annotations
246
+ * @param spec - ECR ServiceAccount specification
247
+ * @returns Created ServiceAccount ApiObject
248
+ *
249
+ * @example
250
+ * ```typescript
251
+ * rutter.addAWSECRServiceAccount({
252
+ * name: 'ecr-service-account',
253
+ * roleArn: 'arn:aws:iam::ACCOUNT_ID:role/ECRAccessRole'
254
+ * });
255
+ * ```
256
+ *
257
+ * @since 2.7.0
258
+ */
259
+ addAWSECRServiceAccount(spec) {
260
+ return this.awsResources.addECRServiceAccount(spec);
261
+ }
262
+ // Utility methods
263
+ /**
264
+ * Adds a Kubernetes manifest to the chart using CDK8S
265
+ *
266
+ * This method allows you to add any Kubernetes manifest (CRDs, custom resources, etc.)
267
+ * either as YAML strings or as objects. The manifest will be processed using CDK8S
268
+ * for better type safety and validation.
269
+ *
270
+ * @param yamlOrObject - Kubernetes manifest as YAML string or object
271
+ * @param id - Unique identifier for the manifest (required for multiple manifests)
272
+ *
273
+ * @example
274
+ * ```typescript
275
+ * // Using YAML string for CRD
276
+ * rutter.addManifest(`
277
+ * apiVersion: apiextensions.k8s.io/v1
278
+ * kind: CustomResourceDefinition
279
+ * metadata:
280
+ * name: example.com
281
+ * spec:
282
+ * group: example.com
283
+ * versions: []
284
+ * `, 'my-crd');
285
+ *
286
+ * // Using object for any Kubernetes resource
287
+ * rutter.addManifest({
288
+ * apiVersion: 'v1',
289
+ * kind: 'ConfigMap',
290
+ * metadata: { name: 'my-config' },
291
+ * data: { key: 'value' }
292
+ * }, 'my-configmap');
293
+ * ```
294
+ *
295
+ * @since 3.0.0
296
+ * @note Consider using cdk8s-plus constructs for better type safety when available
297
+ */
298
+ addManifest(yamlOrObject, id) {
299
+ let manifestObject;
300
+ if (typeof yamlOrObject === 'string') {
301
+ // Parse YAML string to object
302
+ try {
303
+ manifestObject = YAML.parse(yamlOrObject);
304
+ }
305
+ catch (error) {
306
+ throw new Error(`Invalid YAML provided to addManifest(): ${error instanceof Error ? error.message : 'Unknown error'}`);
307
+ }
308
+ }
309
+ else if (typeof yamlOrObject === 'object' && yamlOrObject !== null) {
310
+ // Use object directly
311
+ manifestObject = yamlOrObject;
312
+ }
313
+ else {
314
+ throw new Error('addManifest() requires either a YAML string or an object');
315
+ }
316
+ // Validate basic Kubernetes manifest structure
317
+ this.validateManifestStructure(manifestObject);
318
+ // Create CDK8S ApiObject from the manifest
319
+ return new ApiObject(this.chart, id, {
320
+ apiVersion: manifestObject['apiVersion'],
321
+ kind: manifestObject['kind'],
322
+ metadata: manifestObject['metadata'],
323
+ spec: manifestObject['spec'],
324
+ });
325
+ }
326
+ /**
327
+ * Adds a Kubernetes manifest wrapped in a Helm conditional
328
+ *
329
+ * This method creates a manifest that will only be rendered if the specified
330
+ * condition evaluates to true. The condition is checked against .Values in Helm.
331
+ *
332
+ * @param manifestObject - JavaScript object representing the Kubernetes manifest
333
+ * @param condition - Path to the condition value in .Values (e.g., 'createNamespace')
334
+ * @param id - Unique identifier for this manifest within the chart
335
+ * @returns The created ApiObject instance
336
+ * @throws {Error} If the manifest structure is incorrect or condition path is invalid
337
+ *
338
+ * @example
339
+ * ```typescript
340
+ * // Add a namespace that's only created if .Values.createNamespace is true
341
+ * rutter.addConditionalManifest(
342
+ * {
343
+ * apiVersion: 'v1',
344
+ * kind: 'Namespace',
345
+ * metadata: {
346
+ * name: valuesRef('namespace'),
347
+ * labels: {
348
+ * environment: conditionalRef('environment', 'environment')
349
+ * }
350
+ * }
351
+ * },
352
+ * 'createNamespace',
353
+ * 'namespace'
354
+ * );
355
+ * ```
356
+ *
357
+ * @since 2.7.4
358
+ */
359
+ addConditionalManifest(manifestObject, condition, id) {
360
+ // Validate condition path
361
+ if (!condition || typeof condition !== 'string') {
362
+ throw new Error('Condition must be a non-empty string');
363
+ }
364
+ // Validate basic Kubernetes manifest structure
365
+ this.validateManifestStructure(manifestObject);
366
+ // Store the manifest as a conditional asset that will be processed during write
367
+ const conditionalAsset = {
368
+ id,
369
+ yaml: `{{- if .Values.${condition} }}\n${YAML.stringify(manifestObject)}{{- end }}`,
370
+ target: 'templates',
371
+ };
372
+ this.assets.push(conditionalAsset);
373
+ // Create a placeholder CDK8S ApiObject for consistency
374
+ return new ApiObject(this.chart, id, {
375
+ apiVersion: manifestObject['apiVersion'],
376
+ kind: manifestObject['kind'],
377
+ metadata: {
378
+ ...(manifestObject['metadata'] || {}),
379
+ annotations: {
380
+ ...(manifestObject['metadata']?.['annotations'] || {}),
381
+ 'timonel.sh/conditional': condition,
382
+ },
383
+ },
384
+ spec: manifestObject['spec'],
385
+ });
386
+ }
387
+ /**
388
+ * Validates the structure of a Kubernetes manifest object
389
+ * @param manifest - The manifest object to validate
390
+ * @private
391
+ * @since 3.0.0
392
+ */
393
+ validateManifestStructure(manifest) {
394
+ if (!manifest['apiVersion'] || typeof manifest['apiVersion'] !== 'string') {
395
+ throw new Error('Kubernetes manifest must have a valid apiVersion');
396
+ }
397
+ if (!manifest['kind'] || typeof manifest['kind'] !== 'string') {
398
+ throw new Error('Kubernetes manifest must have a valid kind');
399
+ }
400
+ if (!manifest['metadata'] ||
401
+ typeof manifest['metadata'] !== 'object' ||
402
+ manifest['metadata'] === null) {
403
+ throw new Error('Kubernetes manifest must have valid metadata');
404
+ }
405
+ const metadata = manifest['metadata'];
406
+ if (!metadata['name'] || typeof metadata['name'] !== 'string') {
407
+ throw new Error('Kubernetes manifest metadata must have a valid name');
408
+ }
409
+ // Additional validation for specific resource types
410
+ const kind = manifest['kind'];
411
+ if (kind === 'CustomResourceDefinition') {
412
+ if (!manifest['spec'] || typeof manifest['spec'] !== 'object' || manifest['spec'] === null) {
413
+ throw new Error('CustomResourceDefinition must have a valid spec');
414
+ }
415
+ const spec = manifest['spec'];
416
+ if (!spec['group'] || typeof spec['group'] !== 'string') {
417
+ throw new Error('CustomResourceDefinition spec must have a valid group');
418
+ }
419
+ if (!Array.isArray(spec['versions']) || spec['versions'].length === 0) {
420
+ throw new Error('CustomResourceDefinition must have at least one version in spec.versions');
421
+ }
422
+ }
423
+ }
424
+ /**
425
+ * Gets chart metadata
426
+ * @returns Chart metadata
427
+ *
428
+ * @since 1.0.0
429
+ */
430
+ getMeta() {
431
+ return { ...this.meta };
432
+ }
433
+ /**
434
+ * Gets default values
435
+ * @returns Default values object
436
+ *
437
+ * @since 1.0.0
438
+ */
439
+ getDefaultValues() {
440
+ return { ...this.defaultValues };
441
+ }
442
+ /**
443
+ * Gets environment-specific values
444
+ * @returns Environment values object
445
+ *
446
+ * @since 1.0.0
447
+ */
448
+ getEnvValues() {
449
+ return { ...this.envValues };
450
+ }
451
+ /**
452
+ * Gets all assets (CRDs, etc.)
453
+ * @returns Array of assets
454
+ *
455
+ * @since 1.0.0
456
+ */
457
+ getAssets() {
458
+ return [...this.assets];
459
+ }
460
+ /**
461
+ * Converts the chart to SynthAsset array for HelmChartWriter
462
+ * @returns Array of synthesized assets
463
+ *
464
+ * @since 2.4.0
465
+ */
466
+ toSynthArray() {
467
+ // Get ApiObject IDs before synthesis
468
+ const apiObjectIds = [];
469
+ for (const child of this.chart.node.children) {
470
+ if (child instanceof ApiObject) {
471
+ apiObjectIds.push(child.node.id);
472
+ }
473
+ }
474
+ // Use cdk8s Testing.synth to obtain manifest objects
475
+ const manifestObjs = Testing.synth(this.chart);
476
+ // Enforce common labels best-practice on all rendered objects
477
+ const enriched = manifestObjs.map((obj) => {
478
+ if (obj && typeof obj === 'object') {
479
+ const o = obj;
480
+ o.metadata = o.metadata ?? {};
481
+ o.metadata.labels = o.metadata.labels ?? {};
482
+ const labels = o.metadata.labels;
483
+ const defaults = {
484
+ 'helm.sh/chart': '{{ .Chart.Name }}-{{ .Chart.Version }}',
485
+ 'app.kubernetes.io/name': include(Rutter.HELPER_NAME),
486
+ 'app.kubernetes.io/instance': helm.releaseName,
487
+ 'app.kubernetes.io/version': helm.chartVersion,
488
+ 'app.kubernetes.io/managed-by': '{{ .Release.Service }}',
489
+ 'app.kubernetes.io/part-of': helm.chartName,
490
+ };
491
+ // Apply defaults only if not already set
492
+ for (const [key, value] of Object.entries(defaults)) {
493
+ if (!(key in labels)) {
494
+ // eslint-disable-next-line security/detect-object-injection -- Safe: controlled label assignment
495
+ labels[key] = value;
496
+ }
497
+ }
498
+ }
499
+ return obj;
500
+ });
501
+ const synthAssets = [];
502
+ if (this.props.singleManifestFile) {
503
+ // Combine all resources into single manifest
504
+ const combinedYaml = enriched
505
+ .map((obj) => this.processHelmTemplates(YAML.stringify(obj).trim()))
506
+ .filter(Boolean)
507
+ .join('\n---\n');
508
+ const manifestId = this.props.manifestPrefix ?? 'manifests';
509
+ synthAssets.push({ id: manifestId, yaml: combinedYaml });
510
+ }
511
+ else {
512
+ // Create separate files for each resource (default behavior)
513
+ enriched.forEach((obj, index) => {
514
+ const yaml = this.processHelmTemplates(YAML.stringify(obj).trim());
515
+ if (yaml) {
516
+ // Use descriptive name from ApiObject ID if available, otherwise fallback to generic name
517
+ // eslint-disable-next-line security/detect-object-injection
518
+ const apiObjectId = apiObjectIds[index];
519
+ const manifestId = apiObjectId || `manifest-${index + 1}`;
520
+ synthAssets.push({ id: manifestId, yaml });
521
+ }
522
+ });
523
+ }
524
+ // Add any additional assets (CRDs, etc.)
525
+ this.assets.forEach((asset) => {
526
+ synthAssets.push({ id: asset.id, yaml: asset.yaml });
527
+ });
528
+ return synthAssets;
529
+ }
530
+ /**
531
+ * Process YAML content to remove quotes from Helm templates
532
+ * This fixes the issue where YAML.stringify adds quotes around Helm template expressions
533
+ * Removes quotes from all Helm template expressions
534
+ */
535
+ processHelmTemplates(yaml) {
536
+ // Remove quotes from Helm template expressions
537
+ // Match patterns like "{{ .Values.replicas | int }}", "{{ .Release.Name }}", etc.
538
+ // Handle both key-value pairs and standalone values
539
+ return yaml
540
+ .replace(/": "\{\{([^}]+)\}\}"/g, ': {{ $1 }}')
541
+ .replace(/: "\{\{([^}]+)\}\}"/g, ': {{ $1 }}')
542
+ .replace(/"\{\{([^}]+)\}\}"/g, '{{ $1 }}')
543
+ .replace(/": "\.nan"/g, ': .nan');
544
+ }
545
+ /**
546
+ * Writes the Helm chart to the specified output directory
547
+ * @param outDir - Output directory path
548
+ *
549
+ * @since 1.0.0
550
+ */
551
+ write(outDir) {
552
+ // Generate helpers template
553
+ let helpersContent;
554
+ if (this.props.helpersTpl) {
555
+ if (typeof this.props.helpersTpl === 'string') {
556
+ helpersContent = this.props.helpersTpl;
557
+ }
558
+ else {
559
+ helpersContent = this.props.helpersTpl
560
+ .map((helper) => `{{/*
561
+ ${helper.name}
562
+ */}}
563
+ {{- define "${helper.name}" -}}
564
+ ${helper.template}
565
+ {{- end }}`)
566
+ .join('\n\n');
567
+ }
568
+ }
569
+ else {
570
+ // Auto-generate standard helpers
571
+ helpersContent = generateHelpersTemplate(this.props.cloudProvider);
572
+ }
573
+ HelmChartWriter.write({
574
+ outDir,
575
+ meta: this.meta,
576
+ defaultValues: this.defaultValues,
577
+ envValues: this.envValues,
578
+ assets: this.toSynthArray(),
579
+ helpersTpl: helpersContent,
580
+ });
581
+ }
582
+ }
583
+ // Constants for labels
584
+ Rutter.HELPER_NAME = 'chart.name';
585
+ //# sourceMappingURL=rutter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rutter.js","sourceRoot":"","sources":["../../src/lib/rutter.ts"],"names":[],"mappings":"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"}