@astralsight/astroforge-rsbuild-plugin 0.0.9 → 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 +99 -12
- package/package.json +2 -2
package/dist/index.mjs
CHANGED
|
@@ -7,10 +7,25 @@ import { parse } from "@babel/parser";
|
|
|
7
7
|
function collectAssets(root, document) {
|
|
8
8
|
const assets = /* @__PURE__ */ new Map();
|
|
9
9
|
addAsset(root, document.manifest.icon, assets);
|
|
10
|
+
collectCommonAssets(root, assets);
|
|
10
11
|
for (const page of Object.values(document.pages)) collectPageAssets(root, page, assets);
|
|
11
12
|
for (const component of Object.values(document.components)) collectComponentAssets(root, component, assets);
|
|
12
13
|
return [...assets.values()];
|
|
13
14
|
}
|
|
15
|
+
function collectCommonAssets(root, assets) {
|
|
16
|
+
const commonRoot = resolve(root, "src", "common");
|
|
17
|
+
if (!existsSync(commonRoot)) return;
|
|
18
|
+
for (const file of walkFiles$1(commonRoot)) addAsset(root, `/${relative(resolve(root, "src"), file).split(sep).join("/")}`, assets);
|
|
19
|
+
}
|
|
20
|
+
function walkFiles$1(dir) {
|
|
21
|
+
const out = [];
|
|
22
|
+
for (const entry of readdirSync(dir, { withFileTypes: true })) {
|
|
23
|
+
const next = join(dir, entry.name);
|
|
24
|
+
if (entry.isDirectory()) out.push(...walkFiles$1(next));
|
|
25
|
+
else if (entry.isFile()) out.push(next);
|
|
26
|
+
}
|
|
27
|
+
return out;
|
|
28
|
+
}
|
|
14
29
|
function collectPageAssets(root, page, assets) {
|
|
15
30
|
collectNodeAssets(root, page.template, assets);
|
|
16
31
|
collectStyleAssets(root, page.style, assets);
|
|
@@ -853,6 +868,56 @@ function lowerVariableDeclaration(context, statement) {
|
|
|
853
868
|
});
|
|
854
869
|
return `${statement.kind} ${declarations.join(", ")};`;
|
|
855
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
|
+
}
|
|
856
921
|
function lowerExpression(context, expression, aliases = /* @__PURE__ */ new Map()) {
|
|
857
922
|
const node = unwrapExpression(expression);
|
|
858
923
|
switch (node.type) {
|
|
@@ -867,9 +932,12 @@ function lowerExpression(context, expression, aliases = /* @__PURE__ */ new Map(
|
|
|
867
932
|
case "BooleanLiteral": return String(node.value);
|
|
868
933
|
case "NullLiteral": return "null";
|
|
869
934
|
case "BinaryExpression":
|
|
870
|
-
case "LogicalExpression":
|
|
871
|
-
|
|
872
|
-
|
|
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")}`;
|
|
873
941
|
case "UpdateExpression": {
|
|
874
942
|
const argument = lowerExpression(context, node.argument, aliases);
|
|
875
943
|
return node.prefix ? `${node.operator}${argument}` : `${argument}${node.operator}`;
|
|
@@ -888,7 +956,7 @@ function lowerExpression(context, expression, aliases = /* @__PURE__ */ new Map(
|
|
|
888
956
|
}
|
|
889
957
|
}
|
|
890
958
|
function lowerMemberExpression(context, node, aliases) {
|
|
891
|
-
const object =
|
|
959
|
+
const object = lowerExpressionOperand(context, node.object, aliases, expressionPrecedence(node), "operand");
|
|
892
960
|
if (node.computed) return `${object}[${lowerExpression(context, node.property, aliases)}]`;
|
|
893
961
|
return `${object}.${sourceForNode(context.source, node.property)}`;
|
|
894
962
|
}
|
|
@@ -950,6 +1018,10 @@ function lowerTemplateStatementAsBlock(context, statement) {
|
|
|
950
1018
|
if (statement.type === "BlockStatement") return lowerTemplateStatement(context, statement);
|
|
951
1019
|
return `{\n ${lowerTemplateStatement(context, statement)}\n}`;
|
|
952
1020
|
}
|
|
1021
|
+
function lowerTemplateExpressionOperand(context, expression, parentPrecedence, side) {
|
|
1022
|
+
const code = lowerTemplateExpression(context, expression);
|
|
1023
|
+
return needsExpressionParens(expression, parentPrecedence, side) ? `(${code})` : code;
|
|
1024
|
+
}
|
|
953
1025
|
function lowerTemplateExpression(context, expression) {
|
|
954
1026
|
const node = unwrapExpression(expression);
|
|
955
1027
|
switch (node.type) {
|
|
@@ -961,9 +1033,12 @@ function lowerTemplateExpression(context, expression) {
|
|
|
961
1033
|
case "TemplateLiteral": return lowerTemplateLiteral(context, node);
|
|
962
1034
|
case "ConditionalExpression": return `${lowerTemplateExpression(context, node.test)} ? ${lowerTemplateExpression(context, node.consequent)} : ${lowerTemplateExpression(context, node.alternate)}`;
|
|
963
1035
|
case "BinaryExpression":
|
|
964
|
-
case "LogicalExpression":
|
|
965
|
-
|
|
966
|
-
|
|
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")}`;
|
|
967
1042
|
case "UpdateExpression": {
|
|
968
1043
|
const argument = lowerTemplateExpression(context, node.argument);
|
|
969
1044
|
return node.prefix ? `${node.operator}${argument}` : `${argument}${node.operator}`;
|
|
@@ -989,7 +1064,7 @@ function lowerTemplateMemberExpression(context, node) {
|
|
|
989
1064
|
const object = unwrapExpression(node.object);
|
|
990
1065
|
let base;
|
|
991
1066
|
if (object.type === "Identifier" && object.name === "props") base = "_vm_";
|
|
992
|
-
else base =
|
|
1067
|
+
else base = lowerTemplateExpressionOperand(context, object, expressionPrecedence(node), "operand");
|
|
993
1068
|
const operator = node.optional ? "?." : ".";
|
|
994
1069
|
if (node.computed) return `${base}${node.optional ? "?." : ""}[${lowerTemplateExpression(context, node.property)}]`;
|
|
995
1070
|
const property = sourceForNode(context.source, node.property);
|
|
@@ -999,7 +1074,7 @@ function lowerTemplateCallExpression(context, node) {
|
|
|
999
1074
|
const setterTarget = node.callee.type === "Identifier" ? context.scriptContext.stateSetters.get(node.callee.name) : void 0;
|
|
1000
1075
|
if (setterTarget) return lowerTemplateStateSetterCall(context, setterTarget, node);
|
|
1001
1076
|
const optional = node.optional ? "?." : "";
|
|
1002
|
-
return `${
|
|
1077
|
+
return `${lowerTemplateExpressionOperand(context, node.callee, expressionPrecedence(node), "operand")}${optional}(${node.arguments.map((arg) => {
|
|
1003
1078
|
if (arg.type === "SpreadElement") return `...${lowerTemplateExpression(context, arg.argument)}`;
|
|
1004
1079
|
return lowerTemplateExpression(context, arg);
|
|
1005
1080
|
}).join(", ")})`;
|
|
@@ -1048,18 +1123,28 @@ const TEMPLATE_GLOBALS = new Set([
|
|
|
1048
1123
|
"Object",
|
|
1049
1124
|
"Promise",
|
|
1050
1125
|
"String",
|
|
1126
|
+
"app",
|
|
1127
|
+
"audio",
|
|
1128
|
+
"cipher",
|
|
1051
1129
|
"console",
|
|
1130
|
+
"device",
|
|
1052
1131
|
"false",
|
|
1132
|
+
"file",
|
|
1133
|
+
"geolocation",
|
|
1053
1134
|
"isFinite",
|
|
1054
1135
|
"isNaN",
|
|
1055
1136
|
"null",
|
|
1056
1137
|
"parseFloat",
|
|
1057
1138
|
"parseInt",
|
|
1139
|
+
"prompt",
|
|
1058
1140
|
"network",
|
|
1141
|
+
"record",
|
|
1059
1142
|
"router",
|
|
1143
|
+
"sensor",
|
|
1060
1144
|
"storage",
|
|
1061
1145
|
"true",
|
|
1062
1146
|
"undefined",
|
|
1147
|
+
"vibrator",
|
|
1063
1148
|
"velaBattery",
|
|
1064
1149
|
"velaBluetoothBLE",
|
|
1065
1150
|
"velaBrightness",
|
|
@@ -1077,7 +1162,8 @@ const TEMPLATE_GLOBALS = new Set([
|
|
|
1077
1162
|
"velaProtobuf",
|
|
1078
1163
|
"velaServiceClient",
|
|
1079
1164
|
"velaVolume",
|
|
1080
|
-
"velaZlib"
|
|
1165
|
+
"velaZlib",
|
|
1166
|
+
"zip"
|
|
1081
1167
|
]);
|
|
1082
1168
|
function findTopLevelBinding(body, name) {
|
|
1083
1169
|
for (const statement of body) {
|
|
@@ -1637,7 +1723,8 @@ function defaultIrOutFile(root, cacheDir) {
|
|
|
1637
1723
|
function createIrDocument(manifestInput, pages) {
|
|
1638
1724
|
const routerPages = {};
|
|
1639
1725
|
for (const page of pages) routerPages[page.route] = { component: page.component };
|
|
1640
|
-
const
|
|
1726
|
+
const entry = typeof manifestInput.router === "object" && manifestInput.router !== null && !Array.isArray(manifestInput.router) && typeof manifestInput.router.entry === "string" && routerPages[manifestInput.router.entry] ? manifestInput.router.entry : pages[0].route;
|
|
1727
|
+
const source = manifestSource(manifestInput, entry, routerPages);
|
|
1641
1728
|
return {
|
|
1642
1729
|
ir_version: 1,
|
|
1643
1730
|
manifest: {
|
|
@@ -1655,7 +1742,7 @@ function createIrDocument(manifestInput, pages) {
|
|
|
1655
1742
|
design_width: manifestInput.config?.designWidth
|
|
1656
1743
|
},
|
|
1657
1744
|
router: {
|
|
1658
|
-
entry
|
|
1745
|
+
entry,
|
|
1659
1746
|
pages: routerPages
|
|
1660
1747
|
},
|
|
1661
1748
|
source
|
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"
|