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,43 +1,45 @@
1
- import { describe, it, expect } from "vitest";
2
- import { generateTypeScriptDefinitions } from "./generate-typescript-definitions.js";
3
- describe("generateTypeScriptDefinitions", () => {
4
- describe("basic structure", () => {
5
- it("should generate valid TypeScript definitions for empty schema", () => {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const generate_typescript_definitions_js_1 = require("./generate-typescript-definitions.js");
5
+ (0, vitest_1.describe)("generateTypeScriptDefinitions", () => {
6
+ (0, vitest_1.describe)("basic structure", () => {
7
+ (0, vitest_1.it)("should generate valid TypeScript definitions for empty schema", () => {
6
8
  const schema = {
7
9
  data: {},
8
10
  elements: {},
9
11
  };
10
- const result = generateTypeScriptDefinitions(schema);
11
- expect(result).toContain("declare global");
12
- expect(result).toContain("namespace JSX");
13
- expect(result).toContain("export {};");
12
+ const result = (0, generate_typescript_definitions_js_1.generateTypeScriptDefinitions)(schema);
13
+ (0, vitest_1.expect)(result).toContain("declare global");
14
+ (0, vitest_1.expect)(result).toContain("namespace JSX");
15
+ (0, vitest_1.expect)(result).toContain("export {};");
14
16
  });
15
- it("should include builtin types declarations", () => {
17
+ (0, vitest_1.it)("should include builtin types declarations", () => {
16
18
  const schema = {
17
19
  data: {},
18
20
  elements: {},
19
21
  };
20
- const result = generateTypeScriptDefinitions(schema);
21
- expect(result).toContain("namespace JSX");
22
- expect(result).toContain("type Element");
23
- expect(result).toContain("type Node");
24
- expect(result).toContain("interface IntrinsicElements");
25
- expect(result).toContain("Math");
26
- expect(result).toContain("String");
27
- expect(result).toContain("Array");
22
+ const result = (0, generate_typescript_definitions_js_1.generateTypeScriptDefinitions)(schema);
23
+ (0, vitest_1.expect)(result).toContain("namespace JSX");
24
+ (0, vitest_1.expect)(result).toContain("type Element");
25
+ (0, vitest_1.expect)(result).toContain("type Node");
26
+ (0, vitest_1.expect)(result).toContain("interface IntrinsicElements");
27
+ (0, vitest_1.expect)(result).toContain("Math");
28
+ (0, vitest_1.expect)(result).toContain("String");
29
+ (0, vitest_1.expect)(result).toContain("Array");
28
30
  });
29
- it("should generate variadic parameters with array types", () => {
31
+ (0, vitest_1.it)("should generate variadic parameters with array types", () => {
30
32
  const schema = {
31
33
  data: {},
32
34
  elements: {},
33
35
  };
34
- const result = generateTypeScriptDefinitions(schema);
35
- expect(result).toContain("max(...values: number[]): number");
36
- expect(result).toContain("min(...values: number[]): number");
36
+ const result = (0, generate_typescript_definitions_js_1.generateTypeScriptDefinitions)(schema);
37
+ (0, vitest_1.expect)(result).toContain("max(...values: number[]): number");
38
+ (0, vitest_1.expect)(result).toContain("min(...values: number[]): number");
37
39
  });
38
40
  });
39
- describe("element types generation", () => {
40
- it("should generate element with string prop", () => {
41
+ (0, vitest_1.describe)("element types generation", () => {
42
+ (0, vitest_1.it)("should generate element with string prop", () => {
41
43
  const schema = {
42
44
  data: {},
43
45
  elements: {
@@ -48,12 +50,12 @@ describe("generateTypeScriptDefinitions", () => {
48
50
  },
49
51
  },
50
52
  };
51
- const result = generateTypeScriptDefinitions(schema);
52
- expect(result).toContain("interface ButtonProps");
53
- expect(result).toContain("label: string");
54
- expect(result).toContain("const Button: (props: ButtonProps) => JSX.Element");
53
+ const result = (0, generate_typescript_definitions_js_1.generateTypeScriptDefinitions)(schema);
54
+ (0, vitest_1.expect)(result).toContain("interface ButtonProps");
55
+ (0, vitest_1.expect)(result).toContain("label: string");
56
+ (0, vitest_1.expect)(result).toContain("const Button: (props: ButtonProps) => JSX.Element");
55
57
  });
56
- it("should generate element with multiple prop types", () => {
58
+ (0, vitest_1.it)("should generate element with multiple prop types", () => {
57
59
  const schema = {
58
60
  data: {},
59
61
  elements: {
@@ -67,14 +69,14 @@ describe("generateTypeScriptDefinitions", () => {
67
69
  },
68
70
  },
69
71
  };
70
- const result = generateTypeScriptDefinitions(schema);
71
- expect(result).toContain("interface InputProps");
72
- expect(result).toContain("name: string");
73
- expect(result).toContain("value?: string");
74
- expect(result).toContain("maxLength?: number");
75
- expect(result).toContain("disabled?: boolean");
72
+ const result = (0, generate_typescript_definitions_js_1.generateTypeScriptDefinitions)(schema);
73
+ (0, vitest_1.expect)(result).toContain("interface InputProps");
74
+ (0, vitest_1.expect)(result).toContain("name: string");
75
+ (0, vitest_1.expect)(result).toContain("value?: string");
76
+ (0, vitest_1.expect)(result).toContain("maxLength?: number");
77
+ (0, vitest_1.expect)(result).toContain("disabled?: boolean");
76
78
  });
77
- it("should generate element with enum prop", () => {
79
+ (0, vitest_1.it)("should generate element with enum prop", () => {
78
80
  const schema = {
79
81
  data: {},
80
82
  elements: {
@@ -85,11 +87,11 @@ describe("generateTypeScriptDefinitions", () => {
85
87
  },
86
88
  },
87
89
  };
88
- const result = generateTypeScriptDefinitions(schema);
89
- expect(result).toContain("interface ButtonProps");
90
- expect(result).toContain('size?: "sm" | "md" | "lg"');
90
+ const result = (0, generate_typescript_definitions_js_1.generateTypeScriptDefinitions)(schema);
91
+ (0, vitest_1.expect)(result).toContain("interface ButtonProps");
92
+ (0, vitest_1.expect)(result).toContain('size?: "sm" | "md" | "lg"');
91
93
  });
92
- it("should generate element with object prop", () => {
94
+ (0, vitest_1.it)("should generate element with object prop", () => {
93
95
  const schema = {
94
96
  data: {},
95
97
  elements: {
@@ -106,13 +108,13 @@ describe("generateTypeScriptDefinitions", () => {
106
108
  },
107
109
  },
108
110
  };
109
- const result = generateTypeScriptDefinitions(schema);
110
- expect(result).toContain("interface CardProps");
111
- expect(result).toContain("style?:");
112
- expect(result).toContain("color: string");
113
- expect(result).toContain("backgroundColor: string");
111
+ const result = (0, generate_typescript_definitions_js_1.generateTypeScriptDefinitions)(schema);
112
+ (0, vitest_1.expect)(result).toContain("interface CardProps");
113
+ (0, vitest_1.expect)(result).toContain("style?:");
114
+ (0, vitest_1.expect)(result).toContain("color: string");
115
+ (0, vitest_1.expect)(result).toContain("backgroundColor: string");
114
116
  });
115
- it("should generate element with array prop", () => {
117
+ (0, vitest_1.it)("should generate element with array prop", () => {
116
118
  const schema = {
117
119
  data: {},
118
120
  elements: {
@@ -126,11 +128,11 @@ describe("generateTypeScriptDefinitions", () => {
126
128
  },
127
129
  },
128
130
  };
129
- const result = generateTypeScriptDefinitions(schema);
130
- expect(result).toContain("interface ListProps");
131
- expect(result).toContain("items?: string[]");
131
+ const result = (0, generate_typescript_definitions_js_1.generateTypeScriptDefinitions)(schema);
132
+ (0, vitest_1.expect)(result).toContain("interface ListProps");
133
+ (0, vitest_1.expect)(result).toContain("items?: string[]");
132
134
  });
133
- it("should generate element with function prop", () => {
135
+ (0, vitest_1.it)("should generate element with function prop", () => {
134
136
  const schema = {
135
137
  data: {},
136
138
  elements: {
@@ -141,11 +143,11 @@ describe("generateTypeScriptDefinitions", () => {
141
143
  },
142
144
  },
143
145
  };
144
- const result = generateTypeScriptDefinitions(schema);
145
- expect(result).toContain("interface ButtonProps");
146
- expect(result).toContain("onClick?: (...args: any[]) => any");
146
+ const result = (0, generate_typescript_definitions_js_1.generateTypeScriptDefinitions)(schema);
147
+ (0, vitest_1.expect)(result).toContain("interface ButtonProps");
148
+ (0, vitest_1.expect)(result).toContain("onClick?: (...args: any[]) => any");
147
149
  });
148
- it("should include children prop by default", () => {
150
+ (0, vitest_1.it)("should include children prop by default", () => {
149
151
  const schema = {
150
152
  data: {},
151
153
  elements: {
@@ -154,11 +156,11 @@ describe("generateTypeScriptDefinitions", () => {
154
156
  },
155
157
  },
156
158
  };
157
- const result = generateTypeScriptDefinitions(schema);
158
- expect(result).toContain("interface ContainerProps");
159
- expect(result).toContain("children?: JSX.Node");
159
+ const result = (0, generate_typescript_definitions_js_1.generateTypeScriptDefinitions)(schema);
160
+ (0, vitest_1.expect)(result).toContain("interface ContainerProps");
161
+ (0, vitest_1.expect)(result).toContain("children?: JSX.Node");
160
162
  });
161
- it("should exclude children prop when content is false", () => {
163
+ (0, vitest_1.it)("should exclude children prop when content is false", () => {
162
164
  const schema = {
163
165
  data: {},
164
166
  elements: {
@@ -168,11 +170,11 @@ describe("generateTypeScriptDefinitions", () => {
168
170
  },
169
171
  },
170
172
  };
171
- const result = generateTypeScriptDefinitions(schema);
172
- expect(result).toContain("interface InputProps");
173
- expect(result).not.toContain("children");
173
+ const result = (0, generate_typescript_definitions_js_1.generateTypeScriptDefinitions)(schema);
174
+ (0, vitest_1.expect)(result).toContain("interface InputProps");
175
+ (0, vitest_1.expect)(result).not.toContain("children");
174
176
  });
175
- it("should include element description as JSDoc", () => {
177
+ (0, vitest_1.it)("should include element description as JSDoc", () => {
176
178
  const schema = {
177
179
  data: {},
178
180
  elements: {
@@ -184,11 +186,11 @@ describe("generateTypeScriptDefinitions", () => {
184
186
  },
185
187
  },
186
188
  };
187
- const result = generateTypeScriptDefinitions(schema);
188
- expect(result).toContain("A clickable button element");
189
- expect(result).toContain("The button text");
189
+ const result = (0, generate_typescript_definitions_js_1.generateTypeScriptDefinitions)(schema);
190
+ (0, vitest_1.expect)(result).toContain("A clickable button element");
191
+ (0, vitest_1.expect)(result).toContain("The button text");
190
192
  });
191
- it("should generate multiple components", () => {
193
+ (0, vitest_1.it)("should generate multiple components", () => {
192
194
  const schema = {
193
195
  data: {},
194
196
  elements: {
@@ -203,28 +205,28 @@ describe("generateTypeScriptDefinitions", () => {
203
205
  },
204
206
  },
205
207
  };
206
- const result = generateTypeScriptDefinitions(schema);
207
- expect(result).toContain("interface ButtonProps");
208
- expect(result).toContain("interface InputProps");
209
- expect(result).toContain("interface ContainerProps");
210
- expect(result).toContain("const Button: (props: ButtonProps) => JSX.Element");
211
- expect(result).toContain("const Input: (props: InputProps) => JSX.Element");
212
- expect(result).toContain("const Container: (props: ContainerProps) => JSX.Element");
208
+ const result = (0, generate_typescript_definitions_js_1.generateTypeScriptDefinitions)(schema);
209
+ (0, vitest_1.expect)(result).toContain("interface ButtonProps");
210
+ (0, vitest_1.expect)(result).toContain("interface InputProps");
211
+ (0, vitest_1.expect)(result).toContain("interface ContainerProps");
212
+ (0, vitest_1.expect)(result).toContain("const Button: (props: ButtonProps) => JSX.Element");
213
+ (0, vitest_1.expect)(result).toContain("const Input: (props: InputProps) => JSX.Element");
214
+ (0, vitest_1.expect)(result).toContain("const Container: (props: ContainerProps) => JSX.Element");
213
215
  });
214
216
  });
215
- describe("data types generation", () => {
216
- it("should generate data with string property", () => {
217
+ (0, vitest_1.describe)("data types generation", () => {
218
+ (0, vitest_1.it)("should generate data with string property", () => {
217
219
  const schema = {
218
220
  data: {
219
221
  userName: { type: "string" },
220
222
  },
221
223
  elements: {},
222
224
  };
223
- const result = generateTypeScriptDefinitions(schema);
224
- expect(result).toContain("const data:");
225
- expect(result).toContain("userName: string");
225
+ const result = (0, generate_typescript_definitions_js_1.generateTypeScriptDefinitions)(schema);
226
+ (0, vitest_1.expect)(result).toContain("const data:");
227
+ (0, vitest_1.expect)(result).toContain("userName: string");
226
228
  });
227
- it("should generate data with multiple property types", () => {
229
+ (0, vitest_1.it)("should generate data with multiple property types", () => {
228
230
  const schema = {
229
231
  data: {
230
232
  name: { type: "string" },
@@ -233,13 +235,13 @@ describe("generateTypeScriptDefinitions", () => {
233
235
  },
234
236
  elements: {},
235
237
  };
236
- const result = generateTypeScriptDefinitions(schema);
237
- expect(result).toContain("const data:");
238
- expect(result).toContain("name: string");
239
- expect(result).toContain("age: number");
240
- expect(result).toContain("active: boolean");
238
+ const result = (0, generate_typescript_definitions_js_1.generateTypeScriptDefinitions)(schema);
239
+ (0, vitest_1.expect)(result).toContain("const data:");
240
+ (0, vitest_1.expect)(result).toContain("name: string");
241
+ (0, vitest_1.expect)(result).toContain("age: number");
242
+ (0, vitest_1.expect)(result).toContain("active: boolean");
241
243
  });
242
- it("should generate data with object property", () => {
244
+ (0, vitest_1.it)("should generate data with object property", () => {
243
245
  const schema = {
244
246
  data: {
245
247
  user: {
@@ -252,13 +254,13 @@ describe("generateTypeScriptDefinitions", () => {
252
254
  },
253
255
  elements: {},
254
256
  };
255
- const result = generateTypeScriptDefinitions(schema);
256
- expect(result).toContain("const data:");
257
- expect(result).toContain("user:");
258
- expect(result).toContain("name: string");
259
- expect(result).toContain("email: string");
257
+ const result = (0, generate_typescript_definitions_js_1.generateTypeScriptDefinitions)(schema);
258
+ (0, vitest_1.expect)(result).toContain("const data:");
259
+ (0, vitest_1.expect)(result).toContain("user:");
260
+ (0, vitest_1.expect)(result).toContain("name: string");
261
+ (0, vitest_1.expect)(result).toContain("email: string");
260
262
  });
261
- it("should generate data with nested object properties", () => {
263
+ (0, vitest_1.it)("should generate data with nested object properties", () => {
262
264
  const schema = {
263
265
  data: {
264
266
  user: {
@@ -277,14 +279,14 @@ describe("generateTypeScriptDefinitions", () => {
277
279
  },
278
280
  elements: {},
279
281
  };
280
- const result = generateTypeScriptDefinitions(schema);
281
- expect(result).toContain("const data:");
282
- expect(result).toContain("user:");
283
- expect(result).toContain("profile:");
284
- expect(result).toContain("avatar: string");
285
- expect(result).toContain("bio: string");
282
+ const result = (0, generate_typescript_definitions_js_1.generateTypeScriptDefinitions)(schema);
283
+ (0, vitest_1.expect)(result).toContain("const data:");
284
+ (0, vitest_1.expect)(result).toContain("user:");
285
+ (0, vitest_1.expect)(result).toContain("profile:");
286
+ (0, vitest_1.expect)(result).toContain("avatar: string");
287
+ (0, vitest_1.expect)(result).toContain("bio: string");
286
288
  });
287
- it("should generate data with array of primitives", () => {
289
+ (0, vitest_1.it)("should generate data with array of primitives", () => {
288
290
  const schema = {
289
291
  data: {
290
292
  tags: {
@@ -298,12 +300,12 @@ describe("generateTypeScriptDefinitions", () => {
298
300
  },
299
301
  elements: {},
300
302
  };
301
- const result = generateTypeScriptDefinitions(schema);
302
- expect(result).toContain("const data:");
303
- expect(result).toContain("tags: string[]");
304
- expect(result).toContain("scores: number[]");
303
+ const result = (0, generate_typescript_definitions_js_1.generateTypeScriptDefinitions)(schema);
304
+ (0, vitest_1.expect)(result).toContain("const data:");
305
+ (0, vitest_1.expect)(result).toContain("tags: string[]");
306
+ (0, vitest_1.expect)(result).toContain("scores: number[]");
305
307
  });
306
- it("should generate data with array of objects", () => {
308
+ (0, vitest_1.it)("should generate data with array of objects", () => {
307
309
  const schema = {
308
310
  data: {
309
311
  users: {
@@ -319,14 +321,14 @@ describe("generateTypeScriptDefinitions", () => {
319
321
  },
320
322
  elements: {},
321
323
  };
322
- const result = generateTypeScriptDefinitions(schema);
323
- expect(result).toContain("const data:");
324
- expect(result).toContain("users:");
325
- expect(result).toContain("name: string");
326
- expect(result).toContain("age: number");
327
- expect(result).toContain("[]");
324
+ const result = (0, generate_typescript_definitions_js_1.generateTypeScriptDefinitions)(schema);
325
+ (0, vitest_1.expect)(result).toContain("const data:");
326
+ (0, vitest_1.expect)(result).toContain("users:");
327
+ (0, vitest_1.expect)(result).toContain("name: string");
328
+ (0, vitest_1.expect)(result).toContain("age: number");
329
+ (0, vitest_1.expect)(result).toContain("[]");
328
330
  });
329
- it("should include data property descriptions as JSDoc", () => {
331
+ (0, vitest_1.it)("should include data property descriptions as JSDoc", () => {
330
332
  const schema = {
331
333
  data: {
332
334
  userName: { type: "string", description: "The current user's name" },
@@ -340,12 +342,12 @@ describe("generateTypeScriptDefinitions", () => {
340
342
  },
341
343
  elements: {},
342
344
  };
343
- const result = generateTypeScriptDefinitions(schema);
344
- expect(result).toContain("The current user's name");
345
- expect(result).toContain("User preferences");
346
- expect(result).toContain("UI theme preference");
345
+ const result = (0, generate_typescript_definitions_js_1.generateTypeScriptDefinitions)(schema);
346
+ (0, vitest_1.expect)(result).toContain("The current user's name");
347
+ (0, vitest_1.expect)(result).toContain("User preferences");
348
+ (0, vitest_1.expect)(result).toContain("UI theme preference");
347
349
  });
348
- it("should generate data with enum values", () => {
350
+ (0, vitest_1.it)("should generate data with enum values", () => {
349
351
  const schema = {
350
352
  data: {
351
353
  status: { type: "string", enum: ["pending", "active", "completed"] },
@@ -353,14 +355,14 @@ describe("generateTypeScriptDefinitions", () => {
353
355
  },
354
356
  elements: {},
355
357
  };
356
- const result = generateTypeScriptDefinitions(schema);
357
- expect(result).toContain("const data:");
358
- expect(result).toContain('status: "pending" | "active" | "completed"');
359
- expect(result).toContain("priority: 1 | 2 | 3");
358
+ const result = (0, generate_typescript_definitions_js_1.generateTypeScriptDefinitions)(schema);
359
+ (0, vitest_1.expect)(result).toContain("const data:");
360
+ (0, vitest_1.expect)(result).toContain('status: "pending" | "active" | "completed"');
361
+ (0, vitest_1.expect)(result).toContain("priority: 1 | 2 | 3");
360
362
  });
361
363
  });
362
- describe("combined schema", () => {
363
- it("should generate definitions for both components and data", () => {
364
+ (0, vitest_1.describe)("combined schema", () => {
365
+ (0, vitest_1.it)("should generate definitions for both components and data", () => {
364
366
  const schema = {
365
367
  data: {
366
368
  userName: { type: "string" },
@@ -379,17 +381,17 @@ describe("generateTypeScriptDefinitions", () => {
379
381
  },
380
382
  },
381
383
  };
382
- const result = generateTypeScriptDefinitions(schema);
383
- expect(result).toContain("const data:");
384
- expect(result).toContain("userName: string");
385
- expect(result).toContain("count: number");
386
- expect(result).toContain("interface DisplayProps");
387
- expect(result).toContain("interface CounterProps");
388
- expect(result).toContain("const Display: (props: DisplayProps) => JSX.Element");
389
- expect(result).toContain("const Counter: (props: CounterProps) => JSX.Element");
390
- expect(result).toContain("namespace JSX");
384
+ const result = (0, generate_typescript_definitions_js_1.generateTypeScriptDefinitions)(schema);
385
+ (0, vitest_1.expect)(result).toContain("const data:");
386
+ (0, vitest_1.expect)(result).toContain("userName: string");
387
+ (0, vitest_1.expect)(result).toContain("count: number");
388
+ (0, vitest_1.expect)(result).toContain("interface DisplayProps");
389
+ (0, vitest_1.expect)(result).toContain("interface CounterProps");
390
+ (0, vitest_1.expect)(result).toContain("const Display: (props: DisplayProps) => JSX.Element");
391
+ (0, vitest_1.expect)(result).toContain("const Counter: (props: CounterProps) => JSX.Element");
392
+ (0, vitest_1.expect)(result).toContain("namespace JSX");
391
393
  });
392
- it("should generate valid TypeScript that can be parsed", () => {
394
+ (0, vitest_1.it)("should generate valid TypeScript that can be parsed", () => {
393
395
  const schema = {
394
396
  data: {
395
397
  user: {
@@ -442,37 +444,37 @@ describe("generateTypeScriptDefinitions", () => {
442
444
  },
443
445
  },
444
446
  };
445
- const result = generateTypeScriptDefinitions(schema);
446
- expect(result).toContain("declare global");
447
- expect(result).toContain("export {};");
448
- expect(result).toContain("const data:");
449
- expect(result).toContain("user:");
450
- expect(result).toContain("name: string");
451
- expect(result).toContain("email: string");
452
- expect(result).toContain("settings:");
453
- expect(result).toContain('theme: "light" | "dark"');
454
- expect(result).toContain("notifications: boolean");
455
- expect(result).toContain("items:");
456
- expect(result).toContain("id: number");
457
- expect(result).toContain("tags: string[]");
458
- expect(result).toContain("interface CardProps");
459
- expect(result).toContain("title: string");
460
- expect(result).toContain("subtitle?: string");
461
- expect(result).toContain('variant?: "default" | "outlined" | "filled"');
462
- expect(result).toContain("onClick?: (...args: any[]) => any");
463
- expect(result).toContain("children?: JSX.Node");
464
- expect(result).toContain("A card element for displaying content");
465
- expect(result).toContain("interface ListProps");
466
- expect(result).toContain("items?: string[]");
467
- expect(result).not.toMatch(/interface ListProps\s*{[^}]*children/);
468
- expect(result).toContain("namespace JSX");
469
- expect(result).toContain("Math");
470
- expect(result).toContain("const Card: (props: CardProps) => JSX.Element");
471
- expect(result).toContain("const List: (props: ListProps) => JSX.Element");
447
+ const result = (0, generate_typescript_definitions_js_1.generateTypeScriptDefinitions)(schema);
448
+ (0, vitest_1.expect)(result).toContain("declare global");
449
+ (0, vitest_1.expect)(result).toContain("export {};");
450
+ (0, vitest_1.expect)(result).toContain("const data:");
451
+ (0, vitest_1.expect)(result).toContain("user:");
452
+ (0, vitest_1.expect)(result).toContain("name: string");
453
+ (0, vitest_1.expect)(result).toContain("email: string");
454
+ (0, vitest_1.expect)(result).toContain("settings:");
455
+ (0, vitest_1.expect)(result).toContain('theme: "light" | "dark"');
456
+ (0, vitest_1.expect)(result).toContain("notifications: boolean");
457
+ (0, vitest_1.expect)(result).toContain("items:");
458
+ (0, vitest_1.expect)(result).toContain("id: number");
459
+ (0, vitest_1.expect)(result).toContain("tags: string[]");
460
+ (0, vitest_1.expect)(result).toContain("interface CardProps");
461
+ (0, vitest_1.expect)(result).toContain("title: string");
462
+ (0, vitest_1.expect)(result).toContain("subtitle?: string");
463
+ (0, vitest_1.expect)(result).toContain('variant?: "default" | "outlined" | "filled"');
464
+ (0, vitest_1.expect)(result).toContain("onClick?: (...args: any[]) => any");
465
+ (0, vitest_1.expect)(result).toContain("children?: JSX.Node");
466
+ (0, vitest_1.expect)(result).toContain("A card element for displaying content");
467
+ (0, vitest_1.expect)(result).toContain("interface ListProps");
468
+ (0, vitest_1.expect)(result).toContain("items?: string[]");
469
+ (0, vitest_1.expect)(result).not.toMatch(/interface ListProps\s*{[^}]*children/);
470
+ (0, vitest_1.expect)(result).toContain("namespace JSX");
471
+ (0, vitest_1.expect)(result).toContain("Math");
472
+ (0, vitest_1.expect)(result).toContain("const Card: (props: CardProps) => JSX.Element");
473
+ (0, vitest_1.expect)(result).toContain("const List: (props: ListProps) => JSX.Element");
472
474
  });
473
475
  });
474
- describe("edge cases", () => {
475
- it("should handle empty props object", () => {
476
+ (0, vitest_1.describe)("edge cases", () => {
477
+ (0, vitest_1.it)("should handle empty props object", () => {
476
478
  const schema = {
477
479
  data: {},
478
480
  elements: {
@@ -481,12 +483,12 @@ describe("generateTypeScriptDefinitions", () => {
481
483
  },
482
484
  },
483
485
  };
484
- const result = generateTypeScriptDefinitions(schema);
485
- expect(result).toContain("interface DividerProps");
486
- expect(result).toContain("children?: JSX.Node");
487
- expect(result).toContain("const Divider: (props: DividerProps) => JSX.Element");
486
+ const result = (0, generate_typescript_definitions_js_1.generateTypeScriptDefinitions)(schema);
487
+ (0, vitest_1.expect)(result).toContain("interface DividerProps");
488
+ (0, vitest_1.expect)(result).toContain("children?: JSX.Node");
489
+ (0, vitest_1.expect)(result).toContain("const Divider: (props: DividerProps) => JSX.Element");
488
490
  });
489
- it("should handle element with only required props", () => {
491
+ (0, vitest_1.it)("should handle element with only required props", () => {
490
492
  const schema = {
491
493
  data: {},
492
494
  elements: {
@@ -498,14 +500,14 @@ describe("generateTypeScriptDefinitions", () => {
498
500
  },
499
501
  },
500
502
  };
501
- const result = generateTypeScriptDefinitions(schema);
502
- expect(result).toContain("interface LabelProps");
503
- expect(result).toContain("text: string");
504
- expect(result).toContain("id: string");
505
- expect(result).not.toMatch(/text\?:/);
506
- expect(result).not.toMatch(/id\?:/);
503
+ const result = (0, generate_typescript_definitions_js_1.generateTypeScriptDefinitions)(schema);
504
+ (0, vitest_1.expect)(result).toContain("interface LabelProps");
505
+ (0, vitest_1.expect)(result).toContain("text: string");
506
+ (0, vitest_1.expect)(result).toContain("id: string");
507
+ (0, vitest_1.expect)(result).not.toMatch(/text\?:/);
508
+ (0, vitest_1.expect)(result).not.toMatch(/id\?:/);
507
509
  });
508
- it("should handle deeply nested object structures", () => {
510
+ (0, vitest_1.it)("should handle deeply nested object structures", () => {
509
511
  const schema = {
510
512
  data: {
511
513
  config: {
@@ -532,14 +534,14 @@ describe("generateTypeScriptDefinitions", () => {
532
534
  },
533
535
  elements: {},
534
536
  };
535
- const result = generateTypeScriptDefinitions(schema);
536
- expect(result).toContain("config:");
537
- expect(result).toContain("level1:");
538
- expect(result).toContain("level2:");
539
- expect(result).toContain("level3:");
540
- expect(result).toContain("value: string");
537
+ const result = (0, generate_typescript_definitions_js_1.generateTypeScriptDefinitions)(schema);
538
+ (0, vitest_1.expect)(result).toContain("config:");
539
+ (0, vitest_1.expect)(result).toContain("level1:");
540
+ (0, vitest_1.expect)(result).toContain("level2:");
541
+ (0, vitest_1.expect)(result).toContain("level3:");
542
+ (0, vitest_1.expect)(result).toContain("value: string");
541
543
  });
542
- it("should handle array of arrays", () => {
544
+ (0, vitest_1.it)("should handle array of arrays", () => {
543
545
  const schema = {
544
546
  data: {
545
547
  matrix: {
@@ -552,10 +554,10 @@ describe("generateTypeScriptDefinitions", () => {
552
554
  },
553
555
  elements: {},
554
556
  };
555
- const result = generateTypeScriptDefinitions(schema);
556
- expect(result).toContain("matrix: number[][]");
557
+ const result = (0, generate_typescript_definitions_js_1.generateTypeScriptDefinitions)(schema);
558
+ (0, vitest_1.expect)(result).toContain("matrix: number[][]");
557
559
  });
558
- it("should handle mixed required and optional props", () => {
560
+ (0, vitest_1.it)("should handle mixed required and optional props", () => {
559
561
  const schema = {
560
562
  data: {},
561
563
  elements: {
@@ -571,14 +573,14 @@ describe("generateTypeScriptDefinitions", () => {
571
573
  },
572
574
  },
573
575
  };
574
- const result = generateTypeScriptDefinitions(schema);
575
- expect(result).toContain("interface FormProps");
576
- expect(result).toContain("id: string");
577
- expect(result).toContain("name: string");
578
- expect(result).toContain("title?: string");
579
- expect(result).toContain("description?: string");
580
- expect(result).toContain("onSubmit: (...args: any[]) => any");
581
- expect(result).toContain("onCancel?: (...args: any[]) => any");
576
+ const result = (0, generate_typescript_definitions_js_1.generateTypeScriptDefinitions)(schema);
577
+ (0, vitest_1.expect)(result).toContain("interface FormProps");
578
+ (0, vitest_1.expect)(result).toContain("id: string");
579
+ (0, vitest_1.expect)(result).toContain("name: string");
580
+ (0, vitest_1.expect)(result).toContain("title?: string");
581
+ (0, vitest_1.expect)(result).toContain("description?: string");
582
+ (0, vitest_1.expect)(result).toContain("onSubmit: (...args: any[]) => any");
583
+ (0, vitest_1.expect)(result).toContain("onCancel?: (...args: any[]) => any");
582
584
  });
583
585
  });
584
586
  });