kustodian 1.0.0

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 (351) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +346 -0
  3. package/dist/cli/bin.d.ts +3 -0
  4. package/dist/cli/bin.d.ts.map +1 -0
  5. package/dist/cli/bin.js +67 -0
  6. package/dist/cli/bin.js.map +1 -0
  7. package/dist/cli/command.d.ts +57 -0
  8. package/dist/cli/command.d.ts.map +1 -0
  9. package/dist/cli/command.js +26 -0
  10. package/dist/cli/command.js.map +1 -0
  11. package/dist/cli/commands/apply.d.ts +8 -0
  12. package/dist/cli/commands/apply.d.ts.map +1 -0
  13. package/dist/cli/commands/apply.js +802 -0
  14. package/dist/cli/commands/apply.js.map +1 -0
  15. package/dist/cli/commands/init.d.ts +5 -0
  16. package/dist/cli/commands/init.d.ts.map +1 -0
  17. package/dist/cli/commands/init.js +403 -0
  18. package/dist/cli/commands/init.js.map +1 -0
  19. package/dist/cli/commands/sources.d.ts +5 -0
  20. package/dist/cli/commands/sources.d.ts.map +1 -0
  21. package/dist/cli/commands/sources.js +377 -0
  22. package/dist/cli/commands/sources.js.map +1 -0
  23. package/dist/cli/commands/update.d.ts +5 -0
  24. package/dist/cli/commands/update.d.ts.map +1 -0
  25. package/dist/cli/commands/update.js +314 -0
  26. package/dist/cli/commands/update.js.map +1 -0
  27. package/dist/cli/commands/validate.d.ts +5 -0
  28. package/dist/cli/commands/validate.d.ts.map +1 -0
  29. package/dist/cli/commands/validate.js +126 -0
  30. package/dist/cli/commands/validate.js.map +1 -0
  31. package/dist/cli/container.d.ts +48 -0
  32. package/dist/cli/container.d.ts.map +1 -0
  33. package/dist/cli/container.js +49 -0
  34. package/dist/cli/container.js.map +1 -0
  35. package/dist/cli/index.d.ts +8 -0
  36. package/dist/cli/index.d.ts.map +1 -0
  37. package/dist/cli/index.js +9 -0
  38. package/dist/cli/index.js.map +1 -0
  39. package/dist/cli/middleware.d.ts +118 -0
  40. package/dist/cli/middleware.d.ts.map +1 -0
  41. package/dist/cli/middleware.js +280 -0
  42. package/dist/cli/middleware.js.map +1 -0
  43. package/dist/cli/runner.d.ts +34 -0
  44. package/dist/cli/runner.d.ts.map +1 -0
  45. package/dist/cli/runner.js +156 -0
  46. package/dist/cli/runner.js.map +1 -0
  47. package/dist/cli/utils/defaults.d.ts +23 -0
  48. package/dist/cli/utils/defaults.d.ts.map +1 -0
  49. package/dist/cli/utils/defaults.js +43 -0
  50. package/dist/cli/utils/defaults.js.map +1 -0
  51. package/dist/core/error.d.ts +117 -0
  52. package/dist/core/error.d.ts.map +1 -0
  53. package/dist/core/error.js +210 -0
  54. package/dist/core/error.js.map +1 -0
  55. package/dist/core/index.d.ts +6 -0
  56. package/dist/core/index.d.ts.map +1 -0
  57. package/dist/core/index.js +6 -0
  58. package/dist/core/index.js.map +1 -0
  59. package/dist/core/logger.d.ts +31 -0
  60. package/dist/core/logger.d.ts.map +1 -0
  61. package/dist/core/logger.js +78 -0
  62. package/dist/core/logger.js.map +1 -0
  63. package/dist/core/path.d.ts +57 -0
  64. package/dist/core/path.d.ts.map +1 -0
  65. package/dist/core/path.js +154 -0
  66. package/dist/core/path.js.map +1 -0
  67. package/dist/core/result.d.ts +80 -0
  68. package/dist/core/result.d.ts.map +1 -0
  69. package/dist/core/result.js +150 -0
  70. package/dist/core/result.js.map +1 -0
  71. package/dist/core/types.d.ts +80 -0
  72. package/dist/core/types.d.ts.map +1 -0
  73. package/dist/core/types.js +5 -0
  74. package/dist/core/types.js.map +1 -0
  75. package/dist/generator/external-substitutions.d.ts +21 -0
  76. package/dist/generator/external-substitutions.d.ts.map +1 -0
  77. package/dist/generator/external-substitutions.js +49 -0
  78. package/dist/generator/external-substitutions.js.map +1 -0
  79. package/dist/generator/flux.d.ts +61 -0
  80. package/dist/generator/flux.d.ts.map +1 -0
  81. package/dist/generator/flux.js +294 -0
  82. package/dist/generator/flux.js.map +1 -0
  83. package/dist/generator/generator.d.ts +77 -0
  84. package/dist/generator/generator.d.ts.map +1 -0
  85. package/dist/generator/generator.js +183 -0
  86. package/dist/generator/generator.js.map +1 -0
  87. package/dist/generator/index.d.ts +9 -0
  88. package/dist/generator/index.d.ts.map +1 -0
  89. package/dist/generator/index.js +9 -0
  90. package/dist/generator/index.js.map +1 -0
  91. package/dist/generator/kustomization-resolution.d.ts +40 -0
  92. package/dist/generator/kustomization-resolution.d.ts.map +1 -0
  93. package/dist/generator/kustomization-resolution.js +59 -0
  94. package/dist/generator/kustomization-resolution.js.map +1 -0
  95. package/dist/generator/namespace.d.ts +74 -0
  96. package/dist/generator/namespace.d.ts.map +1 -0
  97. package/dist/generator/namespace.js +109 -0
  98. package/dist/generator/namespace.js.map +1 -0
  99. package/dist/generator/output.d.ts +56 -0
  100. package/dist/generator/output.d.ts.map +1 -0
  101. package/dist/generator/output.js +171 -0
  102. package/dist/generator/output.js.map +1 -0
  103. package/dist/generator/preservation.d.ts +45 -0
  104. package/dist/generator/preservation.d.ts.map +1 -0
  105. package/dist/generator/preservation.js +71 -0
  106. package/dist/generator/preservation.js.map +1 -0
  107. package/dist/generator/substitution.d.ts +79 -0
  108. package/dist/generator/substitution.d.ts.map +1 -0
  109. package/dist/generator/substitution.js +210 -0
  110. package/dist/generator/substitution.js.map +1 -0
  111. package/dist/generator/types.d.ts +162 -0
  112. package/dist/generator/types.d.ts.map +1 -0
  113. package/dist/generator/types.js +2 -0
  114. package/dist/generator/types.js.map +1 -0
  115. package/dist/generator/validation/cycle-detection.d.ts +25 -0
  116. package/dist/generator/validation/cycle-detection.d.ts.map +1 -0
  117. package/dist/generator/validation/cycle-detection.js +101 -0
  118. package/dist/generator/validation/cycle-detection.js.map +1 -0
  119. package/dist/generator/validation/enablement.d.ts +24 -0
  120. package/dist/generator/validation/enablement.d.ts.map +1 -0
  121. package/dist/generator/validation/enablement.js +69 -0
  122. package/dist/generator/validation/enablement.js.map +1 -0
  123. package/dist/generator/validation/graph.d.ts +29 -0
  124. package/dist/generator/validation/graph.d.ts.map +1 -0
  125. package/dist/generator/validation/graph.js +106 -0
  126. package/dist/generator/validation/graph.js.map +1 -0
  127. package/dist/generator/validation/index.d.ts +38 -0
  128. package/dist/generator/validation/index.d.ts.map +1 -0
  129. package/dist/generator/validation/index.js +64 -0
  130. package/dist/generator/validation/index.js.map +1 -0
  131. package/dist/generator/validation/reference.d.ts +45 -0
  132. package/dist/generator/validation/reference.d.ts.map +1 -0
  133. package/dist/generator/validation/reference.js +143 -0
  134. package/dist/generator/validation/reference.js.map +1 -0
  135. package/dist/generator/validation/requirements.d.ts +25 -0
  136. package/dist/generator/validation/requirements.d.ts.map +1 -0
  137. package/dist/generator/validation/requirements.js +64 -0
  138. package/dist/generator/validation/requirements.js.map +1 -0
  139. package/dist/generator/validation/types.d.ts +116 -0
  140. package/dist/generator/validation/types.d.ts.map +1 -0
  141. package/dist/generator/validation/types.js +13 -0
  142. package/dist/generator/validation/types.js.map +1 -0
  143. package/dist/k8s/exec.d.ts +20 -0
  144. package/dist/k8s/exec.d.ts.map +1 -0
  145. package/dist/k8s/exec.js +47 -0
  146. package/dist/k8s/exec.js.map +1 -0
  147. package/dist/k8s/flux.d.ts +57 -0
  148. package/dist/k8s/flux.d.ts.map +1 -0
  149. package/dist/k8s/flux.js +202 -0
  150. package/dist/k8s/flux.js.map +1 -0
  151. package/dist/k8s/index.d.ts +6 -0
  152. package/dist/k8s/index.d.ts.map +1 -0
  153. package/dist/k8s/index.js +6 -0
  154. package/dist/k8s/index.js.map +1 -0
  155. package/dist/k8s/kubeconfig.d.ts +45 -0
  156. package/dist/k8s/kubeconfig.d.ts.map +1 -0
  157. package/dist/k8s/kubeconfig.js +152 -0
  158. package/dist/k8s/kubeconfig.js.map +1 -0
  159. package/dist/k8s/kubectl.d.ts +68 -0
  160. package/dist/k8s/kubectl.d.ts.map +1 -0
  161. package/dist/k8s/kubectl.js +187 -0
  162. package/dist/k8s/kubectl.js.map +1 -0
  163. package/dist/k8s/types.d.ts +65 -0
  164. package/dist/k8s/types.d.ts.map +1 -0
  165. package/dist/k8s/types.js +2 -0
  166. package/dist/k8s/types.js.map +1 -0
  167. package/dist/loader/file.d.ts +39 -0
  168. package/dist/loader/file.d.ts.map +1 -0
  169. package/dist/loader/file.js +121 -0
  170. package/dist/loader/file.js.map +1 -0
  171. package/dist/loader/index.d.ts +5 -0
  172. package/dist/loader/index.d.ts.map +1 -0
  173. package/dist/loader/index.js +5 -0
  174. package/dist/loader/index.js.map +1 -0
  175. package/dist/loader/profile.d.ts +23 -0
  176. package/dist/loader/profile.d.ts.map +1 -0
  177. package/dist/loader/profile.js +84 -0
  178. package/dist/loader/profile.js.map +1 -0
  179. package/dist/loader/project.d.ts +76 -0
  180. package/dist/loader/project.d.ts.map +1 -0
  181. package/dist/loader/project.js +279 -0
  182. package/dist/loader/project.js.map +1 -0
  183. package/dist/loader/yaml.d.ts +15 -0
  184. package/dist/loader/yaml.d.ts.map +1 -0
  185. package/dist/loader/yaml.js +44 -0
  186. package/dist/loader/yaml.js.map +1 -0
  187. package/dist/nodes/index.d.ts +5 -0
  188. package/dist/nodes/index.d.ts.map +1 -0
  189. package/dist/nodes/index.js +5 -0
  190. package/dist/nodes/index.js.map +1 -0
  191. package/dist/nodes/kubectl-labeler.d.ts +7 -0
  192. package/dist/nodes/kubectl-labeler.d.ts.map +1 -0
  193. package/dist/nodes/kubectl-labeler.js +89 -0
  194. package/dist/nodes/kubectl-labeler.js.map +1 -0
  195. package/dist/nodes/labeler.d.ts +74 -0
  196. package/dist/nodes/labeler.d.ts.map +1 -0
  197. package/dist/nodes/labeler.js +118 -0
  198. package/dist/nodes/labeler.js.map +1 -0
  199. package/dist/nodes/profile.d.ts +58 -0
  200. package/dist/nodes/profile.d.ts.map +1 -0
  201. package/dist/nodes/profile.js +128 -0
  202. package/dist/nodes/profile.js.map +1 -0
  203. package/dist/nodes/types.d.ts +84 -0
  204. package/dist/nodes/types.d.ts.map +1 -0
  205. package/dist/nodes/types.js +77 -0
  206. package/dist/nodes/types.js.map +1 -0
  207. package/dist/plugins/generators.d.ts +49 -0
  208. package/dist/plugins/generators.d.ts.map +1 -0
  209. package/dist/plugins/generators.js +7 -0
  210. package/dist/plugins/generators.js.map +1 -0
  211. package/dist/plugins/hooks.d.ts +120 -0
  212. package/dist/plugins/hooks.d.ts.map +1 -0
  213. package/dist/plugins/hooks.js +41 -0
  214. package/dist/plugins/hooks.js.map +1 -0
  215. package/dist/plugins/index.d.ts +8 -0
  216. package/dist/plugins/index.d.ts.map +1 -0
  217. package/dist/plugins/index.js +15 -0
  218. package/dist/plugins/index.js.map +1 -0
  219. package/dist/plugins/loader.d.ts +40 -0
  220. package/dist/plugins/loader.d.ts.map +1 -0
  221. package/dist/plugins/loader.js +236 -0
  222. package/dist/plugins/loader.js.map +1 -0
  223. package/dist/plugins/object-types.d.ts +71 -0
  224. package/dist/plugins/object-types.d.ts.map +1 -0
  225. package/dist/plugins/object-types.js +65 -0
  226. package/dist/plugins/object-types.js.map +1 -0
  227. package/dist/plugins/registry.d.ts +87 -0
  228. package/dist/plugins/registry.d.ts.map +1 -0
  229. package/dist/plugins/registry.js +158 -0
  230. package/dist/plugins/registry.js.map +1 -0
  231. package/dist/plugins/substitution-providers.d.ts +48 -0
  232. package/dist/plugins/substitution-providers.d.ts.map +1 -0
  233. package/dist/plugins/substitution-providers.js +2 -0
  234. package/dist/plugins/substitution-providers.js.map +1 -0
  235. package/dist/plugins/types.d.ts +288 -0
  236. package/dist/plugins/types.d.ts.map +1 -0
  237. package/dist/plugins/types.js +25 -0
  238. package/dist/plugins/types.js.map +1 -0
  239. package/dist/registry/auth.d.ts +14 -0
  240. package/dist/registry/auth.d.ts.map +1 -0
  241. package/dist/registry/auth.js +40 -0
  242. package/dist/registry/auth.js.map +1 -0
  243. package/dist/registry/client.d.ts +24 -0
  244. package/dist/registry/client.d.ts.map +1 -0
  245. package/dist/registry/client.js +85 -0
  246. package/dist/registry/client.js.map +1 -0
  247. package/dist/registry/dockerhub.d.ts +6 -0
  248. package/dist/registry/dockerhub.d.ts.map +1 -0
  249. package/dist/registry/dockerhub.js +91 -0
  250. package/dist/registry/dockerhub.js.map +1 -0
  251. package/dist/registry/ghcr.d.ts +6 -0
  252. package/dist/registry/ghcr.d.ts.map +1 -0
  253. package/dist/registry/ghcr.js +95 -0
  254. package/dist/registry/ghcr.js.map +1 -0
  255. package/dist/registry/helm.d.ts +11 -0
  256. package/dist/registry/helm.d.ts.map +1 -0
  257. package/dist/registry/helm.js +124 -0
  258. package/dist/registry/helm.js.map +1 -0
  259. package/dist/registry/index.d.ts +8 -0
  260. package/dist/registry/index.d.ts.map +1 -0
  261. package/dist/registry/index.js +12 -0
  262. package/dist/registry/index.js.map +1 -0
  263. package/dist/registry/types.d.ts +55 -0
  264. package/dist/registry/types.d.ts.map +1 -0
  265. package/dist/registry/types.js +2 -0
  266. package/dist/registry/types.js.map +1 -0
  267. package/dist/registry/version.d.ts +22 -0
  268. package/dist/registry/version.d.ts.map +1 -0
  269. package/dist/registry/version.js +62 -0
  270. package/dist/registry/version.js.map +1 -0
  271. package/dist/schema/cluster.d.ts +2890 -0
  272. package/dist/schema/cluster.d.ts.map +1 -0
  273. package/dist/schema/cluster.js +231 -0
  274. package/dist/schema/cluster.js.map +1 -0
  275. package/dist/schema/common.d.ts +1059 -0
  276. package/dist/schema/common.d.ts.map +1 -0
  277. package/dist/schema/common.js +340 -0
  278. package/dist/schema/common.js.map +1 -0
  279. package/dist/schema/index.d.ts +8 -0
  280. package/dist/schema/index.d.ts.map +1 -0
  281. package/dist/schema/index.js +8 -0
  282. package/dist/schema/index.js.map +1 -0
  283. package/dist/schema/node-list.d.ts +361 -0
  284. package/dist/schema/node-list.d.ts.map +1 -0
  285. package/dist/schema/node-list.js +104 -0
  286. package/dist/schema/node-list.js.map +1 -0
  287. package/dist/schema/profile.d.ts +166 -0
  288. package/dist/schema/profile.d.ts.map +1 -0
  289. package/dist/schema/profile.js +61 -0
  290. package/dist/schema/profile.js.map +1 -0
  291. package/dist/schema/project.d.ts +168 -0
  292. package/dist/schema/project.d.ts.map +1 -0
  293. package/dist/schema/project.js +40 -0
  294. package/dist/schema/project.js.map +1 -0
  295. package/dist/schema/sources.d.ts +338 -0
  296. package/dist/schema/sources.d.ts.map +1 -0
  297. package/dist/schema/sources.js +111 -0
  298. package/dist/schema/sources.js.map +1 -0
  299. package/dist/schema/template.d.ts +2711 -0
  300. package/dist/schema/template.d.ts.map +1 -0
  301. package/dist/schema/template.js +97 -0
  302. package/dist/schema/template.js.map +1 -0
  303. package/dist/sources/cache/index.d.ts +9 -0
  304. package/dist/sources/cache/index.d.ts.map +1 -0
  305. package/dist/sources/cache/index.js +278 -0
  306. package/dist/sources/cache/index.js.map +1 -0
  307. package/dist/sources/cache/metadata.d.ts +36 -0
  308. package/dist/sources/cache/metadata.d.ts.map +1 -0
  309. package/dist/sources/cache/metadata.js +21 -0
  310. package/dist/sources/cache/metadata.js.map +1 -0
  311. package/dist/sources/cache/ttl.d.ts +20 -0
  312. package/dist/sources/cache/ttl.d.ts.map +1 -0
  313. package/dist/sources/cache/ttl.js +53 -0
  314. package/dist/sources/cache/ttl.js.map +1 -0
  315. package/dist/sources/fetchers/git.d.ts +6 -0
  316. package/dist/sources/fetchers/git.d.ts.map +1 -0
  317. package/dist/sources/fetchers/git.js +165 -0
  318. package/dist/sources/fetchers/git.js.map +1 -0
  319. package/dist/sources/fetchers/http.d.ts +6 -0
  320. package/dist/sources/fetchers/http.d.ts.map +1 -0
  321. package/dist/sources/fetchers/http.js +159 -0
  322. package/dist/sources/fetchers/http.js.map +1 -0
  323. package/dist/sources/fetchers/index.d.ts +11 -0
  324. package/dist/sources/fetchers/index.d.ts.map +1 -0
  325. package/dist/sources/fetchers/index.js +24 -0
  326. package/dist/sources/fetchers/index.js.map +1 -0
  327. package/dist/sources/fetchers/oci.d.ts +6 -0
  328. package/dist/sources/fetchers/oci.d.ts.map +1 -0
  329. package/dist/sources/fetchers/oci.js +156 -0
  330. package/dist/sources/fetchers/oci.js.map +1 -0
  331. package/dist/sources/fetchers/types.d.ts +25 -0
  332. package/dist/sources/fetchers/types.d.ts.map +1 -0
  333. package/dist/sources/fetchers/types.js +2 -0
  334. package/dist/sources/fetchers/types.js.map +1 -0
  335. package/dist/sources/index.d.ts +6 -0
  336. package/dist/sources/index.d.ts.map +1 -0
  337. package/dist/sources/index.js +10 -0
  338. package/dist/sources/index.js.map +1 -0
  339. package/dist/sources/loader.d.ts +34 -0
  340. package/dist/sources/loader.d.ts.map +1 -0
  341. package/dist/sources/loader.js +89 -0
  342. package/dist/sources/loader.js.map +1 -0
  343. package/dist/sources/resolver.d.ts +17 -0
  344. package/dist/sources/resolver.d.ts.map +1 -0
  345. package/dist/sources/resolver.js +125 -0
  346. package/dist/sources/resolver.js.map +1 -0
  347. package/dist/sources/types.d.ts +151 -0
  348. package/dist/sources/types.d.ts.map +1 -0
  349. package/dist/sources/types.js +2 -0
  350. package/dist/sources/types.js.map +1 -0
  351. package/package.json +101 -0
