jsxpression 0.1.8 → 0.1.11

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 (133) hide show
  1. package/lib/analyze/analysis-error.js +5 -1
  2. package/lib/analyze/analysis-error.js.map +1 -1
  3. package/lib/analyze/analysis-report.js +5 -1
  4. package/lib/analyze/analysis-report.js.map +1 -1
  5. package/lib/analyze/analyze.js +9 -6
  6. package/lib/analyze/analyze.js.map +1 -1
  7. package/lib/analyze/analyze.test.d.ts +2 -0
  8. package/lib/analyze/analyze.test.js +314 -312
  9. package/lib/analyze/analyze.test.js.map +1 -1
  10. package/lib/analyze/data/analyze.js +10 -7
  11. package/lib/analyze/data/analyze.js.map +1 -1
  12. package/lib/analyze/data/data-access.js +24 -20
  13. package/lib/analyze/data/data-access.js.map +1 -1
  14. package/lib/analyze/data/index.js +5 -1
  15. package/lib/analyze/data/index.js.map +1 -1
  16. package/lib/analyze/data/method-calls.js +20 -17
  17. package/lib/analyze/data/method-calls.js.map +1 -1
  18. package/lib/analyze/data/utils.js +29 -22
  19. package/lib/analyze/data/utils.js.map +1 -1
  20. package/lib/analyze/index.js +9 -3
  21. package/lib/analyze/index.js.map +1 -1
  22. package/lib/analyze/jsx/analyze.js +11 -8
  23. package/lib/analyze/jsx/analyze.js.map +1 -1
  24. package/lib/analyze/jsx/element-attributes.js +24 -21
  25. package/lib/analyze/jsx/element-attributes.js.map +1 -1
  26. package/lib/analyze/jsx/element-children.js +23 -20
  27. package/lib/analyze/jsx/element-children.js.map +1 -1
  28. package/lib/analyze/jsx/element-tags.js +15 -12
  29. package/lib/analyze/jsx/element-tags.js.map +1 -1
  30. package/lib/analyze/jsx/index.js +5 -1
  31. package/lib/analyze/jsx/index.js.map +1 -1
  32. package/lib/analyze/security/analyze.js +13 -10
  33. package/lib/analyze/security/analyze.js.map +1 -1
  34. package/lib/analyze/security/call-expressions.js +11 -8
  35. package/lib/analyze/security/call-expressions.js.map +1 -1
  36. package/lib/analyze/security/declarations.js +15 -12
  37. package/lib/analyze/security/declarations.js.map +1 -1
  38. package/lib/analyze/security/expressions.js +17 -14
  39. package/lib/analyze/security/expressions.js.map +1 -1
  40. package/lib/analyze/security/identifiers.js +13 -10
  41. package/lib/analyze/security/identifiers.js.map +1 -1
  42. package/lib/analyze/security/index.js +5 -1
  43. package/lib/analyze/security/index.js.map +1 -1
  44. package/lib/analyze/security/member-access.js +10 -7
  45. package/lib/analyze/security/member-access.js.map +1 -1
  46. package/lib/analyze/utils.d.ts +20 -0
  47. package/lib/analyze/utils.js +10 -4
  48. package/lib/analyze/utils.js.map +1 -1
  49. package/lib/analyze/validation-context.d.ts +13 -0
  50. package/lib/analyze/validation-context.js +5 -1
  51. package/lib/analyze/validation-context.js.map +1 -1
  52. package/lib/builtins.js +20 -9
  53. package/lib/builtins.js.map +1 -1
  54. package/lib/codegen/builtins/builtin-types.js +6 -3
  55. package/lib/codegen/builtins/builtin-types.js.map +1 -1
  56. package/lib/codegen/builtins/index.js +5 -1
  57. package/lib/codegen/builtins/index.js.map +1 -1
  58. package/lib/codegen/generate-typescript-definitions.js +7 -4
  59. package/lib/codegen/generate-typescript-definitions.js.map +1 -1
  60. package/lib/codegen/generate-typescript-definitions.test.js +192 -190
  61. package/lib/codegen/generate-typescript-definitions.test.js.map +1 -1
  62. package/lib/codegen/index.js +5 -1
  63. package/lib/codegen/index.js.map +1 -1
  64. package/lib/codegen/schema/component-types.js +6 -3
  65. package/lib/codegen/schema/component-types.js.map +1 -1
  66. package/lib/codegen/schema/data-types.js +6 -3
  67. package/lib/codegen/schema/data-types.js.map +1 -1
  68. package/lib/codegen/schema/index.js +7 -2
  69. package/lib/codegen/schema/index.js.map +1 -1
  70. package/lib/codegen/schema/utils.js +8 -3
  71. package/lib/codegen/schema/utils.js.map +1 -1
  72. package/lib/compile/compilation-error.d.ts +17 -0
  73. package/lib/compile/compilation-error.js +5 -1
  74. package/lib/compile/compilation-error.js.map +1 -1
  75. package/lib/compile/compile.js +21 -18
  76. package/lib/compile/compile.js.map +1 -1
  77. package/lib/compile/compile.test.d.ts +2 -0
  78. package/lib/compile/compile.test.js +112 -110
  79. package/lib/compile/compile.test.js.map +1 -1
  80. package/lib/compile/index.js +7 -2
  81. package/lib/compile/index.js.map +1 -1
  82. package/lib/evaluate/evaluate.js +11 -8
  83. package/lib/evaluate/evaluate.js.map +1 -1
  84. package/lib/evaluate/evaluate.test.d.ts +2 -0
  85. package/lib/evaluate/evaluate.test.js +58 -56
  86. package/lib/evaluate/evaluate.test.js.map +1 -1
  87. package/lib/evaluate/evaluation-error.js +5 -1
  88. package/lib/evaluate/evaluation-error.js.map +1 -1
  89. package/lib/evaluate/index.js +7 -2
  90. package/lib/evaluate/index.js.map +1 -1
  91. package/lib/index.js +15 -6
  92. package/lib/index.js.map +1 -1
  93. package/lib/jsx.js +22 -10
  94. package/lib/jsx.js.map +1 -1
  95. package/lib/parse/index.js +7 -2
  96. package/lib/parse/index.js.map +1 -1
  97. package/lib/parse/parse-error.d.ts +10 -0
  98. package/lib/parse/parse-error.js +5 -1
  99. package/lib/parse/parse-error.js.map +1 -1
  100. package/lib/parse/parse.js +13 -7
  101. package/lib/parse/parse.js.map +1 -1
  102. package/lib/parse/parse.test.d.ts +2 -0
  103. package/lib/parse/parse.test.js +58 -56
  104. package/lib/parse/parse.test.js.map +1 -1
  105. package/lib/render.js +12 -9
  106. package/lib/render.js.map +1 -1
  107. package/lib/render.test.d.ts +2 -0
  108. package/lib/render.test.js +64 -62
  109. package/lib/render.test.js.map +1 -1
  110. package/lib/schema.js +38 -18
  111. package/lib/schema.js.map +1 -1
  112. package/lib/traverse.js +11 -8
  113. package/lib/traverse.js.map +1 -1
  114. package/lib/traverse.test.d.ts +2 -0
  115. package/lib/traverse.test.js +36 -34
  116. package/lib/traverse.test.js.map +1 -1
  117. package/lib/types.d.ts +12 -0
  118. package/lib/types.js +2 -1
  119. package/lib/validate.js +10 -7
  120. package/lib/validate.js.map +1 -1
  121. package/package.json +7 -7
  122. package/lib/codegen/builtin-types.d.ts +0 -11
  123. package/lib/codegen/builtin-types.d.ts.map +0 -1
  124. package/lib/codegen/builtin-types.js +0 -151
  125. package/lib/codegen/builtin-types.js.map +0 -1
  126. package/lib/codegen/declare-types.d.ts +0 -20
  127. package/lib/codegen/declare-types.d.ts.map +0 -1
  128. package/lib/codegen/declare-types.js +0 -299
  129. package/lib/codegen/declare-types.js.map +0 -1
  130. package/lib/codegen/schema-to-types.d.ts +0 -14
  131. package/lib/codegen/schema-to-types.d.ts.map +0 -1
  132. package/lib/codegen/schema-to-types.js +0 -203
  133. package/lib/codegen/schema-to-types.js.map +0 -1
