@wevu/compiler 6.16.10 → 6.16.12

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.d.mts CHANGED
@@ -211,6 +211,7 @@ interface MiniProgramPlatform {
211
211
  interface ScopedSlotComponentAsset {
212
212
  id: string;
213
213
  componentName: string;
214
+ hostComponentName?: string;
214
215
  slotKey: string;
215
216
  template: string;
216
217
  componentGenerics?: Record<string, true>;
package/dist/index.mjs CHANGED
@@ -3343,6 +3343,9 @@ function toAlipayDirectiveEvent(prefix, eventName) {
3343
3343
  default: return toOnEventName(eventName);
3344
3344
  }
3345
3345
  }
3346
+ function normalizeMiniProgramEventName$3(name) {
3347
+ return name.includes(":") ? name.replaceAll(":", "-").toLowerCase() : name;
3348
+ }
3346
3349
  /**
3347
3350
  * 支付宝小程序平台适配器。
3348
3351
  */
@@ -3364,8 +3367,7 @@ const alipayPlatform = {
3364
3367
  mapEventName: (eventName) => eventMap$3[eventName] || eventName,
3365
3368
  eventBindingAttr: (eventName) => {
3366
3369
  const { prefix, name } = parseEventBinding$3(eventName);
3367
- if (name.includes(":")) return `on:${name}`;
3368
- return toAlipayDirectiveEvent(prefix, name);
3370
+ return toAlipayDirectiveEvent(prefix, normalizeMiniProgramEventName$3(name));
3369
3371
  }
3370
3372
  };
3371
3373
  //#endregion
@@ -3407,6 +3409,9 @@ function parseEventBinding$2(eventName) {
3407
3409
  function shouldUseColonEventBinding$2(name) {
3408
3410
  return name.includes(":") || name.includes("-");
3409
3411
  }
3412
+ function normalizeMiniProgramEventName$2(name) {
3413
+ return name.includes(":") ? name.replaceAll(":", "-").toLowerCase() : name;
3414
+ }
3410
3415
  const directives$2 = createMiniProgramDirectiveAttrs("wx");
3411
3416
  /**
3412
3417
  * 默认小程序模板平台实现。
@@ -3431,12 +3436,13 @@ const defaultMiniProgramPlatform = {
3431
3436
  mapEventName: (eventName) => eventMap$2[eventName] || eventName,
3432
3437
  eventBindingAttr: (eventName) => {
3433
3438
  const { prefix, name } = parseEventBinding$2(eventName);
3439
+ const normalizedName = normalizeMiniProgramEventName$2(name);
3434
3440
  switch (prefix) {
3435
- case "catch": return shouldUseColonEventBinding$2(name) ? `catch:${name}` : `catch${name}`;
3436
- case "capture-bind": return `capture-bind:${name}`;
3437
- case "capture-catch": return `capture-catch:${name}`;
3438
- case "mut-bind": return `mut-bind:${name}`;
3439
- default: return shouldUseColonEventBinding$2(name) ? `bind:${name}` : `bind${name}`;
3441
+ case "catch": return shouldUseColonEventBinding$2(normalizedName) ? `catch:${normalizedName}` : `catch${normalizedName}`;
3442
+ case "capture-bind": return `capture-bind:${normalizedName}`;
3443
+ case "capture-catch": return `capture-catch:${normalizedName}`;
3444
+ case "mut-bind": return `mut-bind:${normalizedName}`;
3445
+ default: return shouldUseColonEventBinding$2(normalizedName) ? `bind:${normalizedName}` : `bind${normalizedName}`;
3440
3446
  }
3441
3447
  }
3442
3448
  };
@@ -3483,6 +3489,9 @@ function parseEventBinding$1(eventName) {
3483
3489
  function shouldUseColonEventBinding$1(name) {
3484
3490
  return name.includes(":") || name.includes("-");
3485
3491
  }
3492
+ function normalizeMiniProgramEventName$1(name) {
3493
+ return name.includes(":") ? name.replaceAll(":", "-").toLowerCase() : name;
3494
+ }
3486
3495
  /**
3487
3496
  * 百度智能小程序平台适配器。
3488
3497
  */
@@ -3504,12 +3513,13 @@ const swanPlatform = {
3504
3513
  mapEventName: (eventName) => eventMap$1[eventName] || eventName,
3505
3514
  eventBindingAttr: (eventName) => {
3506
3515
  const { prefix, name } = parseEventBinding$1(eventName);
3516
+ const normalizedName = normalizeMiniProgramEventName$1(name);
3507
3517
  switch (prefix) {
3508
- case "catch": return shouldUseColonEventBinding$1(name) ? `catch:${name}` : `catch${name}`;
3509
- case "capture-bind": return `capture-bind:${name}`;
3510
- case "capture-catch": return `capture-catch:${name}`;
3511
- case "mut-bind": return `mut-bind:${name}`;
3512
- default: return shouldUseColonEventBinding$1(name) ? `bind:${name}` : `bind${name}`;
3518
+ case "catch": return shouldUseColonEventBinding$1(normalizedName) ? `catch:${normalizedName}` : `catch${normalizedName}`;
3519
+ case "capture-bind": return `capture-bind:${normalizedName}`;
3520
+ case "capture-catch": return `capture-catch:${normalizedName}`;
3521
+ case "mut-bind": return `mut-bind:${normalizedName}`;
3522
+ default: return shouldUseColonEventBinding$1(normalizedName) ? `bind:${normalizedName}` : `bind${normalizedName}`;
3513
3523
  }
3514
3524
  }
3515
3525
  };
@@ -3552,6 +3562,9 @@ function parseEventBinding(eventName) {
3552
3562
  function shouldUseColonEventBinding(name) {
3553
3563
  return name.includes(":") || name.includes("-");
3554
3564
  }
3565
+ function normalizeMiniProgramEventName(name) {
3566
+ return name.includes(":") ? name.replaceAll(":", "-").toLowerCase() : name;
3567
+ }
3555
3568
  /**
3556
3569
  * 抖音小程序平台适配器。
3557
3570
  */
@@ -3573,12 +3586,13 @@ const ttPlatform = {
3573
3586
  mapEventName: (eventName) => eventMap[eventName] || eventName,
3574
3587
  eventBindingAttr: (eventName) => {
3575
3588
  const { prefix, name } = parseEventBinding(eventName);
3589
+ const normalizedName = normalizeMiniProgramEventName(name);
3576
3590
  switch (prefix) {
3577
- case "catch": return shouldUseColonEventBinding(name) ? `catch:${name}` : `catch${name}`;
3578
- case "capture-bind": return `capture-bind:${name}`;
3579
- case "capture-catch": return `capture-catch:${name}`;
3580
- case "mut-bind": return `mut-bind:${name}`;
3581
- default: return shouldUseColonEventBinding(name) ? `bind:${name}` : `bind${name}`;
3591
+ case "catch": return shouldUseColonEventBinding(normalizedName) ? `catch:${normalizedName}` : `catch${normalizedName}`;
3592
+ case "capture-bind": return `capture-bind:${normalizedName}`;
3593
+ case "capture-catch": return `capture-catch:${normalizedName}`;
3594
+ case "mut-bind": return `mut-bind:${normalizedName}`;
3595
+ default: return shouldUseColonEventBinding(normalizedName) ? `bind:${normalizedName}` : `bind${normalizedName}`;
3582
3596
  }
3583
3597
  }
3584
3598
  };
@@ -6413,7 +6427,7 @@ function buildSlotDeclaration(name, propsExp, children, context, options) {
6413
6427
  condition: options?.condition
6414
6428
  };
6415
6429
  }
6416
- function createScopedSlotComponent(context, slotKey, props, children, transformNode) {
6430
+ function createScopedSlotComponent(context, slotKey, props, children, transformNode, options) {
6417
6431
  const ownerHash = hashString(context.filename);
6418
6432
  const index = context.scopedSlotComponents.length;
6419
6433
  const id = `${slotKey}-${index}`;
@@ -6421,6 +6435,7 @@ function createScopedSlotComponent(context, slotKey, props, children, transformN
6421
6435
  const asset = {
6422
6436
  id,
6423
6437
  componentName,
6438
+ hostComponentName: options?.hostComponentName,
6424
6439
  slotKey,
6425
6440
  template: ""
6426
6441
  };
@@ -6554,15 +6569,23 @@ function transformSlotElement(node, context, transformNode) {
6554
6569
  }
6555
6570
  function transformSlotElementPlain(node, context, transformNode) {
6556
6571
  const slotNameInfo = resolveSlotNameFromSlotElement(node);
6557
- if (node.props.some((prop) => {
6572
+ const hasScopeBindings = node.props.some((prop) => {
6558
6573
  if (prop.type === NodeTypes.DIRECTIVE && prop.name === "bind") return prop.arg?.type !== NodeTypes.SIMPLE_EXPRESSION || prop.arg.content !== "name";
6559
6574
  return false;
6560
- })) context.warnings.push("已禁用作用域插槽参数,插槽绑定将被忽略。");
6575
+ });
6576
+ if (hasScopeBindings) context.warnings.push("已禁用作用域插槽参数,插槽绑定将被忽略。");
6561
6577
  const fallbackContent = node.children.map((child) => transformNode(child, context)).join("");
6562
6578
  const slotAttrs = [];
6563
6579
  const nameAttr = renderSlotNameAttribute(slotNameInfo, context, "name");
6564
6580
  if (nameAttr) slotAttrs.push(nameAttr);
6565
6581
  const slotAttrString = slotAttrs.length ? ` ${slotAttrs.join(" ")}` : "";
6582
+ if (!hasScopeBindings && fallbackContent) {
6583
+ const slotPresentExp = createSlotPresenceExpression(slotNameInfo);
6584
+ if (slotPresentExp) {
6585
+ const slotTag = `<slot${slotAttrString} />`;
6586
+ return `${context.platform.wrapIf(slotPresentExp, slotTag, (exp) => renderMustache(exp, context))}${context.platform.wrapElse(fallbackContent)}`;
6587
+ }
6588
+ }
6566
6589
  return fallbackContent ? `<slot${slotAttrString}>${fallbackContent}</slot>` : `<slot${slotAttrString} />`;
6567
6590
  }
6568
6591
  //#endregion
@@ -6592,6 +6615,7 @@ function isWevuComponentTag(node, context) {
6592
6615
  }
6593
6616
  function shouldAugmentPlainDefaultSlot(decl, context, ownerNode) {
6594
6617
  if (context.scopedSlotsRequireProps || !decl.implicitDefault) return false;
6618
+ if (context.scopedSlotsCompiler !== "augmented" && !isWevuComponentTag(ownerNode, context)) return false;
6595
6619
  if (context.rewriteScopedSlot && !isWevuComponentTag(ownerNode, context)) return false;
6596
6620
  if (context.scopedSlotsCompiler === "augmented") return true;
6597
6621
  return hasDirectComponentSlotChild(decl.children, context);
@@ -6686,7 +6710,7 @@ function transformComponentWithSlots(node, context, transformNode, options) {
6686
6710
  const slotGenericAttrs = [];
6687
6711
  for (const decl of scopedSlotDeclarations) {
6688
6712
  const slotKey = resolveSlotKey(context, decl.name);
6689
- const { componentName } = createScopedSlotComponent(context, slotKey, decl.props, decl.children, transformNode);
6713
+ const { componentName } = createScopedSlotComponent(context, slotKey, decl.props, decl.children, transformNode, { hostComponentName: node.tag });
6690
6714
  slotNames.push({
6691
6715
  name: stringifySlotName(decl.name, context),
6692
6716
  condition: decl.condition
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@wevu/compiler",
3
3
  "type": "module",
4
- "version": "6.16.10",
4
+ "version": "6.16.12",
5
5
  "description": "wevu 编译器基础包,面向小程序模板的编译与转换",
6
6
  "author": "ice breaker <1324318532@qq.com>",
7
7
  "license": "MIT",
@@ -52,7 +52,7 @@
52
52
  "vue": "^3.5.34",
53
53
  "@weapp-core/constants": "^0.1.6",
54
54
  "@weapp-core/shared": "3.0.4",
55
- "@weapp-vite/ast": "6.16.10",
55
+ "@weapp-vite/ast": "6.16.12",
56
56
  "rolldown-require": "2.0.15"
57
57
  },
58
58
  "publishConfig": {