jsxpression 0.1.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 (165) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +368 -0
  3. package/lib/analyze/analysis-error.d.ts.map +1 -0
  4. package/lib/analyze/analysis-report.d.ts +33 -0
  5. package/lib/analyze/analysis-report.d.ts.map +1 -0
  6. package/lib/analyze/analysis-report.js +194 -0
  7. package/lib/analyze/analysis-report.js.map +1 -0
  8. package/lib/analyze/analyze.d.ts.map +1 -0
  9. package/lib/analyze/analyze.test.d.ts.map +1 -0
  10. package/lib/analyze/analyze.test.js +765 -0
  11. package/lib/analyze/analyze.test.js.map +1 -0
  12. package/lib/analyze/data/analyze.d.ts.map +1 -0
  13. package/lib/analyze/data/data-access.d.ts.map +1 -0
  14. package/lib/analyze/data/index.d.ts.map +1 -0
  15. package/lib/analyze/data/method-calls.d.ts.map +1 -0
  16. package/lib/analyze/data/utils.d.ts.map +1 -0
  17. package/lib/analyze/index.d.ts.map +1 -0
  18. package/lib/analyze/jsx/analyze.d.ts.map +1 -0
  19. package/lib/analyze/jsx/element-attributes.d.ts.map +1 -0
  20. package/lib/analyze/jsx/element-attributes.js +89 -0
  21. package/lib/analyze/jsx/element-attributes.js.map +1 -0
  22. package/lib/analyze/jsx/element-children.d.ts.map +1 -0
  23. package/lib/analyze/jsx/element-tags.d.ts.map +1 -0
  24. package/lib/analyze/jsx/index.d.ts.map +1 -0
  25. package/lib/analyze/security/analyze.d.ts.map +1 -0
  26. package/lib/analyze/security/call-expressions.d.ts.map +1 -0
  27. package/lib/analyze/security/declarations.d.ts.map +1 -0
  28. package/lib/analyze/security/expressions.d.ts.map +1 -0
  29. package/lib/analyze/security/identifiers.d.ts.map +1 -0
  30. package/lib/analyze/security/index.d.ts.map +1 -0
  31. package/lib/analyze/security/member-access.d.ts.map +1 -0
  32. package/lib/builtins.d.ts +50 -0
  33. package/lib/builtins.d.ts.map +1 -0
  34. package/lib/builtins.js +1065 -0
  35. package/lib/builtins.js.map +1 -0
  36. package/lib/codegen/builtin-types.d.ts +11 -0
  37. package/lib/codegen/builtin-types.d.ts.map +1 -0
  38. package/lib/codegen/builtin-types.js +151 -0
  39. package/lib/codegen/builtin-types.js.map +1 -0
  40. package/lib/codegen/builtins/builtin-types.d.ts +2 -0
  41. package/lib/codegen/builtins/builtin-types.d.ts.map +1 -0
  42. package/lib/codegen/builtins/builtin-types.js +143 -0
  43. package/lib/codegen/builtins/builtin-types.js.map +1 -0
  44. package/lib/codegen/builtins/index.d.ts +2 -0
  45. package/lib/codegen/builtins/index.d.ts.map +1 -0
  46. package/lib/codegen/builtins/index.js +6 -0
  47. package/lib/codegen/builtins/index.js.map +1 -0
  48. package/lib/codegen/declare-types.d.ts +20 -0
  49. package/lib/codegen/declare-types.d.ts.map +1 -0
  50. package/lib/codegen/declare-types.js +299 -0
  51. package/lib/codegen/declare-types.js.map +1 -0
  52. package/lib/codegen/generate-typescript-definitions.d.ts +31 -0
  53. package/lib/codegen/generate-typescript-definitions.d.ts.map +1 -0
  54. package/lib/codegen/generate-typescript-definitions.js +37 -0
  55. package/lib/codegen/generate-typescript-definitions.js.map +1 -0
  56. package/lib/codegen/generate-typescript-definitions.test.d.ts +2 -0
  57. package/lib/codegen/generate-typescript-definitions.test.d.ts.map +1 -0
  58. package/lib/codegen/generate-typescript-definitions.test.js +587 -0
  59. package/lib/codegen/generate-typescript-definitions.test.js.map +1 -0
  60. package/lib/codegen/index.d.ts +2 -0
  61. package/lib/codegen/index.d.ts.map +1 -0
  62. package/lib/codegen/index.js +6 -0
  63. package/lib/codegen/index.js.map +1 -0
  64. package/lib/codegen/schema/component-types.d.ts +3 -0
  65. package/lib/codegen/schema/component-types.d.ts.map +1 -0
  66. package/lib/codegen/schema/component-types.js +118 -0
  67. package/lib/codegen/schema/component-types.js.map +1 -0
  68. package/lib/codegen/schema/data-types.d.ts +3 -0
  69. package/lib/codegen/schema/data-types.d.ts.map +1 -0
  70. package/lib/codegen/schema/data-types.js +98 -0
  71. package/lib/codegen/schema/data-types.js.map +1 -0
  72. package/lib/codegen/schema/index.d.ts +3 -0
  73. package/lib/codegen/schema/index.d.ts.map +1 -0
  74. package/lib/codegen/schema/index.js +8 -0
  75. package/lib/codegen/schema/index.js.map +1 -0
  76. package/lib/codegen/schema/utils.d.ts +4 -0
  77. package/lib/codegen/schema/utils.d.ts.map +1 -0
  78. package/lib/codegen/schema/utils.js +103 -0
  79. package/lib/codegen/schema/utils.js.map +1 -0
  80. package/lib/codegen/schema-to-types.d.ts +14 -0
  81. package/lib/codegen/schema-to-types.d.ts.map +1 -0
  82. package/lib/codegen/schema-to-types.js +203 -0
  83. package/lib/codegen/schema-to-types.js.map +1 -0
  84. package/lib/compile/compile.d.ts.map +1 -0
  85. package/lib/compile/compile.js +245 -0
  86. package/lib/compile/compile.js.map +1 -0
  87. package/lib/compile/compile.test.d.ts.map +1 -0
  88. package/lib/compile/compile.test.js +148 -0
  89. package/lib/compile/compile.test.js.map +1 -0
  90. package/lib/evaluate/evaluate.d.ts +26 -0
  91. package/lib/evaluate/evaluate.d.ts.map +1 -0
  92. package/lib/evaluate/evaluate.js +40 -0
  93. package/lib/evaluate/evaluation-error.d.ts +4 -0
  94. package/lib/evaluate/evaluation-error.d.ts.map +1 -0
  95. package/lib/evaluate/evaluation-error.js +6 -0
  96. package/lib/index.d.ts +8 -0
  97. package/lib/index.d.ts.map +1 -0
  98. package/lib/index.js +16 -0
  99. package/lib/index.js.map +1 -0
  100. package/lib/render.d.ts +58 -0
  101. package/lib/render.d.ts.map +1 -0
  102. package/lib/render.js +52 -0
  103. package/lib/render.test.d.ts.map +1 -0
  104. package/lib/schema.d.ts +68 -0
  105. package/lib/schema.d.ts.map +1 -0
  106. package/lib/schema.js +106 -0
  107. package/lib/validate.d.ts +41 -0
  108. package/lib/validate.d.ts.map +1 -0
  109. package/lib/validate.js +42 -0
  110. package/package.json +27 -0
  111. package/src/analyze/analysis-error.ts +26 -0
  112. package/src/analyze/analysis-report.ts +228 -0
  113. package/src/analyze/analyze.test.ts +829 -0
  114. package/src/analyze/analyze.ts +10 -0
  115. package/src/analyze/data/analyze.ts +15 -0
  116. package/src/analyze/data/data-access.ts +349 -0
  117. package/src/analyze/data/index.ts +1 -0
  118. package/src/analyze/data/method-calls.ts +96 -0
  119. package/src/analyze/data/utils.ts +329 -0
  120. package/src/analyze/index.ts +3 -0
  121. package/src/analyze/jsx/analyze.ts +17 -0
  122. package/src/analyze/jsx/element-attributes.ts +143 -0
  123. package/src/analyze/jsx/element-children.ts +97 -0
  124. package/src/analyze/jsx/element-tags.ts +55 -0
  125. package/src/analyze/jsx/index.ts +1 -0
  126. package/src/analyze/security/analyze.ts +21 -0
  127. package/src/analyze/security/call-expressions.ts +41 -0
  128. package/src/analyze/security/declarations.ts +67 -0
  129. package/src/analyze/security/expressions.ts +100 -0
  130. package/src/analyze/security/identifiers.ts +113 -0
  131. package/src/analyze/security/index.ts +1 -0
  132. package/src/analyze/security/member-access.ts +35 -0
  133. package/src/analyze/utils.ts +118 -0
  134. package/src/analyze/validation-context.ts +32 -0
  135. package/src/builtins.ts +1149 -0
  136. package/src/codegen/builtins/builtin-types.ts +174 -0
  137. package/src/codegen/builtins/index.ts +1 -0
  138. package/src/codegen/generate-typescript-definitions.test.ts +676 -0
  139. package/src/codegen/generate-typescript-definitions.ts +35 -0
  140. package/src/codegen/index.ts +1 -0
  141. package/src/codegen/schema/component-types.ts +140 -0
  142. package/src/codegen/schema/data-types.ts +109 -0
  143. package/src/codegen/schema/index.ts +2 -0
  144. package/src/codegen/schema/utils.ts +111 -0
  145. package/src/compile/compilation-error.ts +37 -0
  146. package/src/compile/compile.test.ts +180 -0
  147. package/src/compile/compile.ts +282 -0
  148. package/src/compile/index.ts +2 -0
  149. package/src/evaluate/evaluate.test.ts +316 -0
  150. package/src/evaluate/evaluate.ts +81 -0
  151. package/src/evaluate/evaluation-error.ts +6 -0
  152. package/src/evaluate/index.ts +2 -0
  153. package/src/index.ts +10 -0
  154. package/src/jsx.ts +161 -0
  155. package/src/parse/index.ts +2 -0
  156. package/src/parse/parse-error.ts +14 -0
  157. package/src/parse/parse.test.ts +99 -0
  158. package/src/parse/parse.ts +40 -0
  159. package/src/render.test.ts +425 -0
  160. package/src/render.ts +75 -0
  161. package/src/schema.ts +195 -0
  162. package/src/traverse.test.ts +104 -0
  163. package/src/traverse.ts +78 -0
  164. package/src/types.ts +17 -0
  165. package/src/validate.ts +59 -0
