marko 6.0.85 → 6.0.86

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.
@@ -52,7 +52,6 @@ __export(html_exports, {
52
52
  _for_of: () => _for_of,
53
53
  _for_to: () => _for_to,
54
54
  _for_until: () => _for_until,
55
- _get_serialize_reason: () => _get_serialize_reason,
56
55
  _hoist: () => _hoist,
57
56
  _html: () => _html,
58
57
  _id: () => _id,
@@ -62,6 +61,7 @@ __export(html_exports, {
62
61
  _resume_branch: () => _resume_branch,
63
62
  _scope: () => writeScope,
64
63
  _scope_id: () => _scope_id,
64
+ _scope_reason: () => _scope_reason,
65
65
  _scope_with_id: () => _scope_with_id,
66
66
  _script: () => _script,
67
67
  _sep: () => _sep,
@@ -1804,7 +1804,7 @@ function getScopeById(scopeId) {
1804
1804
  function _set_serialize_reason(reason) {
1805
1805
  $chunk.boundary.state.serializeReason = reason;
1806
1806
  }
1807
- function _get_serialize_reason() {
1807
+ function _scope_reason() {
1808
1808
  const reason = $chunk.boundary.state.serializeReason;
1809
1809
  $chunk.boundary.state.serializeReason = void 0;
1810
1810
  return reason;
@@ -3480,7 +3480,6 @@ function NOOP3() {
3480
3480
  _for_of,
3481
3481
  _for_to,
3482
3482
  _for_until,
3483
- _get_serialize_reason,
3484
3483
  _hoist,
3485
3484
  _html,
3486
3485
  _id,
@@ -3490,6 +3489,7 @@ function NOOP3() {
3490
3489
  _resume_branch,
3491
3490
  _scope,
3492
3491
  _scope_id,
3492
+ _scope_reason,
3493
3493
  _scope_with_id,
3494
3494
  _script,
3495
3495
  _sep,
@@ -1715,7 +1715,7 @@ function getScopeById(scopeId) {
1715
1715
  function _set_serialize_reason(reason) {
1716
1716
  $chunk.boundary.state.serializeReason = reason;
1717
1717
  }
1718
- function _get_serialize_reason() {
1718
+ function _scope_reason() {
1719
1719
  const reason = $chunk.boundary.state.serializeReason;
1720
1720
  $chunk.boundary.state.serializeReason = void 0;
1721
1721
  return reason;
@@ -3390,7 +3390,6 @@ export {
3390
3390
  _for_of,
3391
3391
  _for_to,
3392
3392
  _for_until,
3393
- _get_serialize_reason,
3394
3393
  _hoist,
3395
3394
  _html,
3396
3395
  _id,
@@ -3400,6 +3399,7 @@ export {
3400
3399
  _resume_branch,
3401
3400
  writeScope as _scope,
3402
3401
  _scope_id,
3402
+ _scope_reason,
3403
3403
  _scope_with_id,
3404
3404
  _script,
3405
3405
  _sep,
@@ -28,7 +28,7 @@ export declare function _scope_id(): number;
28
28
  export declare function _peek_scope_id(): number;
29
29
  export declare function getScopeById(scopeId: number | undefined): PartialScope | undefined;
30
30
  export declare function _set_serialize_reason(reason: undefined | 0 | 1): void;
31
- export declare function _get_serialize_reason(): 0 | 1 | undefined;
31
+ export declare function _scope_reason(): 0 | 1 | undefined;
32
32
  export declare function _serialize_if(condition: undefined | 1 | Record<string, 1>, key: string): 1 | undefined;
33
33
  export declare function _serialize_guard(condition: undefined | 1 | Record<string, 1>, key: string): 0 | 1;
34
34
  export declare function _el_resume(scopeId: number, accessor: Accessor, shouldResume?: 0 | 1): string;
package/dist/html.d.ts CHANGED
@@ -5,4 +5,4 @@ export { _escape, _escape_script, _escape_style, _escape_textarea_value, _unesca
5
5
  export { _content, _content_resume, _dynamic_tag } from "./html/dynamic-tag";
6
6
  export { forIn, forInBy, forOf, forOfBy, forStepBy, forTo, forUntil, } from "./html/for";
7
7
  export { _template } from "./html/template";
8
- export { _attr_content, _await, _el, _el_resume, _existing_scope, _for_in, _for_of, _for_to, _for_until, _get_serialize_reason, _hoist, _html, _id, _if, _peek_scope_id, _resume, _resume_branch, _scope, _scope_id, _scope_with_id, _script, _sep, _serialize_guard, _serialize_if, _set_serialize_reason, _subscribe, _trailers, _try, _var, $global, } from "./html/writer";
8
+ export { _attr_content, _await, _el, _el_resume, _existing_scope, _for_in, _for_of, _for_to, _for_until, _hoist, _html, _id, _if, _peek_scope_id, _resume, _resume_branch, _scope, _scope_id, _scope_reason, _scope_with_id, _script, _sep, _serialize_guard, _serialize_if, _set_serialize_reason, _subscribe, _trailers, _try, _var, $global, } from "./html/writer";
package/dist/html.js CHANGED
@@ -49,7 +49,6 @@ __export(html_exports, {
49
49
  _for_of: () => _for_of,
50
50
  _for_to: () => _for_to,
51
51
  _for_until: () => _for_until,
52
- _get_serialize_reason: () => _get_serialize_reason,
53
52
  _hoist: () => _hoist,
54
53
  _html: () => _html,
55
54
  _id: () => _id,
@@ -59,6 +58,7 @@ __export(html_exports, {
59
58
  _resume_branch: () => _resume_branch,
60
59
  _scope: () => writeScope,
61
60
  _scope_id: () => _scope_id,
61
+ _scope_reason: () => _scope_reason,
62
62
  _scope_with_id: () => _scope_with_id,
63
63
  _script: () => _script,
64
64
  _sep: () => _sep,
@@ -1173,7 +1173,7 @@ function getScopeById(scopeId) {
1173
1173
  function _set_serialize_reason(reason) {
1174
1174
  $chunk.boundary.state.serializeReason = reason;
1175
1175
  }
1176
- function _get_serialize_reason() {
1176
+ function _scope_reason() {
1177
1177
  let reason = $chunk.boundary.state.serializeReason;
1178
1178
  return $chunk.boundary.state.serializeReason = void 0, reason;
1179
1179
  }
@@ -2275,7 +2275,6 @@ function NOOP3() {
2275
2275
  _for_of,
2276
2276
  _for_to,
2277
2277
  _for_until,
2278
- _get_serialize_reason,
2279
2278
  _hoist,
2280
2279
  _html,
2281
2280
  _id,
@@ -2285,6 +2284,7 @@ function NOOP3() {
2285
2284
  _resume_branch,
2286
2285
  _scope,
2287
2286
  _scope_id,
2287
+ _scope_reason,
2288
2288
  _scope_with_id,
2289
2289
  _script,
2290
2290
  _sep,
package/dist/html.mjs CHANGED
@@ -1087,7 +1087,7 @@ function getScopeById(scopeId) {
1087
1087
  function _set_serialize_reason(reason) {
1088
1088
  $chunk.boundary.state.serializeReason = reason;
1089
1089
  }
1090
- function _get_serialize_reason() {
1090
+ function _scope_reason() {
1091
1091
  let reason = $chunk.boundary.state.serializeReason;
1092
1092
  return $chunk.boundary.state.serializeReason = void 0, reason;
1093
1093
  }
@@ -2188,7 +2188,6 @@ export {
2188
2188
  _for_of,
2189
2189
  _for_to,
2190
2190
  _for_until,
2191
- _get_serialize_reason,
2192
2191
  _hoist,
2193
2192
  _html,
2194
2193
  _id,
@@ -2198,6 +2197,7 @@ export {
2198
2197
  _resume_branch,
2199
2198
  writeScope as _scope,
2200
2199
  _scope_id,
2200
+ _scope_reason,
2201
2201
  _scope_with_id,
2202
2202
  _script,
2203
2203
  _sep,
@@ -2650,74 +2650,85 @@ var import_compiler14 = require("@marko/compiler");
2650
2650
 
2651
2651
  // src/translator/util/with-comment.ts
2652
2652
  function withLeadingComment(node, value) {
2653
- const comment = {
2654
- type: "CommentBlock",
2655
- value: ` ${value} `
2656
- };
2657
- node.leadingComments = node.leadingComments ? [...node.leadingComments, comment] : [comment];
2653
+ if (value) {
2654
+ const comment = {
2655
+ type: "CommentBlock",
2656
+ value: ` ${value} `
2657
+ };
2658
+ node.leadingComments = node.leadingComments ? [...node.leadingComments, comment] : [comment];
2659
+ }
2658
2660
  return node;
2659
2661
  }
2660
2662
 
2661
2663
  // src/translator/util/serialize-guard.ts
2662
- function getSerializeGuard(reason, optional) {
2663
- return !reason ? import_compiler14.types.numericLiteral(0) : reason === true || reason.state ? optional ? void 0 : reason === true ? import_compiler14.types.numericLiteral(1) : withLeadingComment(import_compiler14.types.numericLiteral(1), getDebugNames(reason.state)) : getInputSerializeReasonGuard(reason);
2664
+ function getSerializeGuard(section, reason, optional) {
2665
+ if (!isReasonDynamic(reason)) {
2666
+ return reason ? optional ? void 0 : withLeadingComment(
2667
+ import_compiler14.types.numericLiteral(1),
2668
+ getDebugNames(reason === true ? void 0 : reason.state)
2669
+ ) : import_compiler14.types.numericLiteral(0);
2670
+ }
2671
+ let expr;
2672
+ for (const [paramsSection, params] of groupParamsBySection(reason.param)) {
2673
+ if (!isSameOrChildSection(paramsSection, section)) {
2674
+ return optional ? void 0 : withLeadingComment(import_compiler14.types.numericLiteral(1), getDebugNames(params));
2675
+ }
2676
+ const serializeIdentifier = import_compiler14.types.identifier(
2677
+ getSharedUid(`scope${paramsSection.id}_reason`, paramsSection)
2678
+ );
2679
+ const guard = paramsSection.paramReasonGroups ? callRuntime(
2680
+ "_serialize_guard",
2681
+ serializeIdentifier,
2682
+ withLeadingComment(
2683
+ import_compiler14.types.numericLiteral(getParamReasonGroupIndex(paramsSection, params)),
2684
+ getDebugNames(params)
2685
+ )
2686
+ ) : serializeIdentifier;
2687
+ expr = expr ? import_compiler14.types.logicalExpression("||", expr, guard) : guard;
2688
+ }
2689
+ return expr;
2664
2690
  }
2665
- function getSerializeGuardForAny(reasons, optional) {
2691
+ function getSerializeGuardForAny(section, reasons, optional) {
2666
2692
  if (!reasons || reasons === true) {
2667
- return getSerializeGuard(reasons, optional);
2693
+ return getSerializeGuard(section, reasons, optional);
2668
2694
  }
2669
2695
  if (reasons.length === 1) {
2670
- return getSerializeGuard(reasons[0], optional);
2696
+ return getSerializeGuard(section, reasons[0], optional);
2671
2697
  }
2672
2698
  let expr;
2673
2699
  for (const reason of reasons) {
2674
- if (reason.state) {
2700
+ if (!isReasonDynamic(reason)) {
2675
2701
  return optional ? void 0 : withLeadingComment(import_compiler14.types.numericLiteral(1), getDebugNames(reason.state));
2676
2702
  }
2677
- const guard = getSerializeGuard(reason, false);
2703
+ const guard = getSerializeGuard(section, reason, false);
2678
2704
  expr = expr ? import_compiler14.types.logicalExpression("||", expr, guard) : guard;
2679
2705
  }
2680
2706
  return expr;
2681
2707
  }
2682
- function getExprIfSerialized(reason, expr) {
2708
+ function getExprIfSerialized(section, reason, expr) {
2683
2709
  if (!isReasonDynamic(reason)) {
2684
2710
  return reason && expr;
2685
2711
  }
2686
2712
  let orExpr;
2687
- for (const [section, reasons] of groupParamsBySection(reason.param)) {
2713
+ for (const [paramsSection, params] of groupParamsBySection(reason.param)) {
2714
+ if (!isSameOrChildSection(paramsSection, section)) {
2715
+ return expr;
2716
+ }
2688
2717
  const serializeIdentifier = import_compiler14.types.identifier(
2689
- getSharedUid("serialize", section)
2718
+ getSharedUid(`scope${paramsSection.id}_reason`, paramsSection)
2690
2719
  );
2691
- const guard = section.paramReasonGroups ? callRuntime(
2720
+ const guard = paramsSection.paramReasonGroups ? callRuntime(
2692
2721
  "_serialize_if",
2693
2722
  serializeIdentifier,
2694
2723
  withLeadingComment(
2695
- import_compiler14.types.numericLiteral(getParamReasonGroupIndex(section, reasons)),
2696
- getDebugNames(reasons)
2724
+ import_compiler14.types.numericLiteral(getParamReasonGroupIndex(paramsSection, params)),
2725
+ getDebugNames(params)
2697
2726
  )
2698
2727
  ) : serializeIdentifier;
2699
2728
  orExpr = orExpr ? import_compiler14.types.logicalExpression("||", orExpr, guard) : guard;
2700
2729
  }
2701
2730
  return import_compiler14.types.logicalExpression("&&", orExpr, expr);
2702
2731
  }
2703
- function getInputSerializeReasonGuard(reason) {
2704
- let expr;
2705
- for (const [section, reasons] of groupParamsBySection(reason.param)) {
2706
- const serializeIdentifier = import_compiler14.types.identifier(
2707
- getSharedUid("serialize", section)
2708
- );
2709
- const guard = section.paramReasonGroups ? callRuntime(
2710
- "_serialize_guard",
2711
- serializeIdentifier,
2712
- withLeadingComment(
2713
- import_compiler14.types.numericLiteral(getParamReasonGroupIndex(section, reasons)),
2714
- getDebugNames(reasons)
2715
- )
2716
- ) : serializeIdentifier;
2717
- expr = expr ? import_compiler14.types.logicalExpression("||", expr, guard) : guard;
2718
- }
2719
- return expr;
2720
- }
2721
2732
 
2722
2733
  // src/translator/util/walks.ts
2723
2734
  var import_compiler15 = require("@marko/compiler");
@@ -2986,7 +2997,7 @@ function markNode(path5, nodeBinding, reason) {
2986
2997
  "_el_resume",
2987
2998
  getScopeIdIdentifier(section),
2988
2999
  getScopeAccessorLiteral(nodeBinding),
2989
- getSerializeGuard(reason, true)
3000
+ getSerializeGuard(section, reason, true)
2990
3001
  )}`;
2991
3002
  }
2992
3003
  }
@@ -4051,7 +4062,11 @@ function writeHTMLResumeStatements(path5) {
4051
4062
  serializedProperties.push(
4052
4063
  toObjectProperty(
4053
4064
  accessor,
4054
- sectionSerializeReason && (sectionSerializeReason === reason || sectionSerializeReason !== true && reason !== true && compareSources(sectionSerializeReason, reason) === 0) ? getDeclaredBindingExpression(binding) : getExprIfSerialized(reason, getDeclaredBindingExpression(binding))
4065
+ sectionSerializeReason && (sectionSerializeReason === reason || sectionSerializeReason !== true && reason !== true && compareSources(sectionSerializeReason, reason) === 0) ? getDeclaredBindingExpression(binding) : getExprIfSerialized(
4066
+ section,
4067
+ reason,
4068
+ getDeclaredBindingExpression(binding)
4069
+ )
4055
4070
  )
4056
4071
  );
4057
4072
  if (debug) {
@@ -4085,14 +4100,14 @@ function writeHTMLResumeStatements(path5) {
4085
4100
  serializedProperties.push(
4086
4101
  toObjectProperty(
4087
4102
  ownerAccessor,
4088
- sectionSerializeReason && (sectionSerializeReason === ownerReason || sectionSerializeReason !== true && ownerReason !== true && compareSources(sectionSerializeReason, ownerReason) === 0) ? getOwnerExpr : getExprIfSerialized(ownerReason, getOwnerExpr)
4103
+ sectionSerializeReason && (sectionSerializeReason === ownerReason || sectionSerializeReason !== true && ownerReason !== true && compareSources(sectionSerializeReason, ownerReason) === 0) ? getOwnerExpr : getExprIfSerialized(section, ownerReason, getOwnerExpr)
4089
4104
  )
4090
4105
  );
4091
4106
  }
4092
4107
  }
4093
4108
  for (const [key, { expression, reason }] of serializedLookup) {
4094
4109
  serializedProperties.push(
4095
- toObjectProperty(key, getExprIfSerialized(reason, expression))
4110
+ toObjectProperty(key, getExprIfSerialized(section, reason, expression))
4096
4111
  );
4097
4112
  }
4098
4113
  if (sectionSerializeReason) {
@@ -4116,15 +4131,15 @@ function writeHTMLResumeStatements(path5) {
4116
4131
  writeScopeArgs.push(import_compiler22.types.objectExpression(debugVars));
4117
4132
  }
4118
4133
  }
4119
- let writeScopeCall = writeScopeBuilder ? writeScopeBuilder(callRuntime("_scope", ...writeScopeArgs)) : callRuntime("_scope", ...writeScopeArgs);
4120
- if (sectionSerializeReason !== true && !sectionSerializeReason.state) {
4121
- writeScopeCall = import_compiler22.types.logicalExpression(
4122
- "&&",
4123
- getSerializeGuard(sectionSerializeReason, false),
4124
- writeScopeCall
4125
- );
4126
- }
4127
- body.push(import_compiler22.types.expressionStatement(writeScopeCall));
4134
+ body.push(
4135
+ import_compiler22.types.expressionStatement(
4136
+ getExprIfSerialized(
4137
+ section,
4138
+ sectionSerializeReason,
4139
+ writeScopeBuilder ? writeScopeBuilder(callRuntime("_scope", ...writeScopeArgs)) : callRuntime("_scope", ...writeScopeArgs)
4140
+ )
4141
+ )
4142
+ );
4128
4143
  }
4129
4144
  const resumeClosestBranch = !section.isBranch && (section.hasAbortSignal || !!section.referencedClosures || !!find(section.bindings, (binding) => binding.type === 1 /* let */));
4130
4145
  if (resumeClosestBranch) {
@@ -4519,8 +4534,8 @@ var html_default = {
4519
4534
  renderContent.push(
4520
4535
  import_compiler24.types.variableDeclaration("const", [
4521
4536
  import_compiler24.types.variableDeclarator(
4522
- import_compiler24.types.identifier(getSharedUid("serialize", section)),
4523
- callRuntime("_get_serialize_reason")
4537
+ import_compiler24.types.identifier(getSharedUid(`scope${section.id}_reason`, section)),
4538
+ callRuntime("_scope_reason")
4524
4539
  )
4525
4540
  ])
4526
4541
  );
@@ -5283,6 +5298,7 @@ var native_tag_default = {
5283
5298
  getScopeIdIdentifier(tagSection),
5284
5299
  usedAttrs.staticContentAttr.value,
5285
5300
  getSerializeGuard(
5301
+ tagSection,
5286
5302
  nodeBinding && getSerializeReason(tagSection, nodeBinding),
5287
5303
  true
5288
5304
  )
@@ -5291,6 +5307,7 @@ var native_tag_default = {
5291
5307
  ];
5292
5308
  } else if (spreadExpression && !hasChildren) {
5293
5309
  const serializeReason = getSerializeGuard(
5310
+ tagSection,
5294
5311
  nodeBinding && getSerializeReason(tagSection, nodeBinding),
5295
5312
  true
5296
5313
  );
@@ -6040,10 +6057,12 @@ var for_default = {
6040
6057
  if (branchSerializeReason) {
6041
6058
  const skipParentEnd = onlyChildParentTagName && markerSerializeReason;
6042
6059
  const statefulSerializeArg = getSerializeGuard(
6060
+ tagSection,
6043
6061
  getSerializeReason(tagSection, kStatefulReason),
6044
6062
  !(skipParentEnd || singleNodeOptimization)
6045
6063
  );
6046
6064
  const markerSerializeArg = getSerializeGuard(
6065
+ tagSection,
6047
6066
  markerSerializeReason,
6048
6067
  !statefulSerializeArg
6049
6068
  );
@@ -6051,7 +6070,11 @@ var for_default = {
6051
6070
  forAttrs.by || import_compiler31.types.numericLiteral(0),
6052
6071
  getScopeIdIdentifier(tagSection),
6053
6072
  getScopeAccessorLiteral(nodeBinding),
6054
- getSerializeGuard(branchSerializeReason, !markerSerializeArg),
6073
+ getSerializeGuard(
6074
+ tagSection,
6075
+ branchSerializeReason,
6076
+ !markerSerializeArg
6077
+ ),
6055
6078
  markerSerializeArg,
6056
6079
  statefulSerializeArg
6057
6080
  );
@@ -6602,8 +6625,10 @@ function buildContent(body) {
6602
6625
  body.node.body.unshift(
6603
6626
  import_compiler32.types.variableDeclaration("const", [
6604
6627
  import_compiler32.types.variableDeclarator(
6605
- import_compiler32.types.identifier(getSharedUid("serialize", bodySection)),
6606
- callRuntime("_get_serialize_reason")
6628
+ import_compiler32.types.identifier(
6629
+ getSharedUid(`scope${bodySection.id}_reason`, bodySection)
6630
+ ),
6631
+ callRuntime("_scope_reason")
6607
6632
  )
6608
6633
  ])
6609
6634
  );
@@ -6754,7 +6779,7 @@ function knownTagTranslateHTML(tag, tagIdentifier, contentSection, propTree) {
6754
6779
  if (contentSection.paramReasonGroups.length === 1) {
6755
6780
  const [group] = contentSection.paramReasonGroups;
6756
6781
  const reason = getSerializeReason(section, childScopeBinding, group.id);
6757
- childSerializeReasonExpr = reason && getSerializeGuard(reason, false);
6782
+ childSerializeReasonExpr = reason && getSerializeGuard(section, reason, false);
6758
6783
  } else {
6759
6784
  const props = [];
6760
6785
  let hasDynamicReasons = false;
@@ -6770,7 +6795,7 @@ function knownTagTranslateHTML(tag, tagIdentifier, contentSection, propTree) {
6770
6795
  import_compiler33.types.numericLiteral(i),
6771
6796
  getDebugNames(group.reason)
6772
6797
  ),
6773
- getSerializeGuard(reason, false)
6798
+ getSerializeGuard(section, reason, false)
6774
6799
  )
6775
6800
  );
6776
6801
  } else {
@@ -8038,6 +8063,8 @@ function finalizeReferences() {
8038
8063
  }
8039
8064
  }
8040
8065
  }
8066
+ });
8067
+ forEachSection((section) => {
8041
8068
  forEach(section.referencedLocalClosures, (closure) => {
8042
8069
  addSerializeReason(
8043
8070
  section,
@@ -8046,41 +8073,39 @@ function finalizeReferences() {
8046
8073
  );
8047
8074
  });
8048
8075
  forEach(section.referencedClosures, (closure) => {
8049
- if (!isForceSerialized(closure.section, closure)) {
8050
- const sourceSection = closure.section;
8051
- let serializeReason;
8052
- let currentSection = section;
8053
- while (currentSection !== sourceSection) {
8054
- const upstreamReason = currentSection.downstreamBinding ? getSectionRegisterReasons(currentSection) || void 0 : !currentSection.upstreamExpression || getSerializeSourcesForExpr(currentSection.upstreamExpression);
8055
- if (upstreamReason === true) {
8056
- serializeReason = true;
8057
- break;
8058
- }
8059
- serializeReason = mergeSerializeReasons(
8060
- serializeReason,
8061
- upstreamReason
8062
- );
8063
- currentSection = currentSection.parent;
8076
+ const sourceSection = closure.section;
8077
+ let currentSection = section;
8078
+ let branchesReason;
8079
+ while (currentSection !== sourceSection) {
8080
+ const upstreamReason = currentSection.downstreamBinding ? getSectionRegisterReasons(currentSection) || void 0 : !currentSection.upstreamExpression || getSerializeSourcesForExpr(currentSection.upstreamExpression);
8081
+ if (upstreamReason === true) {
8082
+ branchesReason = true;
8083
+ break;
8064
8084
  }
8065
- addSerializeReason(closure.section, serializeReason, closure);
8085
+ branchesReason = mergeSerializeReasons(branchesReason, upstreamReason);
8086
+ currentSection = currentSection.parent;
8066
8087
  }
8088
+ addSerializeReason(sourceSection, branchesReason, closure);
8067
8089
  addSerializeReason(
8068
- closure.section,
8069
- getSerializeReason(closure.section, closure)
8090
+ sourceSection,
8091
+ getSerializeReason(sourceSection, closure)
8070
8092
  );
8071
- if (closure.sources && isDynamicClosure(section, closure)) {
8072
- addSerializeReason(
8073
- closure.section,
8074
- closure.sources,
8075
- closure,
8076
- getAccessorPrefix().ClosureScopes
8077
- );
8078
- addSerializeReason(
8079
- section,
8080
- closure.sources,
8081
- closure,
8082
- getAccessorPrefix().ClosureSignalIndex
8083
- );
8093
+ if (isDynamicClosure(section, closure)) {
8094
+ addOwnerSerializeReason(section, sourceSection, branchesReason);
8095
+ if (closure.sources) {
8096
+ addSerializeReason(
8097
+ sourceSection,
8098
+ closure.sources,
8099
+ closure,
8100
+ getAccessorPrefix().ClosureScopes
8101
+ );
8102
+ addSerializeReason(
8103
+ section,
8104
+ closure.sources,
8105
+ closure,
8106
+ getAccessorPrefix().ClosureSignalIndex
8107
+ );
8108
+ }
8084
8109
  }
8085
8110
  });
8086
8111
  });
@@ -8705,7 +8730,7 @@ var await_default = {
8705
8730
  node.body.params,
8706
8731
  toFirstExpressionOrBlock(node.body.body)
8707
8732
  ),
8708
- getSerializeGuard(bodySection?.serializeReason, true)
8733
+ getSerializeGuard(section, bodySection?.serializeReason, true)
8709
8734
  )
8710
8735
  )
8711
8736
  )[0].skip();
@@ -10314,10 +10339,12 @@ var IfTag = {
10314
10339
  getParentTag(ifTag).node.extra[kSkipEndTag] = true;
10315
10340
  }
10316
10341
  const statefulSerializeArg = getSerializeGuard(
10342
+ ifTagSection,
10317
10343
  getSerializeReason(ifTagSection, kStatefulReason2),
10318
10344
  !(skipParentEnd || singleNodeOptimization)
10319
10345
  );
10320
10346
  const markerSerializeArg = getSerializeGuard(
10347
+ ifTagSection,
10321
10348
  markerSerializeReason,
10322
10349
  !statefulSerializeArg
10323
10350
  );
@@ -10332,6 +10359,7 @@ var IfTag = {
10332
10359
  getScopeIdIdentifier(ifTagSection),
10333
10360
  getScopeAccessorLiteral(nodeBinding),
10334
10361
  getSerializeGuardForAny(
10362
+ ifTagSection,
10335
10363
  branchSerializeReasons,
10336
10364
  !markerSerializeArg
10337
10365
  ),
@@ -11435,7 +11463,7 @@ var placeholder_default = {
11435
11463
  if (markerSerializeReason === true || markerSerializeReason.state) {
11436
11464
  write`<!>`;
11437
11465
  } else {
11438
- write`${callRuntime("_sep", getSerializeGuard(markerSerializeReason, true))}`;
11466
+ write`${callRuntime("_sep", getSerializeGuard(section, markerSerializeReason, true))}`;
11439
11467
  }
11440
11468
  }
11441
11469
  visit(placeholder, 37 /* Replace */);
@@ -12079,6 +12107,7 @@ var dynamic_tag_default = {
12079
12107
  flushInto(tag);
12080
12108
  writeHTMLResumeStatements(tag.get("body"));
12081
12109
  const serializeArg = getSerializeGuard(
12110
+ tagSection,
12082
12111
  getSerializeReason(tagSection, nodeBinding),
12083
12112
  true
12084
12113
  );
@@ -1,5 +1,6 @@
1
1
  import { types as t } from "@marko/compiler";
2
+ import { type Section } from "./sections";
2
3
  import { type SerializeReason, type SerializeReasons } from "./serialize-reasons";
3
- export declare function getSerializeGuard(reason: undefined | SerializeReason, optional: boolean): t.Expression | undefined;
4
- export declare function getSerializeGuardForAny(reasons: undefined | SerializeReasons, optional: boolean): t.Expression | undefined;
5
- export declare function getExprIfSerialized<T extends undefined | SerializeReason, U extends t.Expression>(reason: T, expr: U): T extends {} ? U : undefined;
4
+ export declare function getSerializeGuard(section: Section, reason: undefined | SerializeReason, optional: boolean): t.Expression | undefined;
5
+ export declare function getSerializeGuardForAny(section: Section, reasons: undefined | SerializeReasons, optional: boolean): t.Expression | undefined;
6
+ export declare function getExprIfSerialized<T extends undefined | SerializeReason, U extends t.Expression>(section: Section, reason: T, expr: U): T extends {} ? U : undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "marko",
3
- "version": "6.0.85",
3
+ "version": "6.0.86",
4
4
  "description": "Optimized runtime for Marko templates.",
5
5
  "keywords": [
6
6
  "api",