@shepherdjerred/helm-types 1.7.0 → 2.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 (96) hide show
  1. package/CHANGELOG.md +78 -0
  2. package/LICENSE +674 -0
  3. package/README.md +82 -63
  4. package/demos/argo-cd-cli.cast +50 -0
  5. package/demos/record-cli-demo.sh +132 -0
  6. package/dist/chart-fetcher.d.ts +14 -0
  7. package/dist/chart-fetcher.d.ts.map +1 -0
  8. package/dist/chart-fetcher.js +105 -0
  9. package/dist/chart-fetcher.js.map +1 -0
  10. package/dist/chart-info-parser.d.ts +6 -0
  11. package/dist/chart-info-parser.d.ts.map +1 -0
  12. package/dist/chart-info-parser.js +50 -0
  13. package/dist/chart-info-parser.js.map +1 -0
  14. package/dist/cli.d.ts +7 -0
  15. package/dist/cli.d.ts.map +1 -0
  16. package/dist/cli.js +140 -22841
  17. package/dist/cli.js.map +1 -0
  18. package/dist/comment-parser.d.ts +10 -0
  19. package/dist/comment-parser.d.ts.map +1 -0
  20. package/dist/comment-parser.js +150 -0
  21. package/dist/comment-parser.js.map +1 -0
  22. package/dist/config.d.ts +24 -0
  23. package/dist/config.d.ts.map +1 -0
  24. package/dist/config.js +169 -0
  25. package/dist/config.js.map +1 -0
  26. package/dist/helm-types.d.ts +16 -0
  27. package/dist/helm-types.d.ts.map +1 -0
  28. package/{src/helm-types.ts → dist/helm-types.js} +1 -1
  29. package/dist/helm-types.js.map +1 -0
  30. package/dist/index.d.ts +25 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +22 -23
  33. package/dist/index.js.map +1 -0
  34. package/dist/interface-generator.d.ts +6 -0
  35. package/dist/interface-generator.d.ts.map +1 -0
  36. package/dist/interface-generator.js +181 -0
  37. package/dist/interface-generator.js.map +1 -0
  38. package/dist/schemas.d.ts +13 -0
  39. package/dist/schemas.d.ts.map +1 -0
  40. package/{src/schemas.ts → dist/schemas.js} +12 -23
  41. package/dist/schemas.js.map +1 -0
  42. package/dist/type-converter-helpers.d.ts +20 -0
  43. package/dist/type-converter-helpers.d.ts.map +1 -0
  44. package/dist/type-converter-helpers.js +75 -0
  45. package/dist/type-converter-helpers.js.map +1 -0
  46. package/dist/type-converter.d.ts +26 -0
  47. package/dist/type-converter.d.ts.map +1 -0
  48. package/dist/type-converter.js +378 -0
  49. package/dist/type-converter.js.map +1 -0
  50. package/dist/types.d.ts +35 -0
  51. package/dist/types.d.ts.map +1 -0
  52. package/dist/types.js +3 -0
  53. package/dist/types.js.map +1 -0
  54. package/dist/utils.d.ts +17 -0
  55. package/dist/utils.d.ts.map +1 -0
  56. package/dist/utils.js +69 -0
  57. package/dist/utils.js.map +1 -0
  58. package/dist/yaml-comment-filters.d.ts +7 -0
  59. package/dist/yaml-comment-filters.d.ts.map +1 -0
  60. package/dist/yaml-comment-filters.js +91 -0
  61. package/dist/yaml-comment-filters.js.map +1 -0
  62. package/dist/yaml-comment-regex-parser.d.ts +8 -0
  63. package/dist/yaml-comment-regex-parser.d.ts.map +1 -0
  64. package/dist/yaml-comment-regex-parser.js +120 -0
  65. package/dist/yaml-comment-regex-parser.js.map +1 -0
  66. package/dist/yaml-comments.d.ts +74 -0
  67. package/dist/yaml-comments.d.ts.map +1 -0
  68. package/dist/yaml-comments.js +406 -0
  69. package/dist/yaml-comments.js.map +1 -0
  70. package/dist/yaml-preprocess.d.ts +15 -0
  71. package/dist/yaml-preprocess.d.ts.map +1 -0
  72. package/dist/yaml-preprocess.js +170 -0
  73. package/dist/yaml-preprocess.js.map +1 -0
  74. package/examples/argo-cd/generate.mjs +23 -0
  75. package/package.json +17 -12
  76. package/src/__fixtures__/sample-chart/Chart.yaml +0 -6
  77. package/src/__fixtures__/sample-chart/values.schema.json +0 -32
  78. package/src/__fixtures__/sample-chart/values.yaml +0 -22
  79. package/src/chart-fetcher.ts +0 -221
  80. package/src/chart-info-parser.ts +0 -64
  81. package/src/cli.ts +0 -217
  82. package/src/code-generator.ts +0 -226
  83. package/src/comment-parser.ts +0 -180
  84. package/src/config.ts +0 -195
  85. package/src/index.ts +0 -28
  86. package/src/interface-generator.ts +0 -238
  87. package/src/reset.d.ts +0 -1
  88. package/src/type-converter-helpers.ts +0 -108
  89. package/src/type-converter.ts +0 -520
  90. package/src/type-inference.ts +0 -548
  91. package/src/types.ts +0 -41
  92. package/src/utils.ts +0 -76
  93. package/src/yaml-comment-filters.ts +0 -103
  94. package/src/yaml-comment-regex-parser.ts +0 -150
  95. package/src/yaml-comments.ts +0 -507
  96. package/src/yaml-preprocess.ts +0 -235
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Clean up YAML comment text for use in JSDoc
3
+ */
4
+ export declare function cleanYAMLComment(comment: string): string;
5
+ /**
6
+ * Parse YAML comments and associate them with keys
7
+ * Exported for testing purposes
8
+ */
9
+ export declare function parseYAMLComments(yamlContent: string): Map<string, string>;
10
+ //# sourceMappingURL=comment-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comment-parser.d.ts","sourceRoot":"","sources":["../src/comment-parser.ts"],"names":[],"mappings":"AA6CA;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAoCxD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAyF1E"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Check if a line looks like an example/code block rather than documentation
3
+ */
4
+ function isExampleLine(line) {
5
+ return (/^-{3,}/.test(line) ||
6
+ /^BEGIN .*(?:KEY|CERTIFICATE)/.test(line) ||
7
+ /^END .*(?:KEY|CERTIFICATE)/.test(line) ||
8
+ (line.startsWith("-") && (line.includes(":") || /^-\s+\|/.test(line))) ||
9
+ /^\w+:$/.test(line) ||
10
+ /^[\w-]+:\s*$/.test(line) ||
11
+ /^[\w.-]+:\s*\|/.test(line) || // YAML multiline indicator (e.g., "policy.csv: |")
12
+ line.startsWith("|") ||
13
+ line.includes("$ARGOCD_") ||
14
+ line.includes("$KUBE_") ||
15
+ /^\s{2,}/.test(line) ||
16
+ /^echo\s+/.test(line) ||
17
+ /^[pg],\s*/.test(line) // Policy rules like "p, role:..." or "g, subject, ..."
18
+ );
19
+ }
20
+ /**
21
+ * Check if a line looks like normal prose (sentence case, punctuation)
22
+ */
23
+ function looksLikeProse(line) {
24
+ return (/^[A-Z][\w\s]+[.!?]$/.test(line) ||
25
+ /^[A-Z][\w\s,'"-]+(?::\s*)?$/.test(line) ||
26
+ line.startsWith("Ref:") ||
27
+ line.startsWith("See:") ||
28
+ line.startsWith("http://") ||
29
+ line.startsWith("https://"));
30
+ }
31
+ /**
32
+ * Strip YAML comment markers from a single line
33
+ */
34
+ function stripCommentMarkers(line) {
35
+ let result = line.replace(/^#+\s*/, "");
36
+ result = result.replace(/^--\s*/, "");
37
+ result = result.replace(/^##\s*/, "");
38
+ return result.trim();
39
+ }
40
+ /**
41
+ * Clean up YAML comment text for use in JSDoc
42
+ */
43
+ export function cleanYAMLComment(comment) {
44
+ const lines = comment.split("\n").map((line) => stripCommentMarkers(line));
45
+ // Filter and clean lines
46
+ const cleaned = [];
47
+ let inCodeBlock = false;
48
+ for (const currentLine of lines) {
49
+ if (currentLine.length === 0) {
50
+ if (inCodeBlock) {
51
+ inCodeBlock = false;
52
+ }
53
+ continue;
54
+ }
55
+ if (currentLine.startsWith("@default")) {
56
+ continue;
57
+ }
58
+ if (isExampleLine(currentLine)) {
59
+ inCodeBlock = true;
60
+ continue;
61
+ }
62
+ if (inCodeBlock) {
63
+ if (looksLikeProse(currentLine)) {
64
+ inCodeBlock = false;
65
+ }
66
+ else {
67
+ continue;
68
+ }
69
+ }
70
+ cleaned.push(currentLine);
71
+ }
72
+ return cleaned.join("\n").trim();
73
+ }
74
+ /**
75
+ * Parse YAML comments and associate them with keys
76
+ * Exported for testing purposes
77
+ */
78
+ export function parseYAMLComments(yamlContent) {
79
+ const lines = yamlContent.split("\n");
80
+ const comments = new Map();
81
+ let pendingComments = [];
82
+ const indentStack = [];
83
+ for (const line of lines) {
84
+ const currentLine = line;
85
+ const trimmed = currentLine.trim();
86
+ // Skip empty lines
87
+ if (!trimmed) {
88
+ // Empty lines break comment association only if we already have comments
89
+ // This allows comments separated by blank lines to still be associated
90
+ continue;
91
+ }
92
+ // Check if line is a comment
93
+ if (trimmed.startsWith("#")) {
94
+ const comment = trimmed.slice(1).trim();
95
+ if (comment) {
96
+ // Track the indentation level of the comment
97
+ const commentIndent = currentLine.search(/\S/);
98
+ pendingComments.push({ text: comment, indent: commentIndent });
99
+ }
100
+ continue;
101
+ }
102
+ // Check if line has a key
103
+ const keyMatch = /^(\s*)([\w-]+)\s*:/.exec(currentLine);
104
+ if (keyMatch) {
105
+ const indent = keyMatch[1]?.length ?? 0;
106
+ const key = keyMatch[2];
107
+ if (key === "" || key == null) {
108
+ continue;
109
+ }
110
+ // Update indent stack
111
+ const lastIndent = indentStack.at(-1);
112
+ while (lastIndent &&
113
+ indentStack.length > 0 &&
114
+ lastIndent.indent >= indent) {
115
+ indentStack.pop();
116
+ }
117
+ // Build full key path
118
+ const keyPath = indentStack.length > 0
119
+ ? `${indentStack.map((s) => s.key).join(".")}.${key}`
120
+ : key;
121
+ // Check for inline comment
122
+ const inlineCommentMatch = /#\s*(\S.*)$/.exec(currentLine);
123
+ if (inlineCommentMatch?.[1] != null && inlineCommentMatch[1] !== "") {
124
+ pendingComments.push({ text: inlineCommentMatch[1].trim(), indent });
125
+ }
126
+ // Filter pending comments to only those at the same or shallower indent level as this key
127
+ // This prevents comments from deeper nested properties being associated with a shallower property
128
+ const relevantComments = pendingComments.filter((c) => c.indent <= indent);
129
+ // Associate relevant comments with this key
130
+ if (relevantComments.length > 0) {
131
+ // Join and clean comments
132
+ const commentText = cleanYAMLComment(relevantComments.map((c) => c.text).join("\n"));
133
+ if (commentText) {
134
+ comments.set(keyPath, commentText);
135
+ }
136
+ }
137
+ // Clear pending comments after processing
138
+ pendingComments = [];
139
+ // Add to indent stack
140
+ indentStack.push({ indent, key });
141
+ }
142
+ else {
143
+ // If we encounter a non-comment, non-key line, clear pending comments
144
+ // This handles list items and other YAML structures
145
+ pendingComments = [];
146
+ }
147
+ }
148
+ return comments;
149
+ }
150
+ //# sourceMappingURL=comment-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comment-parser.js","sourceRoot":"","sources":["../src/comment-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Return the canonical type for a well-known Kubernetes field, or undefined if
3
+ * the property name doesn't match or the default value's shape is incompatible
4
+ * (e.g. an RBAC `resources: ["secrets"]` array, which must NOT become
5
+ * ResourceRequirements).
6
+ */
7
+ export declare function getWellKnownK8sFieldType(propertyName: string, value: unknown): {
8
+ type: string;
9
+ description: string;
10
+ } | undefined;
11
+ /**
12
+ * Configuration for types that should allow arbitrary additional properties.
13
+ * Maps chart names to array of key paths that should be extensible.
14
+ *
15
+ * These are typically config maps, RBAC policies, or other key-value stores
16
+ * where the schema doesn't enumerate all possible keys.
17
+ */
18
+ export declare const EXTENSIBLE_TYPE_PATTERNS: Record<string, string[]>;
19
+ /**
20
+ * Pattern-based detection for extensible types.
21
+ * Returns true if the property should allow arbitrary keys.
22
+ */
23
+ export declare function shouldAllowArbitraryProps(keyPath: string, chartName: string, propertyName: string, yamlComment?: string): boolean;
24
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAuCA;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,OAAO,GACb;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAiBnD;AAED;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAgD7D,CAAC;AAEF;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CA6DT"}
package/dist/config.js ADDED
@@ -0,0 +1,169 @@
1
+ /**
2
+ * Well-known Kubernetes fields whose shape is defined by the Kubernetes API,
3
+ * not by whatever subset a chart's values.yaml happens to set as defaults.
4
+ *
5
+ * Inferring these from defaults produces types that are too narrow — e.g. a
6
+ * chart defaulting `resources: {requests: {cpu: 0.2}}` would otherwise forbid
7
+ * setting a memory request at all. When a property matches one of these names
8
+ * AND its default value has a compatible shape, the canonical permissive type
9
+ * is emitted instead of a defaults-derived interface.
10
+ */
11
+ const K8S_WELL_KNOWN_FIELDS = {
12
+ resources: {
13
+ type: "{ requests?: Record<string, string | number>; limits?: Record<string, string | number> }",
14
+ // RBAC rules also use a key named `resources`, but as an array of strings —
15
+ // the object guard keeps those out.
16
+ allowedShapes: ["object"],
17
+ description: "Kubernetes container resources (standard ResourceRequirements: arbitrary resource names, string or numeric quantities)",
18
+ },
19
+ nodeselector: {
20
+ type: "Record<string, string>",
21
+ allowedShapes: ["object"],
22
+ description: "Kubernetes nodeSelector (arbitrary label key/value pairs)",
23
+ },
24
+ tolerations: {
25
+ type: "unknown[]",
26
+ allowedShapes: ["array"],
27
+ description: "Kubernetes tolerations (standard Toleration objects)",
28
+ },
29
+ affinity: {
30
+ type: "Record<string, unknown>",
31
+ allowedShapes: ["object"],
32
+ description: "Kubernetes affinity (standard Affinity object)",
33
+ },
34
+ };
35
+ /**
36
+ * Return the canonical type for a well-known Kubernetes field, or undefined if
37
+ * the property name doesn't match or the default value's shape is incompatible
38
+ * (e.g. an RBAC `resources: ["secrets"]` array, which must NOT become
39
+ * ResourceRequirements).
40
+ */
41
+ export function getWellKnownK8sFieldType(propertyName, value) {
42
+ const field = K8S_WELL_KNOWN_FIELDS[propertyName.toLowerCase()];
43
+ if (!field) {
44
+ return undefined;
45
+ }
46
+ // A null/undefined default carries no shape signal — trust the name.
47
+ if (value != null) {
48
+ const shape = Array.isArray(value)
49
+ ? "array"
50
+ : typeof value === "object"
51
+ ? "object"
52
+ : "primitive";
53
+ if (shape === "primitive" || !field.allowedShapes.includes(shape)) {
54
+ return undefined;
55
+ }
56
+ }
57
+ return { type: field.type, description: field.description };
58
+ }
59
+ /**
60
+ * Configuration for types that should allow arbitrary additional properties.
61
+ * Maps chart names to array of key paths that should be extensible.
62
+ *
63
+ * These are typically config maps, RBAC policies, or other key-value stores
64
+ * where the schema doesn't enumerate all possible keys.
65
+ */
66
+ export const EXTENSIBLE_TYPE_PATTERNS = {
67
+ "argo-cd": [
68
+ "configs.cm", // Allows accounts.*, and other custom config
69
+ "configs.rbac", // Allows policy.*, custom RBAC rules
70
+ ],
71
+ "kube-prometheus-stack": [
72
+ "grafana", // Allows "grafana.ini" and other quoted config keys
73
+ "grafana.deploymentStrategy", // Allows Kubernetes Deployment strategy objects with flexible fields
74
+ "alertmanager.config.receivers", // Allows receiver-specific config blocks on array elements
75
+ "prometheus-node-exporter", // Allows extraHostVolumeMounts and other node exporter specific configs
76
+ "prometheusNodeExporter", // Also support camelCase variant
77
+ ],
78
+ loki: [
79
+ "loki.limits_config", // Allows retention_period and other limit configs (note: underscore, not camelCase)
80
+ "loki.limitsConfig", // Also support camelCase variant
81
+ "compactor", // Allows various compactor settings
82
+ "minio.persistence", // Storage configs
83
+ ],
84
+ minecraft: [
85
+ "persistence", // Storage class and other persistence options
86
+ ],
87
+ openebs: [
88
+ "zfs-localpv", // ZFS-specific configs
89
+ ],
90
+ "postgres-operator": [
91
+ "configGeneral", // General config allows various settings
92
+ ],
93
+ chartmuseum: [
94
+ "persistence", // Storage options
95
+ ],
96
+ "intel-device-plugins-operator": [
97
+ // Root level for device-specific settings
98
+ "",
99
+ ],
100
+ "prometheus-adapter": [
101
+ "rules", // Allows resource, custom, external and other rule configurations
102
+ ],
103
+ velero: [
104
+ "kubectl.image", // Allows image configuration
105
+ ],
106
+ seaweedfs: [
107
+ "volume.dataDirs", // dataDirs elements support size, storageClass when type is persistentVolumeClaim
108
+ ],
109
+ // OCI charts that document config keys only as commented-out examples in
110
+ // values.yaml, so inference from active defaults misses valid keys.
111
+ "agent-stack-k8s": [
112
+ "config", // config.queue / max-in-flight / empty-job-grace-period / default-checkout-params are valid but not defaulted
113
+ ],
114
+ };
115
+ /**
116
+ * Pattern-based detection for extensible types.
117
+ * Returns true if the property should allow arbitrary keys.
118
+ */
119
+ export function shouldAllowArbitraryProps(keyPath, chartName, propertyName, yamlComment) {
120
+ // Check configured patterns for this chart
121
+ const patterns = EXTENSIBLE_TYPE_PATTERNS[chartName];
122
+ if (patterns) {
123
+ for (const pattern of patterns) {
124
+ if (pattern === keyPath ||
125
+ (pattern === "" && keyPath.split(".").length === 1)) {
126
+ return true;
127
+ }
128
+ // Also match if keyPath starts with pattern
129
+ if (pattern && keyPath.startsWith(`${pattern}.`)) {
130
+ return true;
131
+ }
132
+ }
133
+ }
134
+ // Pattern-based detection from property names
135
+ const lowerProp = propertyName.toLowerCase();
136
+ const lowerPath = keyPath.toLowerCase();
137
+ // Common names that suggest extensibility
138
+ const extensibleNames = [
139
+ "cm", // ConfigMap data
140
+ "data",
141
+ "config",
142
+ "configs",
143
+ "settings",
144
+ "parameters",
145
+ "options",
146
+ "extraenv",
147
+ "annotations",
148
+ "labels",
149
+ "nodeaffinity",
150
+ "toleration",
151
+ ];
152
+ if (extensibleNames.includes(lowerProp)) {
153
+ return true;
154
+ }
155
+ // Check for persistence/storage which often has provider-specific fields
156
+ if (lowerPath.includes("persistence") || lowerPath.includes("storage")) {
157
+ return true;
158
+ }
159
+ // Check YAML comments for hints
160
+ if (yamlComment !== "" && yamlComment != null) {
161
+ const commentLower = yamlComment.toLowerCase();
162
+ if (/\b(?:arbitrary|custom|additional|extra|any)\s+(?:keys?|properties?|fields?|values?)\b/i.test(commentLower) ||
163
+ /\bkey[\s-]?value\s+pairs?\b/i.test(commentLower)) {
164
+ return true;
165
+ }
166
+ }
167
+ return false;
168
+ }
169
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * This file previously served as a barrel/re-export module.
3
+ * Import directly from submodules instead:
4
+ * - ./types.ts - Core types
5
+ * - ./schemas.ts - Zod schemas
6
+ * - ./config.ts - Configuration
7
+ * - ./chart-info-parser.ts - Chart info parsing
8
+ * - ./yaml-comments.ts - YAML comments
9
+ * - ./chart-fetcher.ts - Chart fetching
10
+ * - ./type-converter.ts - Type conversion
11
+ * - ./interface-generator.ts - Code generation
12
+ * - ./utils.ts - Utilities
13
+ */
14
+ /** Version marker for the helm-types module. */
15
+ export declare const HELM_TYPES_VERSION = "1.1.0";
16
+ //# sourceMappingURL=helm-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helm-types.d.ts","sourceRoot":"","sources":["../src/helm-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,gDAAgD;AAChD,eAAO,MAAM,kBAAkB,UAAU,CAAC"}
@@ -11,6 +11,6 @@
11
11
  * - ./interface-generator.ts - Code generation
12
12
  * - ./utils.ts - Utilities
13
13
  */
14
-
15
14
  /** Version marker for the helm-types module. */
16
15
  export const HELM_TYPES_VERSION = "1.1.0";
16
+ //# sourceMappingURL=helm-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helm-types.js","sourceRoot":"","sources":["../src/helm-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,gDAAgD;AAChD,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @homelab/helm-types
3
+ *
4
+ * A library for generating TypeScript types from Helm chart values.
5
+ *
6
+ * Core functionality:
7
+ * - Fetch Helm charts from repositories
8
+ * - Parse values.yaml and values.schema.json
9
+ * - Generate TypeScript interfaces with JSDoc comments
10
+ * - Support for nested objects, arrays, and unions
11
+ *
12
+ * This is a general-purpose library that can be used with any Helm chart.
13
+ * Application-specific logic should be kept in your application code.
14
+ *
15
+ * The root export is the complete supported public API.
16
+ */
17
+ export { fetchHelmChart } from "./chart-fetcher.js";
18
+ export type { FetchedHelmChart } from "./chart-fetcher.js";
19
+ export { parseChartInfoFromVersions } from "./chart-info-parser.js";
20
+ export { generateTypeScriptCode } from "./interface-generator.js";
21
+ export { convertToTypeScriptInterface, inferTypeFromValue, jsonSchemaToTypeScript, } from "./type-converter.js";
22
+ export type { ChartInfo, JSONSchemaProperty, TypeProperty, TypeScriptInterface, } from "./types.js";
23
+ export { HelmValueSchema } from "./schemas.js";
24
+ export type { HelmValue } from "./schemas.js";
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EACL,4BAA4B,EAC5B,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,SAAS,EACT,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC"}
package/dist/index.js CHANGED
@@ -1,23 +1,22 @@
1
- import { createRequire } from "node:module";
2
- var __defProp = Object.defineProperty;
3
- var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
4
- var __returnValue = (v) => v;
5
- function __exportSetter(name, newValue) {
6
- this[name] = __returnValue.bind(null, newValue);
7
- }
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, {
11
- get: all[name],
12
- enumerable: true,
13
- configurable: true,
14
- set: __exportSetter.bind(all, name)
15
- });
16
- };
17
- var __require = /* @__PURE__ */ createRequire(import.meta.url);
18
-
19
- // src/index.ts
20
- var HELM_TYPES_PACKAGE_VERSION = "1.1.0";
21
- export {
22
- HELM_TYPES_PACKAGE_VERSION
23
- };
1
+ /**
2
+ * @homelab/helm-types
3
+ *
4
+ * A library for generating TypeScript types from Helm chart values.
5
+ *
6
+ * Core functionality:
7
+ * - Fetch Helm charts from repositories
8
+ * - Parse values.yaml and values.schema.json
9
+ * - Generate TypeScript interfaces with JSDoc comments
10
+ * - Support for nested objects, arrays, and unions
11
+ *
12
+ * This is a general-purpose library that can be used with any Helm chart.
13
+ * Application-specific logic should be kept in your application code.
14
+ *
15
+ * The root export is the complete supported public API.
16
+ */
17
+ export { fetchHelmChart } from "./chart-fetcher.js";
18
+ export { parseChartInfoFromVersions } from "./chart-info-parser.js";
19
+ export { generateTypeScriptCode } from "./interface-generator.js";
20
+ export { convertToTypeScriptInterface, inferTypeFromValue, jsonSchemaToTypeScript, } from "./type-converter.js";
21
+ export { HelmValueSchema } from "./schemas.js";
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EACL,4BAA4B,EAC5B,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { TypeScriptInterface } from "./types.js";
2
+ /**
3
+ * Generate TypeScript code from interface definition
4
+ */
5
+ export declare function generateTypeScriptCode(mainInterface: TypeScriptInterface, chartName: string): string;
6
+ //# sourceMappingURL=interface-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface-generator.d.ts","sourceRoot":"","sources":["../src/interface-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAStD;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,mBAAmB,EAClC,SAAS,EAAE,MAAM,GAChB,MAAM,CAyBR"}