@astralsight/astroforge-rsbuild-plugin 0.0.10 → 0.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.mjs +81 -10
- package/package.json +2 -2
package/dist/index.mjs
CHANGED
|
@@ -868,6 +868,56 @@ function lowerVariableDeclaration(context, statement) {
|
|
|
868
868
|
});
|
|
869
869
|
return `${statement.kind} ${declarations.join(", ")};`;
|
|
870
870
|
}
|
|
871
|
+
function expressionPrecedence(expression) {
|
|
872
|
+
const node = unwrapExpression(expression);
|
|
873
|
+
switch (node.type) {
|
|
874
|
+
case "Identifier":
|
|
875
|
+
case "StringLiteral":
|
|
876
|
+
case "NumericLiteral":
|
|
877
|
+
case "BooleanLiteral":
|
|
878
|
+
case "NullLiteral":
|
|
879
|
+
case "TemplateLiteral":
|
|
880
|
+
case "ArrayExpression":
|
|
881
|
+
case "ObjectExpression": return 20;
|
|
882
|
+
case "MemberExpression":
|
|
883
|
+
case "OptionalMemberExpression": return 19;
|
|
884
|
+
case "CallExpression":
|
|
885
|
+
case "OptionalCallExpression": return 18;
|
|
886
|
+
case "UpdateExpression": return 17;
|
|
887
|
+
case "UnaryExpression": return 16;
|
|
888
|
+
case "BinaryExpression": return binaryOperatorPrecedence(node.operator);
|
|
889
|
+
case "LogicalExpression": return logicalOperatorPrecedence(node.operator);
|
|
890
|
+
case "ConditionalExpression": return 4;
|
|
891
|
+
case "AssignmentExpression": return 3;
|
|
892
|
+
default: return 20;
|
|
893
|
+
}
|
|
894
|
+
}
|
|
895
|
+
function binaryOperatorPrecedence(operator) {
|
|
896
|
+
if (operator === "*" || operator === "/" || operator === "%") return 14;
|
|
897
|
+
if (operator === "+" || operator === "-") return 13;
|
|
898
|
+
if (operator === "<<" || operator === ">>" || operator === ">>>") return 12;
|
|
899
|
+
if (operator === "<" || operator === "<=" || operator === ">" || operator === ">=" || operator === "in" || operator === "instanceof") return 11;
|
|
900
|
+
if (operator === "==" || operator === "!=" || operator === "===" || operator === "!==") return 10;
|
|
901
|
+
if (operator === "&") return 9;
|
|
902
|
+
if (operator === "^") return 8;
|
|
903
|
+
if (operator === "|") return 7;
|
|
904
|
+
return 13;
|
|
905
|
+
}
|
|
906
|
+
function logicalOperatorPrecedence(operator) {
|
|
907
|
+
if (operator === "&&") return 6;
|
|
908
|
+
if (operator === "||" || operator === "??") return 5;
|
|
909
|
+
return 5;
|
|
910
|
+
}
|
|
911
|
+
function needsExpressionParens(expression, parentPrecedence, side) {
|
|
912
|
+
const precedence = expressionPrecedence(expression);
|
|
913
|
+
if (precedence < parentPrecedence) return true;
|
|
914
|
+
if (precedence > parentPrecedence) return false;
|
|
915
|
+
return side === "right";
|
|
916
|
+
}
|
|
917
|
+
function lowerExpressionOperand(context, expression, aliases, parentPrecedence, side) {
|
|
918
|
+
const code = lowerExpression(context, expression, aliases);
|
|
919
|
+
return needsExpressionParens(expression, parentPrecedence, side) ? `(${code})` : code;
|
|
920
|
+
}
|
|
871
921
|
function lowerExpression(context, expression, aliases = /* @__PURE__ */ new Map()) {
|
|
872
922
|
const node = unwrapExpression(expression);
|
|
873
923
|
switch (node.type) {
|
|
@@ -882,9 +932,12 @@ function lowerExpression(context, expression, aliases = /* @__PURE__ */ new Map(
|
|
|
882
932
|
case "BooleanLiteral": return String(node.value);
|
|
883
933
|
case "NullLiteral": return "null";
|
|
884
934
|
case "BinaryExpression":
|
|
885
|
-
case "LogicalExpression":
|
|
886
|
-
|
|
887
|
-
|
|
935
|
+
case "LogicalExpression": {
|
|
936
|
+
const precedence = expressionPrecedence(node);
|
|
937
|
+
return `${lowerExpressionOperand(context, node.left, aliases, precedence, "left")} ${node.operator} ${lowerExpressionOperand(context, node.right, aliases, precedence, "right")}`;
|
|
938
|
+
}
|
|
939
|
+
case "UnaryExpression": return `${node.operator}${lowerExpressionOperand(context, node.argument, aliases, expressionPrecedence(node), "operand")}`;
|
|
940
|
+
case "AssignmentExpression": return `${lowerExpressionOperand(context, node.left, aliases, expressionPrecedence(node), "left")} ${node.operator} ${lowerExpressionOperand(context, node.right, aliases, expressionPrecedence(node), "right")}`;
|
|
888
941
|
case "UpdateExpression": {
|
|
889
942
|
const argument = lowerExpression(context, node.argument, aliases);
|
|
890
943
|
return node.prefix ? `${node.operator}${argument}` : `${argument}${node.operator}`;
|
|
@@ -903,7 +956,7 @@ function lowerExpression(context, expression, aliases = /* @__PURE__ */ new Map(
|
|
|
903
956
|
}
|
|
904
957
|
}
|
|
905
958
|
function lowerMemberExpression(context, node, aliases) {
|
|
906
|
-
const object =
|
|
959
|
+
const object = lowerExpressionOperand(context, node.object, aliases, expressionPrecedence(node), "operand");
|
|
907
960
|
if (node.computed) return `${object}[${lowerExpression(context, node.property, aliases)}]`;
|
|
908
961
|
return `${object}.${sourceForNode(context.source, node.property)}`;
|
|
909
962
|
}
|
|
@@ -965,6 +1018,10 @@ function lowerTemplateStatementAsBlock(context, statement) {
|
|
|
965
1018
|
if (statement.type === "BlockStatement") return lowerTemplateStatement(context, statement);
|
|
966
1019
|
return `{\n ${lowerTemplateStatement(context, statement)}\n}`;
|
|
967
1020
|
}
|
|
1021
|
+
function lowerTemplateExpressionOperand(context, expression, parentPrecedence, side) {
|
|
1022
|
+
const code = lowerTemplateExpression(context, expression);
|
|
1023
|
+
return needsExpressionParens(expression, parentPrecedence, side) ? `(${code})` : code;
|
|
1024
|
+
}
|
|
968
1025
|
function lowerTemplateExpression(context, expression) {
|
|
969
1026
|
const node = unwrapExpression(expression);
|
|
970
1027
|
switch (node.type) {
|
|
@@ -976,9 +1033,12 @@ function lowerTemplateExpression(context, expression) {
|
|
|
976
1033
|
case "TemplateLiteral": return lowerTemplateLiteral(context, node);
|
|
977
1034
|
case "ConditionalExpression": return `${lowerTemplateExpression(context, node.test)} ? ${lowerTemplateExpression(context, node.consequent)} : ${lowerTemplateExpression(context, node.alternate)}`;
|
|
978
1035
|
case "BinaryExpression":
|
|
979
|
-
case "LogicalExpression":
|
|
980
|
-
|
|
981
|
-
|
|
1036
|
+
case "LogicalExpression": {
|
|
1037
|
+
const precedence = expressionPrecedence(node);
|
|
1038
|
+
return `${lowerTemplateExpressionOperand(context, node.left, precedence, "left")} ${node.operator} ${lowerTemplateExpressionOperand(context, node.right, precedence, "right")}`;
|
|
1039
|
+
}
|
|
1040
|
+
case "UnaryExpression": return `${node.operator}${lowerTemplateExpressionOperand(context, node.argument, expressionPrecedence(node), "operand")}`;
|
|
1041
|
+
case "AssignmentExpression": return `${lowerTemplateExpressionOperand(context, node.left, expressionPrecedence(node), "left")} ${node.operator} ${lowerTemplateExpressionOperand(context, node.right, expressionPrecedence(node), "right")}`;
|
|
982
1042
|
case "UpdateExpression": {
|
|
983
1043
|
const argument = lowerTemplateExpression(context, node.argument);
|
|
984
1044
|
return node.prefix ? `${node.operator}${argument}` : `${argument}${node.operator}`;
|
|
@@ -1004,7 +1064,7 @@ function lowerTemplateMemberExpression(context, node) {
|
|
|
1004
1064
|
const object = unwrapExpression(node.object);
|
|
1005
1065
|
let base;
|
|
1006
1066
|
if (object.type === "Identifier" && object.name === "props") base = "_vm_";
|
|
1007
|
-
else base =
|
|
1067
|
+
else base = lowerTemplateExpressionOperand(context, object, expressionPrecedence(node), "operand");
|
|
1008
1068
|
const operator = node.optional ? "?." : ".";
|
|
1009
1069
|
if (node.computed) return `${base}${node.optional ? "?." : ""}[${lowerTemplateExpression(context, node.property)}]`;
|
|
1010
1070
|
const property = sourceForNode(context.source, node.property);
|
|
@@ -1014,7 +1074,7 @@ function lowerTemplateCallExpression(context, node) {
|
|
|
1014
1074
|
const setterTarget = node.callee.type === "Identifier" ? context.scriptContext.stateSetters.get(node.callee.name) : void 0;
|
|
1015
1075
|
if (setterTarget) return lowerTemplateStateSetterCall(context, setterTarget, node);
|
|
1016
1076
|
const optional = node.optional ? "?." : "";
|
|
1017
|
-
return `${
|
|
1077
|
+
return `${lowerTemplateExpressionOperand(context, node.callee, expressionPrecedence(node), "operand")}${optional}(${node.arguments.map((arg) => {
|
|
1018
1078
|
if (arg.type === "SpreadElement") return `...${lowerTemplateExpression(context, arg.argument)}`;
|
|
1019
1079
|
return lowerTemplateExpression(context, arg);
|
|
1020
1080
|
}).join(", ")})`;
|
|
@@ -1063,18 +1123,28 @@ const TEMPLATE_GLOBALS = new Set([
|
|
|
1063
1123
|
"Object",
|
|
1064
1124
|
"Promise",
|
|
1065
1125
|
"String",
|
|
1126
|
+
"app",
|
|
1127
|
+
"audio",
|
|
1128
|
+
"cipher",
|
|
1066
1129
|
"console",
|
|
1130
|
+
"device",
|
|
1067
1131
|
"false",
|
|
1132
|
+
"file",
|
|
1133
|
+
"geolocation",
|
|
1068
1134
|
"isFinite",
|
|
1069
1135
|
"isNaN",
|
|
1070
1136
|
"null",
|
|
1071
1137
|
"parseFloat",
|
|
1072
1138
|
"parseInt",
|
|
1139
|
+
"prompt",
|
|
1073
1140
|
"network",
|
|
1141
|
+
"record",
|
|
1074
1142
|
"router",
|
|
1143
|
+
"sensor",
|
|
1075
1144
|
"storage",
|
|
1076
1145
|
"true",
|
|
1077
1146
|
"undefined",
|
|
1147
|
+
"vibrator",
|
|
1078
1148
|
"velaBattery",
|
|
1079
1149
|
"velaBluetoothBLE",
|
|
1080
1150
|
"velaBrightness",
|
|
@@ -1092,7 +1162,8 @@ const TEMPLATE_GLOBALS = new Set([
|
|
|
1092
1162
|
"velaProtobuf",
|
|
1093
1163
|
"velaServiceClient",
|
|
1094
1164
|
"velaVolume",
|
|
1095
|
-
"velaZlib"
|
|
1165
|
+
"velaZlib",
|
|
1166
|
+
"zip"
|
|
1096
1167
|
]);
|
|
1097
1168
|
function findTopLevelBinding(body, name) {
|
|
1098
1169
|
for (const statement of body) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@astralsight/astroforge-rsbuild-plugin",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.11",
|
|
4
4
|
"description": "AstroForge Plugin for RsBuild",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@babel/parser": "^7.29.3",
|
|
41
|
-
"@astralsight/astroforge-core": "^0.0.
|
|
41
|
+
"@astralsight/astroforge-core": "^0.0.11"
|
|
42
42
|
},
|
|
43
43
|
"scripts": {
|
|
44
44
|
"build": "tsdown"
|