@@ -1,299 +0,0 @@
1
- /**
2
- * Generate TypeScript .d.ts declarations from JSXExpression schema
3
- * Main public API: declareTypes(schema, options)
4
- */
5
- /**
6
- * Main public API: Generate complete TypeScript declarations for JSXExpression
7
- * This is the primary function that should be exported from jsxpression
8
- */
9
- export function declareTypes(schema, options = {}) {
10
- const { includeBuiltins = true, namespace, componentPrefix = "", allowedStringMethods = ["trim", "toUpperCase", "toLowerCase", "split", "replace", "includes"], allowedArrayMethods = ["map", "filter", "join", "length", "slice"], allowedMathMethods = ["round", "floor", "ceil", "max", "min", "abs"], } = options;
11
- let output = `// Auto-generated TypeScript definitions for JSXExpression\n`;
12
- output += `// Generated at: ${new Date().toISOString()}\n\n`;
13
- // Add JSX namespace and types (minimal JSX without React dependency)
14
- output += `declare global {\n`;
15
- output += ` namespace JSX {\n`;
16
- output += ` type Element = {\n`;
17
- output += ` type: any;\n`;
18
- output += ` props: any;\n`;
19
- output += ` key?: string | number | null;\n`;
20
- output += ` };\n`;
21
- output += ` type Node = Element | string | number | boolean | null | undefined | Node[];\n`;
22
- output += ` interface IntrinsicElements {\n`;
23
- output += ` [elemName: string]: any;\n`;
24
- output += ` }\n`;
25
- // Add component interfaces INSIDE declare global (this was key in working version!)
26
- if (schema.elements) {
27
- Object.entries(schema.elements).forEach(([elementName, element]) => {
28
- const interfaceName = `${componentPrefix}${elementName}Props`;
29
- output += generatePropsInterface(interfaceName, element, " ");
30
- output += "\n";
31
- });
32
- }
33
- // Add global component declarations for direct usage INSIDE declare global
34
- if (schema.elements) {
35
- Object.entries(schema.elements).forEach(([elementName, element]) => {
36
- const interfaceName = `${componentPrefix}${elementName}Props`;
37
- // Generate JSDoc comment for the component
38
- const componentComment = generateComponentComment(elementName, element, " ");
39
- if (componentComment) {
40
- output += componentComment;
41
- }
42
- output += ` const ${elementName}: (props: ${interfaceName}) => JSX.Element;\n\n`;
43
- });
44
- }
45
- // Add builtin types if requested
46
- if (includeBuiltins) {
47
- // Math object
48
- output += ` const Math: {\n`;
49
- const allMathMethods = {
50
- abs: "(x: number): number",
51
- ceil: "(x: number): number",
52
- floor: "(x: number): number",
53
- round: "(x: number): number",
54
- max: "(...values: number[]): number",
55
- min: "(...values: number[]): number",
56
- random: "(): number",
57
- pow: "(x: number, y: number): number",
58
- sqrt: "(x: number): number",
59
- sin: "(x: number): number",
60
- cos: "(x: number): number",
61
- tan: "(x: number): number",
62
- PI: "number",
63
- E: "number",
64
- };
65
- Object.entries(allMathMethods).forEach(([method, signature]) => {
66
- if (allowedMathMethods.includes(method)) {
67
- output += ` ${method}: ${signature};\n`;
68
- }
69
- });
70
- output += ` };\n\n`;
71
- // Utility functions
72
- output += ` // Utility functions\n`;
73
- output += ` function formatCurrency(value: number, currency?: string): string;\n`;
74
- output += ` function formatDate(date: Date | string | number, format?: string): string;\n`;
75
- output += ` function formatNumber(value: number, decimals?: number): string;\n`;
76
- output += ` function sum(values: number[]): number;\n`;
77
- output += ` function average(values: number[]): number;\n`;
78
- output += ` function count(values: any[]): number;\n`;
79
- output += ` function conditional(condition: boolean, trueValue: any, falseValue?: any): any;\n`;
80
- output += ` function coalesce(...values: any[]): any;\n`;
81
- output += ` function format(template: string, ...args: any[]): string;\n\n`;
82
- }
83
- // Add data object declaration if schema has data
84
- if (schema.data) {
85
- output += `\n // Data object for JSX expressions\n`;
86
- output += ` const data: {\n`;
87
- Object.entries(schema.data).forEach(([dataKey, dataSchema]) => {
88
- const type = mapSchemaTypeToTypeScript(dataSchema);
89
- const comment = generatePropComment(dataSchema, " ");
90
- if (comment) {
91
- output += comment;
92
- }
93
- // Handle multi-line types (nested objects) with proper indentation
94
- const indentedType = type.includes("\n") ? type.replace(/\n/g, "\n ").replace(/\n {6}$/, "\n ") : type;
95
- output += ` ${dataKey}: ${indentedType};\n`;
96
- });
97
- output += ` };\n`;
98
- }
99
- // Add prototype interfaces if builtins are included
100
- if (includeBuiltins) {
101
- // String interface with selective methods
102
- output += ` interface String {\n`;
103
- const allStringMethods = {
104
- charAt: "(index: number): string",
105
- charCodeAt: "(index: number): number",
106
- concat: "(...strings: string[]): string",
107
- endsWith: "(searchString: string, length?: number): boolean",
108
- includes: "(searchString: string, position?: number): boolean",
109
- indexOf: "(searchString: string, position?: number): number",
110
- lastIndexOf: "(searchString: string, position?: number): number",
111
- slice: "(start?: number, end?: number): string",
112
- split: "(separator?: string | RegExp, limit?: number): string[]",
113
- startsWith: "(searchString: string, position?: number): boolean",
114
- substring: "(start: number, end?: number): string",
115
- toLowerCase: "(): string",
116
- toUpperCase: "(): string",
117
- trim: "(): string",
118
- trimStart: "(): string",
119
- trimEnd: "(): string",
120
- replace: "(searchValue: string | RegExp, replaceValue: string): string",
121
- replaceAll: "(searchValue: string | RegExp, replaceValue: string): string",
122
- padStart: "(targetLength: number, padString?: string): string",
123
- padEnd: "(targetLength: number, padString?: string): string",
124
- repeat: "(count: number): string",
125
- length: "number",
126
- };
127
- Object.entries(allStringMethods).forEach(([method, signature]) => {
128
- if (allowedStringMethods.includes(method)) {
129
- output += ` ${method}: ${signature};\n`;
130
- }
131
- });
132
- output += ` }\n\n`;
133
- // Array interface with selective methods
134
- output += ` interface Array<T> {\n`;
135
- const allArrayMethods = {
136
- length: "number",
137
- push: "(...items: T[]): number",
138
- pop: "(): T | undefined",
139
- shift: "(): T | undefined",
140
- unshift: "(...items: T[]): number",
141
- slice: "(start?: number, end?: number): T[]",
142
- splice: "(start: number, deleteCount?: number, ...items: T[]): T[]",
143
- concat: "(...items: (T | T[])[]): T[]",
144
- join: "(separator?: string): string",
145
- reverse: "(): T[]",
146
- sort: "(compareFn?: (a: T, b: T) => number): T[]",
147
- indexOf: "(searchElement: T, fromIndex?: number): number",
148
- lastIndexOf: "(searchElement: T, fromIndex?: number): number",
149
- includes: "(searchElement: T, fromIndex?: number): boolean",
150
- find: "(predicate: (value: T, index: number, obj: T[]) => boolean): T | undefined",
151
- findIndex: "(predicate: (value: T, index: number, obj: T[]) => boolean): number",
152
- filter: "(predicate: (value: T, index: number, array: T[]) => boolean): T[]",
153
- map: "<U>(callbackfn: (value: T, index: number, array: T[]) => U): U[]",
154
- forEach: "(callbackfn: (value: T, index: number, array: T[]) => void): void",
155
- reduce: "<U>(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U",
156
- some: "(predicate: (value: T, index: number, array: T[]) => boolean): boolean",
157
- every: "(predicate: (value: T, index: number, array: T[]) => boolean): boolean",
158
- };
159
- Object.entries(allArrayMethods).forEach(([method, signature]) => {
160
- if (allowedArrayMethods.includes(method)) {
161
- output += ` ${method}: ${signature};\n`;
162
- }
163
- });
164
- output += ` }\n\n`;
165
- }
166
- output += `}\n\n`;
167
- return output;
168
- }
169
- // Helper functions
170
- function generatePropsInterface(interfaceName, element, indent = "") {
171
- let output = `${indent}interface ${interfaceName} {\n`;
172
- // Generate props
173
- Object.entries(element.props || {}).forEach(([propName, prop]) => {
174
- const optional = prop.required ? "" : "?";
175
- const type = mapSchemaTypeToTypeScript(prop);
176
- const comment = generatePropComment(prop, `${indent} `);
177
- if (comment) {
178
- output += comment;
179
- }
180
- output += `${indent} ${propName}${optional}: ${type};\n`;
181
- });
182
- // Add children prop if element can have content
183
- if (element.content !== false) {
184
- output += `${indent} children?: JSX.Node;\n`;
185
- }
186
- output += `${indent}}\n`;
187
- return output;
188
- }
189
- function generateComponentComment(elementName, element, indent = "") {
190
- const comments = [];
191
- // Add component description if available
192
- if (element.description) {
193
- comments.push(element.description);
194
- }
195
- else if (element.doc) {
196
- comments.push(element.doc);
197
- }
198
- else {
199
- // Generate a default description
200
- comments.push(`${elementName} component`);
201
- }
202
- // Add prop information summary
203
- if (element.props && Object.keys(element.props).length > 0) {
204
- comments.push("");
205
- const propCount = Object.keys(element.props).length;
206
- const requiredProps = Object.entries(element.props).filter(([, prop]) => prop.required !== false).length;
207
- comments.push(`@props ${propCount} props (${requiredProps} required)`);
208
- }
209
- // Add examples if available
210
- if (element.examples && element.examples.length > 0) {
211
- comments.push("");
212
- comments.push("@example");
213
- element.examples.forEach((example) => {
214
- comments.push(example);
215
- });
216
- }
217
- if (comments.length === 0) {
218
- return "";
219
- }
220
- if (comments.length === 1 && comments[0] && !comments[0].includes("\n")) {
221
- return `${indent}/** ${comments[0]} */\n`;
222
- }
223
- let output = `${indent}/**\n`;
224
- comments.forEach((comment) => {
225
- if (comment === "") {
226
- output += `${indent} *\n`;
227
- }
228
- else {
229
- comment.split("\n").forEach((line) => {
230
- output += `${indent} * ${line}\n`;
231
- });
232
- }
233
- });
234
- output += `${indent} */\n`;
235
- return output;
236
- }
237
- function mapSchemaTypeToTypeScript(prop) {
238
- switch (prop.type) {
239
- case "string":
240
- if (prop.enum && Array.isArray(prop.enum)) {
241
- return prop.enum.map((value) => `"${value}"`).join(" | ");
242
- }
243
- return "string";
244
- case "number":
245
- if (prop.enum && Array.isArray(prop.enum)) {
246
- return prop.enum.map((value) => String(value)).join(" | ");
247
- }
248
- return "number";
249
- case "boolean":
250
- if (prop.enum && Array.isArray(prop.enum)) {
251
- return prop.enum.map((value) => String(value)).join(" | ");
252
- }
253
- return "boolean";
254
- case "array":
255
- const itemType = prop.shape ? mapSchemaTypeToTypeScript(prop.shape) : "any";
256
- return `${itemType}[]`;
257
- case "object":
258
- if (prop.shape && typeof prop.shape === "object") {
259
- let objectType = "{\n";
260
- Object.entries(prop.shape).forEach(([key, value]) => {
261
- const nestedType = mapSchemaTypeToTypeScript(value);
262
- const required = value.required !== false ? "" : "?";
263
- objectType += ` ${key}${required}: ${nestedType};\n`;
264
- });
265
- objectType += " }";
266
- return objectType;
267
- }
268
- return "object";
269
- case "function":
270
- return "(...args: any[]) => any";
271
- default:
272
- console.warn(`Unknown schema type: ${prop.type}`);
273
- return "any";
274
- }
275
- }
276
- function generatePropComment(prop, indent) {
277
- const comments = [];
278
- if (prop.description) {
279
- comments.push(prop.description);
280
- }
281
- if (prop.default !== undefined) {
282
- comments.push(`@default ${JSON.stringify(prop.default)}`);
283
- }
284
- if (prop.type === "enum" && prop.values) {
285
- comments.push(`@values ${prop.values.map((v) => `"${v}"`).join(", ")}`);
286
- }
287
- if (comments.length === 0) {
288
- return "";
289
- }
290
- if (comments.length === 1) {
291
- return `${indent}/** ${comments[0]} */\n`;
292
- }
293
- let output = `${indent}/**\n`;
294
- comments.forEach((comment) => {
295
- output += `${indent} * ${comment}\n`;
296
- });
297
- output += `${indent} */\n`;
298
- return output;
299
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"declare-types.js","sourceRoot":"","sources":["../../src/codegen/declare-types.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- /**
2
- * Generate TypeScript .d.ts declarations from JSXExpression schema
3
- * Pure type generation without Monaco dependencies
4
- */
5
- import type { Schema } from "../schema.js";
6
- export interface TypeGenerationOptions {
7
- componentPrefix?: string;
8
- }
9
- /**
10
- * Generate complete TypeScript declarations for JSXExpression schema
11
- * Includes JSX namespace, component interfaces, component declarations, and data object
12
- */
13
- export declare function declareTypes(schema: Schema, options?: TypeGenerationOptions): string;
14
- //# sourceMappingURL=schema-to-types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema-to-types.d.ts","sourceRoot":"","sources":["../../src/codegen/schema-to-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,WAAW,qBAAqB;IACpC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B,GAAG,MAAM,CA8DxF"}
@@ -1,203 +0,0 @@
1
- "use strict";
2
- /**
3
- * Generate TypeScript .d.ts declarations from JSXExpression schema
4
- * Pure type generation without Monaco dependencies
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.declareTypes = declareTypes;
8
- /**
9
- * Generate complete TypeScript declarations for JSXExpression schema
10
- * Includes JSX namespace, component interfaces, component declarations, and data object
11
- */
12
- function declareTypes(schema, options = {}) {
13
- const { componentPrefix = "" } = options;
14
- let output = `// Auto-generated TypeScript definitions for JSXExpression\n`;
15
- output += `// Generated at: ${new Date().toISOString()}\n\n`;
16
- // Add JSX namespace and types (minimal JSX without React dependency)
17
- output += `declare global {\n`;
18
- output += ` namespace JSX {\n`;
19
- output += ` type Element = {\n`;
20
- output += ` type: any;\n`;
21
- output += ` props: any;\n`;
22
- output += ` key?: string | number | null;\n`;
23
- output += ` };\n`;
24
- output += ` type Node = Element | string | number | boolean | null | undefined | Node[];\n`;
25
- output += ` interface IntrinsicElements {\n`;
26
- output += ` [elemName: string]: any;\n`;
27
- output += ` }\n`;
28
- output += ` }\n\n`;
29
- // Add component interfaces
30
- if (schema.elements) {
31
- Object.entries(schema.elements).forEach(([elementName, element]) => {
32
- const interfaceName = `${componentPrefix}${elementName}Props`;
33
- output += generatePropsInterface(interfaceName, element, " ");
34
- output += "\n";
35
- });
36
- }
37
- // Add component declarations
38
- if (schema.elements) {
39
- Object.entries(schema.elements).forEach(([elementName, element]) => {
40
- const interfaceName = `${componentPrefix}${elementName}Props`;
41
- const componentComment = generateComponentComment(elementName, element, " ");
42
- if (componentComment) {
43
- output += componentComment;
44
- }
45
- output += ` const ${elementName}: (props: ${interfaceName}) => JSX.Element;\n\n`;
46
- });
47
- }
48
- // Add data object declaration if schema has data
49
- if (schema.data) {
50
- output += ` // Data object for JSX expressions\n`;
51
- output += ` const data: {\n`;
52
- Object.entries(schema.data).forEach(([dataKey, dataSchema]) => {
53
- const type = mapSchemaTypeToTypeScript(dataSchema);
54
- const comment = generatePropComment(dataSchema, " ");
55
- if (comment) {
56
- output += comment;
57
- }
58
- // Handle multi-line types (nested objects) with proper indentation
59
- const indentedType = type.includes("\n") ? type.replace(/\n/g, "\n ").replace(/\n {4}$/, "\n ") : type;
60
- output += ` ${dataKey}: ${indentedType};\n`;
61
- });
62
- output += ` };\n`;
63
- }
64
- output += `}\n\n`;
65
- output += `export {};\n`;
66
- return output;
67
- }
68
- // Helper functions
69
- function generatePropsInterface(interfaceName, element, indent = "") {
70
- let output = `${indent}interface ${interfaceName} {\n`;
71
- Object.entries(element.props || {}).forEach(([propName, prop]) => {
72
- const optional = prop.required ? "" : "?";
73
- const type = mapSchemaTypeToTypeScript(prop);
74
- const comment = generatePropComment(prop, `${indent} `);
75
- if (comment) {
76
- output += comment;
77
- }
78
- output += `${indent} ${propName}${optional}: ${type};\n`;
79
- });
80
- if (element.content !== false) {
81
- output += `${indent} children?: JSX.Node;\n`;
82
- }
83
- output += `${indent}}\n`;
84
- return output;
85
- }
86
- function generateComponentComment(elementName, element, indent = "") {
87
- const comments = [];
88
- if (element.description) {
89
- comments.push(element.description);
90
- }
91
- else if (element.doc) {
92
- comments.push(element.doc);
93
- }
94
- else {
95
- comments.push(`${elementName} component`);
96
- }
97
- if (element.props && Object.keys(element.props).length > 0) {
98
- comments.push("");
99
- const propCount = Object.keys(element.props).length;
100
- const requiredProps = Object.entries(element.props).filter(([, prop]) => prop.required !== false).length;
101
- comments.push(`@props ${propCount} props (${requiredProps} required)`);
102
- }
103
- if (element.examples && element.examples.length > 0) {
104
- comments.push("");
105
- comments.push("@example");
106
- element.examples.forEach((example) => {
107
- comments.push(example);
108
- });
109
- }
110
- if (comments.length === 0) {
111
- return "";
112
- }
113
- if (comments.length === 1 && comments[0] && !comments[0].includes("\n")) {
114
- return `${indent}/** ${comments[0]} */\n`;
115
- }
116
- let output = `${indent}/**\n`;
117
- comments.forEach((comment) => {
118
- if (comment === "") {
119
- output += `${indent} *\n`;
120
- }
121
- else {
122
- comment.split("\n").forEach((line) => {
123
- output += `${indent} * ${line}\n`;
124
- });
125
- }
126
- });
127
- output += `${indent} */\n`;
128
- return output;
129
- }
130
- function mapSchemaTypeToTypeScript(prop) {
131
- switch (prop.type) {
132
- case "string":
133
- if (prop.enum && Array.isArray(prop.enum)) {
134
- return prop.enum.map((value) => `"${value}"`).join(" | ");
135
- }
136
- return "string";
137
- case "number":
138
- if (prop.enum && Array.isArray(prop.enum)) {
139
- return prop.enum.map((value) => String(value)).join(" | ");
140
- }
141
- return "number";
142
- case "boolean":
143
- if (prop.enum && Array.isArray(prop.enum)) {
144
- return prop.enum.map((value) => String(value)).join(" | ");
145
- }
146
- return "boolean";
147
- case "array":
148
- const itemType = prop.shape ? mapSchemaTypeToTypeScript(prop.shape) : "any";
149
- return `${itemType}[]`;
150
- case "object":
151
- if (prop.shape && typeof prop.shape === "object") {
152
- let objectType = "{\n";
153
- Object.entries(prop.shape).forEach(([key, value]) => {
154
- const nestedType = mapSchemaTypeToTypeScript(value);
155
- const required = value.required !== false ? "" : "?";
156
- objectType += ` ${key}${required}: ${nestedType};\n`;
157
- });
158
- objectType += " }";
159
- return objectType;
160
- }
161
- if (prop.properties && typeof prop.properties === "object") {
162
- let objectType = "{\n";
163
- Object.entries(prop.properties).forEach(([key, value]) => {
164
- const nestedType = mapSchemaTypeToTypeScript(value);
165
- const required = value.required !== false ? "" : "?";
166
- objectType += ` ${key}${required}: ${nestedType};\n`;
167
- });
168
- objectType += " }";
169
- return objectType;
170
- }
171
- return "object";
172
- case "function":
173
- return "(...args: any[]) => any";
174
- default:
175
- console.warn(`Unknown schema type: ${prop.type}`);
176
- return "any";
177
- }
178
- }
179
- function generatePropComment(prop, indent) {
180
- const comments = [];
181
- if (prop.description) {
182
- comments.push(prop.description);
183
- }
184
- if (prop.default !== undefined) {
185
- comments.push(`@default ${JSON.stringify(prop.default)}`);
186
- }
187
- if (prop.type === "enum" && prop.values) {
188
- comments.push(`@values ${prop.values.map((v) => `"${v}"`).join(", ")}`);
189
- }
190
- if (comments.length === 0) {
191
- return "";
192
- }
193
- if (comments.length === 1) {
194
- return `${indent}/** ${comments[0]} */\n`;
195
- }
196
- let output = `${indent}/**\n`;
197
- comments.forEach((comment) => {
198
- output += `${indent} * ${comment}\n`;
199
- });
200
- output += `${indent} */\n`;
201
- return output;
202
- }
203
- //# sourceMappingURL=schema-to-types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema-to-types.js","sourceRoot":"","sources":["../../src/codegen/schema-to-types.ts"],"names":[],"mappings":"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"}