@@ -0,0 +1,299 @@
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
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"declare-types.js","sourceRoot":"","sources":["../../src/codegen/declare-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { Schema } from "../schema.js";
2
+ /**
3
+ * Generates TypeScript definitions from a JSXExpression schema.
4
+ *
5
+ * The generated definitions enable code editors to provide:
6
+ * - IntelliSense autocomplete for components and data properties
7
+ * - Type checking for JSX expressions
8
+ * - Hover documentation from schema descriptions
9
+ *
10
+ * @param schema - Schema defining allowed data properties, JSX elements, and their types
11
+ * @returns Complete TypeScript definition file as a string
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * const schema = {
16
+ * elements: {
17
+ * Button: {
18
+ * props: { size: { type: "string", enum: ["sm", "md", "lg"] } }
19
+ * }
20
+ * },
21
+ * data: {
22
+ * user: { type: "object", shape: { name: { type: "string" } } }
23
+ * }
24
+ * };
25
+ *
26
+ * const definitions = generateTypeScriptDefinitions(schema);
27
+ * // Use with Monaco, VS Code, or any TypeScript-enabled editor
28
+ * ```
29
+ */
30
+ export declare function generateTypeScriptDefinitions(schema: Schema): string;
31
+ //# sourceMappingURL=generate-typescript-definitions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-typescript-definitions.d.ts","sourceRoot":"","sources":["../../src/codegen/generate-typescript-definitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAItC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEpE"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateTypeScriptDefinitions = generateTypeScriptDefinitions;
4
+ const index_js_1 = require("./builtins/index.js");
5
+ const index_js_2 = require("./schema/index.js");
6
+ /**
7
+ * Generates TypeScript definitions from a JSXExpression schema.
8
+ *
9
+ * The generated definitions enable code editors to provide:
10
+ * - IntelliSense autocomplete for components and data properties
11
+ * - Type checking for JSX expressions
12
+ * - Hover documentation from schema descriptions
13
+ *
14
+ * @param schema - Schema defining allowed data properties, JSX elements, and their types
15
+ * @returns Complete TypeScript definition file as a string
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * const schema = {
20
+ * elements: {
21
+ * Button: {
22
+ * props: { size: { type: "string", enum: ["sm", "md", "lg"] } }
23
+ * }
24
+ * },
25
+ * data: {
26
+ * user: { type: "object", shape: { name: { type: "string" } } }
27
+ * }
28
+ * };
29
+ *
30
+ * const definitions = generateTypeScriptDefinitions(schema);
31
+ * // Use with Monaco, VS Code, or any TypeScript-enabled editor
32
+ * ```
33
+ */
34
+ function generateTypeScriptDefinitions(schema) {
35
+ return [(0, index_js_1.declareBuiltinTypes)(), (0, index_js_2.declareComponentTypes)(schema), (0, index_js_2.declareDataTypes)(schema)].join("\n");
36
+ }
37
+ //# sourceMappingURL=generate-typescript-definitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-typescript-definitions.js","sourceRoot":"","sources":["../../src/codegen/generate-typescript-definitions.ts"],"names":[],"mappings":";;AAgCA,sEAEC;AAjCD,kDAA0D;AAC1D,gDAA4E;AAE5E;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,SAAgB,6BAA6B,CAAC,MAAc;IAC1D,OAAO,CAAC,IAAA,8BAAmB,GAAE,EAAE,IAAA,gCAAqB,EAAC,MAAM,CAAC,EAAE,IAAA,2BAAgB,EAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrG,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=generate-typescript-definitions.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-typescript-definitions.test.d.ts","sourceRoot":"","sources":["../../src/codegen/generate-typescript-definitions.test.ts"],"names":[],"mappings":""}