jsxpression 0.1.5 → 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 (138) 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.d.ts +2 -1
  83. package/lib/evaluate/evaluate.d.ts.map +1 -1
  84. package/lib/evaluate/evaluate.js +17 -12
  85. package/lib/evaluate/evaluate.js.map +1 -1
  86. package/lib/evaluate/evaluate.test.d.ts +2 -0
  87. package/lib/evaluate/evaluate.test.js +86 -74
  88. package/lib/evaluate/evaluate.test.js.map +1 -1
  89. package/lib/evaluate/evaluation-error.js +5 -1
  90. package/lib/evaluate/evaluation-error.js.map +1 -1
  91. package/lib/evaluate/index.js +7 -2
  92. package/lib/evaluate/index.js.map +1 -1
  93. package/lib/index.js +15 -6
  94. package/lib/index.js.map +1 -1
  95. package/lib/jsx.js +22 -10
  96. package/lib/jsx.js.map +1 -1
  97. package/lib/parse/index.js +7 -2
  98. package/lib/parse/index.js.map +1 -1
  99. package/lib/parse/parse-error.d.ts +10 -0
  100. package/lib/parse/parse-error.js +5 -1
  101. package/lib/parse/parse-error.js.map +1 -1
  102. package/lib/parse/parse.js +13 -7
  103. package/lib/parse/parse.js.map +1 -1
  104. package/lib/parse/parse.test.d.ts +2 -0
  105. package/lib/parse/parse.test.js +58 -56
  106. package/lib/parse/parse.test.js.map +1 -1
  107. package/lib/render.js +12 -9
  108. package/lib/render.js.map +1 -1
  109. package/lib/render.test.d.ts +2 -0
  110. package/lib/render.test.js +64 -62
  111. package/lib/render.test.js.map +1 -1
  112. package/lib/schema.js +38 -18
  113. package/lib/schema.js.map +1 -1
  114. package/lib/traverse.js +11 -8
  115. package/lib/traverse.js.map +1 -1
  116. package/lib/traverse.test.d.ts +2 -0
  117. package/lib/traverse.test.js +36 -34
  118. package/lib/traverse.test.js.map +1 -1
  119. package/lib/types.d.ts +12 -0
  120. package/lib/types.js +2 -1
  121. package/lib/validate.js +10 -7
  122. package/lib/validate.js.map +1 -1
  123. package/package.json +7 -7
  124. package/src/evaluate/evaluate.test.ts +39 -25
  125. package/src/evaluate/evaluate.ts +11 -8
  126. package/src/render.ts +1 -1
  127. package/lib/codegen/builtin-types.d.ts +0 -11
  128. package/lib/codegen/builtin-types.d.ts.map +0 -1
  129. package/lib/codegen/builtin-types.js +0 -151
  130. package/lib/codegen/builtin-types.js.map +0 -1
  131. package/lib/codegen/declare-types.d.ts +0 -20
  132. package/lib/codegen/declare-types.d.ts.map +0 -1
  133. package/lib/codegen/declare-types.js +0 -299
  134. package/lib/codegen/declare-types.js.map +0 -1
  135. package/lib/codegen/schema-to-types.d.ts +0 -14
  136. package/lib/codegen/schema-to-types.d.ts.map +0 -1
  137. package/lib/codegen/schema-to-types.js +0 -203
  138. package/lib/codegen/schema-to-types.js.map +0 -1
@@ -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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"}