jsxpression 0.1.0 → 0.1.2

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 (199) hide show
  1. package/lib/analyze/analysis-error.d.ts +7 -0
  2. package/lib/analyze/analysis-error.d.ts.map +1 -1
  3. package/lib/analyze/analysis-error.js +26 -0
  4. package/lib/analyze/analysis-error.js.map +1 -0
  5. package/lib/analyze/analysis-report.d.ts +2 -2
  6. package/lib/analyze/analysis-report.d.ts.map +1 -1
  7. package/lib/analyze/analyze.d.ts +5 -0
  8. package/lib/analyze/analyze.d.ts.map +1 -1
  9. package/lib/analyze/analyze.js +11 -0
  10. package/lib/analyze/analyze.js.map +1 -0
  11. package/lib/analyze/analyze.test.js +312 -312
  12. package/lib/analyze/analyze.test.js.map +1 -1
  13. package/lib/analyze/data/analyze.d.ts +5 -0
  14. package/lib/analyze/data/analyze.d.ts.map +1 -1
  15. package/lib/analyze/data/analyze.js +12 -0
  16. package/lib/analyze/data/analyze.js.map +1 -0
  17. package/lib/analyze/data/data-access.d.ts +7 -0
  18. package/lib/analyze/data/data-access.d.ts.map +1 -1
  19. package/lib/analyze/data/data-access.js +275 -0
  20. package/lib/analyze/data/data-access.js.map +1 -0
  21. package/lib/analyze/data/index.d.ts +2 -0
  22. package/lib/analyze/data/index.d.ts.map +1 -1
  23. package/lib/analyze/data/index.js +6 -0
  24. package/lib/analyze/data/index.js.map +1 -0
  25. package/lib/analyze/data/method-calls.d.ts +6 -0
  26. package/lib/analyze/data/method-calls.d.ts.map +1 -1
  27. package/lib/analyze/data/method-calls.js +58 -0
  28. package/lib/analyze/data/method-calls.js.map +1 -0
  29. package/lib/analyze/data/utils.d.ts +10 -0
  30. package/lib/analyze/data/utils.d.ts.map +1 -1
  31. package/lib/analyze/data/utils.js +212 -0
  32. package/lib/analyze/data/utils.js.map +1 -0
  33. package/lib/analyze/index.d.ts +4 -0
  34. package/lib/analyze/index.d.ts.map +1 -1
  35. package/lib/analyze/index.js +10 -0
  36. package/lib/analyze/index.js.map +1 -0
  37. package/lib/analyze/jsx/analyze.d.ts +5 -0
  38. package/lib/analyze/jsx/analyze.d.ts.map +1 -1
  39. package/lib/analyze/jsx/analyze.js +13 -0
  40. package/lib/analyze/jsx/analyze.js.map +1 -0
  41. package/lib/analyze/jsx/element-attributes.d.ts +6 -0
  42. package/lib/analyze/jsx/element-attributes.d.ts.map +1 -1
  43. package/lib/analyze/jsx/element-attributes.js +20 -20
  44. package/lib/analyze/jsx/element-attributes.js.map +1 -1
  45. package/lib/analyze/jsx/element-children.d.ts +6 -0
  46. package/lib/analyze/jsx/element-children.d.ts.map +1 -1
  47. package/lib/analyze/jsx/element-children.js +69 -0
  48. package/lib/analyze/jsx/element-children.js.map +1 -0
  49. package/lib/analyze/jsx/element-tags.d.ts +6 -0
  50. package/lib/analyze/jsx/element-tags.d.ts.map +1 -1
  51. package/lib/analyze/jsx/element-tags.js +41 -0
  52. package/lib/analyze/jsx/element-tags.js.map +1 -0
  53. package/lib/analyze/jsx/index.d.ts +2 -0
  54. package/lib/analyze/jsx/index.d.ts.map +1 -1
  55. package/lib/analyze/jsx/index.js +6 -0
  56. package/lib/analyze/jsx/index.js.map +1 -0
  57. package/lib/analyze/security/analyze.d.ts +5 -0
  58. package/lib/analyze/security/analyze.d.ts.map +1 -1
  59. package/lib/analyze/security/analyze.js +15 -0
  60. package/lib/analyze/security/analyze.js.map +1 -0
  61. package/lib/analyze/security/call-expressions.d.ts +6 -0
  62. package/lib/analyze/security/call-expressions.d.ts.map +1 -1
  63. package/lib/analyze/security/call-expressions.js +23 -0
  64. package/lib/analyze/security/call-expressions.js.map +1 -0
  65. package/lib/analyze/security/declarations.d.ts +6 -0
  66. package/lib/analyze/security/declarations.d.ts.map +1 -1
  67. package/lib/analyze/security/declarations.js +31 -0
  68. package/lib/analyze/security/declarations.js.map +1 -0
  69. package/lib/analyze/security/expressions.d.ts +6 -0
  70. package/lib/analyze/security/expressions.d.ts.map +1 -1
  71. package/lib/analyze/security/expressions.js +52 -0
  72. package/lib/analyze/security/expressions.js.map +1 -0
  73. package/lib/analyze/security/identifiers.d.ts +6 -0
  74. package/lib/analyze/security/identifiers.d.ts.map +1 -1
  75. package/lib/analyze/security/identifiers.js +87 -0
  76. package/lib/analyze/security/identifiers.js.map +1 -0
  77. package/lib/analyze/security/index.d.ts +2 -0
  78. package/lib/analyze/security/index.d.ts.map +1 -1
  79. package/lib/analyze/security/index.js +6 -0
  80. package/lib/analyze/security/index.js.map +1 -0
  81. package/lib/analyze/security/member-access.d.ts +6 -0
  82. package/lib/analyze/security/member-access.d.ts.map +1 -1
  83. package/lib/analyze/security/member-access.js +24 -0
  84. package/lib/analyze/security/member-access.js.map +1 -0
  85. package/lib/analyze/utils.d.ts.map +1 -0
  86. package/lib/analyze/utils.js +92 -0
  87. package/lib/analyze/utils.js.map +1 -0
  88. package/lib/analyze/validation-context.d.ts.map +1 -0
  89. package/lib/analyze/validation-context.js +27 -0
  90. package/lib/analyze/validation-context.js.map +1 -0
  91. package/lib/codegen/generate-typescript-definitions.test.js +190 -190
  92. package/lib/codegen/generate-typescript-definitions.test.js.map +1 -1
  93. package/lib/compile/compilation-error.d.ts.map +1 -0
  94. package/lib/compile/compilation-error.js +28 -0
  95. package/lib/compile/compilation-error.js.map +1 -0
  96. package/lib/compile/compile.d.ts +3 -0
  97. package/lib/compile/compile.d.ts.map +1 -1
  98. package/lib/compile/compile.js +17 -17
  99. package/lib/compile/compile.js.map +1 -1
  100. package/lib/compile/compile.test.js +110 -110
  101. package/lib/compile/compile.test.js.map +1 -1
  102. package/lib/compile/index.d.ts +3 -0
  103. package/lib/compile/index.d.ts.map +1 -0
  104. package/lib/compile/index.js +8 -0
  105. package/lib/compile/index.js.map +1 -0
  106. package/lib/evaluate/evaluate.js +9 -5
  107. package/lib/evaluate/evaluate.js.map +1 -0
  108. package/lib/evaluate/evaluate.test.d.ts.map +1 -0
  109. package/lib/evaluate/evaluate.test.js +252 -0
  110. package/lib/evaluate/evaluate.test.js.map +1 -0
  111. package/lib/evaluate/evaluation-error.js +6 -1
  112. package/lib/evaluate/evaluation-error.js.map +1 -0
  113. package/lib/evaluate/index.d.ts +3 -0
  114. package/lib/evaluate/index.d.ts.map +1 -0
  115. package/lib/evaluate/index.js +8 -0
  116. package/lib/evaluate/index.js.map +1 -0
  117. package/lib/index.d.ts +7 -7
  118. package/lib/index.d.ts.map +1 -1
  119. package/lib/index.js +12 -12
  120. package/lib/index.js.map +1 -1
  121. package/lib/jsx.d.ts +92 -0
  122. package/lib/jsx.d.ts.map +1 -0
  123. package/lib/jsx.js +43 -0
  124. package/lib/jsx.js.map +1 -0
  125. package/lib/parse/index.d.ts +3 -0
  126. package/lib/parse/index.d.ts.map +1 -0
  127. package/lib/parse/index.js +8 -0
  128. package/lib/parse/index.js.map +1 -0
  129. package/lib/parse/parse-error.d.ts.map +1 -0
  130. package/lib/parse/parse-error.js +13 -0
  131. package/lib/parse/parse-error.js.map +1 -0
  132. package/lib/parse/parse.d.ts +3 -0
  133. package/lib/parse/parse.d.ts.map +1 -0
  134. package/lib/parse/parse.js +35 -0
  135. package/lib/parse/parse.js.map +1 -0
  136. package/lib/parse/parse.test.d.ts.map +1 -0
  137. package/lib/parse/parse.test.js +82 -0
  138. package/lib/parse/parse.test.js.map +1 -0
  139. package/lib/render.d.ts +2 -2
  140. package/lib/render.d.ts.map +1 -1
  141. package/lib/render.js +13 -9
  142. package/lib/render.js.map +1 -0
  143. package/lib/render.test.js +303 -0
  144. package/lib/render.test.js.map +1 -0
  145. package/lib/schema.js +39 -18
  146. package/lib/schema.js.map +1 -0
  147. package/lib/traverse.d.ts +15 -0
  148. package/lib/traverse.d.ts.map +1 -0
  149. package/lib/traverse.js +49 -0
  150. package/lib/traverse.js.map +1 -0
  151. package/lib/traverse.test.d.ts.map +1 -0
  152. package/lib/traverse.test.js +86 -0
  153. package/lib/traverse.test.js.map +1 -0
  154. package/lib/types.d.ts.map +1 -0
  155. package/lib/types.js +3 -0
  156. package/lib/types.js.map +1 -0
  157. package/lib/validate.d.ts +3 -3
  158. package/lib/validate.d.ts.map +1 -1
  159. package/lib/validate.js +11 -7
  160. package/lib/validate.js.map +1 -0
  161. package/package.json +2 -1
  162. package/src/analyze/analysis-error.ts +1 -1
  163. package/src/analyze/analysis-report.ts +2 -2
  164. package/src/analyze/analyze.test.ts +4 -4
  165. package/src/analyze/analyze.ts +5 -5
  166. package/src/analyze/data/analyze.ts +5 -5
  167. package/src/analyze/data/data-access.ts +6 -6
  168. package/src/analyze/data/index.ts +1 -1
  169. package/src/analyze/data/method-calls.ts +7 -7
  170. package/src/analyze/data/utils.ts +5 -5
  171. package/src/analyze/index.ts +3 -3
  172. package/src/analyze/jsx/analyze.ts +6 -6
  173. package/src/analyze/jsx/element-attributes.ts +6 -6
  174. package/src/analyze/jsx/element-children.ts +6 -6
  175. package/src/analyze/jsx/element-tags.ts +5 -5
  176. package/src/analyze/jsx/index.ts +1 -1
  177. package/src/analyze/security/analyze.ts +8 -8
  178. package/src/analyze/security/call-expressions.ts +5 -5
  179. package/src/analyze/security/declarations.ts +5 -5
  180. package/src/analyze/security/expressions.ts +5 -5
  181. package/src/analyze/security/identifiers.ts +6 -6
  182. package/src/analyze/security/index.ts +1 -1
  183. package/src/analyze/security/member-access.ts +5 -5
  184. package/src/codegen/generate-typescript-definitions.test.ts +2 -2
  185. package/src/compile/compile.test.ts +2 -2
  186. package/src/compile/compile.ts +2 -2
  187. package/src/compile/index.ts +2 -2
  188. package/src/evaluate/evaluate.test.ts +4 -4
  189. package/src/evaluate/evaluate.ts +1 -1
  190. package/src/evaluate/index.ts +2 -2
  191. package/src/index.ts +7 -7
  192. package/src/parse/index.ts +2 -2
  193. package/src/parse/parse.test.ts +2 -2
  194. package/src/parse/parse.ts +1 -1
  195. package/src/render.test.ts +4 -4
  196. package/src/render.ts +5 -5
  197. package/src/traverse.test.ts +2 -2
  198. package/src/traverse.ts +1 -1
  199. package/src/validate.ts +3 -3
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.parse = parse;
7
+ const acorn_js_1 = require("acorn.js");
8
+ const acorn_jsx_js_1 = __importDefault(require("acorn-jsx.js"));
9
+ const parse_error_js_1 = require("./parse-error.js");
10
+ const JSXParser = acorn_js_1.Parser.extend((0, acorn_jsx_js_1.default)());
11
+ function parse(source) {
12
+ try {
13
+ return JSXParser.parse(source, {
14
+ ecmaVersion: "latest",
15
+ sourceType: "module",
16
+ locations: true,
17
+ allowReturnOutsideFunction: true,
18
+ });
19
+ }
20
+ catch (error) {
21
+ // Acorn throws syntax errors with location info when parsing fails.
22
+ // We steal this info and pass it to our own ParseError.
23
+ if (isAcornError(error)) {
24
+ // Remove location (the line:column part) from message if present
25
+ const message = error.message.replace(ACORN_LOCATION_SUFFIX_RX, "");
26
+ throw new parse_error_js_1.ParseError(message, error.loc);
27
+ }
28
+ throw new parse_error_js_1.ParseError(error instanceof Error ? error.message : "Parsing failed");
29
+ }
30
+ }
31
+ const ACORN_LOCATION_SUFFIX_RX = /\s+\(\d+:\d+\)$/;
32
+ function isAcornError(error) {
33
+ return error instanceof Error && error.loc !== undefined;
34
+ }
35
+ //# sourceMappingURL=parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/parse/parse.ts"],"names":[],"mappings":";;;;;AAMA,sBAoBC;AA1BD,uCAAgD;AAChD,gEAA+B;AAC/B,qDAA8C;AAE9C,MAAM,SAAS,GAAG,iBAAM,CAAC,MAAM,CAAC,IAAA,sBAAG,GAAE,CAAC,CAAC;AAEvC,SAAgB,KAAK,CAAC,MAAc;IAClC,IAAI,CAAC;QACH,OAAO,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE;YAC7B,WAAW,EAAE,QAAQ;YACrB,UAAU,EAAE,QAAQ;YACpB,SAAS,EAAE,IAAI;YACf,0BAA0B,EAAE,IAAI;SACjC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,oEAAoE;QACpE,wDAAwD;QACxD,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,iEAAiE;YACjE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;YAEpE,MAAM,IAAI,2BAAU,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,IAAI,2BAAU,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAClF,CAAC;AACH,CAAC;AAED,MAAM,wBAAwB,GAAG,iBAAiB,CAAC;AAEnD,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,KAAK,YAAY,KAAK,IAAK,KAAoB,CAAC,GAAG,KAAK,SAAS,CAAC;AAC3E,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.test.d.ts","sourceRoot":"","sources":["../../src/parse/parse.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_js_1 = require("vitest.js");
4
+ const index_js_1 = require("./parse/index.js");
5
+ const parse_error_js_1 = require("./parse-error.js");
6
+ (0, vitest_js_1.describe)("parse", () => {
7
+ (0, vitest_js_1.it)("should parse valid JSX element", () => {
8
+ const result = (0, index_js_1.parse)("<Text x={10}>Hello</Text>");
9
+ (0, vitest_js_1.expect)(result.type).toBe("Program");
10
+ (0, vitest_js_1.expect)(result.body).toHaveLength(1);
11
+ (0, vitest_js_1.expect)(result.body[0].type).toBe("ExpressionStatement");
12
+ });
13
+ (0, vitest_js_1.it)("should parse JSX fragment", () => {
14
+ const result = (0, index_js_1.parse)("<><Text>A</Text><Text>B</Text></>");
15
+ (0, vitest_js_1.expect)(result.type).toBe("Program");
16
+ (0, vitest_js_1.expect)(result.body[0].type).toBe("ExpressionStatement");
17
+ });
18
+ (0, vitest_js_1.it)("should throw ParseError with position for syntax error", () => {
19
+ (0, vitest_js_1.expect)(() => (0, index_js_1.parse)("<Text>Unclosed")).toThrow(parse_error_js_1.ParseError);
20
+ try {
21
+ (0, index_js_1.parse)("<Text>Unclosed");
22
+ }
23
+ catch (error) {
24
+ (0, vitest_js_1.expect)(error).toBeInstanceOf(parse_error_js_1.ParseError);
25
+ }
26
+ });
27
+ (0, vitest_js_1.it)("should parse nested JSX", () => {
28
+ const result = (0, index_js_1.parse)("<Outer><Inner><Deep>Text</Deep></Inner></Outer>");
29
+ (0, vitest_js_1.expect)(result.type).toBe("Program");
30
+ (0, vitest_js_1.expect)(result.body[0].type).toBe("ExpressionStatement");
31
+ });
32
+ (0, vitest_js_1.it)("should parse JSX with expressions", () => {
33
+ const result = (0, index_js_1.parse)("<Text>{props.value}</Text>");
34
+ (0, vitest_js_1.expect)(result.type).toBe("Program");
35
+ (0, vitest_js_1.expect)(result.body[0].type).toBe("ExpressionStatement");
36
+ });
37
+ (0, vitest_js_1.it)("should parse JSX with complex expressions", () => {
38
+ const result = (0, index_js_1.parse)("<Text>{data.items.map(x => x * 2).join(', ')}</Text>");
39
+ (0, vitest_js_1.expect)(result.type).toBe("Program");
40
+ (0, vitest_js_1.expect)(result.body[0].type).toBe("ExpressionStatement");
41
+ });
42
+ (0, vitest_js_1.it)("should parse JSX with attributes", () => {
43
+ const result = (0, index_js_1.parse)('<Text x={10} y="hello" z={data.value}>Content</Text>');
44
+ (0, vitest_js_1.expect)(result.type).toBe("Program");
45
+ (0, vitest_js_1.expect)(result.body[0].type).toBe("ExpressionStatement");
46
+ });
47
+ (0, vitest_js_1.it)("should parse self-closing JSX elements", () => {
48
+ const result = (0, index_js_1.parse)("<Input value={data.name} />");
49
+ (0, vitest_js_1.expect)(result.type).toBe("Program");
50
+ (0, vitest_js_1.expect)(result.body[0].type).toBe("ExpressionStatement");
51
+ });
52
+ (0, vitest_js_1.it)("should parse JSX with conditional expressions", () => {
53
+ const result = (0, index_js_1.parse)("<Text>{data.show ? 'visible' : 'hidden'}</Text>");
54
+ (0, vitest_js_1.expect)(result.type).toBe("Program");
55
+ (0, vitest_js_1.expect)(result.body[0].type).toBe("ExpressionStatement");
56
+ });
57
+ (0, vitest_js_1.it)("should parse empty JSX expressions", () => {
58
+ const result = (0, index_js_1.parse)("<Text>{}</Text>");
59
+ (0, vitest_js_1.expect)(result.type).toBe("Program");
60
+ (0, vitest_js_1.expect)(result.body[0].type).toBe("ExpressionStatement");
61
+ });
62
+ (0, vitest_js_1.it)("should preserve location information in errors", () => {
63
+ try {
64
+ (0, index_js_1.parse)("<Text>Unclosed");
65
+ throw new Error("Should have thrown ParseError");
66
+ }
67
+ catch (error) {
68
+ (0, vitest_js_1.expect)(error).toBeInstanceOf(parse_error_js_1.ParseError);
69
+ if (error instanceof parse_error_js_1.ParseError && error.loc) {
70
+ (0, vitest_js_1.expect)(error.loc).toBeDefined();
71
+ (0, vitest_js_1.expect)(error.loc.line).toBe(1);
72
+ (0, vitest_js_1.expect)(error.loc.column).toBe(6);
73
+ }
74
+ }
75
+ });
76
+ (0, vitest_js_1.it)("should handle invalid JSX syntax", () => {
77
+ (0, vitest_js_1.expect)(() => (0, index_js_1.parse)("<>")).toThrow(parse_error_js_1.ParseError);
78
+ (0, vitest_js_1.expect)(() => (0, index_js_1.parse)("<Text><")).toThrow(parse_error_js_1.ParseError);
79
+ (0, vitest_js_1.expect)(() => (0, index_js_1.parse)("<Text attr>")).toThrow(parse_error_js_1.ParseError);
80
+ });
81
+ });
82
+ //# sourceMappingURL=parse.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.test.js","sourceRoot":"","sources":["../../src/parse/parse.test.ts"],"names":[],"mappings":"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"}
package/lib/render.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { EvaluateOptions } from "./evaluate/evaluate";
2
- import { Schema } from "./schema";
1
+ import { EvaluateOptions } from "./evaluate/evaluate/index.js";
2
+ import { Schema } from "./schema.js";
3
3
  /**
4
4
  * Configuration options for rendering JSX expressions.
5
5
  *
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,eAAe,CAAC,CAAC,CAAC;IAChE;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,MAAM,CAAC,CAAC,GAAG,GAAG,EAC5B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,EAAE,WAAe,EAAE,GAAG,OAAO,EAAE,GAAE,aAAa,CAAC,CAAC,CAAM,GACrD,CAAC,CASH"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEzE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,eAAe,CAAC,CAAC,CAAC;IAChE;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,MAAM,CAAC,CAAC,GAAG,GAAG,EAC5B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,EAAE,WAAe,EAAE,GAAG,OAAO,EAAE,GAAE,aAAa,CAAC,CAAC,CAAM,GACrD,CAAC,CASH"}
package/lib/render.js CHANGED
@@ -1,7 +1,10 @@
1
- import { compile } from "./compile";
2
- import { evaluate } from "./evaluate/evaluate";
3
- import { parse } from "./parse";
4
- import { analyze, AnalysisError } from "./analyze";
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.render = render;
4
+ const index_js_1 = require("./compile/index.js");
5
+ const index_js_2 = require("./evaluate/evaluate/index.js");
6
+ const index_js_3 = require("./parse/index.js");
7
+ const index_js_4 = require("./analyze/index.js");
5
8
  /**
6
9
  * Renders a JSX expression with data validation and security constraints.
7
10
  *
@@ -42,11 +45,12 @@ import { analyze, AnalysisError } from "./analyze";
42
45
  * );
43
46
  * ```
44
47
  */
