@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,181 @@
1
+ import { ArraySchema, RecordSchema, StringSchema, ActualNumberSchema, ActualBooleanSchema, } from "./schemas.js";
2
+ /**
3
+ * Generate TypeScript code from interface definition
4
+ */
5
+ export function generateTypeScriptCode(mainInterface, chartName) {
6
+ const interfaces = [];
7
+ // Collect all nested interfaces
8
+ collectNestedInterfaces(mainInterface, interfaces);
9
+ let code = `// Generated TypeScript types for ${chartName} Helm chart\n\n`;
10
+ // Generate all interfaces
11
+ for (const iface of interfaces) {
12
+ code += generateInterfaceCode(iface);
13
+ code += "\n";
14
+ }
15
+ // Generate parameter type (flattened dot notation)
16
+ code += generateParameterType(mainInterface, chartName);
17
+ // Add header comment for generated files
18
+ if (code.includes(": any")) {
19
+ code = `// Generated TypeScript types for ${chartName} Helm chart
20
+
21
+ ${code.slice(Math.max(0, code.indexOf("\n\n") + 2))}`;
22
+ }
23
+ return code;
24
+ }
25
+ function collectNestedInterfaces(iface, collected) {
26
+ for (const prop of Object.values(iface.properties)) {
27
+ if (prop.nested) {
28
+ collected.push(prop.nested);
29
+ collectNestedInterfaces(prop.nested, collected);
30
+ }
31
+ }
32
+ // Add main interface last so dependencies come first
33
+ if (!collected.some((i) => i.name === iface.name)) {
34
+ collected.push(iface);
35
+ }
36
+ }
37
+ function generateInterfaceCode(iface) {
38
+ const hasProperties = Object.keys(iface.properties).length > 0;
39
+ if (!hasProperties && iface.allowArbitraryProps !== true) {
40
+ // Use 'object' for empty interfaces instead of '{}'
41
+ return `export type ${iface.name} = object;\n`;
42
+ }
43
+ let code = `export type ${iface.name} = {\n`;
44
+ // Add index signature if this type allows arbitrary properties
45
+ if (iface.allowArbitraryProps === true) {
46
+ code += ` /**\n`;
47
+ code += ` * This type allows arbitrary additional properties beyond those defined below.\n`;
48
+ code += ` * This is common for config maps, custom settings, and extensible configurations.\n`;
49
+ code += ` */\n`;
50
+ code += ` [key: string]: unknown;\n`;
51
+ }
52
+ for (const [key, prop] of Object.entries(iface.properties)) {
53
+ const optional = prop.optional ? "?" : "";
54
+ // Generate JSDoc comment if we have description or default
55
+ if ((prop.description != null && prop.description !== "") ||
56
+ prop.default !== undefined) {
57
+ code += ` /**\n`;
58
+ if (prop.description != null && prop.description !== "") {
59
+ // Format multi-line descriptions properly with " * " prefix
60
+ // Escape */ sequences to prevent premature comment closure
61
+ const escapedDescription = prop.description.replaceAll("*/", String.raw `*\/`);
62
+ const descLines = escapedDescription.split("\n");
63
+ for (const line of descLines) {
64
+ code += ` * ${line}\n`;
65
+ }
66
+ }
67
+ if (prop.default !== undefined) {
68
+ const defaultStr = formatDefaultValue(prop.default);
69
+ const hasDescription = prop.description != null && prop.description !== "";
70
+ if (defaultStr !== "" && hasDescription && defaultStr != null) {
71
+ code += ` *\n`;
72
+ }
73
+ if (defaultStr !== "" && defaultStr != null) {
74
+ code += ` * @default ${defaultStr}\n`;
75
+ }
76
+ }
77
+ code += ` */\n`;
78
+ }
79
+ code += ` ${key}${optional}: ${prop.type};\n`;
80
+ }
81
+ code += "};\n";
82
+ return code;
83
+ }
84
+ /**
85
+ * Format a default value for display in JSDoc
86
+ */
87
+ function formatDefaultValue(value) {
88
+ if (value === null) {
89
+ return "null";
90
+ }
91
+ if (value === undefined) {
92
+ return null;
93
+ }
94
+ // Handle arrays
95
+ const arrayCheck = ArraySchema.safeParse(value);
96
+ if (arrayCheck.success) {
97
+ if (arrayCheck.data.length === 0) {
98
+ return "[]";
99
+ }
100
+ if (arrayCheck.data.length <= 3) {
101
+ try {
102
+ return JSON.stringify(arrayCheck.data);
103
+ }
104
+ catch {
105
+ return "[...]";
106
+ }
107
+ }
108
+ return `[...] (${String(arrayCheck.data.length)} items)`;
109
+ }
110
+ // Handle objects
111
+ const recordCheck = RecordSchema.safeParse(value);
112
+ if (recordCheck.success) {
113
+ const keys = Object.keys(recordCheck.data);
114
+ if (keys.length === 0) {
115
+ return "{}";
116
+ }
117
+ if (keys.length <= 3) {
118
+ try {
119
+ return JSON.stringify(recordCheck.data);
120
+ }
121
+ catch {
122
+ return "{...}";
123
+ }
124
+ }
125
+ return `{...} (${String(keys.length)} keys)`;
126
+ }
127
+ // Primitives
128
+ const stringCheck = StringSchema.safeParse(value);
129
+ if (stringCheck.success) {
130
+ // Truncate long strings
131
+ if (stringCheck.data.length > 50) {
132
+ return `"${stringCheck.data.slice(0, 47)}..."`;
133
+ }
134
+ return `"${stringCheck.data}"`;
135
+ }
136
+ // Handle other primitives (numbers, booleans, etc.)
137
+ const numberCheck = ActualNumberSchema.safeParse(value);
138
+ if (numberCheck.success) {
139
+ return String(numberCheck.data);
140
+ }
141
+ const booleanCheck = ActualBooleanSchema.safeParse(value);
142
+ if (booleanCheck.success) {
143
+ return String(booleanCheck.data);
144
+ }
145
+ // Fallback for unknown types - try JSON.stringify
146
+ try {
147
+ return JSON.stringify(value);
148
+ }
149
+ catch {
150
+ return "unknown";
151
+ }
152
+ }
153
+ function generateParameterType(iface, chartName) {
154
+ const parameterKeys = flattenInterfaceKeys(iface);
155
+ const normalizedChartName = capitalizeFirst(chartName).replaceAll("-", "");
156
+ let code = `export type ${normalizedChartName}HelmParameters = {\n`;
157
+ for (const key of parameterKeys) {
158
+ code += ` "${key}"?: string;\n`;
159
+ }
160
+ code += "};\n";
161
+ return code;
162
+ }
163
+ function flattenInterfaceKeys(iface, prefix = "") {
164
+ const keys = [];
165
+ for (const [key, prop] of Object.entries(iface.properties)) {
166
+ // Remove quotes from key for parameter names
167
+ const cleanKey = key.replaceAll('"', "");
168
+ const fullKey = prefix ? `${prefix}.${cleanKey}` : cleanKey;
169
+ if (prop.nested) {
170
+ keys.push(...flattenInterfaceKeys(prop.nested, fullKey));
171
+ }
172
+ else {
173
+ keys.push(fullKey);
174
+ }
175
+ }
176
+ return keys;
177
+ }
178
+ function capitalizeFirst(str) {
179
+ return str.charAt(0).toUpperCase() + str.slice(1);
180
+ }
181
+ //# sourceMappingURL=interface-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface-generator.js","sourceRoot":"","sources":["../src/interface-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { z } from "zod";
2
+ export declare const StringSchema: z.ZodString;
3
+ export declare const ActualNumberSchema: z.ZodNumber;
4
+ export declare const ActualBooleanSchema: z.ZodBoolean;
5
+ export declare const NullSchema: z.ZodNull;
6
+ export declare const UndefinedSchema: z.ZodUndefined;
7
+ export declare const ArraySchema: z.ZodArray<z.ZodUnknown>;
8
+ export declare const RecordSchema: z.ZodRecord<z.ZodString, z.ZodUnknown>;
9
+ export declare const ErrorSchema: z.ZodCustom<Error, Error>;
10
+ export declare const StringBooleanSchema: z.ZodString;
11
+ export declare const HelmValueSchema: z.ZodType<Record<string, unknown>>;
12
+ export type HelmValue = z.infer<typeof HelmValueSchema>;
13
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,YAAY,aAAa,CAAC;AACvC,eAAO,MAAM,kBAAkB,aAAa,CAAC;AAC7C,eAAO,MAAM,mBAAmB,cAAc,CAAC;AAC/C,eAAO,MAAM,UAAU,WAAW,CAAC;AACnC,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAC7C,eAAO,MAAM,WAAW,0BAAuB,CAAC;AAChD,eAAO,MAAM,YAAY,wCAAoC,CAAC;AAC9D,eAAO,MAAM,WAAW,2BAAsB,CAAC;AAG/C,eAAO,MAAM,mBAAmB,aAKN,CAAC;AAG3B,eAAO,MAAM,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAc9D,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
@@ -1,6 +1,5 @@
1
1
  // Zod schemas for runtime validation
