@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.
- package/LICENSE +21 -0
- package/README.md +30 -0
- package/dist/diagnostics.d.ts +12 -0
- package/dist/diagnostics.d.ts.map +1 -0
- package/dist/diagnostics.js +82 -0
- package/dist/diagnostics.js.map +1 -0
- package/dist/emit-client.d.ts +8 -0
- package/dist/emit-client.d.ts.map +1 -0
- package/dist/emit-client.js +401 -0
- package/dist/emit-client.js.map +1 -0
- package/dist/emit-compat.d.ts +11 -0
- package/dist/emit-compat.d.ts.map +1 -0
- package/dist/emit-compat.js +340 -0
- package/dist/emit-compat.js.map +1 -0
- package/dist/emit-escape-helper.d.ts +2 -0
- package/dist/emit-escape-helper.d.ts.map +1 -0
- package/dist/emit-escape-helper.js +45 -0
- package/dist/emit-escape-helper.js.map +1 -0
- package/dist/emit-server-stream.d.ts +18 -0
- package/dist/emit-server-stream.d.ts.map +1 -0
- package/dist/emit-server-stream.js +1415 -0
- package/dist/emit-server-stream.js.map +1 -0
- package/dist/emit-server.d.ts +13 -0
- package/dist/emit-server.d.ts.map +1 -0
- package/dist/emit-server.js +1103 -0
- package/dist/emit-server.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/internal.d.ts +30 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +229 -0
- package/dist/internal.js.map +1 -0
- package/dist/ir.d.ts +115 -0
- package/dist/ir.d.ts.map +1 -0
- package/dist/ir.js +2 -0
- package/dist/ir.js.map +1 -0
- package/dist/oxc-analysis-types.d.ts +2 -0
- package/dist/oxc-analysis-types.d.ts.map +1 -0
- package/dist/oxc-analysis-types.js +2 -0
- package/dist/oxc-analysis-types.js.map +1 -0
- package/dist/oxc-await-analysis.d.ts +5 -0
- package/dist/oxc-await-analysis.d.ts.map +1 -0
- package/dist/oxc-await-analysis.js +109 -0
- package/dist/oxc-await-analysis.js.map +1 -0
- package/dist/oxc-await-ids.d.ts +3 -0
- package/dist/oxc-await-ids.d.ts.map +1 -0
- package/dist/oxc-await-ids.js +50 -0
- package/dist/oxc-await-ids.js.map +1 -0
- package/dist/oxc-await-validation.d.ts +4 -0
- package/dist/oxc-await-validation.d.ts.map +1 -0
- package/dist/oxc-await-validation.js +47 -0
- package/dist/oxc-await-validation.js.map +1 -0
- package/dist/oxc-bindings.d.ts +5 -0
- package/dist/oxc-bindings.d.ts.map +1 -0
- package/dist/oxc-bindings.js +55 -0
- package/dist/oxc-bindings.js.map +1 -0
- package/dist/oxc-body-lowering.d.ts +12 -0
- package/dist/oxc-body-lowering.d.ts.map +1 -0
- package/dist/oxc-body-lowering.js +131 -0
- package/dist/oxc-body-lowering.js.map +1 -0
- package/dist/oxc-child-analysis.d.ts +17 -0
- package/dist/oxc-child-analysis.d.ts.map +1 -0
- package/dist/oxc-child-analysis.js +292 -0
- package/dist/oxc-child-analysis.js.map +1 -0
- package/dist/oxc-code-utils.d.ts +3 -0
- package/dist/oxc-code-utils.d.ts.map +1 -0
- package/dist/oxc-code-utils.js +16 -0
- package/dist/oxc-code-utils.js.map +1 -0
- package/dist/oxc-component-detection.d.ts +22 -0
- package/dist/oxc-component-detection.d.ts.map +1 -0
- package/dist/oxc-component-detection.js +188 -0
- package/dist/oxc-component-detection.js.map +1 -0
- package/dist/oxc-component-props.d.ts +14 -0
- package/dist/oxc-component-props.d.ts.map +1 -0
- package/dist/oxc-component-props.js +92 -0
- package/dist/oxc-component-props.js.map +1 -0
- package/dist/oxc-component-references.d.ts +5 -0
- package/dist/oxc-component-references.d.ts.map +1 -0
- package/dist/oxc-component-references.js +118 -0
- package/dist/oxc-component-references.js.map +1 -0
- package/dist/oxc-dom-lowering.d.ts +2 -0
- package/dist/oxc-dom-lowering.d.ts.map +1 -0
- package/dist/oxc-dom-lowering.js +99 -0
- package/dist/oxc-dom-lowering.js.map +1 -0
- package/dist/oxc-expression-utils.d.ts +5 -0
- package/dist/oxc-expression-utils.d.ts.map +1 -0
- package/dist/oxc-expression-utils.js +31 -0
- package/dist/oxc-expression-utils.js.map +1 -0
- package/dist/oxc-jsx-attributes.d.ts +6 -0
- package/dist/oxc-jsx-attributes.d.ts.map +1 -0
- package/dist/oxc-jsx-attributes.js +88 -0
- package/dist/oxc-jsx-attributes.js.map +1 -0
- package/dist/oxc-jsx-text.d.ts +2 -0
- package/dist/oxc-jsx-text.d.ts.map +1 -0
- package/dist/oxc-jsx-text.js +50 -0
- package/dist/oxc-jsx-text.js.map +1 -0
- package/dist/oxc-nested-lowering.d.ts +8 -0
- package/dist/oxc-nested-lowering.d.ts.map +1 -0
- package/dist/oxc-nested-lowering.js +182 -0
- package/dist/oxc-nested-lowering.js.map +1 -0
- package/dist/oxc-node-utils.d.ts +8 -0
- package/dist/oxc-node-utils.d.ts.map +1 -0
- package/dist/oxc-node-utils.js +41 -0
- package/dist/oxc-node-utils.js.map +1 -0
- package/dist/oxc-raw-jsx.d.ts +3 -0
- package/dist/oxc-raw-jsx.d.ts.map +1 -0
- package/dist/oxc-raw-jsx.js +28 -0
- package/dist/oxc-raw-jsx.js.map +1 -0
- package/dist/oxc-render-values.d.ts +6 -0
- package/dist/oxc-render-values.d.ts.map +1 -0
- package/dist/oxc-render-values.js +149 -0
- package/dist/oxc-render-values.js.map +1 -0
- package/dist/oxc-runtime-emit.d.ts +4 -0
- package/dist/oxc-runtime-emit.d.ts.map +1 -0
- package/dist/oxc-runtime-emit.js +143 -0
- package/dist/oxc-runtime-emit.js.map +1 -0
- package/dist/oxc-transform.d.ts +4 -0
- package/dist/oxc-transform.d.ts.map +1 -0
- package/dist/oxc-transform.js +65 -0
- package/dist/oxc-transform.js.map +1 -0
- package/dist/oxc.d.ts +15 -0
- package/dist/oxc.d.ts.map +1 -0
- package/dist/oxc.js +250 -0
- package/dist/oxc.js.map +1 -0
- package/dist/transform.d.ts +3 -0
- package/dist/transform.d.ts.map +1 -0
- package/dist/transform.js +429 -0
- package/dist/transform.js.map +1 -0
- package/dist/types.d.ts +96 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- 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":"AACA,OAAO,EAAwB,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EACL,yBAAyB,GAE1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC9F,OAAO,EACL,2BAA2B,EAC3B,2BAA2B,GAC5B,MAAM,uBAAuB,CAAC;AAG/B,MAAM,qBAAqB,GAAoB;IAC7C,sBAAsB,EAAE,yBAAyB;IACjD,2BAA2B,EAAE,8BAA8B;IAC3D,2BAA2B,EAAE,8BAA8B;CAC5D,CAAC;AAEF,MAAM,UAAU,8BAA8B,CAC5C,IAAY,EACZ,UAAmC,EACnC,cAA2B,EAC3B,MAAqB,EACrB,WAAyB;IAEzB,MAAM,QAAQ,GAAG,yBAAyB,CACxC,IAAI,EACJ,UAAU,EACV,mCAAmC,CAAC,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,CAAC,EACzF,eAAe,CAChB,CAAC;IAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,2BAA2B,CAAC,QAAQ,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,IAAY,EACZ,UAAmC,EACnC,cAA2B,EAC3B,MAAqB,EACrB,WAAyB;IAEzB,MAAM,SAAS,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAEnD,IAAI,SAAS,CAAC,IAAI,KAAK,YAAY,IAAI,SAAS,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACxE,OAAO,8BAA8B,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAC9F,CAAC;IAED,IAAI,SAAS,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACzC,OAAO,IAAI,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC;aACrC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YACf,MAAM,aAAa,GAAG,oBAAoB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;YAChE,OAAO,CACL,iCAAiC,CAC/B,IAAI,EACJ,aAAa,EACb,cAAc,EACd,MAAM,EACN,WAAW,CACZ,IAAI,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,CACrC,CAAC;QACJ,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACnB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,IAAY,EACZ,UAAmC,EACnC,cAA2B,EAC3B,MAAqB,EACrB,WAAyB,EACzB,gBAAyC;IAEzC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC5C,MAAM,eAAe,GAAG,OAAO,UAAU,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,MAAM,YAAY,GAAyD,EAAE,CAAC;IAE9E,0BAA0B,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE;QAC9C,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QACtE,MAAM,GAAG,GAAG,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QAEhE,IAAI,KAAK,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GACX,gBAAgB,KAAK,eAAe;YAClC,CAAC,CAAC,iCAAiC,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,CAAC;YACpF,CAAC,CAAC,gBAAgB,KAAK,eAAe;gBACpC,CAAC,CAAC,8BAA8B,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,CAAC;gBACjF,CAAC,CAAC,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QAEpE,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,OAAO,GAAG,MAAM,CAAC;IAErB,KAAK,MAAM,WAAW,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACvF,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,GAAG,eAAe,CAAC;QAClD,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,GAAG,eAAe,CAAC;QAC9C,OAAO,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;IAClF,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,0BAA0B,CACjC,IAA6B,EAC7B,KAA8C;IAE9C,MAAM,SAAS,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAE7C,IAAI,SAAS,CAAC,IAAI,KAAK,YAAY,IAAI,SAAS,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACxE,KAAK,CAAC,SAAS,CAAC,CAAC;QACjB,OAAO;IACT,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;gBAChC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACnC,0BAA0B,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;YACjC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnC,0BAA0B,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,IAAY,EACZ,UAAmC,EACnC,cAA2B;IAE3B,MAAM,SAAS,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAEnD,IAAI,SAAS,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC;aAC3C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,0BAA0B,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,CAAC;aACnF,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;QAE3D,OAAO;YACL,UAAU;YACV,wDAAwD;YACxD,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,sBAAsB,KAAK,IAAI,CAAC;YAC3D,qBAAqB;YACrB,MAAM;SACP,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAED,IAAI,SAAS,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACpC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,cAAc,GAAG,UAAU,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,iBAAiB,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;IAEnE,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,yBAAyB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACjC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,GAAG,OAAO,IAAI,8BAA8B,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,CAAC,GAAG,CAAC;AAC1F,CAAC;AAED,SAAS,8BAA8B,CACrC,IAAY,EACZ,IAA6B,EAC7B,cAA2B;IAE3B,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,SAAS,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAY,EAAE;QACnF,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;QAErC,IAAI,MAAM,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;YACzC,OAAO,CAAC,OAAO,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACnC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEvC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;YAC5C,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAChD,OAAO;gBACL,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KACrB,2BAA2B,CAAC,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,CAAC;oBACvF,UAAU,CAAC,IAAI,EAAE,UAAU,CAC7B,EAAE;aACH,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;SACtC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,0BAA0B,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,CAAC;SACnF,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAE3D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,eAAe,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7C,CAAC;SAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,gBAAgB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACnE,CAAC;AAED,SAAS,0BAA0B,CACjC,IAAY,EACZ,KAA8B,EAC9B,cAA2B;IAE3B,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7F,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAChD,OAAO,CACL,2BAA2B,CAAC,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,CAAC;YACvF,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAC7B,CAAC;IACJ,CAAC;IAED,OAAO,+BAA+B,CAAC,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,IAAY,EACZ,UAAmC,EACnC,cAA2B,EAC3B,MAAqB,EACrB,WAAyB;IAEzB,MAAM,QAAQ,GAAG,yBAAyB,CACxC,IAAI,EACJ,UAAU,EACV,mCAAmC,CAAC,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,CAAC,EACzF,eAAe,CAChB,CAAC;IAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,2BAA2B,CAAC,QAAQ,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,mCAAmC,CAC1C,cAA2B,EAC3B,MAAqB,EACrB,WAAyB,EACzB,gBAAyC;IAEzC,OAAO;QACL,cAAc;QACd,MAAM;QACN,WAAW;QACX,gBAAgB;QAChB,YAAY,EAAE,qBAAqB;QACnC,wBAAwB,EAAE,2BAA2B;KACtD,CAAC;AACJ,CAAC"}
|
|
@@ -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 @@
|
|
|
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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"}
|