@wevu/compiler 6.6.12 → 6.6.14
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 +98 -17
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1441,13 +1441,13 @@ function createModuleAnalysis(id, ast) {
|
|
|
1441
1441
|
|
|
1442
1442
|
//#endregion
|
|
1443
1443
|
//#region src/plugins/wevu/pageFeatures/optionsObjects.ts
|
|
1444
|
-
function unwrapTypeLikeExpression$
|
|
1445
|
-
if (t.isTSAsExpression(node) || t.isTSSatisfiesExpression(node) || t.isTSNonNullExpression(node) || t.isTypeCastExpression(node)) return unwrapTypeLikeExpression$
|
|
1446
|
-
if (t.isParenthesizedExpression(node)) return unwrapTypeLikeExpression$
|
|
1444
|
+
function unwrapTypeLikeExpression$2(node) {
|
|
1445
|
+
if (t.isTSAsExpression(node) || t.isTSSatisfiesExpression(node) || t.isTSNonNullExpression(node) || t.isTypeCastExpression(node)) return unwrapTypeLikeExpression$2(node.expression);
|
|
1446
|
+
if (t.isParenthesizedExpression(node)) return unwrapTypeLikeExpression$2(node.expression);
|
|
1447
1447
|
return node;
|
|
1448
1448
|
}
|
|
1449
1449
|
function resolveOptionsObjectFromExpression(node) {
|
|
1450
|
-
const normalized = unwrapTypeLikeExpression$
|
|
1450
|
+
const normalized = unwrapTypeLikeExpression$2(node);
|
|
1451
1451
|
if (t.isObjectExpression(normalized)) return normalized;
|
|
1452
1452
|
if (t.isIdentifier(normalized)) return null;
|
|
1453
1453
|
if (t.isCallExpression(normalized)) {
|
|
@@ -1951,21 +1951,21 @@ function vueSfcTransformPlugin() {
|
|
|
1951
1951
|
function isDefineComponentCall(node, aliases) {
|
|
1952
1952
|
return t.isIdentifier(node.callee) && aliases.has(node.callee.name);
|
|
1953
1953
|
}
|
|
1954
|
-
function isObjectAssignCall(node) {
|
|
1954
|
+
function isObjectAssignCall$1(node) {
|
|
1955
1955
|
const callee = node.callee;
|
|
1956
1956
|
return t.isMemberExpression(callee) && t.isIdentifier(callee.object, { name: "Object" }) && t.isIdentifier(callee.property, { name: "assign" });
|
|
1957
1957
|
}
|
|
1958
|
-
function unwrapTypeLikeExpression(node) {
|
|
1959
|
-
if (t.isTSAsExpression(node) || t.isTSSatisfiesExpression(node) || t.isTSNonNullExpression(node) || t.isTypeCastExpression(node)) return unwrapTypeLikeExpression(node.expression);
|
|
1960
|
-
if (t.isParenthesizedExpression(node)) return unwrapTypeLikeExpression(node.expression);
|
|
1958
|
+
function unwrapTypeLikeExpression$1(node) {
|
|
1959
|
+
if (t.isTSAsExpression(node) || t.isTSSatisfiesExpression(node) || t.isTSNonNullExpression(node) || t.isTypeCastExpression(node)) return unwrapTypeLikeExpression$1(node.expression);
|
|
1960
|
+
if (t.isParenthesizedExpression(node)) return unwrapTypeLikeExpression$1(node.expression);
|
|
1961
1961
|
return node;
|
|
1962
1962
|
}
|
|
1963
1963
|
function resolveObjectExpressionFromAssignCall(node) {
|
|
1964
|
-
if (!isObjectAssignCall(node)) return null;
|
|
1964
|
+
if (!isObjectAssignCall$1(node)) return null;
|
|
1965
1965
|
for (let index = node.arguments.length - 1; index >= 0; index -= 1) {
|
|
1966
1966
|
const arg = node.arguments[index];
|
|
1967
1967
|
if (t.isSpreadElement(arg) || !t.isExpression(arg)) continue;
|
|
1968
|
-
const normalized = unwrapTypeLikeExpression(arg);
|
|
1968
|
+
const normalized = unwrapTypeLikeExpression$1(arg);
|
|
1969
1969
|
if (t.isObjectExpression(normalized)) return normalized;
|
|
1970
1970
|
}
|
|
1971
1971
|
return null;
|
|
@@ -1990,7 +1990,7 @@ function resolveComponentExpression(declaration, defineComponentDecls, aliases)
|
|
|
1990
1990
|
if (t.isExpression(arg)) return arg;
|
|
1991
1991
|
return null;
|
|
1992
1992
|
}
|
|
1993
|
-
if (t.isCallExpression(declaration) && isObjectAssignCall(declaration)) return declaration;
|
|
1993
|
+
if (t.isCallExpression(declaration) && isObjectAssignCall$1(declaration)) return declaration;
|
|
1994
1994
|
if (t.isIdentifier(declaration)) {
|
|
1995
1995
|
const matched = defineComponentDecls.get(declaration.name);
|
|
1996
1996
|
return matched ? t.cloneNode(matched, true) : null;
|
|
@@ -1999,7 +1999,7 @@ function resolveComponentExpression(declaration, defineComponentDecls, aliases)
|
|
|
1999
1999
|
}
|
|
2000
2000
|
function resolveComponentOptionsObject(componentExpr) {
|
|
2001
2001
|
if (!componentExpr) return null;
|
|
2002
|
-
const normalized = unwrapTypeLikeExpression(componentExpr);
|
|
2002
|
+
const normalized = unwrapTypeLikeExpression$1(componentExpr);
|
|
2003
2003
|
if (t.isObjectExpression(normalized)) return normalized;
|
|
2004
2004
|
if (t.isCallExpression(normalized)) return resolveObjectExpressionFromAssignCall(normalized);
|
|
2005
2005
|
return null;
|
|
@@ -2712,6 +2712,71 @@ function injectTemplateRefs(optionsObject, bindings, warn) {
|
|
|
2712
2712
|
|
|
2713
2713
|
//#endregion
|
|
2714
2714
|
//#region src/plugins/vue/transform/transformScript/rewrite/index.ts
|
|
2715
|
+
function hasStaticProperty(target, keyName) {
|
|
2716
|
+
for (const prop of target.properties) {
|
|
2717
|
+
if (prop.type !== "ObjectProperty" && prop.type !== "ObjectMethod" || prop.computed) continue;
|
|
2718
|
+
const key = prop.key;
|
|
2719
|
+
if (key.type === "Identifier" && key.name === keyName) return true;
|
|
2720
|
+
if (key.type === "StringLiteral" && key.value === keyName) return true;
|
|
2721
|
+
}
|
|
2722
|
+
return false;
|
|
2723
|
+
}
|
|
2724
|
+
function isObjectAssignCall(node) {
|
|
2725
|
+
const callee = node.callee;
|
|
2726
|
+
return t.isMemberExpression(callee) && t.isIdentifier(callee.object, { name: "Object" }) && t.isIdentifier(callee.property, { name: "assign" });
|
|
2727
|
+
}
|
|
2728
|
+
function unwrapTypeLikeExpression(node) {
|
|
2729
|
+
if (t.isTSAsExpression(node) || t.isTSSatisfiesExpression(node) || t.isTSNonNullExpression(node) || t.isTypeCastExpression(node)) return unwrapTypeLikeExpression(node.expression);
|
|
2730
|
+
if (t.isParenthesizedExpression(node)) return unwrapTypeLikeExpression(node.expression);
|
|
2731
|
+
return node;
|
|
2732
|
+
}
|
|
2733
|
+
function resolveObjectExpressionFromProgram(program, name) {
|
|
2734
|
+
for (let index = program.body.length - 1; index >= 0; index -= 1) {
|
|
2735
|
+
const statement = program.body[index];
|
|
2736
|
+
if (!t.isVariableDeclaration(statement)) continue;
|
|
2737
|
+
for (const declarator of statement.declarations) {
|
|
2738
|
+
if (!t.isIdentifier(declarator.id, { name }) || !declarator.init || !t.isExpression(declarator.init)) continue;
|
|
2739
|
+
const normalized = unwrapTypeLikeExpression(declarator.init);
|
|
2740
|
+
if (t.isObjectExpression(normalized)) return normalized;
|
|
2741
|
+
if (t.isCallExpression(normalized) && isObjectAssignCall(normalized)) {
|
|
2742
|
+
const lastArg = normalized.arguments[normalized.arguments.length - 1];
|
|
2743
|
+
if (lastArg && !t.isSpreadElement(lastArg) && t.isExpression(lastArg)) {
|
|
2744
|
+
const lastNormalized = unwrapTypeLikeExpression(lastArg);
|
|
2745
|
+
if (t.isObjectExpression(lastNormalized)) return lastNormalized;
|
|
2746
|
+
}
|
|
2747
|
+
}
|
|
2748
|
+
}
|
|
2749
|
+
}
|
|
2750
|
+
return null;
|
|
2751
|
+
}
|
|
2752
|
+
function hasStaticPropertyWithSpreads(target, keyName, program, visited = /* @__PURE__ */ new Set()) {
|
|
2753
|
+
if (hasStaticProperty(target, keyName)) return true;
|
|
2754
|
+
for (const prop of target.properties) {
|
|
2755
|
+
if (!t.isSpreadElement(prop)) continue;
|
|
2756
|
+
const spreadArg = prop.argument;
|
|
2757
|
+
if (t.isObjectExpression(spreadArg) && hasStaticPropertyWithSpreads(spreadArg, keyName, program, visited)) return true;
|
|
2758
|
+
if (!t.isIdentifier(spreadArg) || visited.has(spreadArg.name)) continue;
|
|
2759
|
+
visited.add(spreadArg.name);
|
|
2760
|
+
const resolved = resolveObjectExpressionFromProgram(program, spreadArg.name);
|
|
2761
|
+
if (resolved && hasStaticPropertyWithSpreads(resolved, keyName, program, visited)) return true;
|
|
2762
|
+
}
|
|
2763
|
+
return false;
|
|
2764
|
+
}
|
|
2765
|
+
function hasStaticPropertyInComponentExpression(componentExpr, keyName, program) {
|
|
2766
|
+
const normalized = unwrapTypeLikeExpression(componentExpr);
|
|
2767
|
+
if (t.isObjectExpression(normalized)) return hasStaticPropertyWithSpreads(normalized, keyName, program);
|
|
2768
|
+
if (!t.isCallExpression(normalized) || !isObjectAssignCall(normalized)) return false;
|
|
2769
|
+
for (const arg of normalized.arguments) {
|
|
2770
|
+
if (t.isSpreadElement(arg) || !t.isExpression(arg)) continue;
|
|
2771
|
+
const expr = unwrapTypeLikeExpression(arg);
|
|
2772
|
+
if (t.isObjectExpression(expr) && hasStaticPropertyWithSpreads(expr, keyName, program)) return true;
|
|
2773
|
+
if (t.isIdentifier(expr)) {
|
|
2774
|
+
const resolved = resolveObjectExpressionFromProgram(program, expr.name);
|
|
2775
|
+
if (resolved && hasStaticPropertyWithSpreads(resolved, keyName, program, new Set([expr.name]))) return true;
|
|
2776
|
+
}
|
|
2777
|
+
}
|
|
2778
|
+
return false;
|
|
2779
|
+
}
|
|
2715
2780
|
function rewriteDefaultExport(ast, state, options, enabledPageFeatures, serializedWevuDefaults, parsedWevuDefaults) {
|
|
2716
2781
|
if (!state.defaultExportPath) return false;
|
|
2717
2782
|
const warn = resolveWarnHandler(options?.warn);
|
|
@@ -2719,6 +2784,11 @@ function rewriteDefaultExport(ast, state, options, enabledPageFeatures, serializ
|
|
|
2719
2784
|
const exportPath = state.defaultExportPath;
|
|
2720
2785
|
const componentExpr = resolveComponentExpression(exportPath.node.declaration, state.defineComponentDecls, state.defineComponentAliases);
|
|
2721
2786
|
const componentOptionsObject = resolveComponentOptionsObject(componentExpr);
|
|
2787
|
+
const hasPageMarker = componentExpr ? hasStaticPropertyInComponentExpression(componentExpr, "__wevu_isPage", ast.program) : false;
|
|
2788
|
+
if (componentOptionsObject && options?.isPage && !options?.isApp && !hasPageMarker) {
|
|
2789
|
+
componentOptionsObject.properties.splice(0, 0, t.objectProperty(t.identifier("__wevu_isPage"), t.booleanLiteral(true)));
|
|
2790
|
+
transformed = true;
|
|
2791
|
+
}
|
|
2722
2792
|
if (componentOptionsObject && enabledPageFeatures.size) transformed = injectWevuPageFeatureFlagsIntoOptionsObject(componentOptionsObject, enabledPageFeatures) || transformed;
|
|
2723
2793
|
if (componentOptionsObject && parsedWevuDefaults) transformed = applyWevuDefaultsToComponentOptions({
|
|
2724
2794
|
componentExpr: componentOptionsObject,
|
|
@@ -3455,6 +3525,16 @@ async function compileJsxFile(source, filename, options) {
|
|
|
3455
3525
|
};
|
|
3456
3526
|
}
|
|
3457
3527
|
|
|
3528
|
+
//#endregion
|
|
3529
|
+
//#region src/utils/text.ts
|
|
3530
|
+
/**
|
|
3531
|
+
* 统一文本换行符为 LF,消除不同系统(CRLF/CR/LF)差异。
|
|
3532
|
+
*/
|
|
3533
|
+
function normalizeLineEndings(source) {
|
|
3534
|
+
if (!source.includes("\r")) return source;
|
|
3535
|
+
return source.replace(/\r\n?/g, "\n");
|
|
3536
|
+
}
|
|
3537
|
+
|
|
3458
3538
|
//#endregion
|
|
3459
3539
|
//#region src/plugins/utils/cache.ts
|
|
3460
3540
|
const mtimeCache = /* @__PURE__ */ new Map();
|
|
@@ -3492,7 +3572,7 @@ async function readFile(id, options) {
|
|
|
3492
3572
|
if (!checkMtime) {
|
|
3493
3573
|
const cached = loadCache.get(id);
|
|
3494
3574
|
if (cached !== void 0) return cached;
|
|
3495
|
-
const content = await fs.readFile(id, encoding);
|
|
3575
|
+
const content = normalizeLineEndings(await fs.readFile(id, encoding));
|
|
3496
3576
|
loadCache.set(id, content);
|
|
3497
3577
|
return content;
|
|
3498
3578
|
}
|
|
@@ -3500,7 +3580,7 @@ async function readFile(id, options) {
|
|
|
3500
3580
|
const cached = loadCache.get(id);
|
|
3501
3581
|
if (cached !== void 0) return cached;
|
|
3502
3582
|
}
|
|
3503
|
-
const content = await fs.readFile(id, encoding);
|
|
3583
|
+
const content = normalizeLineEndings(await fs.readFile(id, encoding));
|
|
3504
3584
|
loadCache.set(id, content);
|
|
3505
3585
|
return content;
|
|
3506
3586
|
}
|
|
@@ -3736,7 +3816,7 @@ async function resolveSfcBlockSrc(descriptor, filename, options) {
|
|
|
3736
3816
|
*/
|
|
3737
3817
|
async function readAndParseSfc(filename, options) {
|
|
3738
3818
|
const checkMtime = options?.checkMtime ?? true;
|
|
3739
|
-
const source = options?.source ?? await readFile(filename, { checkMtime });
|
|
3819
|
+
const source = normalizeLineEndings(options?.source ?? await readFile(filename, { checkMtime }));
|
|
3740
3820
|
const normalizedSource = preprocessScriptSrc(preprocessScriptSetupSrc(source));
|
|
3741
3821
|
const signature = checkMtime ? (() => {
|
|
3742
3822
|
const cached = mtimeCache.get(filename);
|
|
@@ -6331,10 +6411,11 @@ function extractDefineOptionsHash(content) {
|
|
|
6331
6411
|
return createHash("sha256").update(macroSources.join("\n")).digest("hex").slice(0, 12);
|
|
6332
6412
|
}
|
|
6333
6413
|
async function parseVueFile(source, filename, options) {
|
|
6334
|
-
const
|
|
6414
|
+
const normalizedInputSource = normalizeLineEndings(source);
|
|
6415
|
+
const normalizedSource = preprocessScriptSrc(preprocessScriptSetupSrc(normalizedInputSource));
|
|
6335
6416
|
const { descriptor, errors } = parse(normalizedSource, {
|
|
6336
6417
|
filename,
|
|
6337
|
-
ignoreEmpty: normalizedSource ===
|
|
6418
|
+
ignoreEmpty: normalizedSource === normalizedInputSource
|
|
6338
6419
|
});
|
|
6339
6420
|
restoreScriptSetupSrc(descriptor);
|
|
6340
6421
|
restoreScriptSrc(descriptor);
|