2
2
  import { z } from "zod";
3
-
4
3
  // Individual Zod schemas for type detection
5
4
  export const StringSchema = z.string();
6
5
  export const ActualNumberSchema = z.number(); // Runtime number
@@ -10,30 +9,20 @@ export const UndefinedSchema = z.undefined();
10
9
  export const ArraySchema = z.array(z.unknown());
11
10
  export const RecordSchema = z.record(z.string(), z.unknown());
12
11
  export const ErrorSchema = z.instanceof(Error);
13
-
14
12
  // Custom boolean string parser - only matches actual boolean-like strings
15
13
  export const StringBooleanSchema = z.string().refine((val) => {
16
- const lower = val.toLowerCase();
17
- return (
18
- lower === "true" || lower === "false" || lower === "yes" || lower === "no"
19
- );
14
+ const lower = val.toLowerCase();
15
+ return (lower === "true" || lower === "false" || lower === "yes" || lower === "no");
20
16
  }, "Not a boolean string");
21
-
22
17
  // Zod schema for validating YAML values - recursive definition with more flexibility
23
- export const HelmValueSchema: z.ZodType<Record<string, unknown>> = z.lazy(() =>
24
- z.record(
18
+ export const HelmValueSchema = z.lazy(() => z.record(z.string(), z.union([
25
19
  z.string(),
26
- z.union([
27
- z.string(),
28
- z.number(),
29
- z.boolean(),
30
- z.null(),
31
- z.undefined(),
32
- z.array(z.unknown()), // Allow arrays of any type
33
- HelmValueSchema,
34
- z.unknown(), // Allow any other values as fallback
35
- ]),
36
- ),
37
- );
38
-
39
- export type HelmValue = z.infer<typeof HelmValueSchema>;
20
+ z.number(),
21
+ z.boolean(),
22
+ z.null(),
23
+ z.undefined(),
24
+ z.array(z.unknown()), // Allow arrays of any type
25
+ HelmValueSchema,
26
+ z.unknown(), // Allow any other values as fallback
27
+ ])));
28
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,4CAA4C;AAC5C,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AACvC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,iBAAiB;AAC/D,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,kBAAkB;AAClE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AACnC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;AAC7C,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAChD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAC9D,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAE/C,0EAA0E;AAC1E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;IAC3D,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAChC,OAAO,CACL,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,CAC3E,CAAC;AACJ,CAAC,EAAE,sBAAsB,CAAC,CAAC;AAE3B,qFAAqF;AACrF,MAAM,CAAC,MAAM,eAAe,GAAuC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAC7E,CAAC,CAAC,MAAM,CACN,CAAC,CAAC,MAAM,EAAE,EACV,CAAC,CAAC,KAAK,CAAC;IACN,CAAC,CAAC,MAAM,EAAE;IACV,CAAC,CAAC,MAAM,EAAE;IACV,CAAC,CAAC,OAAO,EAAE;IACX,CAAC,CAAC,IAAI,EAAE;IACR,CAAC,CAAC,SAAS,EAAE;IACb,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,2BAA2B;IACjD,eAAe;IACf,CAAC,CAAC,OAAO,EAAE,EAAE,qCAAqC;CACnD,CAAC,CACH,CACF,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { JSONSchemaProperty, TypeProperty } from "./types.js";
2
+ export type PropertyConversionContext = {
3
+ value: unknown;
4
+ nestedTypeName: string;
5
+ schema?: JSONSchemaProperty;
6
+ propertyName?: string;
7
+ yamlComment?: string;
8
+ yamlComments?: Map<string, string>;
9
+ fullKey?: string;
10
+ chartName?: string;
11
+ };
12
+ /**
13
+ * Merge description from schema and YAML comments
14
+ */
15
+ export declare function mergeDescriptions(schemaDescription: string | undefined, yamlComment: string | undefined): string | undefined;
16
+ /**
17
+ * Infer a primitive TypeProperty from a runtime value (no schema)
18
+ */
19
+ export declare function inferPrimitiveType(value: unknown, yamlComment?: string): TypeProperty;
20
+ //# sourceMappingURL=type-converter-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-converter-helpers.d.ts","sourceRoot":"","sources":["../src/type-converter-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAQnE,MAAM,MAAM,yBAAyB,GAAG;IACtC,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,iBAAiB,EAAE,MAAM,GAAG,SAAS,EACrC,WAAW,EAAE,MAAM,GAAG,SAAS,GAC9B,MAAM,GAAG,SAAS,CAOpB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EACd,WAAW,CAAC,EAAE,MAAM,GACnB,YAAY,CAmEd"}
@@ -0,0 +1,75 @@
1
+ import { StringSchema, ActualNumberSchema, ActualBooleanSchema, StringBooleanSchema, } from "./schemas.js";
2
+ /**
3
+ * Merge description from schema and YAML comments
4
+ */
5
+ export function mergeDescriptions(schemaDescription, yamlComment) {
6
+ if (yamlComment === "" || yamlComment == null) {
7
+ return schemaDescription;
8
+ }
9
+ return schemaDescription !== "" && schemaDescription != null
10
+ ? `${yamlComment}\n\n${schemaDescription}`
11
+ : yamlComment;
12
+ }
13
+ /**
14
+ * Infer a primitive TypeProperty from a runtime value (no schema)
15
+ */
16
+ export function inferPrimitiveType(value, yamlComment) {
17
+ if (ActualBooleanSchema.safeParse(value).success) {
18
+ return {
19
+ type: "boolean",
20
+ optional: true,
21
+ description: yamlComment,
22
+ default: value,
23
+ };
24
+ }
25
+ if (ActualNumberSchema.safeParse(value).success) {
26
+ return {
27
+ type: "number",
28
+ optional: true,
29
+ description: yamlComment,
30
+ default: value,
31
+ };
32
+ }
33
+ if (StringBooleanSchema.safeParse(value).success) {
34
+ return {
35
+ type: "boolean",
36
+ optional: true,
37
+ description: yamlComment,
38
+ default: value,
39
+ };
40
+ }
41
+ const stringCheckForNumber = StringSchema.safeParse(value);
42
+ if (stringCheckForNumber.success) {
43
+ const trimmed = stringCheckForNumber.data.trim();
44
+ if (trimmed !== "" &&
45
+ !Number.isNaN(Number(trimmed)) &&
46
+ Number.isFinite(Number(trimmed))) {
47
+ return {
48
+ type: "number",
49
+ optional: true,
50
+ description: yamlComment,
51
+ default: value,
52
+ };
53
+ }
54
+ }
55
+ const stringCheckForPlain = StringSchema.safeParse(value);
56
+ if (stringCheckForPlain.success) {
57
+ if (stringCheckForPlain.data === "default") {
58
+ return {
59
+ type: "string | number | boolean",
60
+ optional: true,
61
+ description: yamlComment,
62
+ default: value,
63
+ };
64
+ }
65
+ return {
66
+ type: "string",
67
+ optional: true,
68
+ description: yamlComment,
69
+ default: value,
70
+ };
71
+ }
72
+ console.warn(`Unrecognized value type for: ${String(value)}, using 'unknown'`);
73
+ return { type: "unknown", optional: true, description: yamlComment };
74
+ }
75
+ //# sourceMappingURL=type-converter-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-converter-helpers.js","sourceRoot":"","sources":["../src/type-converter-helpers.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAatB;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,iBAAqC,EACrC,WAA+B;IAE/B,IAAI,WAAW,KAAK,EAAE,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;QAC9C,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IACD,OAAO,iBAAiB,KAAK,EAAE,IAAI,iBAAiB,IAAI,IAAI;QAC1D,CAAC,CAAC,GAAG,WAAW,OAAO,iBAAiB,EAAE;QAC1C,CAAC,CAAC,WAAW,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAc,EACd,WAAoB;IAEpB,IAAI,mBAAmB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;QACjD,OAAO;YACL,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,WAAW;YACxB,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;IAED,IAAI,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;QAChD,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,WAAW;YACxB,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;IAED,IAAI,mBAAmB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;QACjD,OAAO;YACL,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,WAAW;YACxB,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;IAED,MAAM,oBAAoB,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC3D,IAAI,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACjD,IACE,OAAO,KAAK,EAAE;YACd,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC9B,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAChC,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,WAAW;gBACxB,OAAO,EAAE,KAAK;aACf,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,mBAAmB,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC1D,IAAI,mBAAmB,CAAC,OAAO,EAAE,CAAC;QAChC,IAAI,mBAAmB,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC3C,OAAO;gBACL,IAAI,EAAE,2BAA2B;gBACjC,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,WAAW;gBACxB,OAAO,EAAE,KAAK;aACf,CAAC;QACJ,CAAC;QACD,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,WAAW;YACxB,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,IAAI,CACV,gCAAgC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CACjE,CAAC;IACF,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;AACvE,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { JSONSchemaProperty, TypeScriptInterface } from "./types.js";
2
+ import type { HelmValue } from "./schemas.js";
3
+ /**
4
+ * Convert JSON schema type to TypeScript type string
5
+ */
6
+ export declare function jsonSchemaToTypeScript(schema: JSONSchemaProperty): string;
7
+ /**
8
+ * Infer TypeScript type from actual runtime value
9
+ */
10
+ export declare function inferTypeFromValue(value: unknown): string | null;
11
+ /**
12
+ * Check if inferred type is compatible with schema type
13
+ */
14
+ export declare function typesAreCompatible(inferredType: string, schemaType: string): boolean;
15
+ /**
16
+ * Convert Helm values to TypeScript interface
17
+ */
18
+ export declare function convertToTypeScriptInterface(options: {
19
+ values: HelmValue;
20
+ interfaceName: string;
21
+ schema?: JSONSchemaProperty | null;
22
+ yamlComments?: Map<string, string>;
23
+ keyPrefix?: string;
24
+ chartName?: string;
25
+ }): TypeScriptInterface;
26
+ //# sourceMappingURL=type-converter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-converter.d.ts","sourceRoot":"","sources":["../src/type-converter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EAEpB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AA0B9C;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAiFzE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAqDhE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,GACjB,OAAO,CA6CT;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE;IACpD,MAAM,EAAE,SAAS,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACnC,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,mBAAmB,CAwCtB"}