@intentius/chant-lexicon-k8s 0.7.0 → 0.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 (257) hide show
  1. package/dist/actions/apps.d.ts +44 -0
  2. package/dist/actions/apps.d.ts.map +1 -0
  3. package/dist/actions/batch.d.ts +22 -0
  4. package/dist/actions/batch.d.ts.map +1 -0
  5. package/dist/actions/core.d.ts +131 -0
  6. package/dist/actions/core.d.ts.map +1 -0
  7. package/dist/actions/index.d.ts +9 -0
  8. package/dist/actions/index.d.ts.map +1 -0
  9. package/dist/actions/networking.d.ts +27 -0
  10. package/dist/actions/networking.d.ts.map +1 -0
  11. package/dist/actions/rbac.d.ts +40 -0
  12. package/dist/actions/rbac.d.ts.map +1 -0
  13. package/dist/codegen/docs-cli.d.ts +2 -0
  14. package/dist/codegen/docs-cli.d.ts.map +1 -0
  15. package/dist/codegen/docs.d.ts +12 -0
  16. package/dist/codegen/docs.d.ts.map +1 -0
  17. package/dist/codegen/generate-cli.d.ts +6 -0
  18. package/dist/codegen/generate-cli.d.ts.map +1 -0
  19. package/dist/codegen/generate-lexicon.d.ts +21 -0
  20. package/dist/codegen/generate-lexicon.d.ts.map +1 -0
  21. package/dist/codegen/generate-typescript.d.ts +11 -0
  22. package/dist/codegen/generate-typescript.d.ts.map +1 -0
  23. package/dist/codegen/generate.d.ts +19 -0
  24. package/dist/codegen/generate.d.ts.map +1 -0
  25. package/dist/codegen/naming.d.ts +15 -0
  26. package/dist/codegen/naming.d.ts.map +1 -0
  27. package/dist/codegen/package.d.ts +11 -0
  28. package/dist/codegen/package.d.ts.map +1 -0
  29. package/dist/codegen/patches.d.ts +31 -0
  30. package/dist/codegen/patches.d.ts.map +1 -0
  31. package/dist/codegen/typecheck.d.ts +5 -0
  32. package/dist/codegen/typecheck.d.ts.map +1 -0
  33. package/dist/codegen/versions.d.ts +20 -0
  34. package/dist/codegen/versions.d.ts.map +1 -0
  35. package/dist/composites/adot-collector.d.ts +66 -0
  36. package/dist/composites/adot-collector.d.ts.map +1 -0
  37. package/dist/composites/agic-ingress.d.ts +73 -0
  38. package/dist/composites/agic-ingress.d.ts.map +1 -0
  39. package/dist/composites/aks-external-dns-agent.d.ts +65 -0
  40. package/dist/composites/aks-external-dns-agent.d.ts.map +1 -0
  41. package/dist/composites/alb-ingress.d.ts +77 -0
  42. package/dist/composites/alb-ingress.d.ts.map +1 -0
  43. package/dist/composites/argo-app.d.ts +168 -0
  44. package/dist/composites/argo-app.d.ts.map +1 -0
  45. package/dist/composites/autoscaled-service.d.ts +106 -0
  46. package/dist/composites/autoscaled-service.d.ts.map +1 -0
  47. package/dist/composites/azure-disk-storage-class.d.ts +48 -0
  48. package/dist/composites/azure-disk-storage-class.d.ts.map +1 -0
  49. package/dist/composites/azure-file-storage-class.d.ts +46 -0
  50. package/dist/composites/azure-file-storage-class.d.ts.map +1 -0
  51. package/dist/composites/azure-monitor-collector.d.ts +63 -0
  52. package/dist/composites/azure-monitor-collector.d.ts.map +1 -0
  53. package/dist/composites/batch-job.d.ts +85 -0
  54. package/dist/composites/batch-job.d.ts.map +1 -0
  55. package/dist/composites/cockroachdb-cluster.d.ts +132 -0
  56. package/dist/composites/cockroachdb-cluster.d.ts.map +1 -0
  57. package/dist/composites/cockroachdb-region-stack.d.ts +164 -0
  58. package/dist/composites/cockroachdb-region-stack.d.ts.map +1 -0
  59. package/dist/composites/config-connector-context.d.ts +41 -0
  60. package/dist/composites/config-connector-context.d.ts.map +1 -0
  61. package/dist/composites/configured-app.d.ts +91 -0
  62. package/dist/composites/configured-app.d.ts.map +1 -0
  63. package/dist/composites/cron-workload.d.ts +76 -0
  64. package/dist/composites/cron-workload.d.ts.map +1 -0
  65. package/dist/composites/ebs-storage-class.d.ts +55 -0
  66. package/dist/composites/ebs-storage-class.d.ts.map +1 -0
  67. package/dist/composites/efs-storage-class.d.ts +47 -0
  68. package/dist/composites/efs-storage-class.d.ts.map +1 -0
  69. package/dist/composites/external-dns-agent.d.ts +58 -0
  70. package/dist/composites/external-dns-agent.d.ts.map +1 -0
  71. package/dist/composites/filestore-storage-class.d.ts +46 -0
  72. package/dist/composites/filestore-storage-class.d.ts.map +1 -0
  73. package/dist/composites/fluent-bit-agent.d.ts +66 -0
  74. package/dist/composites/fluent-bit-agent.d.ts.map +1 -0
  75. package/dist/composites/gce-ingress.d.ts +72 -0
  76. package/dist/composites/gce-ingress.d.ts.map +1 -0
  77. package/dist/composites/gce-pd-storage-class.d.ts +48 -0
  78. package/dist/composites/gce-pd-storage-class.d.ts.map +1 -0
  79. package/dist/composites/gke-external-dns-agent.d.ts +59 -0
  80. package/dist/composites/gke-external-dns-agent.d.ts.map +1 -0
  81. package/dist/composites/gke-fluent-bit-agent.d.ts +64 -0
  82. package/dist/composites/gke-fluent-bit-agent.d.ts.map +1 -0
  83. package/dist/composites/gke-gateway.d.ts +63 -0
  84. package/dist/composites/gke-gateway.d.ts.map +1 -0
  85. package/dist/composites/gke-otel-collector.d.ts +64 -0
  86. package/dist/composites/gke-otel-collector.d.ts.map +1 -0
  87. package/dist/composites/index.d.ts +86 -0
  88. package/dist/composites/index.d.ts.map +1 -0
  89. package/dist/composites/irsa-service-account.d.ts +54 -0
  90. package/dist/composites/irsa-service-account.d.ts.map +1 -0
  91. package/dist/composites/metrics-server.d.ts +56 -0
  92. package/dist/composites/metrics-server.d.ts.map +1 -0
  93. package/dist/composites/monitored-service.d.ts +92 -0
  94. package/dist/composites/monitored-service.d.ts.map +1 -0
  95. package/dist/composites/namespace-env.d.ts +64 -0
  96. package/dist/composites/namespace-env.d.ts.map +1 -0
  97. package/dist/composites/network-isolated-app.d.ts +88 -0
  98. package/dist/composites/network-isolated-app.d.ts.map +1 -0
  99. package/dist/composites/node-agent.d.ts +87 -0
  100. package/dist/composites/node-agent.d.ts.map +1 -0
  101. package/dist/composites/ray-cluster.d.ts +179 -0
  102. package/dist/composites/ray-cluster.d.ts.map +1 -0
  103. package/dist/composites/ray-job.d.ts +88 -0
  104. package/dist/composites/ray-job.d.ts.map +1 -0
  105. package/dist/composites/ray-service.d.ts +87 -0
  106. package/dist/composites/ray-service.d.ts.map +1 -0
  107. package/dist/composites/secure-ingress.d.ts +66 -0
  108. package/dist/composites/secure-ingress.d.ts.map +1 -0
  109. package/dist/composites/security-context.d.ts +17 -0
  110. package/dist/composites/security-context.d.ts.map +1 -0
  111. package/dist/composites/sidecar-app.d.ts +121 -0
  112. package/dist/composites/sidecar-app.d.ts.map +1 -0
  113. package/dist/composites/stateful-app.d.ts +82 -0
  114. package/dist/composites/stateful-app.d.ts.map +1 -0
  115. package/dist/composites/web-app.d.ts +95 -0
  116. package/dist/composites/web-app.d.ts.map +1 -0
  117. package/dist/composites/worker-pool.d.ts +96 -0
  118. package/dist/composites/worker-pool.d.ts.map +1 -0
  119. package/dist/composites/workload-identity-sa.d.ts +54 -0
  120. package/dist/composites/workload-identity-sa.d.ts.map +1 -0
  121. package/dist/composites/workload-identity-service-account.d.ts +54 -0
  122. package/dist/composites/workload-identity-service-account.d.ts.map +1 -0
  123. package/dist/coverage.d.ts +14 -0
  124. package/dist/coverage.d.ts.map +1 -0
  125. package/dist/crd/crd-sources.d.ts +10 -0
  126. package/dist/crd/crd-sources.d.ts.map +1 -0
  127. package/dist/crd/loader.d.ts +17 -0
  128. package/dist/crd/loader.d.ts.map +1 -0
  129. package/dist/crd/parser.d.ts +21 -0
  130. package/dist/crd/parser.d.ts.map +1 -0
  131. package/dist/crd/types.d.ts +55 -0
  132. package/dist/crd/types.d.ts.map +1 -0
  133. package/dist/default-labels.d.ts +84 -0
  134. package/dist/default-labels.d.ts.map +1 -0
  135. package/dist/describe-resources.d.ts +30 -0
  136. package/dist/describe-resources.d.ts.map +1 -0
  137. package/dist/detect.d.ts +4 -0
  138. package/dist/detect.d.ts.map +1 -0
  139. package/dist/export-resources.d.ts +8 -0
  140. package/dist/export-resources.d.ts.map +1 -0
  141. package/dist/generated/index.d.ts +295 -0
  142. package/dist/generated/index.d.ts.map +1 -0
  143. package/dist/generated/runtime.d.ts +5 -0
  144. package/dist/generated/runtime.d.ts.map +1 -0
  145. package/dist/import/generator.d.ts +25 -0
  146. package/dist/import/generator.d.ts.map +1 -0
  147. package/dist/import/live-export.d.ts +18 -0
  148. package/dist/import/live-export.d.ts.map +1 -0
  149. package/dist/import/parser.d.ts +19 -0
  150. package/dist/import/parser.d.ts.map +1 -0
  151. package/dist/index.d.ts +20 -0
  152. package/dist/index.d.ts.map +1 -0
  153. package/dist/integrity.json +2 -2
  154. package/dist/lint/post-synth/argo-helpers.d.ts +24 -0
  155. package/dist/lint/post-synth/argo-helpers.d.ts.map +1 -0
  156. package/dist/lint/post-synth/argo002.d.ts +12 -0
  157. package/dist/lint/post-synth/argo002.d.ts.map +1 -0
  158. package/dist/lint/post-synth/argo003.d.ts +14 -0
  159. package/dist/lint/post-synth/argo003.d.ts.map +1 -0
  160. package/dist/lint/post-synth/argo005.d.ts +3 -0
  161. package/dist/lint/post-synth/argo005.d.ts.map +1 -0
  162. package/dist/lint/post-synth/index.d.ts +3 -0
  163. package/dist/lint/post-synth/index.d.ts.map +1 -0
  164. package/dist/lint/post-synth/k8s-helpers.d.ts +97 -0
  165. package/dist/lint/post-synth/k8s-helpers.d.ts.map +1 -0
  166. package/dist/lint/post-synth/wk8005.d.ts +10 -0
  167. package/dist/lint/post-synth/wk8005.d.ts.map +1 -0
  168. package/dist/lint/post-synth/wk8006.d.ts +9 -0
  169. package/dist/lint/post-synth/wk8006.d.ts.map +1 -0
  170. package/dist/lint/post-synth/wk8041.d.ts +10 -0
  171. package/dist/lint/post-synth/wk8041.d.ts.map +1 -0
  172. package/dist/lint/post-synth/wk8042.d.ts +10 -0
  173. package/dist/lint/post-synth/wk8042.d.ts.map +1 -0
  174. package/dist/lint/post-synth/wk8101.d.ts +10 -0
  175. package/dist/lint/post-synth/wk8101.d.ts.map +1 -0
  176. package/dist/lint/post-synth/wk8102.d.ts +9 -0
  177. package/dist/lint/post-synth/wk8102.d.ts.map +1 -0
  178. package/dist/lint/post-synth/wk8103.d.ts +9 -0
  179. package/dist/lint/post-synth/wk8103.d.ts.map +1 -0
  180. package/dist/lint/post-synth/wk8104.d.ts +10 -0
  181. package/dist/lint/post-synth/wk8104.d.ts.map +1 -0
  182. package/dist/lint/post-synth/wk8105.d.ts +10 -0
  183. package/dist/lint/post-synth/wk8105.d.ts.map +1 -0
  184. package/dist/lint/post-synth/wk8201.d.ts +10 -0
  185. package/dist/lint/post-synth/wk8201.d.ts.map +1 -0
  186. package/dist/lint/post-synth/wk8202.d.ts +10 -0
  187. package/dist/lint/post-synth/wk8202.d.ts.map +1 -0
  188. package/dist/lint/post-synth/wk8203.d.ts +10 -0
  189. package/dist/lint/post-synth/wk8203.d.ts.map +1 -0
  190. package/dist/lint/post-synth/wk8204.d.ts +14 -0
  191. package/dist/lint/post-synth/wk8204.d.ts.map +1 -0
  192. package/dist/lint/post-synth/wk8205.d.ts +10 -0
  193. package/dist/lint/post-synth/wk8205.d.ts.map +1 -0
  194. package/dist/lint/post-synth/wk8207.d.ts +10 -0
  195. package/dist/lint/post-synth/wk8207.d.ts.map +1 -0
  196. package/dist/lint/post-synth/wk8208.d.ts +10 -0
  197. package/dist/lint/post-synth/wk8208.d.ts.map +1 -0
  198. package/dist/lint/post-synth/wk8209.d.ts +10 -0
  199. package/dist/lint/post-synth/wk8209.d.ts.map +1 -0
  200. package/dist/lint/post-synth/wk8301.d.ts +15 -0
  201. package/dist/lint/post-synth/wk8301.d.ts.map +1 -0
  202. package/dist/lint/post-synth/wk8302.d.ts +9 -0
  203. package/dist/lint/post-synth/wk8302.d.ts.map +1 -0
  204. package/dist/lint/post-synth/wk8303.d.ts +10 -0
  205. package/dist/lint/post-synth/wk8303.d.ts.map +1 -0
  206. package/dist/lint/post-synth/wk8304.d.ts +10 -0
  207. package/dist/lint/post-synth/wk8304.d.ts.map +1 -0
  208. package/dist/lint/post-synth/wk8305.d.ts +9 -0
  209. package/dist/lint/post-synth/wk8305.d.ts.map +1 -0
  210. package/dist/lint/post-synth/wk8306.d.ts +11 -0
  211. package/dist/lint/post-synth/wk8306.d.ts.map +1 -0
  212. package/dist/lint/post-synth/wk8401.d.ts +11 -0
  213. package/dist/lint/post-synth/wk8401.d.ts.map +1 -0
  214. package/dist/lint/post-synth/wk8402.d.ts +10 -0
  215. package/dist/lint/post-synth/wk8402.d.ts.map +1 -0
  216. package/dist/lint/post-synth/wk8403.d.ts +10 -0
  217. package/dist/lint/post-synth/wk8403.d.ts.map +1 -0
  218. package/dist/lint/rules/argo-appset-single-project.d.ts +18 -0
  219. package/dist/lint/rules/argo-appset-single-project.d.ts.map +1 -0
  220. package/dist/lint/rules/argo-ast.d.ts +37 -0
  221. package/dist/lint/rules/argo-ast.d.ts.map +1 -0
  222. package/dist/lint/rules/argo-automated-prune.d.ts +20 -0
  223. package/dist/lint/rules/argo-automated-prune.d.ts.map +1 -0
  224. package/dist/lint/rules/hardcoded-namespace.d.ts +13 -0
  225. package/dist/lint/rules/hardcoded-namespace.d.ts.map +1 -0
  226. package/dist/lint/rules/latest-image-tag.d.ts +3 -0
  227. package/dist/lint/rules/latest-image-tag.d.ts.map +1 -0
  228. package/dist/lint/rules/missing-resource-limits.d.ts +3 -0
  229. package/dist/lint/rules/missing-resource-limits.d.ts.map +1 -0
  230. package/dist/lsp/completions.d.ts +6 -0
  231. package/dist/lsp/completions.d.ts.map +1 -0
  232. package/dist/lsp/hover.d.ts +6 -0
  233. package/dist/lsp/hover.d.ts.map +1 -0
  234. package/dist/manifest.json +1 -1
  235. package/dist/micro-time.d.ts +43 -0
  236. package/dist/micro-time.d.ts.map +1 -0
  237. package/dist/package-cli.d.ts +6 -0
  238. package/dist/package-cli.d.ts.map +1 -0
  239. package/dist/plugin.d.ts +9 -0
  240. package/dist/plugin.d.ts.map +1 -0
  241. package/dist/serializer.d.ts +12 -0
  242. package/dist/serializer.d.ts.map +1 -0
  243. package/dist/spec/fetch.d.ts +34 -0
  244. package/dist/spec/fetch.d.ts.map +1 -0
  245. package/dist/spec/parse.d.ts +73 -0
  246. package/dist/spec/parse.d.ts.map +1 -0
  247. package/dist/validate-cli.d.ts +6 -0
  248. package/dist/validate-cli.d.ts.map +1 -0
  249. package/dist/validate.d.ts +15 -0
  250. package/dist/validate.d.ts.map +1 -0
  251. package/dist/variables.d.ts +35 -0
  252. package/dist/variables.d.ts.map +1 -0
  253. package/package.json +24 -5
  254. package/src/composites/argo-app.ts +3 -3
  255. package/src/detect.ts +9 -0
  256. package/src/lint/post-synth/index.ts +63 -0
  257. package/src/plugin.ts +4 -12
