@reckona/mreact-compiler 0.0.1

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 (135) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +30 -0
  3. package/dist/diagnostics.d.ts +12 -0
  4. package/dist/diagnostics.d.ts.map +1 -0
  5. package/dist/diagnostics.js +82 -0
  6. package/dist/diagnostics.js.map +1 -0
  7. package/dist/emit-client.d.ts +8 -0
  8. package/dist/emit-client.d.ts.map +1 -0
  9. package/dist/emit-client.js +401 -0
  10. package/dist/emit-client.js.map +1 -0
  11. package/dist/emit-compat.d.ts +11 -0
  12. package/dist/emit-compat.d.ts.map +1 -0
  13. package/dist/emit-compat.js +340 -0
  14. package/dist/emit-compat.js.map +1 -0
  15. package/dist/emit-escape-helper.d.ts +2 -0
  16. package/dist/emit-escape-helper.d.ts.map +1 -0
  17. package/dist/emit-escape-helper.js +45 -0
  18. package/dist/emit-escape-helper.js.map +1 -0
  19. package/dist/emit-server-stream.d.ts +18 -0
  20. package/dist/emit-server-stream.d.ts.map +1 -0
  21. package/dist/emit-server-stream.js +1415 -0
  22. package/dist/emit-server-stream.js.map +1 -0
  23. package/dist/emit-server.d.ts +13 -0
  24. package/dist/emit-server.d.ts.map +1 -0
  25. package/dist/emit-server.js +1103 -0
  26. package/dist/emit-server.js.map +1 -0
  27. package/dist/index.d.ts +4 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +3 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/internal.d.ts +30 -0
  32. package/dist/internal.d.ts.map +1 -0
  33. package/dist/internal.js +229 -0
  34. package/dist/internal.js.map +1 -0
  35. package/dist/ir.d.ts +115 -0
  36. package/dist/ir.d.ts.map +1 -0
  37. package/dist/ir.js +2 -0
  38. package/dist/ir.js.map +1 -0
  39. package/dist/oxc-analysis-types.d.ts +2 -0
  40. package/dist/oxc-analysis-types.d.ts.map +1 -0
  41. package/dist/oxc-analysis-types.js +2 -0
  42. package/dist/oxc-analysis-types.js.map +1 -0
  43. package/dist/oxc-await-analysis.d.ts +5 -0
  44. package/dist/oxc-await-analysis.d.ts.map +1 -0
  45. package/dist/oxc-await-analysis.js +109 -0
  46. package/dist/oxc-await-analysis.js.map +1 -0
  47. package/dist/oxc-await-ids.d.ts +3 -0
  48. package/dist/oxc-await-ids.d.ts.map +1 -0
  49. package/dist/oxc-await-ids.js +50 -0
  50. package/dist/oxc-await-ids.js.map +1 -0
  51. package/dist/oxc-await-validation.d.ts +4 -0
  52. package/dist/oxc-await-validation.d.ts.map +1 -0
  53. package/dist/oxc-await-validation.js +47 -0
  54. package/dist/oxc-await-validation.js.map +1 -0
  55. package/dist/oxc-bindings.d.ts +5 -0
  56. package/dist/oxc-bindings.d.ts.map +1 -0
  57. package/dist/oxc-bindings.js +55 -0
  58. package/dist/oxc-bindings.js.map +1 -0
  59. package/dist/oxc-body-lowering.d.ts +12 -0
  60. package/dist/oxc-body-lowering.d.ts.map +1 -0
  61. package/dist/oxc-body-lowering.js +131 -0
  62. package/dist/oxc-body-lowering.js.map +1 -0
  63. package/dist/oxc-child-analysis.d.ts +17 -0
  64. package/dist/oxc-child-analysis.d.ts.map +1 -0
  65. package/dist/oxc-child-analysis.js +292 -0
  66. package/dist/oxc-child-analysis.js.map +1 -0
  67. package/dist/oxc-code-utils.d.ts +3 -0
  68. package/dist/oxc-code-utils.d.ts.map +1 -0
  69. package/dist/oxc-code-utils.js +16 -0
  70. package/dist/oxc-code-utils.js.map +1 -0
  71. package/dist/oxc-component-detection.d.ts +22 -0
  72. package/dist/oxc-component-detection.d.ts.map +1 -0
  73. package/dist/oxc-component-detection.js +188 -0
  74. package/dist/oxc-component-detection.js.map +1 -0
  75. package/dist/oxc-component-props.d.ts +14 -0
  76. package/dist/oxc-component-props.d.ts.map +1 -0
  77. package/dist/oxc-component-props.js +92 -0
  78. package/dist/oxc-component-props.js.map +1 -0
  79. package/dist/oxc-component-references.d.ts +5 -0
  80. package/dist/oxc-component-references.d.ts.map +1 -0
  81. package/dist/oxc-component-references.js +118 -0
  82. package/dist/oxc-component-references.js.map +1 -0
  83. package/dist/oxc-dom-lowering.d.ts +2 -0
  84. package/dist/oxc-dom-lowering.d.ts.map +1 -0
  85. package/dist/oxc-dom-lowering.js +99 -0
  86. package/dist/oxc-dom-lowering.js.map +1 -0
  87. package/dist/oxc-expression-utils.d.ts +5 -0
  88. package/dist/oxc-expression-utils.d.ts.map +1 -0
  89. package/dist/oxc-expression-utils.js +31 -0
  90. package/dist/oxc-expression-utils.js.map +1 -0
  91. package/dist/oxc-jsx-attributes.d.ts +6 -0
  92. package/dist/oxc-jsx-attributes.d.ts.map +1 -0
  93. package/dist/oxc-jsx-attributes.js +88 -0
  94. package/dist/oxc-jsx-attributes.js.map +1 -0
  95. package/dist/oxc-jsx-text.d.ts +2 -0
  96. package/dist/oxc-jsx-text.d.ts.map +1 -0
  97. package/dist/oxc-jsx-text.js +50 -0
  98. package/dist/oxc-jsx-text.js.map +1 -0
  99. package/dist/oxc-nested-lowering.d.ts +8 -0
  100. package/dist/oxc-nested-lowering.d.ts.map +1 -0
  101. package/dist/oxc-nested-lowering.js +182 -0
  102. package/dist/oxc-nested-lowering.js.map +1 -0
  103. package/dist/oxc-node-utils.d.ts +8 -0
  104. package/dist/oxc-node-utils.d.ts.map +1 -0
  105. package/dist/oxc-node-utils.js +41 -0
  106. package/dist/oxc-node-utils.js.map +1 -0
  107. package/dist/oxc-raw-jsx.d.ts +3 -0
  108. package/dist/oxc-raw-jsx.d.ts.map +1 -0
  109. package/dist/oxc-raw-jsx.js +28 -0
  110. package/dist/oxc-raw-jsx.js.map +1 -0
  111. package/dist/oxc-render-values.d.ts +6 -0
  112. package/dist/oxc-render-values.d.ts.map +1 -0
  113. package/dist/oxc-render-values.js +149 -0
  114. package/dist/oxc-render-values.js.map +1 -0
  115. package/dist/oxc-runtime-emit.d.ts +4 -0
  116. package/dist/oxc-runtime-emit.d.ts.map +1 -0
  117. package/dist/oxc-runtime-emit.js +143 -0
  118. package/dist/oxc-runtime-emit.js.map +1 -0
  119. package/dist/oxc-transform.d.ts +4 -0
  120. package/dist/oxc-transform.d.ts.map +1 -0
  121. package/dist/oxc-transform.js +65 -0
  122. package/dist/oxc-transform.js.map +1 -0
  123. package/dist/oxc.d.ts +15 -0
  124. package/dist/oxc.d.ts.map +1 -0
  125. package/dist/oxc.js +250 -0
  126. package/dist/oxc.js.map +1 -0
  127. package/dist/transform.d.ts +3 -0
  128. package/dist/transform.d.ts.map +1 -0
  129. package/dist/transform.js +429 -0
  130. package/dist/transform.js.map +1 -0
  131. package/dist/types.d.ts +96 -0
  132. package/dist/types.d.ts.map +1 -0
  133. package/dist/types.js +2 -0
  134. package/dist/types.js.map +1 -0
  135. package/package.json +54 -0