@@ -0,0 +1,118 @@
1
+ import type { KustodianErrorType } from '../core/index.js';
2
+ import { type ResultType } from '../core/index.js';
3
+ /**
4
+ * Log levels for configurable verbosity.
5
+ */
6
+ export type LogLevelType = 'silent' | 'normal' | 'verbose' | 'debug';
7
+ /**
8
+ * Logger interface for middleware.
9
+ */
10
+ export interface LoggerType {
11
+ level: LogLevelType;
12
+ debug(message: string, ...args: unknown[]): void;
13
+ info(message: string, ...args: unknown[]): void;
14
+ warn(message: string, ...args: unknown[]): void;
15
+ error(message: string, ...args: unknown[]): void;
16
+ }
17
+ /**
18
+ * Progress tracker interface.
19
+ */
20
+ export interface ProgressType {
21
+ start(text: string): void;
22
+ update(text: string): void;
23
+ succeed(text?: string): void;
24
+ fail(text?: string): void;
25
+ stop(): void;
26
+ }
27
+ /**
28
+ * Context passed through the middleware pipeline.
29
+ */
30
+ export interface ContextType {
31
+ /**
32
+ * Command arguments.
33
+ */
34
+ args: string[];
35
+ /**
36
+ * Parsed options.
37
+ */
38
+ options: Record<string, unknown>;
39
+ /**
40
+ * Custom data added by middleware.
41
+ */
42
+ data: Record<string, unknown>;
43
+ /**
44
+ * Whether running in dry-run mode.
45
+ */
46
+ dry_run?: boolean;
47
+ /**
48
+ * Logger instance (added by logging middleware).
49
+ */
50
+ logger?: LoggerType;
51
+ /**
52
+ * Progress tracker (added by progress middleware).
53
+ */
54
+ progress?: ProgressType;
55
+ /**
56
+ * Timing data (added by timing middleware).
57
+ */
58
+ timing?: {
59
+ start_time: number;
60
+ duration_ms?: number;
61
+ };
62
+ }
63
+ /**
64
+ * Next function in the middleware chain.
65
+ */
66
+ export type NextType = () => Promise<ResultType<void, KustodianErrorType>>;
67
+ /**
68
+ * Middleware function type.
69
+ */
70
+ export type MiddlewareType = (ctx: ContextType, next: NextType) => Promise<ResultType<void, KustodianErrorType>>;
71
+ /**
72
+ * Creates a middleware pipeline.
73
+ */
74
+ export declare function create_pipeline(middleware: MiddlewareType[]): MiddlewareType;
75
+ /**
76
+ * Creates a new empty context.
77
+ */
78
+ export declare function create_context(args?: string[], options?: Record<string, unknown>): ContextType;
79
+ /**
80
+ * Creates a logger with the specified verbosity level.
81
+ */
82
+ export declare function create_logger(level?: LogLevelType): LoggerType;
83
+ /**
84
+ * Creates a progress tracker using ora spinner.
85
+ */
86
+ export declare function create_progress(enabled?: boolean): ProgressType;
87
+ /**
88
+ * Dry-run middleware - sets dry_run flag on context based on --dry-run option.
89
+ */
90
+ export declare function dry_run_middleware(): MiddlewareType;
91
+ /**
92
+ * Logging middleware - adds logger to context based on verbosity options.
93
+ */
94
+ export declare function logging_middleware(): MiddlewareType;
95
+ /**
96
+ * Progress middleware - adds progress tracker to context.
97
+ */
98
+ export declare function progress_middleware(): MiddlewareType;
99
+ /**
100
+ * Timing middleware - measures command execution duration.
101
+ */
102
+ export declare function timing_middleware(): MiddlewareType;
103
+ /**
104
+ * Error handling middleware - provides consistent error handling and recovery suggestions.
105
+ */
106
+ export declare function error_handling_middleware(): MiddlewareType;
107
+ /**
108
+ * Creates the default middleware stack for CLI operations.
109
+ *
110
+ * Middleware order (outermost to innermost):
111
+ * 1. timing - measures total execution time
112
+ * 2. logging - configures logger
113
+ * 3. error_handling - catches and formats errors
114
+ * 4. dry_run - sets dry-run mode
115
+ * 5. progress - provides spinner for operations
116
+ */
117
+ export declare function create_default_middleware(): MiddlewareType[];
118
+ //# sourceMappingURL=middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/cli/middleware.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,280 @@
1
+ import ora, {} from 'ora';
2
+ import { failure } from '../core/index.js';
3
+ /**
4
+ * Creates a middleware pipeline.
5
+ */
6
+ export function create_pipeline(middleware) {
7
+ return async (ctx, next) => {
8
+ let index = -1;
9
+ const dispatch = async (i) => {
10
+ if (i <= index) {
11
+ throw new Error('next() called multiple times');
12
+ }
13
+ index = i;
14
+ const fn = i < middleware.length ? middleware[i] : next;
15
+ if (!fn) {
16
+ return { success: true, value: undefined };
17
+ }
18
+ return fn(ctx, () => dispatch(i + 1));
19
+ };
20
+ return dispatch(0);
21
+ };
22
+ }
23
+ /**
24
+ * Creates a new empty context.
25
+ */
26
+ export function create_context(args = [], options = {}) {
27
+ return {
28
+ args,
29
+ options,
30
+ data: {},
31
+ };
32
+ }
33
+ // ============================================================================
34
+ // Logger Implementation
35
+ // ============================================================================
36
+ /**
37
+ * Creates a logger with the specified verbosity level.
38
+ */
39
+ export function create_logger(level = 'normal') {
40
+ const should_log = (target_level) => {
41
+ const levels = ['silent', 'normal', 'verbose', 'debug'];
42
+ return levels.indexOf(level) >= levels.indexOf(target_level);
43
+ };
44
+ return {
45
+ level,
46
+ debug(message, ...args) {
47
+ if (should_log('debug')) {
48
+ console.log(`[DEBUG] ${message}`, ...args);
49
+ }
50
+ },
51
+ info(message, ...args) {
52
+ if (should_log('normal')) {
53
+ console.log(message, ...args);
54
+ }
55
+ },
56
+ warn(message, ...args) {
57
+ if (should_log('normal')) {
58
+ console.warn(`⚠ ${message}`, ...args);
59
+ }
60
+ },
61
+ error(message, ...args) {
62
+ // Always log errors except in silent mode
63
+ if (level !== 'silent') {
64
+ console.error(`✗ ${message}`, ...args);
65
+ }
66
+ },
67
+ };
68
+ }
69
+ // ============================================================================
70
+ // Progress Tracker Implementation
71
+ // ============================================================================
72
+ /**
73
+ * Creates a progress tracker using ora spinner.
74
+ */
75
+ export function create_progress(enabled = true) {
76
+ let spinner = null;
77
+ if (!enabled) {
78
+ // No-op implementation when progress is disabled
79
+ return {
80
+ start: () => { },
81
+ update: () => { },
82
+ succeed: () => { },
83
+ fail: () => { },
84
+ stop: () => { },
85
+ };
86
+ }
87
+ return {
88
+ start(text) {
89
+ spinner = ora({ text, color: 'cyan' }).start();
90
+ },
91
+ update(text) {
92
+ if (spinner) {
93
+ spinner.text = text;
94
+ }
95
+ else {
96
+ spinner = ora({ text, color: 'cyan' }).start();
97
+ }
98
+ },
99
+ succeed(text) {
100
+ if (spinner) {
101
+ spinner.succeed(text);
102
+ spinner = null;
103
+ }
104
+ },
105
+ fail(text) {
106
+ if (spinner) {
107
+ spinner.fail(text);
108
+ spinner = null;
109
+ }
110
+ },
111
+ stop() {
112
+ if (spinner) {
113
+ spinner.stop();
114
+ spinner = null;
115
+ }
116
+ },
117
+ };
118
+ }
119
+ // ============================================================================
120
+ // Built-in Middleware
121
+ // ============================================================================
122
+ /**
123
+ * Dry-run middleware - sets dry_run flag on context based on --dry-run option.
124
+ */
125
+ export function dry_run_middleware() {
126
+ return async (ctx, next) => {
127
+ ctx.dry_run = ctx.options['dry-run'] === true;
128
+ if (ctx.dry_run && ctx.logger) {
129
+ ctx.logger.info('[DRY RUN] Preview mode - no changes will be made');
130
+ }
131
+ const result = await next();
132
+ if (ctx.dry_run && ctx.logger) {
133
+ ctx.logger.info('[DRY RUN] No changes were made');
134
+ }
135
+ return result;
136
+ };
137
+ }
138
+ /**
139
+ * Logging middleware - adds logger to context based on verbosity options.
140
+ */
141
+ export function logging_middleware() {
142
+ return async (ctx, next) => {
143
+ let level = 'normal';
144
+ if (ctx.options['silent'] === true) {
145
+ level = 'silent';
146
+ }
147
+ else if (ctx.options['debug'] === true) {
148
+ level = 'debug';
149
+ }
150
+ else if (ctx.options['verbose'] === true) {
151
+ level = 'verbose';
152
+ }
153
+ ctx.logger = create_logger(level);
154
+ ctx.logger.debug('Starting command execution');
155
+ ctx.logger.debug('Options:', ctx.options);
156
+ const result = await next();
157
+ ctx.logger.debug('Command execution completed');
158
+ return result;
159
+ };
160
+ }
161
+ /**
162
+ * Progress middleware - adds progress tracker to context.
163
+ */
164
+ export function progress_middleware() {
165
+ return async (ctx, next) => {
166
+ const enabled = ctx.options['no-progress'] !== true;
167
+ ctx.progress = create_progress(enabled);
168
+ try {
169
+ return await next();
170
+ }
171
+ finally {
172
+ // Ensure spinner is stopped even if there's an error
173
+ ctx.progress.stop();
174
+ }
175
+ };
176
+ }
177
+ /**
178
+ * Timing middleware - measures command execution duration.
179
+ */
180
+ export function timing_middleware() {
181
+ return async (ctx, next) => {
182
+ const start_time = Date.now();
183
+ ctx.timing = { start_time };
184
+ const result = await next();
185
+ const duration_ms = Date.now() - start_time;
186
+ ctx.timing.duration_ms = duration_ms;
187
+ if (ctx.logger && ctx.logger.level !== 'silent') {
188
+ const seconds = (duration_ms / 1000).toFixed(1);
189
+ ctx.logger.info(`Completed in ${seconds}s`);
190
+ }
191
+ return result;
192
+ };
193
+ }
194
+ /**
195
+ * Error handling middleware - provides consistent error handling and recovery suggestions.
196
+ */
197
+ export function error_handling_middleware() {
198
+ return async (ctx, next) => {
199
+ try {
200
+ const result = await next();
201
+ if (!result.success) {
202
+ const error = result.error;
203
+ if (ctx.logger) {
204
+ ctx.logger.error(`Error: ${error.message}`);
205
+ if (ctx.logger.level === 'debug' || ctx.logger.level === 'verbose') {
206
+ ctx.logger.debug(`Error code: ${error.code}`);
207
+ }
208
+ }
209
+ else {
210
+ console.error(`Error: ${error.message}`);
211
+ }
212
+ // Provide recovery suggestions based on error code
213
+ const suggestions = get_error_suggestions(error.code);
214
+ if (suggestions.length > 0 && ctx.logger) {
215
+ ctx.logger.info('Suggestions:');
216
+ for (const suggestion of suggestions) {
217
+ ctx.logger.info(` - ${suggestion}`);
218
+ }
219
+ }
220
+ }
221
+ return result;
222
+ }
223
+ catch (error) {
224
+ const err = error;
225
+ if (ctx.logger) {
226
+ ctx.logger.error(`Unexpected error: ${err.message}`);
227
+ if (ctx.logger.level === 'debug') {
228
+ ctx.logger.debug('Stack trace:', err.stack);
229
+ }
230
+ }
231
+ else {
232
+ console.error(`Unexpected error: ${err.message}`);
233
+ }
234
+ return failure({
235
+ code: 'UNEXPECTED_ERROR',
236
+ message: err.message,
237
+ });
238
+ }
239
+ };
240
+ }
241
+ /**
242
+ * Returns recovery suggestions for known error codes.
243
+ */
244
+ function get_error_suggestions(code) {
245
+ const suggestions = {
246
+ COMMAND_NOT_FOUND: ['Run "kustodian --help" to see available commands'],
247
+ NOT_FOUND: ['Check that the resource exists', 'Verify the name is spelled correctly'],
248
+ MISSING_DEPENDENCY: [
249
+ 'Install required dependencies',
250
+ 'Check that kubectl and flux CLIs are installed',
251
+ ],
252
+ DEPENDENCY_VALIDATION_ERROR: [
253
+ 'Check for circular dependencies between templates',
254
+ 'Verify all depends_on references are valid',
255
+ ],
256
+ FILE_NOT_FOUND: ['Verify the file path is correct', 'Check file permissions'],
257
+ FILE_WRITE_ERROR: ['Check directory permissions', 'Ensure disk has available space'],
258
+ };
259
+ return suggestions[code] ?? [];
260
+ }
261
+ /**
262
+ * Creates the default middleware stack for CLI operations.
263
+ *
264
+ * Middleware order (outermost to innermost):
265
+ * 1. timing - measures total execution time
266
+ * 2. logging - configures logger
267
+ * 3. error_handling - catches and formats errors
268
+ * 4. dry_run - sets dry-run mode
269
+ * 5. progress - provides spinner for operations
270
+ */
271
+ export function create_default_middleware() {
272
+ return [
273
+ timing_middleware(),
274
+ logging_middleware(),
275
+ error_handling_middleware(),
276
+ dry_run_middleware(),
277
+ progress_middleware(),
278
+ ];
279
+ }
280
+ //# sourceMappingURL=middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/cli/middleware.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import type { KustodianErrorType } from '../core/index.js';
2
+ import { type ResultType } from '../core/index.js';
3
+ import type { CommandType } from './command.js';
4
+ import type { ContainerType } from './container.js';
5
+ import { type MiddlewareType } from './middleware.js';
6
+ /**
7
+ * CLI configuration.
8
+ */
9
+ export interface CLIConfigType {
10
+ name: string;
11
+ version: string;
12
+ description?: string;
13
+ }
14
+ /**
15
+ * CLI builder interface.
16
+ */
17
+ export interface CLIType {
18
+ command(cmd: CommandType): CLIType;
19
+ use(middleware: MiddlewareType): CLIType;
20
+ run(args: string[], container: ContainerType): Promise<ResultType<void, KustodianErrorType>>;
21
+ }
22
+ /**
23
+ * Creates a new CLI instance.
24
+ */
25
+ export declare function create_cli(_config: CLIConfigType): CLIType;
26
+ /**
27
+ * Gets CLI version info string.
28
+ */
29
+ export declare function format_version(config: CLIConfigType): string;
30
+ /**
31
+ * Gets CLI help text.
32
+ */
33
+ export declare function format_help(config: CLIConfigType, commands: CommandType[]): string;
34
+ //# sourceMappingURL=runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/cli/runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,KAAK,UAAU,EAAoB,MAAM,kBAAkB,CAAC;AAErE,OAAO,KAAK,EAAE,WAAW,EAAe,MAAM,cAAc,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAEL,KAAK,cAAc,EAGpB,MAAM,iBAAiB,CAAC;AAEzB;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,OAAO,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC;IACnC,GAAG,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO,CAAC;IACzC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC;CAC9F;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAwD1D;AA6FD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAE5D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,CAoBlF"}
@@ -0,0 +1,156 @@
1
+ import { failure, success } from '../core/index.js';
2
+ import { create_context, create_pipeline, } from './middleware.js';
3
+ /**
4
+ * Creates a new CLI instance.
5
+ */
6
+ export function create_cli(_config) {
7
+ const commands = [];
8
+ const global_middleware = [];
9
+ const cli = {
10
+ command(cmd) {
11
+ commands.push(cmd);
12
+ return cli;
13
+ },
14
+ use(middleware) {
15
+ global_middleware.push(middleware);
16
+ return cli;
17
+ },
18
+ async run(args, container) {
19
+ // Parse command from args
20
+ const [command_name, ...rest_args] = args;
21
+ if (!command_name) {
22
+ // Show help if no command specified
23
+ return success(undefined);
24
+ }
25
+ const command = commands.find((c) => c.name === command_name);
26
+ if (!command) {
27
+ return failure({
28
+ code: 'COMMAND_NOT_FOUND',
29
+ message: `Unknown command: ${command_name}`,
30
+ });
31
+ }
32
+ // Parse options and arguments
33
+ const { options, positional_args } = parse_args(rest_args, command);
34
+ // Create context
35
+ const ctx = create_context(positional_args, options);
36
+ // Combine middleware
37
+ const command_middleware = command.middleware ?? [];
38
+ const all_middleware = [...global_middleware, ...command_middleware];
39
+ // Create handler middleware
40
+ const handler_middleware = create_handler_middleware(command.handler, container);
41
+ // Execute pipeline
42
+ const pipeline = create_pipeline([...all_middleware, handler_middleware]);
43
+ return pipeline(ctx, async () => success(undefined));
44
+ },
45
+ };
46
+ return cli;
47
+ }
48
+ /**
49
+ * Parses command line arguments.
50
+ */
51
+ function parse_args(args, command) {
52
+ const options = {};
53
+ const positional_args = [];
54
+ // Set default values
55
+ for (const opt of command.options ?? []) {
56
+ if (opt.default_value !== undefined) {
57
+ options[opt.name] = opt.default_value;
58
+ }
59
+ }
60
+ let i = 0;
61
+ while (i < args.length) {
62
+ const arg = args[i];
63
+ if (!arg) {
64
+ i++;
65
+ continue;
66
+ }
67
+ if (arg.startsWith('--')) {
68
+ const [key, value] = arg.slice(2).split('=');
69
+ if (!key) {
70
+ i++;
71
+ continue;
72
+ }
73
+ const opt = command.options?.find((o) => o.name === key);
74
+ if (opt) {
75
+ if (opt.type === 'boolean') {
76
+ options[key] = value !== 'false';
77
+ }
78
+ else if (value !== undefined) {
79
+ options[key] = opt.type === 'number' ? Number(value) : value;
80
+ }
81
+ else {
82
+ const next_arg = args[i + 1];
83
+ const next_value = next_arg;
84
+ if (next_value && !next_value.startsWith('-')) {
85
+ options[key] = opt.type === 'number' ? Number(next_value) : next_value;
86
+ i++;
87
+ }
88
+ else {
89
+ options[key] = true;
90
+ }
91
+ }
92
+ }
93
+ }
94
+ else if (arg.startsWith('-') && arg.length === 2) {
95
+ const short = arg.slice(1);
96
+ const opt = command.options?.find((o) => o.short === short);
97
+ if (opt) {
98
+ const next_arg = args[i + 1];
99
+ const next_value = next_arg;
100
+ if (opt.type === 'boolean') {
101
+ options[opt.name] = true;
102
+ }
103
+ else if (next_value && !next_value.startsWith('-')) {
104
+ options[opt.name] = opt.type === 'number' ? Number(next_value) : next_value;
105
+ i++;
106
+ }
107
+ }
108
+ }
109
+ else {
110
+ positional_args.push(arg);
111
+ }
112
+ i++;
113
+ }
114
+ return { options, positional_args };
115
+ }
116
+ /**
117
+ * Creates a middleware that executes the command handler.
118
+ */
119
+ function create_handler_middleware(handler, container) {
120
+ return async (ctx, next) => {
121
+ if (handler) {
122
+ const result = await handler(ctx, container);
123
+ if (!result.success) {
124
+ return result;
125
+ }
126
+ }
127
+ return next();
128
+ };
129
+ }
130
+ /**
131
+ * Gets CLI version info string.
132
+ */
133
+ export function format_version(config) {
134
+ return `${config.name} v${config.version}`;
135
+ }
136
+ /**
137
+ * Gets CLI help text.
138
+ */
139
+ export function format_help(config, commands) {
140
+ const lines = [];
141
+ lines.push(config.description ?? config.name);
142
+ lines.push('');
143
+ lines.push('Usage:');
144
+ lines.push(` ${config.name} <command> [options]`);
145
+ lines.push('');
146
+ lines.push('Commands:');
147
+ for (const cmd of commands) {
148
+ lines.push(` ${cmd.name.padEnd(20)} ${cmd.description}`);
149
+ }
150
+ lines.push('');
151
+ lines.push('Options:');
152
+ lines.push(' --help, -h Show help');
153
+ lines.push(' --version, -v Show version');
154
+ return lines.join('\n');
155
+ }
156
+ //# sourceMappingURL=runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/cli/runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { ClusterType, ProjectType as ProjectConfigType } from '../../schema/index.js';
2
+ /**
3
+ * Resolved defaults for a cluster with all values guaranteed to be defined.
4
+ */
5
+ export interface ResolvedDefaultsType {
6
+ flux_namespace: string;
7
+ oci_repository_name: string;
8
+ oci_registry_secret_name: string;
9
+ flux_reconciliation_interval: string;
10
+ flux_reconciliation_timeout: string;
11
+ }
12
+ /**
13
+ * Resolves defaults for a cluster using three-tier cascading:
14
+ * 1. Cluster spec.defaults (highest priority)
15
+ * 2. Project spec.defaults
16
+ * 3. Schema defaults (hardcoded fallbacks)
17
+ *
18
+ * @param cluster - The cluster configuration
19
+ * @param project_config - Optional project configuration from kustodian.yaml
20
+ * @returns Resolved defaults with all values defined
21
+ */
22
+ export declare function resolve_defaults(cluster: ClusterType, project_config?: ProjectConfigType): ResolvedDefaultsType;
23
+ //# sourceMappingURL=defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,IAAI,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAc3F;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,wBAAwB,EAAE,MAAM,CAAC;IACjC,4BAA4B,EAAE,MAAM,CAAC;IACrC,2BAA2B,EAAE,MAAM,CAAC;CACrC;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,WAAW,EACpB,cAAc,CAAC,EAAE,iBAAiB,GACjC,oBAAoB,CA8BtB"}