45
- export function render(source, schema, { minSeverity = 3, ...options } = {}) {
46
- const ast = parse(source);
47
- const report = analyze(ast, schema);
48
+ function render(source, schema, { minSeverity = 3, ...options } = {}) {
49
+ const ast = (0, index_js_3.parse)(source);
50
+ const report = (0, index_js_4.analyze)(ast, schema);
48
51
  if (report.hasIssues(minSeverity)) {
49
- throw AnalysisError.fromReport(report);
52
+ throw index_js_4.AnalysisError.fromReport(report);
50
53
  }
51
- return evaluate(compile(ast), options);
54
+ return (0, index_js_2.evaluate)((0, index_js_1.compile)(ast), options);
52
55
  }
56
+ //# sourceMappingURL=render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":";;AA6DA,wBAaC;AA1ED,iDAA6C;AAC7C,2DAAyE;AACzE,+CAAyC;AAEzC,iDAA4D;AAiB5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,SAAgB,MAAM,CACpB,MAAc,EACd,MAAc,EACd,EAAE,WAAW,GAAG,CAAC,EAAE,GAAG,OAAO,KAAuB,EAAE;IAEtD,MAAM,GAAG,GAAG,IAAA,gBAAK,EAAC,MAAM,CAAC,CAAC;IAC1B,MAAM,MAAM,GAAG,IAAA,kBAAO,EAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAEpC,IAAI,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;QAClC,MAAM,wBAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,IAAA,mBAAQ,EAAC,IAAA,kBAAO,EAAC,GAAG,CAAC,EAAE,OAAO,CAAM,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,303 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_js_1 = require("vitest.js");
4
+ const render_js_1 = require("./render.js");
5
+ const index_js_1 = require("./parse/index.js");
6
+ const index_js_2 = require("./analyze/index.js");
7
+ const index_js_3 = require("./evaluate/index.js");
8
+ (0, vitest_js_1.describe)("render", () => {
9
+ (0, vitest_js_1.it)("should render complete JSX pipeline successfully", () => {
10
+ const TestComponent = (props, ...children) => ({
11
+ type: "TestComponent",
12
+ props,
13
+ children,
14
+ });
15
+ const result = (0, render_js_1.render)("<Test x={data.x} y={Math.floor(data.y)}>Hello</Test>", {
16
+ data: {
17
+ x: { type: "number" },
18
+ y: { type: "number" },
19
+ },
20
+ elements: {
21
+ Test: {
22
+ props: {
23
+ x: { type: "number" },
24
+ y: { type: "number" },
25
+ },
26
+ },
27
+ },
28
+ }, {
29
+ data: { x: 10, y: 3.7 },
30
+ components: { Test: TestComponent },
31
+ });
32
+ (0, vitest_js_1.expect)(result.type).toBe("TestComponent");
33
+ (0, vitest_js_1.expect)(result.props).toEqual({ x: 10, y: 3 });
34
+ (0, vitest_js_1.expect)(result.children).toEqual(["Hello"]);
35
+ });
36
+ (0, vitest_js_1.it)("should render complex expressions end-to-end", () => {
37
+ const TestComponent = (props) => ({
38
+ type: "TestComponent",
39
+ props,
40
+ children: [],
41
+ });
42
+ const result = (0, render_js_1.render)("<Test values={data.items.filter(x => x > 2).map(x => x * 2).join(', ')}>Text</Test>", {
43
+ data: {
44
+ items: { type: "array", shape: { type: "number" } },
45
+ },
46
+ elements: {
47
+ Test: {
48
+ props: {
49
+ values: { type: "string" },
50
+ },
51
+ },
52
+ },
53
+ }, {
54
+ data: { items: [1, 2, 3, 4, 5] },
55
+ components: { Test: TestComponent },
56
+ });
57
+ (0, vitest_js_1.expect)(result.props.values).toBe("6, 8, 10");
58
+ });
59
+ (0, vitest_js_1.it)("should render nested JSX elements", () => {
60
+ const OuterComponent = (props, ...children) => ({
61
+ type: "OuterComponent",
62
+ props,
63
+ children,
64
+ });
65
+ const InnerComponent = (props) => ({
66
+ type: "InnerComponent",
67
+ props,
68
+ children: [],
69
+ });
70
+ const result = (0, render_js_1.render)("<Outer x={10}><Inner y={20}>Nested</Inner></Outer>", {
71
+ elements: {
72
+ Outer: {
73
+ props: {
74
+ x: { type: "number" },
75
+ },
76
+ },
77
+ Inner: {
78
+ props: {
79
+ y: { type: "number" },
80
+ },
81
+ },
82
+ },
83
+ }, {
84
+ data: {},
85
+ components: {
86
+ Outer: OuterComponent,
87
+ Inner: InnerComponent,
88
+ },
89
+ });
90
+ (0, vitest_js_1.expect)(result.type).toBe("OuterComponent");
91
+ (0, vitest_js_1.expect)(result.props).toEqual({ x: 10 });
92
+ (0, vitest_js_1.expect)(result.children).toHaveLength(1);
93
+ (0, vitest_js_1.expect)(result.children[0].type).toBe("InnerComponent");
94
+ });
95
+ (0, vitest_js_1.it)("should render JSX fragments", () => {
96
+ const TestComponent = () => ({
97
+ type: "Test",
98
+ props: {},
99
+ children: [],
100
+ });
101
+ const result = (0, render_js_1.render)("<><Test>A</Test><Test>B</Test></>", {
102
+ elements: {
103
+ Test: {
104
+ props: {},
105
+ },
106
+ },
107
+ }, {
108
+ data: {},
109
+ components: { Test: TestComponent },
110
+ });
111
+ (0, vitest_js_1.expect)(result).toBeDefined();
112
+ });
113
+ (0, vitest_js_1.it)("should render bare expression containers", () => {
114
+ const result = (0, render_js_1.render)("{data.user.name}", {
115
+ data: {
116
+ user: {
117
+ type: "object",
118
+ shape: {
119
+ name: { type: "string" },
120
+ },
121
+ },
122
+ },
123
+ elements: {},
124
+ }, {
125
+ data: { user: { name: "Alice" } },
126
+ components: {},
127
+ });
128
+ (0, vitest_js_1.expect)(result).toBe("Alice");
129
+ });
130
+ (0, vitest_js_1.it)("should render bare mathematical expressions", () => {
131
+ const result = (0, render_js_1.render)("{data.count * 2}", {
132
+ data: {
133
+ count: { type: "number" },
134
+ },
135
+ elements: {},
136
+ }, {
137
+ data: { count: 42 },
138
+ components: {},
139
+ });
140
+ (0, vitest_js_1.expect)(result).toBe(84);
141
+ });
142
+ (0, vitest_js_1.it)("should render bare method calls", () => {
143
+ const result = (0, render_js_1.render)("{data.text.toUpperCase()}", {
144
+ data: {
145
+ text: { type: "string" },
146
+ },
147
+ elements: {},
148
+ }, {
149
+ data: { text: "hello world" },
150
+ components: {},
151
+ });
152
+ (0, vitest_js_1.expect)(result).toBe("HELLO WORLD");
153
+ });
154
+ (0, vitest_js_1.it)("should render bare complex expressions", () => {
155
+ const result = (0, render_js_1.render)("{data.numbers.map(x => x * 2).join(', ')}", {
156
+ data: {
157
+ numbers: {
158
+ type: "array",
159
+ shape: { type: "number" },
160
+ },
161
+ },
162
+ elements: {},
163
+ }, {
164
+ data: { numbers: [1, 2, 3, 4] },
165
+ components: {},
166
+ });
167
+ (0, vitest_js_1.expect)(result).toBe("2, 4, 6, 8");
168
+ });
169
+ (0, vitest_js_1.it)("should propagate ParseError for syntax errors", () => {
170
+ const TestComponent = () => ({ type: "Test", props: {}, children: [] });
171
+ (0, vitest_js_1.expect)(() => (0, render_js_1.render)("<Text>Unclosed", {
172
+ elements: {
173
+ Text: {
174
+ props: {},
175
+ },
176
+ },
177
+ }, {
178
+ components: { Text: TestComponent },
179
+ })).toThrow(index_js_1.ParseError);
180
+ });
181
+ (0, vitest_js_1.it)("should propagate AnalysisError for disallowed identifiers", () => {
182
+ const TestComponent = () => ({ type: "Test", props: {}, children: [] });
183
+ (0, vitest_js_1.expect)(() => (0, render_js_1.render)("<Text>{window.location}</Text>", {
184
+ elements: {
185
+ Text: {
186
+ props: {},
187
+ },
188
+ },
189
+ }, {
190
+ components: { Text: TestComponent },
191
+ })).toThrow(index_js_2.AnalysisError);
192
+ });
193
+ (0, vitest_js_1.it)("should propagate AnalysisError for unknown JSX elements", () => {
194
+ const TestComponent = () => ({ type: "Test", props: {}, children: [] });
195
+ (0, vitest_js_1.expect)(() => (0, render_js_1.render)("<UnknownElement>Hello</UnknownElement>", {
196
+ elements: {
197
+ Text: {
198
+ props: {},
199
+ },
200
+ },
201
+ }, {
202
+ components: { Text: TestComponent },
203
+ })).toThrow(index_js_2.AnalysisError);
204
+ });
205
+ (0, vitest_js_1.it)("should propagate AnalysisError for disallowed methods", () => {
206
+ const TestComponent = () => ({ type: "Test", props: {}, children: [] });
207
+ (0, vitest_js_1.expect)(() => (0, render_js_1.render)("<Test>{data.items.push(1)}</Test>", {
208
+ data: {
209
+ items: {
210
+ type: "array",
211
+ shape: { type: "number" },
212
+ },
213
+ },
214
+ elements: {
215
+ Test: {
216
+ props: {},
217
+ },
218
+ },
219
+ }, {
220
+ data: { items: [1, 2, 3] },
221
+ components: { Test: TestComponent },
222
+ })).toThrow(index_js_2.AnalysisError);
223
+ });
224
+ (0, vitest_js_1.it)("should propagate AnalysisError for unknown components", () => {
225
+ const TestComponent = () => ({ type: "Test", props: {}, children: [] });
226
+ (0, vitest_js_1.expect)(() => (0, render_js_1.render)("<Test>Hello</Test>", {
227
+ elements: {
228
+ Test: {
229
+ props: {},
230
+ },
231
+ },
232
+ }, {
233
+ data: {},
234
+ components: { Test: TestComponent },
235
+ })).not.toThrow();
236
+ (0, vitest_js_1.expect)(() => (0, render_js_1.render)("<Other>Hello</Other>", {
237
+ elements: {},
238
+ })).toThrow(index_js_2.AnalysisError);
239
+ });
240
+ (0, vitest_js_1.it)("should propagate EvaluationError for runtime errors", () => {
241
+ const TestComponent = () => ({ type: "Test", props: {}, children: [] });
242
+ (0, vitest_js_1.expect)(() => (0, render_js_1.render)("<Test value={data.missing.nested}>Hello</Test>", {
243
+ data: {
244
+ missing: {
245
+ type: "object",
246
+ shape: {
247
+ nested: { type: "number" },
248
+ },
249
+ },
250
+ },
251
+ elements: {
252
+ Test: {
253
+ props: {
254
+ value: { type: "number" },
255
+ },
256
+ },
257
+ },
258
+ }, {
259
+ data: {},
260
+ components: { Test: TestComponent },
261
+ })).toThrow(index_js_3.EvaluationError);
262
+ });
263
+ (0, vitest_js_1.it)("should handle empty options", () => {
264
+ (0, vitest_js_1.expect)(() => (0, render_js_1.render)("<Test>Hello</Test>", { elements: {} })).toThrow(index_js_2.AnalysisError);
265
+ });
266
+ (0, vitest_js_1.it)("should handle empty props", () => {
267
+ const TestComponent = () => ({ type: "TestComponent", props: {}, children: [] });
268
+ const result = (0, render_js_1.render)("<Test>Hello</Test>", {
269
+ elements: {
270
+ Test: {
271
+ props: {},
272
+ },
273
+ },
274
+ }, {
275
+ components: { Test: TestComponent },
276
+ });
277
+ (0, vitest_js_1.expect)(result.type).toBe("TestComponent");
278
+ });
279
+ (0, vitest_js_1.it)("should handle conditional rendering with props", () => {
280
+ const TestComponent = (props) => ({
281
+ type: "Test",
282
+ props,
283
+ children: [],
284
+ });
285
+ const result = (0, render_js_1.render)("<Test msg={data.show ? 'visible' : 'hidden'}>Text</Test>", {
286
+ data: {
287
+ show: { type: "boolean" },
288
+ },
289
+ elements: {
290
+ Test: {
291
+ props: {
292
+ msg: { type: "string" },
293
+ },
294
+ },
295
+ },
296
+ }, {
297
+ data: { show: false },
298
+ components: { Test: TestComponent },
299
+ });
300
+ (0, vitest_js_1.expect)(result.props.msg).toBe("hidden");
301
+ });
302
+ });
303
+ //# sourceMappingURL=render.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.test.js","sourceRoot":"","sources":["../src/render.test.ts"],"names":[],"mappings":"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"}
package/lib/schema.js CHANGED
@@ -1,45 +1,65 @@
1
- export function isElementAllowed(schema, tagName) {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isElementAllowed = isElementAllowed;
4
+ exports.getElementSchema = getElementSchema;
5
+ exports.getAllowedAttributes = getAllowedAttributes;
6
+ exports.isAttributeAllowed = isAttributeAllowed;
7
+ exports.getAllowedChildren = getAllowedChildren;
8
+ exports.canHaveChildren = canHaveChildren;
9
+ exports.isSelfClosing = isSelfClosing;
10
+ exports.isChildAllowed = isChildAllowed;
11
+ exports.getAllElements = getAllElements;
12
+ exports.getElementConfig = getElementConfig;
13
+ exports.getAttributeSchema = getAttributeSchema;
14
+ exports.getRequiredAttributes = getRequiredAttributes;
15
+ exports.getOptionalAttributes = getOptionalAttributes;
16
+ exports.isAttributeRequired = isAttributeRequired;
17
+ exports.getDataSchema = getDataSchema;
18
+ exports.getPropertyAtPath = getPropertyAtPath;
19
+ exports.getAvailablePropertiesAtPath = getAvailablePropertiesAtPath;
20
+ exports.getEnumValues = getEnumValues;
21
+ function isElementAllowed(schema, tagName) {
2
22
  return !!schema.elements?.[tagName];
3
23
  }
4
- export function getElementSchema(schema, tagName) {
24
+ function getElementSchema(schema, tagName) {
5
25
  return schema.elements?.[tagName];
6
26
  }
7
- export function getAllowedAttributes(schema, tagName) {
27
+ function getAllowedAttributes(schema, tagName) {
8
28
  const elementConfig = getElementSchema(schema, tagName);
9
29
  return elementConfig?.props ? Object.keys(elementConfig.props) : [];
10
30
  }
11
- export function isAttributeAllowed(schema, tagName, attributeName) {
31
+ function isAttributeAllowed(schema, tagName, attributeName) {
12
32
  const allowedAttributes = getAllowedAttributes(schema, tagName);
13
33
  return allowedAttributes.includes(attributeName);
14
34
  }
15
- export function getAllowedChildren(schema, tagName) {
35
+ function getAllowedChildren(schema, tagName) {
16
36
  const elementConfig = getElementSchema(schema, tagName);
17
37
  return elementConfig?.allowedChildren;
18
38
  }
19
- export function canHaveChildren(schema, tagName) {
39
+ function canHaveChildren(schema, tagName) {
20
40
  const allowedChildren = getAllowedChildren(schema, tagName);
21
41
  return allowedChildren === undefined || allowedChildren.length > 0;
22
42
  }
23
- export function isSelfClosing(schema, tagName) {
43
+ function isSelfClosing(schema, tagName) {
24
44
  const allowedChildren = getAllowedChildren(schema, tagName);
25
45
  return allowedChildren !== undefined && allowedChildren.length === 0;
26
46
  }
27
- export function isChildAllowed(schema, parentTag, childTag) {
47
+ function isChildAllowed(schema, parentTag, childTag) {
28
48
  const allowedChildren = getAllowedChildren(schema, parentTag);
29
49
  return allowedChildren === undefined || allowedChildren.includes(childTag);
30
50
  }
31
51
  // New schema utilities for enhanced validation
32
- export function getAllElements(schema) {
52
+ function getAllElements(schema) {
33
53
  return schema.elements ? Object.keys(schema.elements) : [];
34
54
  }
35
- export function getElementConfig(schema, tagName) {
55
+ function getElementConfig(schema, tagName) {
36
56
  return getElementSchema(schema, tagName);
37
57
  }
38
- export function getAttributeSchema(schema, tagName, attributeName) {
58
+ function getAttributeSchema(schema, tagName, attributeName) {
39
59
  const elementSchema = getElementSchema(schema, tagName);
40
60
  return elementSchema?.props?.[attributeName];
41
61
  }
42
- export function getRequiredAttributes(schema, tagName) {
62
+ function getRequiredAttributes(schema, tagName) {
43
63
  const elementSchema = getElementSchema(schema, tagName);
44
64
  if (!elementSchema?.props) {
45
65
  return [];
@@ -52,19 +72,19 @@ export function getRequiredAttributes(schema, tagName) {
52
72
  }
53
73
  return required;
54
74
  }
55
- export function getOptionalAttributes(schema, tagName) {
75
+ function getOptionalAttributes(schema, tagName) {
56
76
  const allAttributes = getAllowedAttributes(schema, tagName);
57
77
  const requiredAttributes = getRequiredAttributes(schema, tagName);
58
78
  return allAttributes.filter((attr) => !requiredAttributes.includes(attr));
59
79
  }
60
- export function isAttributeRequired(schema, tagName, attributeName) {
80
+ function isAttributeRequired(schema, tagName, attributeName) {
61
81
  const requiredAttributes = getRequiredAttributes(schema, tagName);
62
82
  return requiredAttributes.includes(attributeName);
63
83
  }
64
- export function getDataSchema(schema) {
84
+ function getDataSchema(schema) {
65
85
  return schema.data;
66
86
  }
67
- export function getPropertyAtPath(schema, path) {
87
+ function getPropertyAtPath(schema, path) {
68
88
  if (!schema.data || path.length === 0) {
69
89
  return undefined;
70
90
  }
@@ -79,7 +99,7 @@ export function getPropertyAtPath(schema, path) {
79
99
  }
80
100
  return current;
81
101
  }
82
- export function getAvailablePropertiesAtPath(schema, path) {
102
+ function getAvailablePropertiesAtPath(schema, path) {
83
103
  if (!schema.data) {
84
104
  return [];
85
105
  }
@@ -92,7 +112,7 @@ export function getAvailablePropertiesAtPath(schema, path) {
92
112
  }
93
113
  return [];
94
114
  }
95
- export function getEnumValues(property) {
115
+ function getEnumValues(property) {
96
116
  switch (property.type) {
97
117
  case "string":
98
118
  return property.enum;
@@ -104,3 +124,4 @@ export function getEnumValues(property) {
104
124
  return undefined;
105
125
  }
106
126
  }
127
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}