@@ -0,0 +1,182 @@
1
+ import {} from "./oxc-body-lowering.js";
2
+ import { analyzeOxcExpressionChild, } from "./oxc-child-analysis.js";
3
+ import { lowerOxcDomNodeExpression } from "./oxc-dom-lowering.js";
4
+ import { readOxcJsxTagName } from "./oxc-jsx-attributes.js";
5
+ import { readArray, readObject, readSource, unwrapOxcParentheses } from "./oxc-node-utils.js";
6
+ import { emitOxcCompatObjectChildren, emitOxcServerStringChildren, } from "./oxc-runtime-emit.js";
7
+ const oxcNestedBodyLowerers = {
8
+ lowerDomNodeExpression: lowerOxcDomNodeExpression,
9
+ lowerCompatObjectExpression: lowerOxcCompatObjectExpression,
10
+ lowerServerStringExpression: lowerOxcServerStringExpression,
11
+ };
12
+ export function lowerOxcCompatObjectExpression(code, expression, componentNames, target, diagnostics) {
13
+ const children = analyzeOxcExpressionChild(code, expression, createOxcNestedChildAnalysisContext(componentNames, target, diagnostics, "compat-object"), "compat-object");
14
+ if (children.length === 0) {
15
+ return "null";
16
+ }
17
+ return emitOxcCompatObjectChildren(children);
18
+ }
19
+ export function lowerOxcCompatReactNodeExpression(code, expression, componentNames, target, diagnostics) {
20
+ const unwrapped = unwrapOxcParentheses(expression);
21
+ if (unwrapped.type === "JSXElement" || unwrapped.type === "JSXFragment") {
22
+ return lowerOxcCompatObjectExpression(code, unwrapped, componentNames, target, diagnostics);
23
+ }
24
+ if (unwrapped.type === "ArrayExpression") {
25
+ return `[${readArray(unwrapped.elements)
26
+ .map((element) => {
27
+ const elementObject = unwrapOxcParentheses(readObject(element));
28
+ return (lowerOxcCompatReactNodeExpression(code, elementObject, componentNames, target, diagnostics) ?? readSource(code, elementObject));
29
+ })
30
+ .join(", ")}]`;
31
+ }
32
+ return undefined;
33
+ }
34
+ export function lowerOxcNestedJsxExpression(code, expression, componentNames, target, diagnostics, bodyStatementJsx) {
35
+ const source = readSource(code, expression);
36
+ const expressionStart = typeof expression.start === "number" ? expression.start : 0;
37
+ const replacements = [];
38
+ visitOxcExpressionJsxRoots(expression, (node) => {
39
+ const start = typeof node.start === "number" ? node.start : undefined;
40
+ const end = typeof node.end === "number" ? node.end : undefined;
41
+ if (start === undefined || end === undefined) {
42
+ return;
43
+ }
44
+ const lowered = bodyStatementJsx === "compat-object"
45
+ ? lowerOxcCompatReactNodeExpression(code, node, componentNames, target, diagnostics)
46
+ : bodyStatementJsx === "server-string"
47
+ ? lowerOxcServerStringExpression(code, node, componentNames, target, diagnostics)
48
+ : lowerOxcReactiveValueExpression(code, node, componentNames);
49
+ if (lowered !== undefined) {
50
+ replacements.push({ start, end, value: lowered });
51
+ }
52
+ });
53
+ if (replacements.length === 0) {
54
+ return undefined;
55
+ }
56
+ let lowered = source;
57
+ for (const replacement of replacements.sort((left, right) => right.start - left.start)) {
58
+ const start = replacement.start - expressionStart;
59
+ const end = replacement.end - expressionStart;
60
+ lowered = `${lowered.slice(0, start)}${replacement.value}${lowered.slice(end)}`;
61
+ }
62
+ return lowered;
63
+ }
64
+ function visitOxcExpressionJsxRoots(node, visit) {
65
+ const unwrapped = unwrapOxcParentheses(node);
66
+ if (unwrapped.type === "JSXElement" || unwrapped.type === "JSXFragment") {
67
+ visit(unwrapped);
68
+ return;
69
+ }
70
+ for (const value of Object.values(unwrapped)) {
71
+ if (Array.isArray(value)) {
72
+ for (const item of value) {
73
+ const object = readObject(item);
74
+ if (Object.keys(object).length > 0) {
75
+ visitOxcExpressionJsxRoots(object, visit);
76
+ }
77
+ }
78
+ continue;
79
+ }
80
+ if (typeof value === "object" && value !== null) {
81
+ const object = readObject(value);
82
+ if (Object.keys(object).length > 0) {
83
+ visitOxcExpressionJsxRoots(object, visit);
84
+ }
85
+ }
86
+ }
87
+ }
88
+ export function lowerOxcReactiveValueExpression(code, expression, componentNames) {
89
+ const unwrapped = unwrapOxcParentheses(expression);
90
+ if (unwrapped.type === "JSXFragment") {
91
+ const children = readArray(unwrapped.children)
92
+ .map((child) => lowerOxcReactiveChildValue(code, readObject(child), componentNames))
93
+ .filter((child) => child !== undefined);
94
+ return [
95
+ "(() => {",
96
+ " const _fragment = document.createDocumentFragment();",
97
+ ...children.map((child) => ` _fragment.append(${child});`),
98
+ " return _fragment;",
99
+ "})()",
100
+ ].join("\n");
101
+ }
102
+ if (unwrapped.type !== "JSXElement") {
103
+ return undefined;
104
+ }
105
+ const openingElement = readObject(unwrapped.openingElement);
106
+ const tagName = readOxcJsxTagName(readObject(openingElement.name));
107
+ if (/^[a-z]/.test(tagName)) {
108
+ return lowerOxcDomNodeExpression(code, unwrapped);
109
+ }
110
+ if (!componentNames.has(tagName)) {
111
+ return undefined;
112
+ }
113
+ return `${tagName}(${lowerOxcReactiveComponentProps(code, unwrapped, componentNames)})`;
114
+ }
115
+ function lowerOxcReactiveComponentProps(code, node, componentNames) {
116
+ const openingElement = readObject(node.openingElement);
117
+ const entries = readArray(openingElement.attributes).flatMap((attribute) => {
118
+ const object = readObject(attribute);
119
+ if (object.type === "JSXSpreadAttribute") {
120
+ return [`...(${readSource(code, readObject(object.argument))})`];
121
+ }
122
+ if (object.type !== "JSXAttribute") {
123
+ return [];
124
+ }
125
+ const name = String(readObject(object.name).name);
126
+ const value = readObject(object.value);
127
+ if (Object.keys(value).length === 0) {
128
+ return [`${JSON.stringify(name)}: true`];
129
+ }
130
+ if (value.type === "Literal") {
131
+ return [`${JSON.stringify(name)}: ${JSON.stringify(value.value)}`];
132
+ }
133
+ if (value.type === "JSXExpressionContainer") {
134
+ const expression = readObject(value.expression);
135
+ return [
136
+ `${JSON.stringify(name)}: ${lowerOxcNestedJsxExpression(code, expression, componentNames, "client", [], "dom-node") ??
137
+ readSource(code, expression)}`,
138
+ ];
139
+ }
140
+ return [];
141
+ });
142
+ const children = readArray(node.children)
143
+ .map((child) => lowerOxcReactiveChildValue(code, readObject(child), componentNames))
144
+ .filter((child) => child !== undefined);
145
+ if (children.length === 1) {
146
+ entries.push(`"children": ${children[0]}`);
147
+ }
148
+ else if (children.length > 1) {
149
+ entries.push(`"children": [${children.join(", ")}]`);
150
+ }
151
+ return entries.length === 0 ? "{}" : `{ ${entries.join(", ")} }`;
152
+ }
153
+ function lowerOxcReactiveChildValue(code, child, componentNames) {
154
+ if (child.type === "JSXText") {
155
+ const value = typeof child.value === "string" ? child.value.replace(/\s+/g, " ").trim() : "";
156
+ return value === "" ? undefined : JSON.stringify(value);
157
+ }
158
+ if (child.type === "JSXExpressionContainer") {
159
+ const expression = readObject(child.expression);
160
+ return (lowerOxcNestedJsxExpression(code, expression, componentNames, "client", [], "dom-node") ??
161
+ readSource(code, expression));
162
+ }
163
+ return lowerOxcReactiveValueExpression(code, child, componentNames);
164
+ }
165
+ export function lowerOxcServerStringExpression(code, expression, componentNames, target, diagnostics) {
166
+ const children = analyzeOxcExpressionChild(code, expression, createOxcNestedChildAnalysisContext(componentNames, target, diagnostics, "server-string"), "server-string");
167
+ if (children.length === 0) {
168
+ return '""';
169
+ }
170
+ return emitOxcServerStringChildren(children);
171
+ }
172
+ function createOxcNestedChildAnalysisContext(componentNames, target, diagnostics, bodyStatementJsx) {
173
+ return {
174
+ componentNames,
175
+ target,
176
+ diagnostics,
177
+ bodyStatementJsx,
178
+ bodyLowerers: oxcNestedBodyLowerers,
179
+ lowerNestedJsxExpression: lowerOxcNestedJsxExpression,
180
+ };
181
+ }
182
+ //# sourceMappingURL=oxc-nested-lowering.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oxc-nested-lowering.js","sourceRoot":"","sources":["../src/oxc-nested-lowering.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { SourceLocation } from "./types.js";
2
+ export declare function readObject(value: unknown): Record<string, unknown>;
3
+ export declare function readArray(value: unknown): unknown[];
4
+ export declare function readSource(code: string, node: unknown): string;
5
+ export declare function unwrapOxcParentheses(expression: Record<string, unknown>): Record<string, unknown>;
6
+ export declare function getOxcLocation(code: string, node: unknown): SourceLocation | undefined;
7
+ export declare function arraysEqual(left: readonly string[], right: readonly string[]): boolean;
8
+ //# sourceMappingURL=oxc-node-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oxc-node-utils.d.ts","sourceRoot":"","sources":["../src/oxc-node-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAElE;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,CAEnD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAK9D;AAED,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQzB;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS,CAoBtF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAEtF"}
@@ -0,0 +1,41 @@
1
+ export function readObject(value) {
2
+ return typeof value === "object" && value !== null ? value : {};
3
+ }
4
+ export function readArray(value) {
5
+ return Array.isArray(value) ? value : [];
6
+ }
7
+ export function readSource(code, node) {
8
+ const object = readObject(node);
9
+ return typeof object.start === "number" && typeof object.end === "number"
10
+ ? code.slice(object.start, object.end)
11
+ : "";
12
+ }
13
+ export function unwrapOxcParentheses(expression) {
14
+ let current = expression;
15
+ while (current.type === "ParenthesizedExpression") {
16
+ current = readObject(current.expression);
17
+ }
18
+ return current;
19
+ }
20
+ export function getOxcLocation(code, node) {
21
+ const start = readObject(node).start;
22
+ if (typeof start !== "number") {
23
+ return undefined;
24
+ }
25
+ let line = 1;
26
+ let column = 1;
27
+ for (let index = 0; index < start; index += 1) {
28
+ if (code[index] === "\n") {
29
+ line += 1;
30
+ column = 1;
31
+ }
32
+ else {
33
+ column += 1;
34
+ }
35
+ }
36
+ return { line, column };
37
+ }
38
+ export function arraysEqual(left, right) {
39
+ return left.length === right.length && left.every((value, index) => value === right[index]);
40
+ }
41
+ //# sourceMappingURL=oxc-node-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oxc-node-utils.js","sourceRoot":"","sources":["../src/oxc-node-utils.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAE,KAAiC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/F,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,IAAa;IACpD,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,OAAO,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ;QACvE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC;QACtC,CAAC,CAAC,EAAE,CAAC;AACT,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,UAAmC;IAEnC,IAAI,OAAO,GAAG,UAAU,CAAC;IAEzB,OAAO,OAAO,CAAC,IAAI,KAAK,yBAAyB,EAAE,CAAC;QAClD,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,IAAa;IACxD,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;IAErC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC9C,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,CAAC;YACV,MAAM,GAAG,CAAC,CAAC;QACb,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAuB,EAAE,KAAwB;IAC3E,OAAO,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9F,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ModuleIr } from "./ir.js";
2
+ export declare function containsRawJsxInIr(ir: ModuleIr): boolean;
3
+ //# sourceMappingURL=oxc-raw-jsx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oxc-raw-jsx.d.ts","sourceRoot":"","sources":["../src/oxc-raw-jsx.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnD,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAKxD"}
@@ -0,0 +1,28 @@
1
+ export function containsRawJsxInIr(ir) {
2
+ return ir.components.some((component) => component.bodyStatements.some(containsRawJsx) || containsRawJsxInNode(component.root));
3
+ }
4
+ function containsRawJsx(value) {
5
+ return /<[A-Za-z][\w.:-]*(?:\s|>|\/)/.test(value);
6
+ }
7
+ function containsRawJsxInNode(node) {
8
+ if (node.kind === "list") {
9
+ return (node.bodyStatements?.some(containsRawJsx) === true || node.children.some(containsRawJsxInNode));
10
+ }
11
+ if (node.kind === "conditional") {
12
+ return node.whenTrue.some(containsRawJsxInNode) || node.whenFalse.some(containsRawJsxInNode);
13
+ }
14
+ if (node.kind === "fragment") {
15
+ return node.children.some(containsRawJsxInNode);
16
+ }
17
+ if (node.kind === "component") {
18
+ return (node.children.some(containsRawJsxInNode) ||
19
+ node.props.some((prop) => prop.kind === "render-prop" && prop.children.some(containsRawJsxInNode)));
20
+ }
21
+ if (node.kind === "async-boundary") {
22
+ return (node.children.some(containsRawJsxInNode) ||
23
+ node.placeholderChildren?.some(containsRawJsxInNode) === true ||
24
+ node.catchChildren?.some(containsRawJsxInNode) === true);
25
+ }
26
+ return node.kind === "element" && node.children.some(containsRawJsxInNode);
27
+ }
28
+ //# sourceMappingURL=oxc-raw-jsx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oxc-raw-jsx.js","sourceRoot":"","sources":["../src/oxc-raw-jsx.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,kBAAkB,CAAC,EAAY;IAC7C,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CACvB,CAAC,SAAS,EAAE,EAAE,CACZ,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,CACxF,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,8BAA8B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAe;IAC3C,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACzB,OAAO,CACL,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAC/F,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC/F,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC9B,OAAO,CACL,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC;YACxC,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,aAAa,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAClF,CACF,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACnC,OAAO,CACL,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC;YACxC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,oBAAoB,CAAC,KAAK,IAAI;YAC7D,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,oBAAoB,CAAC,KAAK,IAAI,CACxD,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAC7E,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { JsxNodeIr } from "./ir.js";
2
+ export declare function collectOxcBodyJsxBindingNames(statements: readonly unknown[]): Set<string>;
3
+ export declare function markOxcRenderValueExpressions(nodes: readonly JsxNodeIr[], names: Set<string>, renderMode?: "dynamic" | "html"): void;
4
+ export declare function isOxcRenderValueExpression(expression: Record<string, unknown>): boolean;
5
+ export declare function containsOxcJsxSyntax(node: Record<string, unknown>): boolean;
6
+ //# sourceMappingURL=oxc-render-values.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oxc-render-values.d.ts","sourceRoot":"","sources":["../src/oxc-render-values.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGzC,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,SAAS,OAAO,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAkCzF;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,SAAS,SAAS,EAAE,EAC3B,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,EAClB,UAAU,GAAE,SAAS,GAAG,MAAkB,GACzC,IAAI,CA0BN;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAcvF;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAU3E"}
@@ -0,0 +1,149 @@
1
+ import { readArray, readObject, unwrapOxcParentheses } from "./oxc-node-utils.js";
2
+ export function collectOxcBodyJsxBindingNames(statements) {
3
+ const names = new Set();
4
+ for (const statement of statements) {
5
+ const object = readObject(statement);
6
+ if (object.type === "ForOfStatement" || object.type === "ForStatement") {
7
+ collectOxcPushJsxBindingNames(readArray(readObject(object.body).body), names);
8
+ continue;
9
+ }
10
+ if (object.type !== "VariableDeclaration") {
11
+ continue;
12
+ }
13
+ const declarationKind = typeof object.kind === "string" ? object.kind : "let";
14
+ const isImmutableBinding = declarationKind === "const";
15
+ for (const declarationValue of readArray(object.declarations)) {
16
+ const declaration = readObject(declarationValue);
17
+ const id = readObject(declaration.id);
18
+ const initializer = unwrapOxcParentheses(readObject(declaration.init));
19
+ if (typeof id.name !== "string")
20
+ continue;
21
+ if (!containsOxcJsxSyntax(initializer))
22
+ continue;
23
+ if (!isJsxLikeInitializer(initializer))
24
+ continue;
25
+ if (!isImmutableBinding && isBindingReassigned(statements, id.name)) {
26
+ continue;
27
+ }
28
+ names.add(id.name);
29
+ }
30
+ }
31
+ return names;
32
+ }
33
+ export function markOxcRenderValueExpressions(nodes, names, renderMode = "dynamic") {
34
+ if (names.size === 0) {
35
+ return;
36
+ }
37
+ for (const node of nodes) {
38
+ if (node.kind === "expr" && names.has(node.code)) {
39
+ node.renderMode = renderMode;
40
+ continue;
41
+ }
42
+ if (node.kind === "conditional") {
43
+ markOxcRenderValueExpressions(node.whenTrue, names, renderMode);
44
+ markOxcRenderValueExpressions(node.whenFalse, names, renderMode);
45
+ continue;
46
+ }
47
+ if (node.kind === "list") {
48
+ markOxcRenderValueExpressions(node.children, names, renderMode);
49
+ continue;
50
+ }
51
+ if (node.kind === "fragment" || node.kind === "element" || node.kind === "component") {
52
+ markOxcRenderValueExpressions(node.children, names, renderMode);
53
+ }
54
+ }
55
+ }
56
+ export function isOxcRenderValueExpression(expression) {
57
+ if (expression.type !== "MemberExpression") {
58
+ return false;
59
+ }
60
+ const object = readObject(expression.object);
61
+ const property = readObject(expression.property);
62
+ return (object.type === "Identifier" &&
63
+ object.name === "props" &&
64
+ typeof property.name === "string" &&
65
+ ["children", "fallback", "header", "sidebar", "element"].includes(property.name));
66
+ }
67
+ export function containsOxcJsxSyntax(node) {
68
+ if (node.type === "JSXElement" || node.type === "JSXFragment") {
69
+ return true;
70
+ }
71
+ return Object.values(node).some((value) => Array.isArray(value)
72
+ ? value.some((item) => containsOxcJsxSyntax(readObject(item)))
73
+ : typeof value === "object" && value !== null && containsOxcJsxSyntax(readObject(value)));
74
+ }
75
+ function isJsxLikeInitializer(node) {
76
+ if (node.type === "JSXElement" || node.type === "JSXFragment")
77
+ return true;
78
+ if (node.type === "ConditionalExpression") {
79
+ return (isJsxLikeInitializer(readObject(node.consequent)) ||
80
+ isJsxLikeInitializer(readObject(node.alternate)));
81
+ }
82
+ if (node.type === "LogicalExpression") {
83
+ return (isJsxLikeInitializer(readObject(node.left)) || isJsxLikeInitializer(readObject(node.right)));
84
+ }
85
+ if (node.type === "ArrayExpression" || node.type === "ObjectExpression") {
86
+ return false;
87
+ }
88
+ return containsOxcJsxSyntax(node);
89
+ }
90
+ function isBindingReassigned(statements, name) {
91
+ for (const statement of statements) {
92
+ if (containsAssignmentTo(readObject(statement), name))
93
+ return true;
94
+ }
95
+ return false;
96
+ }
97
+ function containsAssignmentTo(node, name) {
98
+ if (node.type === "AssignmentExpression") {
99
+ const left = readObject(node.left);
100
+ if (left.type === "Identifier" && left.name === name)
101
+ return true;
102
+ }
103
+ if (node.type === "UpdateExpression") {
104
+ const argument = readObject(node.argument);
105
+ if (argument.type === "Identifier" && argument.name === name)
106
+ return true;
107
+ }
108
+ for (const value of Object.values(node)) {
109
+ if (Array.isArray(value)) {
110
+ for (const item of value) {
111
+ if (typeof item === "object" &&
112
+ item !== null &&
113
+ containsAssignmentTo(readObject(item), name)) {
114
+ return true;
115
+ }
116
+ }
117
+ }
118
+ else if (typeof value === "object" && value !== null) {
119
+ if (containsAssignmentTo(readObject(value), name))
120
+ return true;
121
+ }
122
+ }
123
+ return false;
124
+ }
125
+ function collectOxcPushJsxBindingNames(statements, names) {
126
+ for (const statement of statements) {
127
+ const object = readObject(statement);
128
+ if (object.type === "ForOfStatement" || object.type === "ForStatement") {
129
+ collectOxcPushJsxBindingNames(readArray(readObject(object.body).body), names);
130
+ continue;
131
+ }
132
+ const expression = readObject(object.expression);
133
+ if (object.type !== "ExpressionStatement" || expression.type !== "CallExpression") {
134
+ continue;
135
+ }
136
+ const callee = readObject(expression.callee);
137
+ const argument = unwrapOxcParentheses(readObject(readArray(expression.arguments)[0]));
138
+ if (callee.type !== "MemberExpression" ||
139
+ readObject(callee.property).name !== "push" ||
140
+ !containsOxcJsxSyntax(argument)) {
141
+ continue;
142
+ }
143
+ const target = readObject(callee.object);
144
+ if (typeof target.name === "string") {
145
+ names.add(target.name);
146
+ }
147
+ }
148
+ }
149
+ //# sourceMappingURL=oxc-render-values.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oxc-render-values.js","sourceRoot":"","sources":["../src/oxc-render-values.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { JsxNodeIr } from "./ir.js";
2
+ export declare function emitOxcServerStringChildren(children: readonly JsxNodeIr[]): string;
3
+ export declare function emitOxcCompatObjectChildren(children: readonly JsxNodeIr[]): string;
4
+ //# sourceMappingURL=oxc-runtime-emit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oxc-runtime-emit.d.ts","sourceRoot":"","sources":["../src/oxc-runtime-emit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgC,SAAS,EAAE,MAAM,SAAS,CAAC;AAGvE,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,SAAS,SAAS,EAAE,GAAG,MAAM,CAMlF;AAyHD,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,SAAS,SAAS,EAAE,GAAG,MAAM,CAUlF"}
@@ -0,0 +1,143 @@
1
+ import { escapeHtmlAttribute } from "@reckona/mreact-shared/html-escape";
2
+ export function emitOxcServerStringChildren(children) {
3
+ if (children.length === 0) {
4
+ return '""';
5
+ }
6
+ return children.map(emitOxcServerStringNode).join(" + ");
7
+ }
8
+ function emitOxcServerStringNode(node) {
9
+ if (node.kind === "text") {
10
+ return JSON.stringify(node.value);
11
+ }
12
+ if (node.kind === "expr") {
13
+ return `_escapeHtml(${node.code})`;
14
+ }
15
+ if (node.kind === "conditional") {
16
+ return `((${node.conditionCode}) ? ${emitOxcServerStringChildren(node.whenTrue)} : ${emitOxcServerStringChildren(node.whenFalse)})`;
17
+ }
18
+ if (node.kind === "list") {
19
+ const parameters = node.indexName === undefined ? node.itemName : `${node.itemName}, ${node.indexName}`;
20
+ return `(${node.itemsCode}).map((${parameters}) => ${emitOxcServerStringChildren(node.children)}).join("")`;
21
+ }
22
+ if (node.kind === "fragment") {
23
+ return emitOxcServerStringChildren(node.children);
24
+ }
25
+ if (node.kind === "component") {
26
+ const props = emitOxcServerComponentProps(node.props, node.children);
27
+ return `${node.name}(${props})`;
28
+ }
29
+ if (node.kind === "async-boundary") {
30
+ return '""';
31
+ }
32
+ const attrs = node.attributes.map(emitOxcServerAttribute).join(" + ");
33
+ const open = attrs === ""
34
+ ? JSON.stringify(`<${node.tagName}>`)
35
+ : `${JSON.stringify(`<${node.tagName}`)} + ${attrs} + ">"`;
36
+ return `${open} + ${emitOxcServerStringChildren(node.children)} + ${JSON.stringify(`</${node.tagName}>`)}`;
37
+ }
38
+ function emitOxcServerComponentProps(props, children) {
39
+ const entries = props.map((prop) => {
40
+ if (prop.kind === "spread-prop") {
41
+ return `...(${prop.code})`;
42
+ }
43
+ if (prop.kind === "render-prop") {
44
+ return `${emitOxcCompatObjectPropName(prop.name)}: ${emitOxcServerStringChildren(prop.children)}`;
45
+ }
46
+ return `${emitOxcCompatObjectPropName(prop.name)}: (${prop.code})`;
47
+ });
48
+ if (children.length > 0) {
49
+ entries.push(`children: ${emitOxcServerStringChildren(children)}`);
50
+ }
51
+ return `{ ${entries.join(", ")} }`;
52
+ }
53
+ function emitOxcServerAttribute(attr) {
54
+ if (attr.kind === "static-attr") {
55
+ return JSON.stringify(` ${attr.name}="${escapeHtmlAttribute(attr.value)}"`);
56
+ }
57
+ if (attr.kind === "dynamic-attr") {
58
+ return `${JSON.stringify(` ${attr.name}="`)} + _escapeHtml(${attr.code}) + ${JSON.stringify('"')}`;
59
+ }
60
+ return '""';
61
+ }
62
+ function emitOxcCompatObjectNode(node) {
63
+ if (node.kind === "text") {
64
+ return JSON.stringify(node.value);
65
+ }
66
+ if (node.kind === "expr") {
67
+ return `(${node.code})`;
68
+ }
69
+ if (node.kind === "conditional") {
70
+ return `(${node.conditionCode}) ? ${emitOxcCompatObjectChildren(node.whenTrue)} : ${emitOxcCompatObjectChildren(node.whenFalse)}`;
71
+ }
72
+ if (node.kind === "list") {
73
+ const parameters = node.indexName === undefined ? node.itemName : `${node.itemName}, ${node.indexName}`;
74
+ return `(${node.itemsCode}).map((${parameters}) => ${emitOxcCompatObjectChildren(node.children)})`;
75
+ }
76
+ if (node.kind === "fragment") {
77
+ return emitOxcCompatObjectElement('Symbol.for("modular.react.fragment")', [], node.children);
78
+ }
79
+ if (node.kind === "component") {
80
+ return emitOxcCompatObjectElement(node.name, node.props.map(emitOxcCompatObjectComponentProp), node.children, node.keyCode);
81
+ }
82
+ if (node.kind === "async-boundary") {
83
+ return "null";
84
+ }
85
+ return emitOxcCompatObjectElement(JSON.stringify(node.tagName), node.attributes.map(emitOxcCompatObjectAttribute), node.children, node.keyCode);
86
+ }
87
+ export function emitOxcCompatObjectChildren(children) {
88
+ if (children.length === 0) {
89
+ return "null";
90
+ }
91
+ if (children.length === 1) {
92
+ return emitOxcCompatObjectNode(children[0]);
93
+ }
94
+ return `[${children.map(emitOxcCompatObjectNode).join(", ")}]`;
95
+ }
96
+ function emitOxcCompatObjectElement(typeCode, propEntries, children, explicitKeyCode) {
97
+ const entries = [...propEntries];
98
+ if (children.length > 0) {
99
+ entries.push(`children: ${emitOxcCompatObjectChildren(children)}`);
100
+ }
101
+ const keyExpression = explicitKeyCode === undefined
102
+ ? "_props.key === undefined ? null : String(_props.key)"
103
+ : `String(${explicitKeyCode})`;
104
+ return [
105
+ "(() => {",
106
+ ` const _props = { ${entries.join(", ")} };`,
107
+ ` const _key = ${keyExpression};`,
108
+ " const _ref = _props.ref ?? null;",
109
+ " delete _props.key;",
110
+ " delete _props.ref;",
111
+ ' return { $$typeof: Symbol.for("modular.react.element"),',
112
+ ` type: ${typeCode},`,
113
+ " key: _key,",
114
+ " ref: _ref,",
115
+ " props: _props };",
116
+ "})()",
117
+ ].join("\n");
118
+ }
119
+ function emitOxcCompatObjectAttribute(attr) {
120
+ if (attr.kind === "spread-attr") {
121
+ return `...(${attr.code})`;
122
+ }
123
+ if (attr.kind === "static-attr") {
124
+ return `${emitOxcCompatObjectPropName(attr.name)}: ${JSON.stringify(attr.value)}`;
125
+ }
126
+ if (attr.kind === "dynamic-attr") {
127
+ return `${emitOxcCompatObjectPropName(attr.name)}: (${attr.code})`;
128
+ }
129
+ return `${emitOxcCompatObjectPropName(attr.name)}: ${attr.code}`;
130
+ }
131
+ function emitOxcCompatObjectComponentProp(prop) {
132
+ if (prop.kind === "spread-prop") {
133
+ return `...(${prop.code})`;
134
+ }
135
+ if (prop.kind === "render-prop") {
136
+ return `${emitOxcCompatObjectPropName(prop.name)}: ${emitOxcCompatObjectChildren(prop.children)}`;
137
+ }
138
+ return `${emitOxcCompatObjectPropName(prop.name)}: (${prop.code})`;
139
+ }
140
+ function emitOxcCompatObjectPropName(name) {
141
+ return /^[A-Za-z_$][\w$]*$/.test(name) ? name : JSON.stringify(name);
142
+ }
143
+ //# sourceMappingURL=oxc-runtime-emit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oxc-runtime-emit.js","sourceRoot":"","sources":["../src/oxc-runtime-emit.ts"],"names":[],"mappings":"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"}