@@ -0,0 +1,73 @@
1
+ /**
2
+ * AgicIngress composite — Ingress with Azure Application Gateway Ingress Controller annotations.
3
+ *
4
+ * @aks Full `appgw.ingress.kubernetes.io/*` annotation set including SSL redirect,
5
+ * WAF policy, backend path prefix, and cookie-based affinity.
6
+ */
7
+ import { Ingress } from "../generated/index.js";
8
+ export interface AgicIngressHost {
9
+ /** Hostname (e.g., "api.example.com"). */
10
+ hostname: string;
11
+ /** Path rules for this host. */
12
+ paths: Array<{
13
+ path: string;
14
+ pathType?: string;
15
+ serviceName: string;
16
+ servicePort: number;
17
+ }>;
18
+ }
19
+ export interface AgicIngressProps {
20
+ /** Ingress name — used in metadata and labels. */
21
+ name: string;
22
+ /** Host definitions with paths. */
23
+ hosts: AgicIngressHost[];
24
+ /** Azure Key Vault certificate URI or secret name for TLS. */
25
+ certificateArn?: string;
26
+ /** WAF policy resource ID. */
27
+ wafPolicyId?: string;
28
+ /** Health check path for backend. */
29
+ healthCheckPath?: string;
30
+ /** Enable HTTP->HTTPS redirect (default: true when certificateArn set). */
31
+ sslRedirect?: boolean;
32
+ /** Backend path prefix override. */
33
+ backendPathPrefix?: string;
34
+ /** Enable cookie-based affinity (default: false). */
35
+ cookieAffinity?: boolean;
36
+ /** Additional annotations on the Ingress. */
37
+ annotations?: Record<string, string>;
38
+ /** Additional labels to apply to all resources. */
39
+ labels?: Record<string, string>;
40
+ /** Namespace for all resources. */
41
+ namespace?: string;
42
+ /** Per-member defaults for fine-grained overrides. */
43
+ defaults?: {
44
+ ingress?: Partial<Record<string, unknown>>;
45
+ };
46
+ }
47
+ export interface AgicIngressResult {
48
+ ingress: InstanceType<typeof Ingress>;
49
+ }
50
+ /**
51
+ * Create an AgicIngress composite — returns prop objects for
52
+ * an Ingress with Azure Application Gateway Ingress Controller annotations.
53
+ *
54
+ * @aks
55
+ * @example
56
+ * ```ts
57
+ * import { AgicIngress } from "@intentius/chant-lexicon-k8s";
58
+ *
59
+ * const { ingress } = AgicIngress({
60
+ * name: "api-ingress",
61
+ * hosts: [
62
+ * {
63
+ * hostname: "api.example.com",
64
+ * paths: [{ path: "/", serviceName: "api", servicePort: 80 }],
65
+ * },
66
+ * ],
67
+ * certificateArn: "keyvault-secret-name",
68
+ * wafPolicyId: "/subscriptions/.../Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/my-waf",
69
+ * });
70
+ * ```
71
+ */
72
+ export declare const AgicIngress: import("@intentius/chant").CompositeDefinition<AgicIngressProps, import("@intentius/chant").CompositeMembers>;
73
+ //# sourceMappingURL=agic-ingress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agic-ingress.d.ts","sourceRoot":"","sources":["../../src/composites/agic-ingress.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,WAAW,eAAe;IAC9B,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,KAAK,EAAE,KAAK,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,gBAAgB;IAC/B,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,8DAA8D;IAC9D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oCAAoC;IACpC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qDAAqD;IACrD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,QAAQ,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;KAC5C,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,YAAY,CAAC,OAAO,OAAO,CAAC,CAAC;CACvC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,WAAW,+GA8EP,CAAC"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * AksExternalDnsAgent composite — Deployment + ServiceAccount + ClusterRole + ClusterRoleBinding.
3
+ *
4
+ * @aks Like ExternalDnsAgent but uses --provider=azure and AKS Workload Identity
5
+ * instead of IRSA for Azure DNS management.
6
+ */
7
+ import { Deployment, ServiceAccount, ClusterRole, ClusterRoleBinding } from "../generated/index.js";
8
+ export interface AksExternalDnsAgentProps {
9
+ /** Azure managed identity client ID for Workload Identity. */
10
+ clientId: string;
11
+ /** Azure resource group containing the DNS zone. */
12
+ resourceGroup: string;
13
+ /** Azure subscription ID. */
14
+ subscriptionId: string;
15
+ /** Azure tenant ID. */
16
+ tenantId: string;
17
+ /** Domain filters — only manage DNS records for these domains. */
18
+ domainFilters: string[];
19
+ /** TXT record owner ID for identifying managed records. */
20
+ txtOwnerId?: string;
21
+ /** Source of DNS records (default: "ingress"). */
22
+ source?: string;
23
+ /** Agent name (default: "external-dns"). */
24
+ name?: string;
25
+ /** Container image (default: "registry.k8s.io/external-dns/external-dns:v0.14.0"). */
26
+ image?: string;
27
+ /** Namespace (default: "kube-system"). */
28
+ namespace?: string;
29
+ /** Additional labels. */
30
+ labels?: Record<string, string>;
31
+ /** Per-member defaults for fine-grained overrides. */
32
+ defaults?: {
33
+ deployment?: Partial<Record<string, unknown>>;
34
+ serviceAccount?: Partial<Record<string, unknown>>;
35
+ clusterRole?: Partial<Record<string, unknown>>;
36
+ clusterRoleBinding?: Partial<Record<string, unknown>>;
37
+ };
38
+ }
39
+ export interface AksExternalDnsAgentResult {
40
+ deployment: InstanceType<typeof Deployment>;
41
+ serviceAccount: InstanceType<typeof ServiceAccount>;
42
+ clusterRole: InstanceType<typeof ClusterRole>;
43
+ clusterRoleBinding: InstanceType<typeof ClusterRoleBinding>;
44
+ }
45
+ /**
46
+ * Create an AksExternalDnsAgent composite — returns prop objects for
47
+ * a Deployment, ServiceAccount (with AKS Workload Identity), ClusterRole, and ClusterRoleBinding.
48
+ *
49
+ * @aks
50
+ * @example
51
+ * ```ts
52
+ * import { AksExternalDnsAgent } from "@intentius/chant-lexicon-k8s";
53
+ *
54
+ * const { deployment, serviceAccount, clusterRole, clusterRoleBinding } = AksExternalDnsAgent({
55
+ * clientId: "00000000-0000-0000-0000-000000000000",
56
+ * resourceGroup: "my-rg",
57
+ * subscriptionId: "00000000-0000-0000-0000-000000000000",
58
+ * tenantId: "00000000-0000-0000-0000-000000000000",
59
+ * domainFilters: ["example.com"],
60
+ * txtOwnerId: "my-cluster",
61
+ * });
62
+ * ```
63
+ */
64
+ export declare const AksExternalDnsAgent: import("@intentius/chant").CompositeDefinition<AksExternalDnsAgentProps, import("@intentius/chant").CompositeMembers>;
65
+ //# sourceMappingURL=aks-external-dns-agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aks-external-dns-agent.d.ts","sourceRoot":"","sources":["../../src/composites/aks-external-dns-agent.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAE3F,MAAM,WAAW,wBAAwB;IACvC,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,aAAa,EAAE,MAAM,CAAC;IACtB,6BAA6B;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,kEAAkE;IAClE,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sFAAsF;IACtF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,sDAAsD;IACtD,QAAQ,CAAC,EAAE;QACT,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAC9C,cAAc,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAClD,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/C,kBAAkB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;KACvD,CAAC;CACH;AAED,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC;IAC5C,cAAc,EAAE,YAAY,CAAC,OAAO,cAAc,CAAC,CAAC;IACpD,WAAW,EAAE,YAAY,CAAC,OAAO,WAAW,CAAC,CAAC;IAC9C,kBAAkB,EAAE,YAAY,CAAC,OAAO,kBAAkB,CAAC,CAAC;CAC7D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,mBAAmB,uHA6IP,CAAC"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * AlbIngress composite — Ingress with AWS Load Balancer Controller annotations.
3
+ *
4
+ * @eks Full `alb.ingress.kubernetes.io/*` annotation set including group name
5
+ * (shared ALB), SSL redirect, subnets, security groups.
6
+ */
7
+ import { Ingress } from "../generated/index.js";
8
+ export interface AlbIngressHost {
9
+ /** Hostname (e.g., "api.example.com"). */
10
+ hostname: string;
11
+ /** Path rules for this host. */
12
+ paths: Array<{
13
+ path: string;
14
+ pathType?: string;
15
+ serviceName: string;
16
+ /** Port on the Kubernetes Service (not the container port). */
17
+ servicePort: number;
18
+ }>;
19
+ }
20
+ export interface AlbIngressProps {
21
+ /** Ingress name — used in metadata and labels. */
22
+ name: string;
23
+ /** Host definitions with paths. */
24
+ hosts: AlbIngressHost[];
25
+ /** ALB scheme (default: "internet-facing"). */
26
+ scheme?: "internet-facing" | "internal";
27
+ /** Target type (default: "ip"). */
28
+ targetType?: "ip" | "instance";
29
+ /** ACM certificate ARN for TLS. */
30
+ certificateArn?: string;
31
+ /** WAF Web ACL ARN. */
32
+ wafAclArn?: string;
33
+ /** Health check path for target group. */
34
+ healthCheckPath?: string;
35
+ /** Ingress group name for shared ALB. */
36
+ groupName?: string;
37
+ /** Enable HTTP→HTTPS redirect (default: true when certificateArn set). */
38
+ sslRedirect?: boolean;
39
+ /** Additional annotations on the Ingress. */
40
+ annotations?: Record<string, string>;
41
+ /** Additional labels to apply to all resources. */
42
+ labels?: Record<string, string>;
43
+ /** Namespace for all resources. */
44
+ namespace?: string;
45
+ /** Per-member defaults for fine-grained overrides. */
46
+ defaults?: {
47
+ ingress?: Partial<Record<string, unknown>>;
48
+ };
49
+ }
50
+ export interface AlbIngressResult {
51
+ ingress: InstanceType<typeof Ingress>;
52
+ }
53
+ /**
54
+ * Create an AlbIngress composite — returns prop objects for
55
+ * an Ingress with AWS ALB Controller annotations.
56
+ *
57
+ * @eks
58
+ * @example
59
+ * ```ts
60
+ * import { AlbIngress } from "@intentius/chant-lexicon-k8s";
61
+ *
62
+ * const { ingress } = AlbIngress({
63
+ * name: "api-ingress",
64
+ * hosts: [
65
+ * {
66
+ * hostname: "api.example.com",
67
+ * paths: [{ path: "/", serviceName: "api", servicePort: 80 }],
68
+ * },
69
+ * ],
70
+ * scheme: "internet-facing",
71
+ * certificateArn: "arn:aws:acm:us-east-1:123456789012:certificate/abc-123",
72
+ * groupName: "shared-alb",
73
+ * });
74
+ * ```
75
+ */
76
+ export declare const AlbIngress: import("@intentius/chant").CompositeDefinition<AlbIngressProps, import("@intentius/chant").CompositeMembers>;
77
+ //# sourceMappingURL=alb-ingress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alb-ingress.d.ts","sourceRoot":"","sources":["../../src/composites/alb-ingress.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,WAAW,cAAc;IAC7B,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,KAAK,EAAE,KAAK,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,+DAA+D;QAC/D,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,eAAe;IAC9B,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,iBAAiB,GAAG,UAAU,CAAC;IACxC,mCAAmC;IACnC,UAAU,CAAC,EAAE,IAAI,GAAG,UAAU,CAAC;IAC/B,mCAAmC;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,QAAQ,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;KAC5C,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,YAAY,CAAC,OAAO,OAAO,CAAC,CAAC;CACvC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,UAAU,8GA8EP,CAAC"}
@@ -0,0 +1,168 @@
1
+ /**
2
+ * Argo CD composites — turn Chant build targets into Argo `Application`s.
3
+ *
4
+ * The k8s lexicon stays runtime-agnostic: it only emits manifests. These
5
+ * composites are the opt-in bridge to Argo CD's reconciliation layer. Authoring
6
+ * an `Application` by hand is ~30 lines of nested YAML; `ArgoAppFor` collapses
7
+ * it to one call with production-friendly defaults.
8
+ *
9
+ * - ArgoAppFor(target, opts) → a single K8s::Argo::Application
10
+ * - ArgoAppSetForRegions(regions, …) → one ApplicationSet, fanned out per region
11
+ * - registerArgoCluster(opts) → the cluster-registration Secret
12
+ */
13
+ import { Application as ApplicationResource, ApplicationSet as ApplicationSetResource, Secret as SecretResource } from "../generated/index.js";
14
+ /** Where Argo deploys the synced manifests. `server` and `name` are exclusive. */
15
+ export interface ArgoDestination {
16
+ /** Target cluster API server URL (e.g. https://kubernetes.default.svc). */
17
+ server?: string;
18
+ /** Registered cluster name (alternative to server). */
19
+ name?: string;
20
+ /** Namespace the synced resources land in. */
21
+ namespace: string;
22
+ }
23
+ /** Argo sync policy. Omit `automated` for manual sync. */
24
+ export interface ArgoSyncPolicy {
25
+ automated?: {
26
+ /** Delete resources that disappear from git. Default false (and required
27
+ * false on prod Applications — see ARGO001). */
28
+ prune?: boolean;
29
+ /** Revert out-of-band changes back to git state. */
30
+ selfHeal?: boolean;
31
+ };
32
+ /** e.g. ["CreateNamespace=true", "ServerSideApply=true"]. */
33
+ syncOptions?: string[];
34
+ }
35
+ export interface ArgoAppForOptions {
36
+ /** Git repository URL the Application syncs from. */
37
+ repo: string;
38
+ /** Path within the repo holding the manifests. */
39
+ path: string;
40
+ /** Where Argo deploys. Defaults to the in-cluster target if omitted. */
41
+ destination?: ArgoDestination;
42
+ /** Git revision to track (default "HEAD"). */
43
+ targetRevision?: string;
44
+ /** AppProject the Application belongs to (default "default"). */
45
+ project?: string;
46
+ /** Namespace the Application object itself lives in (default "argocd"). */
47
+ argoNamespace?: string;
48
+ /** Sync policy. Omit for the safe automated default; pass `{}` for manual. */
49
+ syncPolicy?: ArgoSyncPolicy;
50
+ /** Extra labels applied to the Application. */
51
+ labels?: Record<string, string>;
52
+ defaults?: {
53
+ application?: Partial<Record<string, unknown>>;
54
+ };
55
+ }
56
+ export type ArgoAppForResult = {
57
+ application: InstanceType<typeof ApplicationResource>;
58
+ };
59
+ /**
60
+ * Turn a Chant build target into an Argo CD `Application` in one call.
61
+ *
62
+ * @example
63
+ * ```ts
64
+ * import { ArgoAppFor } from "@intentius/chant-lexicon-k8s";
65
+ *
66
+ * export const api = ArgoAppFor("api", {
67
+ * repo: "https://github.com/acme/infra",
68
+ * path: "dist/api",
69
+ * destination: { server: "https://kubernetes.default.svc", namespace: "api" },
70
+ * });
71
+ * ```
72
+ */
73
+ export declare function ArgoAppFor(target: string, options: ArgoAppForOptions): ArgoAppForResult;
74
+ /** Per-region values resolved by the caller's mapper. */
75
+ export interface ArgoRegionTarget {
76
+ /** Target cluster API server URL for this region. */
77
+ server?: string;
78
+ /** Registered cluster name for this region (alternative to server). */
79
+ name?: string;
80
+ /** Namespace the synced resources land in. */
81
+ namespace: string;
82
+ /** Per-region repo path (overrides the set-level path). */
83
+ path?: string;
84
+ /** Per-region git revision (overrides the set-level revision). */
85
+ targetRevision?: string;
86
+ }
87
+ export interface ArgoAppSetForRegionsOptions {
88
+ /** Base name; generated Applications are `<region>-<name>`. */
89
+ name: string;
90
+ /** Git repository URL the generated Applications sync from. */
91
+ repo: string;
92
+ /** Set-level repo path (per-region mapper may override). */
93
+ path?: string;
94
+ /** Single static AppProject for every generated Application (see ARGO004). */
95
+ project?: string;
96
+ /** Namespace the ApplicationSet object lives in (default "argocd"). */
97
+ argoNamespace?: string;
98
+ /** Set-level git revision (default "HEAD"). */
99
+ targetRevision?: string;
100
+ /** Sync policy applied to the template. Omit for the safe automated default. */
101
+ syncPolicy?: ArgoSyncPolicy;
102
+ /** Extra labels applied to the ApplicationSet. */
103
+ labels?: Record<string, string>;
104
+ defaults?: {
105
+ applicationSet?: Partial<Record<string, unknown>>;
106
+ };
107
+ }
108
+ export type ArgoAppSetForRegionsResult = {
109
+ applicationSet: InstanceType<typeof ApplicationSetResource>;
110
+ };
111
+ /**
112
+ * Emit one `ApplicationSet` that fans out across regions via a list generator —
113
+ * one synced Application per region, all scoped to a single AppProject.
114
+ *
115
+ * @example
116
+ * ```ts
117
+ * import { ArgoAppSetForRegions } from "@intentius/chant-lexicon-k8s";
118
+ *
119
+ * export const crdb = ArgoAppSetForRegions(
120
+ * ["east", "central", "west"],
121
+ * (region) => ({
122
+ * server: clusterServers[region],
123
+ * namespace: `crdb-${region}`,
124
+ * path: `dist/${region}`,
125
+ * }),
126
+ * { name: "crdb", repo: "https://github.com/acme/infra", project: "crdb" },
127
+ * );
128
+ * ```
129
+ */
130
+ export declare function ArgoAppSetForRegions(regions: string[], fn: (region: string) => ArgoRegionTarget, options: ArgoAppSetForRegionsOptions): ArgoAppSetForRegionsResult;
131
+ export interface RegisterArgoClusterOptions {
132
+ /** Cluster name as Argo will know it (referenced by Application destinations). */
133
+ name: string;
134
+ /** Cluster API server URL. */
135
+ server: string;
136
+ /**
137
+ * Argo cluster connection config (TLS, bearer token, exec auth). Serialized
138
+ * into the Secret's `config` field. See the Argo CD cluster Secret format.
139
+ */
140
+ config?: Record<string, unknown> | string;
141
+ /** Namespace Argo CD runs in (default "argocd"). */
142
+ argoNamespace?: string;
143
+ /** Extra labels (merged with the required secret-type label). */
144
+ labels?: Record<string, string>;
145
+ defaults?: {
146
+ secret?: Partial<Record<string, unknown>>;
147
+ };
148
+ }
149
+ export type RegisterArgoClusterResult = {
150
+ secret: InstanceType<typeof SecretResource>;
151
+ };
152
+ /**
153
+ * Register an external cluster with Argo CD — emits the cluster Secret labelled
154
+ * `argocd.argoproj.io/secret-type: cluster` that ARGO003 looks for.
155
+ *
156
+ * @example
157
+ * ```ts
158
+ * import { registerArgoCluster } from "@intentius/chant-lexicon-k8s";
159
+ *
160
+ * export const east = registerArgoCluster({
161
+ * name: "east",
162
+ * server: "https://east.example.com",
163
+ * config: { tlsClientConfig: { insecure: false } },
164
+ * });
165
+ * ```
166
+ */
167
+ export declare function registerArgoCluster(options: RegisterArgoClusterOptions): RegisterArgoClusterResult;
168
+ //# sourceMappingURL=argo-app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"argo-app.d.ts","sourceRoot":"","sources":["../../src/composites/argo-app.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * AutoscaledService composite — Deployment + Service + HPA + PDB.
3
+ *
4
+ * A higher-level construct for production HTTP services with autoscaling
5
+ * and disruption budget. Enforces that HPA targets match the Deployment,
6
+ * PDB selectors match pod labels, and resource requests are set.
7
+ */
8
+ import { Deployment, Service, HorizontalPodAutoscaler, PodDisruptionBudget } from "../generated/index.js";
9
+ import type { ContainerSecurityContext } from "./security-context.js";
10
+ export interface AutoscaledServiceProps {
11
+ /** Application name — used in metadata and labels. */
12
+ name: string;
13
+ /** Container image (e.g., "nginx:1.25"). */
14
+ image: string;
15
+ /** Container port (default: 80). */
16
+ port?: number;
17
+ /** Minimum replicas for HPA (default: 2). */
18
+ minReplicas?: number;
19
+ /** Maximum replicas for HPA (required). */
20
+ maxReplicas: number;
21
+ /** Target CPU utilization percentage (default: 70). */
22
+ targetCPUPercent?: number;
23
+ /** Target memory utilization percentage — if set, adds memory metric. */
24
+ targetMemoryPercent?: number;
25
+ /** PDB minAvailable (default: 1). */
26
+ minAvailable?: number | string;
27
+ /** CPU request (required — HPA needs resource requests). */
28
+ cpuRequest: string;
29
+ /** Memory request (required). */
30
+ memoryRequest: string;
31
+ /** CPU limit (optional — left unset if not provided). */
32
+ cpuLimit?: string;
33
+ /** Memory limit (optional — left unset if not provided). */
34
+ memoryLimit?: string;
35
+ /** Topology spread constraints (default: false). true → zone spreading, object → custom. */
36
+ topologySpread?: boolean | {
37
+ maxSkew?: number;
38
+ topologyKey?: string;
39
+ };
40
+ /** Liveness probe path (default: "/healthz"). */
41
+ livenessPath?: string;
42
+ /** Readiness probe path (default: "/readyz"). */
43
+ readinessPath?: string;
44
+ /** Init containers (e.g., migrations, cert setup). */
45
+ initContainers?: Array<{
46
+ name: string;
47
+ image: string;
48
+ command?: string[];
49
+ args?: string[];
50
+ }>;
51
+ /** Container security context (supports PSS restricted fields). */
52
+ securityContext?: ContainerSecurityContext;
53
+ /** Termination grace period in seconds. */
54
+ terminationGracePeriodSeconds?: number;
55
+ /** Priority class name for pod scheduling. */
56
+ priorityClassName?: string;
57
+ /** Additional labels to apply to all resources. */
58
+ labels?: Record<string, string>;
59
+ /** Namespace for all resources. */
60
+ namespace?: string;
61
+ /** Environment variables for the container. */
62
+ env?: Array<{
63
+ name: string;
64
+ value: string;
65
+ }>;
66
+ /** Service account name for the pod. */
67
+ serviceAccountName?: string;
68
+ /** Volumes to attach to the pod. */
69
+ volumes?: Array<Record<string, unknown>>;
70
+ /** Volume mounts for the primary container. */
71
+ volumeMounts?: Array<Record<string, unknown>>;
72
+ /** Convenience: auto-generate emptyDir volumes + mounts for writable temp dirs (e.g. ["/tmp", "/var/cache/nginx"]). */
73
+ tmpDirs?: string[];
74
+ /** Per-member defaults for fine-grained overrides. */
75
+ defaults?: {
76
+ deployment?: Partial<Record<string, unknown>>;
77
+ service?: Partial<Record<string, unknown>>;
78
+ hpa?: Partial<Record<string, unknown>>;
79
+ pdb?: Partial<Record<string, unknown>>;
80
+ };
81
+ }
82
+ export interface AutoscaledServiceResult {
83
+ deployment: InstanceType<typeof Deployment>;
84
+ service: InstanceType<typeof Service>;
85
+ hpa: InstanceType<typeof HorizontalPodAutoscaler>;
86
+ pdb: InstanceType<typeof PodDisruptionBudget>;
87
+ }
88
+ /**
89
+ * Create an AutoscaledService composite — returns prop objects for
90
+ * a Deployment, Service, HorizontalPodAutoscaler, and PodDisruptionBudget.
91
+ *
92
+ * @example
93
+ * ```ts
94
+ * import { AutoscaledService } from "@intentius/chant-lexicon-k8s";
95
+ *
96
+ * const { deployment, service, hpa, pdb } = AutoscaledService({
97
+ * name: "api",
98
+ * image: "api:1.0",
99
+ * maxReplicas: 10,
100
+ * cpuRequest: "100m",
101
+ * memoryRequest: "128Mi",
102
+ * });
103
+ * ```
104
+ */
105
+ export declare const AutoscaledService: import("@intentius/chant").CompositeDefinition<AutoscaledServiceProps, import("@intentius/chant").CompositeMembers>;
106
+ //# sourceMappingURL=autoscaled-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoscaled-service.d.ts","sourceRoot":"","sources":["../../src/composites/autoscaled-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * AzureDiskStorageClass composite — StorageClass for Azure Disk CSI driver.
3
+ *
4
+ * @aks Creates a StorageClass with the `disk.csi.azure.com` provisioner.
5
+ */
6
+ import { StorageClass } from "../generated/index.js";
7
+ export interface AzureDiskStorageClassProps {
8
+ /** StorageClass name. */
9
+ name: string;
10
+ /** Azure Disk SKU name (default: "Premium_LRS"). */
11
+ skuName?: string;
12
+ /** OS disk caching mode (default: "ReadOnly"). */
13
+ cachingMode?: string;
14
+ /** Network access policy (default: "AllowAll"). */
15
+ networkAccessPolicy?: string;
16
+ /** Reclaim policy (default: "Delete"). */
17
+ reclaimPolicy?: string;
18
+ /** Volume binding mode (default: "WaitForFirstConsumer"). */
19
+ volumeBindingMode?: string;
20
+ /** Allow volume expansion (default: true). */
21
+ allowVolumeExpansion?: boolean;
22
+ /** Additional labels. */
23
+ labels?: Record<string, string>;
24
+ /** Per-member defaults for fine-grained overrides. */
25
+ defaults?: {
26
+ storageClass?: Partial<Record<string, unknown>>;
27
+ };
28
+ }
29
+ export interface AzureDiskStorageClassResult {
30
+ storageClass: InstanceType<typeof StorageClass>;
31
+ }
32
+ /**
33
+ * Create an AzureDiskStorageClass composite — returns prop objects for
34
+ * a StorageClass with the Azure Disk CSI provisioner.
35
+ *
36
+ * @aks
37
+ * @example
38
+ * ```ts
39
+ * import { AzureDiskStorageClass } from "@intentius/chant-lexicon-k8s";
40
+ *
41
+ * const { storageClass } = AzureDiskStorageClass({
42
+ * name: "premium-disk",
43
+ * skuName: "Premium_LRS",
44
+ * });
45
+ * ```
46
+ */
47
+ export declare const AzureDiskStorageClass: import("@intentius/chant").CompositeDefinition<AzureDiskStorageClassProps, import("@intentius/chant").CompositeMembers>;
48
+ //# sourceMappingURL=azure-disk-storage-class.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"azure-disk-storage-class.d.ts","sourceRoot":"","sources":["../../src/composites/azure-disk-storage-class.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,WAAW,0BAA0B;IACzC,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,0CAA0C;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8CAA8C;IAC9C,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,yBAAyB;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,sDAAsD;IACtD,QAAQ,CAAC,EAAE;QACT,YAAY,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;KACjD,CAAC;CACH;AAED,MAAM,WAAW,2BAA2B;IAC1C,YAAY,EAAE,YAAY,CAAC,OAAO,YAAY,CAAC,CAAC;CACjD;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,qBAAqB,yHAsCP,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * AzureFileStorageClass composite — StorageClass for Azure Files CSI driver.
3
+ *
4
+ * @aks Creates a StorageClass with the `file.csi.azure.com` provisioner.
5
+ * Azure Files provides ReadWriteMany access mode (shared across pods/nodes).
6
+ */
7
+ import { StorageClass } from "../generated/index.js";
8
+ export interface AzureFileStorageClassProps {
9
+ /** StorageClass name. */
10
+ name: string;
11
+ /** Azure Files SKU name (default: "Premium_LRS"). */
12
+ skuName?: string;
13
+ /** Protocol for Azure Files (default: "smb"). */
14
+ protocol?: string;
15
+ /** Specific Azure file share name (optional; dynamically provisioned if omitted). */
16
+ shareName?: string;
17
+ /** Reclaim policy (default: "Delete"). */
18
+ reclaimPolicy?: string;
19
+ /** Additional labels. */
20
+ labels?: Record<string, string>;
21
+ /** Per-member defaults for fine-grained overrides. */
22
+ defaults?: {
23
+ storageClass?: Partial<Record<string, unknown>>;
24
+ };
25
+ }
26
+ export interface AzureFileStorageClassResult {
27
+ storageClass: InstanceType<typeof StorageClass>;
28
+ }
29
+ /**
30
+ * Create an AzureFileStorageClass composite — returns prop objects for
31
+ * a StorageClass with the Azure Files CSI provisioner.
32
+ *
33
+ * @aks
34
+ * @example
35
+ * ```ts
36
+ * import { AzureFileStorageClass } from "@intentius/chant-lexicon-k8s";
37
+ *
38
+ * const { storageClass } = AzureFileStorageClass({
39
+ * name: "azure-files-shared",
40
+ * skuName: "Premium_LRS",
41
+ * protocol: "nfs",
42
+ * });
43
+ * ```
44
+ */
45
+ export declare const AzureFileStorageClass: import("@intentius/chant").CompositeDefinition<AzureFileStorageClassProps, import("@intentius/chant").CompositeMembers>;
46
+ //# sourceMappingURL=azure-file-storage-class.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"azure-file-storage-class.d.ts","sourceRoot":"","sources":["../../src/composites/azure-file-storage-class.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,WAAW,0BAA0B;IACzC,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qFAAqF;IACrF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yBAAyB;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,sDAAsD;IACtD,QAAQ,CAAC,EAAE;QACT,YAAY,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;KACjD,CAAC;CACH;AAED,MAAM,WAAW,2BAA2B;IAC1C,YAAY,EAAE,YAAY,CAAC,OAAO,YAAY,CAAC,CAAC;CACjD;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,qBAAqB,yHAmCP,CAAC"}