Skip to content

Conversation

@rturnq
Copy link
Contributor

@rturnq rturnq commented Dec 3, 2025

No description provided.

@changeset-bot
Copy link

changeset-bot bot commented Dec 3, 2025

🦋 Changeset detected

Latest commit: 6aeb624

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@marko/runtime-tags Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@coderabbitai
Copy link

coderabbitai bot commented Dec 3, 2025

Walkthrough

Adds a changeset for @marko/runtime-tags and bumps a devDependency. Large internal refactor in runtime-tags/dom: many internal renderer/closure property keys renamed; branch-aware await/try flows introduced with per-branch PendingRenders and DetachedAwait; a PendingRender type and queuePendingRender were exported; pendingScopes and rendering state exported. Signals and resume logic updated (closure resumeId support). Test harness changed: resolve utilities converted to ID-driven API (flush, wait, after, resetResolveState) and createBrowser.open() replaced by stream(). Many test fixtures and templates added or updated; translator/util gained new helpers.

Pre-merge checks and finishing touches

❌ Failed checks (1 warning, 1 inconclusive)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 5.17% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
Description check ❓ Inconclusive No pull request description was provided by the author. This is a very lenient check that passes as long as the description is not completely off-topic; without a description, this cannot be assessed. Consider adding a description explaining the motivation, approach, and impact of these changes to help reviewers understand the context.
✅ Passed checks (1 passed)
Check name Status Explanation
Title check ✅ Passed The PR title 'Handle await closures and delay running renders in pending scopes' accurately reflects the main changes—addressing closure handling in await operations and delaying render execution in pending scopes.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch async-render-queues

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
packages/runtime-tags/src/common/accessor.ts (1)

17-43: Enum value collision between PendingRenders and TagVariable

AccessorProp.PendingRenders and AccessorProp.TagVariable both use "T" as the backing string. If these props are used as keys on the same data structure (e.g., branch scopes), they will collide and overwrite each other, breaking tracking for at least one of them.

Assign PendingRenders a unique value that does not conflict with existing members, for example:

 export enum AccessorProp {
@@
-  PendingEffects = "J",
-  PendingRenders = "T",
+  PendingEffects = "J",
+  PendingRenders = "W",
   PlaceholderBranch = "P",

Adjust any debug or tooling enums to mirror whatever value you choose.

🧹 Nitpick comments (8)
packages/runtime-tags/src/__tests__/fixtures/await-closure/template.marko (1)

1-7: Consider removing debugger from the click handler

The onClick handler currently includes debugger;, which is probably a leftover from manual debugging and can interrupt automated runs when dev tools are attached. You can simplify it to just increment value:

-button onClick() { debugger; value++ } -- ${value}
+button onClick() { value++ } -- ${value}
packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/test.ts (1)

3-3: Verify the need for consecutive identical wait calls.

The steps array includes two consecutive wait(2) calls. If both are intentional for testing specific timing or state transitions, consider adding a comment to clarify the purpose.

packages/runtime-tags/src/__tests__/fixtures/await-closure-within/template.marko (1)

5-9: Verify the conditional logic intent.

The value variable is initialized to 1 (line 5), but the conditional at line 8 checks if=(value > 0). Since value starts at 1, this condition will always be true. If this is testing specific closure behavior with await, consider adding a comment to clarify the intent.

packages/runtime-tags/src/__tests__/main.test.ts (3)

478-528: Log comparison logic is complex but functional.

The normalization approach (normalizeLog) and the sequential matching algorithm work correctly for comparing resume vs CSR logs. However, the variable name prevResumLog has a typo (missing 'e' in "Resume").

- let prevResumLog = "";
+ let prevResumeLog = "";

  while (resumeIndex < resumeLogs.length) {
    const resumeLog = resumeLogs[resumeIndex++].replace(
      /(# Render)[^\n]+/,
      "$1",
    );
-   if (resumeLog !== prevResumLog) {
+   if (resumeLog !== prevResumeLog) {
      // ...
    }
-   prevResumLog = resumeLog;
+   prevResumeLog = resumeLog;
  }

530-554: Commented-out code should be removed if no longer needed.

This block appears to be legacy logic that's been replaced by the new normalization approach above. If it's not expected to be reactivated, consider removing it to reduce maintenance burden.


376-409: Consider extracting runSteps to avoid closure complexity.

The runSteps function is defined inside the async IIFE and captures hasFlush, flushNext, tracker, input, and steps from the outer scope. While functional, this nested async function pattern can be harder to test and debug independently.

packages/runtime-tags/src/dom/control-flow.ts (2)

158-160: Remove or finalize commented-out code.

Lines 158-160 contain commented-out code that appears to be work-in-progress. If this is intentional pending effects tracking, consider adding a TODO comment explaining the intent. Otherwise, remove it to avoid confusion.


197-215: Duplicate effect filtering is O(n*m) - consider efficiency.

The logic iterates through pendingEffects to build a map (Lines 200-207), then filters effects against it (Lines 208-214). For large effect lists, this could be slow. Consider using a single Set with composite keys if performance becomes an issue.

That said, for typical use cases this is likely fine. Flagging as optional.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6709f4c and 49cb1f2.

⛔ Files ignored due to path filters (140)
  • package-lock.json is excluded by !**/package-lock.json and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/dom.expected/tags/recurse.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/html.expected/tags/recurse.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
📒 Files selected for processing (48)
  • .changeset/open-facts-obey.md (1 hunks)
  • .sizes.json (5 hunks)
  • .sizes/dom.js (23 hunks)
  • .sizes/name-cache.json (1 hunks)
  • package.json (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/tags/recurse.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-state/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/main.test.ts (6 hunks)
  • packages/runtime-tags/src/__tests__/utils/create-browser.ts (2 hunks)
  • packages/runtime-tags/src/__tests__/utils/resolve.ts (1 hunks)
  • packages/runtime-tags/src/common/accessor.debug.ts (1 hunks)
  • packages/runtime-tags/src/common/accessor.ts (1 hunks)
  • packages/runtime-tags/src/common/types.ts (3 hunks)
  • packages/runtime-tags/src/dom/control-flow.ts (5 hunks)
  • packages/runtime-tags/src/dom/queue.ts (6 hunks)
  • packages/runtime-tags/src/dom/resume.ts (3 hunks)
  • packages/runtime-tags/src/dom/signals.ts (2 hunks)
  • packages/runtime-tags/src/translator/core/try.ts (3 hunks)
  • packages/runtime-tags/src/translator/util/optional.ts (1 hunks)
  • packages/runtime-tags/src/translator/util/signals.ts (4 hunks)
🧰 Additional context used
🧬 Code graph analysis (24)
packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/dom/resume.ts (4)
.sizes/dom.js (13)
  • branch (125-125)
  • branch (848-849)
  • branch (1708-1713)
  • branch (1933-1934)
  • branch (1973-1976)
  • render (1803-1804)
  • i (28-28)
  • i (758-758)
  • i (983-983)
  • i (1004-1004)
  • i (1755-1755)
  • i (1799-1799)
  • i (1806-1808)
packages/runtime-tags/src/common/types.ts (2)
  • BranchScope (6-19)
  • AccessorProp (50-50)
packages/runtime-tags/src/html/writer.ts (1)
  • render (1183-1195)
packages/runtime-tags/src/dom/compat.ts (1)
  • render (74-111)
packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/test.ts (4)
.sizes/dom.js (2)
  • steps (35-35)
  • steps (41-41)
packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/fixtures/await-closure/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/test.ts (3)
packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/html/writer.ts (1)
  • flush (1045-1055)
packages/runtime-tags/src/__tests__/fixtures/await-closure-within/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/fixtures/placeholder-single/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/main.test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (3)
  • isFlush (22-24)
  • isWait (18-20)
  • resolveAfter (30-36)
packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/test.ts (3)
packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/html/writer.ts (1)
  • flush (1045-1055)
packages/runtime-tags/src/__tests__/fixtures/async-state/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/test.ts (6)
.sizes/dom.js (2)
  • steps (35-35)
  • steps (41-41)
packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/html/writer.ts (1)
  • flush (1045-1055)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/utils/create-browser.ts (3)
packages/runtime-class/src/translator/taglib/core/parse-module-code.js (1)
  • fn (14-14)
packages/runtime-tags/src/dom/walker.ts (1)
  • walker (13-13)
.sizes/dom.js (1)
  • node (167-167)
packages/runtime-tags/src/dom/control-flow.ts (7)
packages/runtime-tags/src/common/types.ts (3)
  • BranchScope (6-19)
  • AccessorProp (50-50)
  • Scope (20-32)
packages/runtime-tags/src/dom/scope.ts (4)
  • findBranchWithKey (27-36)
  • removeAndDestroyBranch (55-61)
  • insertBranchBefore (63-74)
  • tempDetachBranch (76-91)
packages/runtime-tags/src/dom/queue.ts (9)
  • queueEffect (60-65)
  • pendingEffects (19-19)
  • runEffects (104-108)
  • placeholderShown (18-18)
  • prepareEffects (82-102)
  • queueRender (24-46)
  • pendingScopes (20-20)
  • PendingRender (7-12)
  • queuePendingRender (48-58)
packages/runtime-tags/src/dom/renderer.ts (5)
  • createAndSetupBranch (57-67)
  • Renderer (16-25)
  • setupBranch (69-74)
  • _content (76-119)
  • createBranch (29-55)
packages/runtime-tags/src/dom/schedule.ts (1)
  • schedule (6-20)
packages/runtime-tags/src/common/helpers.ts (1)
  • decodeAccessor (100-101)
packages/runtime-tags/src/dom.ts (1)
  • _content (56-56)
packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/common/types.ts (2)
packages/runtime-tags/src/dom/queue.ts (1)
  • PendingRender (7-12)
packages/runtime-tags/src/dom/renderer.ts (1)
  • Renderer (16-25)
packages/runtime-tags/src/__tests__/fixtures/await-tag/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
🪛 ast-grep (0.40.0)
packages/runtime-tags/src/__tests__/utils/create-browser.ts

[warning] 84-84: Direct HTML content assignment detected. Modifying innerHTML, outerHTML, or using document.write with unsanitized content can lead to XSS vulnerabilities. Use secure alternatives like textContent or sanitize HTML with libraries like DOMPurify.
Context: document.write(chunks[0])
Note: [CWE-79] Improper Neutralization of Input During Web Page Generation [REFERENCES]
- https://www.dhairyashah.dev/posts/why-innerhtml-is-a-bad-idea-and-how-to-avoid-it/
- https://cwe.mitre.org/data/definitions/79.html

(unsafe-html-content-assignment)


[warning] 84-84: Direct modification of innerHTML or outerHTML properties detected. Modifying these properties with unsanitized user input can lead to XSS vulnerabilities. Use safe alternatives or sanitize content first.
Context: document.write(chunks[0])
Note: [CWE-79] Improper Neutralization of Input During Web Page Generation [REFERENCES]
- https://owasp.org/www-community/xss-filter-evasion-cheatsheet
- https://cwe.mitre.org/data/definitions/79.html

(dom-content-modification)

@rturnq rturnq force-pushed the async-render-queues branch 2 times, most recently from 922d7a4 to 88d2d3e Compare December 3, 2025 22:49
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

♻️ Duplicate comments (1)
packages/runtime-tags/src/__tests__/utils/create-browser.ts (1)

74-76: Address the empty script tag edge case.

As noted in the past review comment, calling walker.nextNode() unconditionally after a script element can skip the next sibling when the script is empty. For empty script tags with no children, walker.nextNode() will move to the next sibling instead of staying within the script's descendants (because there are none).

Apply this diff to fix the edge case:

           if (isScript) {
-            walker.nextNode();
+            if (node.hasChildNodes()) {
+              walker.nextNode();
+            }
           }
🧹 Nitpick comments (2)
packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/test.ts (1)

1-5: Steps/flush wiring looks correct; consider clarifying the comment

The import and steps sequence ({}, wait(1), flush) fit the new async/flush testing pattern, and skip_equivalent = true makes sense for this streaming-specific behavior. As a tiny nit, you might rephrase the comment on Line 5 to more explicitly describe the scenario (e.g., “// parent removed before flush” or similar), to make the intent clearer to future readers.

packages/runtime-tags/src/__tests__/main.test.ts (1)

494-494: Minor typo: prevResumLog should be prevResumeLog.

The variable name is missing an "e" for consistency with resumeLog and resumeLogs.

-          let prevResumLog = "";
+          let prevResumeLog = "";

Also update the usages on lines 501 and 521:

-            if (resumeLog !== prevResumLog) {
+            if (resumeLog !== prevResumeLog) {
-            prevResumLog = resumeLog;
+            prevResumeLog = resumeLog;
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 49cb1f2 and 88d2d3e.

⛔ Files ignored due to path filters (140)
  • package-lock.json is excluded by !**/package-lock.json and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/dom.expected/tags/recurse.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/html.expected/tags/recurse.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
📒 Files selected for processing (40)
  • .changeset/open-facts-obey.md (1 hunks)
  • .sizes.json (3 hunks)
  • .sizes/comments.ssr/entry.js (1 hunks)
  • .sizes/counter.ssr/entry.js (1 hunks)
  • .sizes/dom.js (23 hunks)
  • .sizes/name-cache.json (1 hunks)
  • package.json (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/tags/recurse.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-state/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/main.test.ts (6 hunks)
  • packages/runtime-tags/src/__tests__/utils/create-browser.ts (2 hunks)
  • packages/runtime-tags/src/__tests__/utils/resolve.ts (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (22)
  • .sizes/comments.ssr/entry.js
  • packages/runtime-tags/src/tests/fixtures/await-closure-within/test.ts
  • .sizes/counter.ssr/entry.js
  • packages/runtime-tags/src/tests/fixtures/placeholders-nested/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-tag/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-update-after-resume/template.marko
  • packages/runtime-tags/src/tests/fixtures/await-closure-inert/test.ts
  • package.json
  • packages/runtime-tags/src/tests/fixtures/async-deep-recursive/test.ts
  • packages/runtime-tags/src/tests/utils/resolve.ts
  • packages/runtime-tags/src/tests/fixtures/async-deep-recursive/tags/recurse.marko
  • .changeset/open-facts-obey.md
  • packages/runtime-tags/src/tests/fixtures/await-closure-in-order/template.marko
  • packages/runtime-tags/src/tests/fixtures/async-multi-resolve-in-order-and-update/test.ts
  • .sizes.json
  • packages/runtime-tags/src/tests/fixtures/await-closure-inert/template.marko
  • packages/runtime-tags/src/tests/fixtures/async-reorder-nested-batched-resolve/test.ts
  • packages/runtime-tags/src/tests/fixtures/async-resolve-out-of-order/test.ts
  • packages/runtime-tags/src/tests/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/test.ts
  • packages/runtime-tags/src/tests/fixtures/async-reject-then-resolve-isolated-boundaries/test.ts
  • packages/runtime-tags/src/tests/fixtures/placeholder-single/test.ts
  • packages/runtime-tags/src/tests/fixtures/async-state/test.ts
🧰 Additional context used
🧬 Code graph analysis (10)
packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/main.test.ts (2)
packages/runtime-tags/src/__tests__/utils/resolve.ts (3)
  • isFlush (22-24)
  • isWait (18-20)
  • resolveAfter (30-36)
packages/runtime-tags/src/__tests__/utils/track-mutations.ts (2)
  • createMutationTracker (10-118)
  • log (41-46)
packages/runtime-tags/src/__tests__/fixtures/await-closure/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/fixtures/try-effects-async/test.ts (3)
.sizes/dom.js (2)
  • steps (35-35)
  • steps (41-41)
packages/runtime-tags/src/__tests__/fixtures/try-effects-catch-state/test.ts (1)
  • steps (1-1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/test.ts (3)
packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/html/writer.ts (1)
  • flush (1045-1055)
packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
🪛 ast-grep (0.40.0)
packages/runtime-tags/src/__tests__/utils/create-browser.ts

[warning] 84-84: Direct HTML content assignment detected. Modifying innerHTML, outerHTML, or using document.write with unsanitized content can lead to XSS vulnerabilities. Use secure alternatives like textContent or sanitize HTML with libraries like DOMPurify.
Context: document.write(chunks[0])
Note: [CWE-79] Improper Neutralization of Input During Web Page Generation [REFERENCES]
- https://www.dhairyashah.dev/posts/why-innerhtml-is-a-bad-idea-and-how-to-avoid-it/
- https://cwe.mitre.org/data/definitions/79.html

(unsafe-html-content-assignment)


[warning] 84-84: Direct modification of innerHTML or outerHTML properties detected. Modifying these properties with unsanitized user input can lead to XSS vulnerabilities. Use safe alternatives or sanitize content first.
Context: document.write(chunks[0])
Note: [CWE-79] Improper Neutralization of Input During Web Page Generation [REFERENCES]
- https://owasp.org/www-community/xss-filter-evasion-cheatsheet
- https://cwe.mitre.org/data/definitions/79.html

(dom-content-modification)

🪛 GitHub Actions: CI
packages/runtime-tags/src/__tests__/main.test.ts

[error] 447-447: AssertionError in interop- Event handler: Render body tags to class (CSR). Snapshot mismatch or runtime divergence detected during CSR path in interop tests.


[error] 461-461: AssertionError in interop- Event handler: Render body tags to class (CSR). CSR path failure observed in interop tests.


[error] 473-473: AssertionError in interop- Nested tags to class: CSR path mismatch in interop tests.

🔇 Additional comments (28)
packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/test.ts (1)

1-5: Fixture update aligns with new async/flush test pattern

Importing flush alongside wait and wiring steps = [{}, flush, wait(2)] plus skip_equivalent = true matches the in-order streaming fixture pattern used elsewhere. This looks consistent and correct for the async reject scenario.

packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/test.ts (1)

1-5: Async test steps and skip_equivalent flag look consistent and correct

Importing flush alongside wait and updating steps to [{}, flush, wait(2)], plus skip_equivalent = true for in-order streaming, matches the pattern used in related async fixtures and keeps the test harness contract intact. No issues from a correctness or clarity standpoint.

.sizes/name-cache.json (1)

1-1: No typo found—review comment from prior iteration was incorrect.

A search of the codebase reveals no instances of the "Detatched" misspelling. The property is correctly spelled "DetachedAwait" throughout the source code (e.g., in packages/runtime-tags/src/common/accessor.ts and referenced in control-flow logic). The name-cache.json mappings are consistent with the correct spelling.

packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/test.ts (1)

1-3: Flush step sequencing in this fixture looks consistent with other async tests

Importing flush from ../../utils/resolve and inserting it between wait(1) and wait(2) matches the pattern used in other fixtures (for example, packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/test.ts, line 2) and aligns with the wait helper contract from packages/runtime-tags/src/__tests__/utils/resolve.ts, lines 3-7. I don’t see any issues with this step sequence.

packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/test.ts (3)

1-1: LGTM!

The flush import is correctly added and used in the steps array.


3-3: LGTM!

The addition of flush before the wait step aligns with the PR's in-order streaming pattern and provides explicit control over pending operation processing.


5-5: LGTM!

The skip_equivalent flag appropriately indicates that this test uses in-order streaming semantics, consistent with the pattern applied across other fixtures in this PR.

packages/runtime-tags/src/__tests__/fixtures/try-effects-async/test.ts (1)

1-3: Flush-based step sequencing looks consistent and correct

Importing flush from ../../utils/resolve and inserting it as the second step before the first wait(1)/click pair matches the updated async/streaming test pattern used in related fixtures; the resulting sequence is coherent and should exercise the new flush behavior without altering the intended interactions.

packages/runtime-tags/src/__tests__/fixtures/await-closure-within/template.marko (1)

1-9: LGTM – fixture cleanly exercises await + closure behavior with placeholder

Import, await usage, local value state, click handler, and conditional span all align with an async/streaming regression fixture: you get a loading placeholder while resolveAfter(0, 1) is pending, then verify that the awaited block’s closure still sees and updates value correctly. I don’t see any issues to block this from landing.

packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/template.marko (4)

3-3: LGTM: Async script introduces test-appropriate timing.

The change from immediate assignment to await resolveAfter(1) before setting value = 1 correctly introduces asynchronous behavior for testing the await/update/resume flow.


7-7: LGTM: Await expression correctly structured.

The await|value|=resolveAfter(value, 2) syntax properly awaits the promise and assigns the result, with appropriate placeholder fallback.


11-11: LGTM: Log element properly defined.

The pre/$log element correctly creates a reference for the logging scripts and uses an appropriate element type for preserving formatted log output.


9-10: Verify test assertions match the new logging approach.

The refactored logging scripts correctly append to the centralized $log element. However, since this replaces previous DOM updates to separate inside/outside elements, ensure that the corresponding test assertions have been updated to check the log output instead.

Verify that the test expectations in the corresponding test file check for the new log output format:

#!/bin/bash
# Description: Check if test expectations match the new logging output

# Find the test file for this fixture
fd -t f "test\.ts|test\.js|\.test\." packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/

# Show the test expectations to verify they check for log output
rg -A 10 "await-update-before-resume" packages/runtime-tags/src/__tests__/
.sizes/dom.js (5)

770-786: LGTM: Optional resumeId parameter added.

The _closure_get function signature has been extended with an optional resumeId parameter. This is used to register the closure signal for resumption (line 784). Since the parameter is optional and checked before use, this change is backward compatible.


1-1: This is an intentionally tracked bundle size metric file.

The .sizes/dom.js file is not a stray build artifact but rather an intentionally committed file used to track bundle size changes. There's a dedicated build:sizes script in package.json that generates these outputs. While reviewing minified code is challenging, this file serves a legitimate purpose in the monorepo's CI pipeline for monitoring runtime package sizes. Focus verification on the source changes (in packages/runtime-tags/ or related source files) that generated this output rather than the minified code itself.


79-79: This file is a size-optimized build artifact, not source code requiring verification across the codebase.

The .sizes/dom.js file is a minified/obfuscated output file generated as part of the build process to measure size impact. The property renames (g→f, o→n, u→t) are minification transformations, not refactoring of live source code. Searches of the actual source codebase found no references to the old property patterns (instance.g, instance.o, instance.u, renderer.g), confirming that no inconsistencies exist in the runtime code itself. This is working as designed for size optimization.

Likely an incorrect or invalid review comment.


1740-1799: LGTM: Async render tracking and heap ordering verified.

The rendering queue refactoring correctly introduces asyncRendersLookup for tracking renders deferred by pending awaits. The implementation maintains the following invariants:

  • Heap insertion (queuePendingRender): Sift-up with parent index (i-1)>>1 maintains min-heap property where render.a - parent.a >= 0
  • Heap extraction (runRenders): Sift-down with proper child selection maintains min-heap ordering on render.a values
  • Lookup swapping: In run(), async renders are captured in the separate map then merged back; in prepareEffects(), maps are swapped to maintain render isolation during effect preparation
  • Deferred render tracking: Line 1864 correctly stores renders in asyncRendersLookup when in pending await scopes
  • Property renames are systematic: a (key), g (scope), u (signal), o (value)

1188-1318: Test coverage for the refactored async promise handling is comprehensive and adequate.

The codebase includes extensive test fixtures specifically for await scenarios, including await-update-after-resume, try-effects-async, and await-closure-in-order. These fixtures verify:

  • Multiple awaits within try blocks with effects setup/teardown
  • Placeholder rendering during pending awaits
  • Error handling with @catch in await contexts
  • Value updates and closure handling after promise resolution
  • Rapid interaction sequences (e.g., multiple button clicks triggering new promises)

The test infrastructure supports multiple render modes (SSR, CSR, resume/hydrate), DOM mutation tracking, and step-based interaction testing with snapshot verification. The refactored logic for tracking await counters, managing placeholder branches, and deduplicating effects is exercised through these existing fixtures.

packages/runtime-tags/src/__tests__/fixtures/await-closure/template.marko (1)

1-7: LGTM!

This test fixture correctly demonstrates the await-closure pattern: a reactive value is declared, mutated via button click, and captured within the async await block to verify closure behavior during pending renders.

packages/runtime-tags/src/__tests__/fixtures/await-closure/test.ts (1)

3-12: Consider whether skip_equivalent should be exported.

The sibling fixture await-closure-in-order/test.ts exports skip_equivalent = true for in-order streaming semantics. If this fixture also tests in-order streaming behavior, it may need the same flag for consistency.

packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/test.ts (1)

1-3: LGTM!

The test fixture correctly defines steps for testing await updates after resume with flush and wait sequencing.

packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/test.ts (1)

1-5: LGTM!

The updated steps with two flush entries before wait(3) correctly model in-order streaming behavior, and skip_equivalent = true appropriately flags that resume and CSR paths may differ due to streaming semantics.

packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts (1)

1-18: LGTM!

The fixture correctly tests await-closure behavior with in-order streaming, using interleaved wait, click, and flush steps. The skip_equivalent flag appropriately indicates streaming-specific behavior.

packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/test.ts (1)

1-5: LGTM!

Three flush entries correctly model the nested async resolution order, with each flush corresponding to a level in the nested structure.

packages/runtime-tags/src/__tests__/main.test.ts (2)

243-256: LGTM!

The streaming API refactor using browser.stream(chunks) with a flushNext controller is cleaner than the previous open/close pattern. The loop correctly advances through chunks with microtask pauses.


376-409: LGTM!

The runSteps function cleanly orchestrates the resume path with proper handling of wait, flush, and function updates. The auto-flush loop at lines 403-408 ensures all pending flushes are processed after explicit steps complete.

packages/runtime-tags/src/__tests__/utils/create-browser.ts (2)

6-6: LGTM! API change aligns with new streaming approach.

The type signature correctly defines the new stream method that returns a continuation function, replacing the previous open/close API.


27-45: LGTM! Clean queue-based RAF implementation.

The batching logic correctly groups all callbacks scheduled in the same event loop iteration and executes them with a consistent timestamp, which is appropriate for a test environment.

@rturnq rturnq force-pushed the async-render-queues branch from 88d2d3e to 520271a Compare December 4, 2025 00:11
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
packages/runtime-tags/src/common/accessor.ts (1)

36-42: Enum value collision: PendingRenders and TagVariable both use "T".

Both PendingRenders = "T" (line 36) and TagVariable = "T" (line 41) share the same string value. While these properties are currently used on different branch objects in different code paths, this collision creates a maintenance risk. If either property is later used in a shared context or if the code evolves, they will silently overwrite each other on the same scope object.

Assign a unique value to PendingRenders:

-  PendingRenders = "T",
+  PendingRenders = "W",
♻️ Duplicate comments (4)
package.json (1)

69-69: Version [email protected] may not exist on npm.

This issue was already flagged in a previous review. Ensure version 5.0.1 is published before merging, or revert to ^5.0.0.

packages/runtime-tags/src/__tests__/main.test.ts (1)

524-528: Fallback comparison handles edge case when no logs match.

This is consistent with the past review comment. The fallback to raw log comparison when !expected && actual ensures tests don't silently pass when the matching algorithm fails to correlate any logs. This seems like a reasonable safety net.

packages/runtime-tags/src/__tests__/utils/create-browser.ts (2)

69-69: Add type guard before accessing tagName property.

The code assumes node is an Element, but TreeWalker can return any Node type. While this works because non-Element nodes return undefined for tagName (making isScript false), it's safer to add an explicit type check.

-          const isScript = (node as Element).tagName === "SCRIPT";
+          const isScript = node.nodeType === 1 && (node as Element).tagName === "SCRIPT";

74-76: Edge case: walker.nextNode() may skip wrong node for empty scripts.

For empty <script></script> tags, calling walker.nextNode() skips the next sibling instead of script content. While uncommon in test fixtures, consider guarding this.

           if (isScript) {
-            walker.nextNode();
+            if (node.hasChildNodes()) {
+              walker.nextNode();
+            }
           }
🧹 Nitpick comments (9)
packages/runtime-tags/src/__tests__/fixtures/placeholder-single/test.ts (1)

3-3: steps sequence with double flush appears intentional but could use a hint

Using [{}, flush, flush, wait(2)] makes sense for exercising multiple streaming flush passes before the final timed wait; if this is tied to a specific regression, consider a brief comment explaining why two flushes are required to avoid future confusion.

packages/runtime-tags/src/translator/util/optional.ts (1)

246-251: some helper looks correct and consistent; one optional simplification

The implementation matches the rest of this helper module (same Opt<T> handling and index semantics) and correctly mirrors Array.prototype.some for the array case and the singleton case via !!cb(data, 0).

If you want to reduce duplication and keep behavior aligned with find, you could optionally implement some in terms of find:

-export function some<T>(
-  data: Opt<T>,
-  cb: (item: T, index: number) => boolean,
-): boolean {
-  return data ? (Array.isArray(data) ? data.some(cb) : !!cb(data, 0)) : false;
-}
+export function some<T>(
+  data: Opt<T>,
+  cb: (item: T, index: number) => boolean,
+): boolean {
+  return !!find(data, cb);
+}

This keeps all the iteration/Opt<T> edge cases in one place but is purely an optional cleanup; current code is fine as-is.

packages/runtime-tags/src/translator/util/signals.ts (2)

247-268: Minor cleanup in closure signal builder usage

The closure branch logic looks correct (canonical binding, avoiding closureSignalBuilder for dynamic closures, and passing an optional resume id into _closure_get). One small improvement: you already store const closureSignalBuilder = getClosureSignalBuilder(section); but then ignore it and call getClosureSignalBuilder(section)! again inside the if. Using the local variable avoids the extra lookup and reads more clearly:

- const closureSignalBuilder = getClosureSignalBuilder(section);
-
- if (closureSignalBuilder && !isDynamicClosure(section, closure)) {
-   return getClosureSignalBuilder(section)!(closure, render);
- }
+ const closureSignalBuilder = getClosureSignalBuilder(section);
+
+ if (closureSignalBuilder && !isDynamicClosure(section, closure)) {
+   return closureSignalBuilder(closure, render);
+ }

1041-1062: Dynamic closure resume vs subscribe under placeholders—double‑check getSerializeReason(section)

The new branch for dynamic closures under a try placeholder:

  • Skips _subscribe(...) whenever underTryPlaceholder(section) is true.
  • Emits a _script(scopeId, resumeId) only if const reason = getSerializeReason(section) is truthy.

Two things to verify here:

  1. Signature/semantics of getSerializeReason: Everywhere else it’s called with a second argument (binding or accessor). Calling getSerializeReason(section) with just the section must be supported and should return a section‑level reason; otherwise this will either be a type error or always undefined, and the _script will never be emitted.
  2. Coverage when reason is falsy: In the underTryPlaceholder(section) branch, if reason is falsy you get neither the _script nor the _subscribe hook, so dynamic closures in that scope would have no resume/subscription path at all. If the intention is “delay running renders but always wire a resume hook,” consider basing reason on the same section‑level decision used later (section.serializeReason / sectionSerializeReason) or unconditionally emitting the _script and letting getExprIfSerialized handle gating.

For example, you might reuse the section serialize reason:

- if (underTryPlaceholder(section)) {
-   const reason = getSerializeReason(section);
-   if (reason) {
-     getHTMLSectionStatements(section).push(
-       t.expressionStatement(
-         getExprIfSerialized(
-           section,
-           reason,
-           callRuntime(
-             "_script",
-             getScopeIdIdentifier(section),
-             t.stringLiteral(getResumeRegisterId(section, closure)),
-           ),
-         ),
-       ),
-     );
-   }
- } else {
+ if (underTryPlaceholder(section)) {
+   const reason = section.serializeReason ?? true;
+   getHTMLSectionStatements(section).push(
+     t.expressionStatement(
+       getExprIfSerialized(
+         section,
+         reason,
+         callRuntime(
+           "_script",
+           getScopeIdIdentifier(section),
+           t.stringLiteral(getResumeRegisterId(section, closure)),
+         ),
+       ),
+     ),
+   );
+ } else {
   addWriteScopeBuilder(section, (expr) =>
     callRuntime("_subscribe", identifier, expr),
   );
 }

(adjusting reason to whatever section‑level value is actually intended).

packages/runtime-tags/src/common/types.ts (1)

1-2: Consider simplifying the redundant import.

Renderer is imported twice on line 2: once as ClientRenderer and once as Renderer. Since Renderer is directly used on line 18 for DetachedAwait, the alias may be unnecessary.

-import type { Renderer as ClientRenderer, Renderer } from "../dom/renderer";
+import type { Renderer } from "../dom/renderer";

Then update line 13 to use Renderer instead of ClientRenderer, or keep both if the semantic distinction aids readability.

packages/runtime-tags/src/dom/queue.ts (1)

16-16: Clarify the semantics of asyncRendersLookup initialization states.

The type typeof pendingRendersLookup | undefined | 0 uses 0 as a sentinel. While this works, consider documenting why 0 is used instead of just undefined to distinguish "not initialized" from "cleared after run."

packages/runtime-tags/src/__tests__/main.test.ts (1)

494-494: Typo: prevResumLog should be prevResumeLog.

This is a minor typo that doesn't affect functionality but impacts readability.

-          let prevResumLog = "";
+          let prevResumeLog = "";

And update the usages at lines 501 and 521:

-            if (resumeLog !== prevResumLog) {
+            if (resumeLog !== prevResumeLog) {
...
-            prevResumLog = resumeLog;
+            prevResumeLog = resumeLog;
packages/runtime-tags/src/__tests__/fixtures/await-closure/test.ts (1)

14-16: Non-null assertion could throw if button is not found.

The click helper function uses the non-null assertion operator (!) on line 15, which will throw a runtime error if no button exists in the container. While this may be intentional for tests (fail fast if structure is wrong), consider whether a more descriptive error message would be helpful for debugging.

Apply this diff to add a more descriptive error:

 function click(container: Element) {
-  container.querySelector("button")!.click();
+  const button = container.querySelector("button");
+  if (!button) {
+    throw new Error("Expected button element not found in container");
+  }
+  button.click();
 }
packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts (1)

16-18: Non-null assertion could throw if button is not found.

The click helper function uses the non-null assertion operator (!) on line 17, which will throw a runtime error if no button exists in the container. While this may be intentional for tests (fail fast if structure is wrong), consider whether a more descriptive error message would be helpful for debugging.

Apply this diff to add a more descriptive error:

 function click(container: Element) {
-  container.querySelector("button")!.click();
+  const button = container.querySelector("button");
+  if (!button) {
+    throw new Error("Expected button element not found in container");
+  }
+  button.click();
 }
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 88d2d3e and 520271a.

⛔ Files ignored due to path filters (142)
  • package-lock.json is excluded by !**/package-lock.json and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/dom.expected/tags/recurse.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/html.expected/tags/recurse.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/script-tag-value-no-scope/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/script-tag-value-no-scope/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
📒 Files selected for processing (51)
  • .changeset/open-facts-obey.md (1 hunks)
  • .sizes.json (3 hunks)
  • .sizes/comments.ssr/entry.js (1 hunks)
  • .sizes/counter.ssr/entry.js (1 hunks)
  • .sizes/dom.js (21 hunks)
  • .sizes/name-cache.json (1 hunks)
  • package.json (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/tags/recurse.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-state/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/script-tag-value-no-scope/template.marko (0 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/main.test.ts (6 hunks)
  • packages/runtime-tags/src/__tests__/utils/create-browser.ts (2 hunks)
  • packages/runtime-tags/src/__tests__/utils/resolve.ts (1 hunks)
  • packages/runtime-tags/src/common/accessor.debug.ts (1 hunks)
  • packages/runtime-tags/src/common/accessor.ts (1 hunks)
  • packages/runtime-tags/src/common/types.ts (3 hunks)
  • packages/runtime-tags/src/dom/control-flow.ts (5 hunks)
  • packages/runtime-tags/src/dom/queue.ts (6 hunks)
  • packages/runtime-tags/src/dom/resume.ts (2 hunks)
  • packages/runtime-tags/src/dom/signals.ts (2 hunks)
  • packages/runtime-tags/src/translator/core/try.ts (3 hunks)
  • packages/runtime-tags/src/translator/util/optional.ts (1 hunks)
  • packages/runtime-tags/src/translator/util/signals.ts (4 hunks)
💤 Files with no reviewable changes (1)
  • packages/runtime-tags/src/tests/fixtures/script-tag-value-no-scope/template.marko
🚧 Files skipped from review as they are similar to previous changes (22)
  • packages/runtime-tags/src/tests/fixtures/await-update-before-resume/template.marko
  • .sizes/counter.ssr/entry.js
  • packages/runtime-tags/src/tests/fixtures/await-update-before-resume/test.ts
  • packages/runtime-tags/src/translator/core/try.ts
  • .changeset/open-facts-obey.md
  • packages/runtime-tags/src/tests/fixtures/async-nested-resolve-in-order/test.ts
  • packages/runtime-tags/src/tests/fixtures/async-reorder-nested-batched-resolve/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-closure-inert/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-tag/test.ts
  • packages/runtime-tags/src/tests/utils/resolve.ts
  • packages/runtime-tags/src/tests/fixtures/async-reject-then-resolve-isolated-boundaries/test.ts
  • packages/runtime-tags/src/common/accessor.debug.ts
  • packages/runtime-tags/src/tests/fixtures/await-remove-parent/test.ts
  • packages/runtime-tags/src/dom/resume.ts
  • packages/runtime-tags/src/tests/fixtures/async-resolve-out-of-order/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-closure-within/template.marko
  • packages/runtime-tags/src/tests/fixtures/await-closure-in-order/template.marko
  • packages/runtime-tags/src/tests/fixtures/try-effects-async/test.ts
  • packages/runtime-tags/src/tests/fixtures/async-state/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-closure-inert/template.marko
  • packages/runtime-tags/src/tests/fixtures/await-update-after-resume/template.marko
  • packages/runtime-tags/src/tests/fixtures/catch-single-success-async/test.ts
🧰 Additional context used
🧬 Code graph analysis (16)
packages/runtime-tags/src/dom/signals.ts (4)
packages/runtime-tags/src/dom/resume.ts (1)
  • _resume (316-318)
packages/runtime-tags/src/dom.ts (1)
  • _resume (58-58)
packages/runtime-tags/src/html/writer.ts (1)
  • _resume (164-176)
.sizes/dom.js (1)
  • closureSignal (765-773)
packages/runtime-tags/src/__tests__/fixtures/await-closure/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/fixtures/await-closure-within/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/fixtures/placeholder-single/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/utils/create-browser.ts (2)
packages/runtime-tags/src/dom/walker.ts (1)
  • walker (13-13)
.sizes/dom.js (2)
  • node (167-167)
  • clone (865-894)
packages/runtime-tags/src/common/types.ts (2)
packages/runtime-tags/src/dom/queue.ts (1)
  • PendingRender (7-12)
packages/runtime-tags/src/dom/renderer.ts (1)
  • Renderer (16-25)
packages/runtime-tags/src/dom/queue.ts (4)
.sizes/dom.js (21)
  • render (1798-1799)
  • key (1742-1743)
  • value (155-159)
  • value (1077-1077)
  • scope (118-118)
  • i (28-28)
  • i (751-751)
  • i (979-979)
  • i (1000-1000)
  • i (1750-1750)
  • i (1794-1794)
  • i (1801-1803)
  • parentIndex (1752-1753)
  • parent (1172-1174)
  • effects (1763-1763)
  • prevRenders (1776-1778)
  • branch (125-125)
  • branch (841-842)
  • branch (1703-1708)
  • branch (1928-1929)
  • branch (1968-1971)
packages/runtime-tags/src/dom/compat.ts (1)
  • render (74-111)
packages/runtime-tags/src/dom/template.ts (2)
  • value (130-132)
  • value (133-135)
packages/runtime-tags/src/common/types.ts (1)
  • AccessorProp (50-50)
packages/runtime-tags/src/__tests__/main.test.ts (2)
packages/runtime-tags/src/__tests__/utils/resolve.ts (3)
  • isFlush (22-24)
  • isWait (18-20)
  • resolveAfter (30-36)
packages/runtime-tags/src/__tests__/utils/track-mutations.ts (2)
  • createMutationTracker (10-118)
  • log (41-46)
packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/test.ts (4)
.sizes/dom.js (2)
  • steps (35-35)
  • steps (41-41)
packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/html/writer.ts (1)
  • flush (1045-1055)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
🪛 ast-grep (0.40.0)
packages/runtime-tags/src/__tests__/utils/create-browser.ts

[warning] 84-84: Direct HTML content assignment detected. Modifying innerHTML, outerHTML, or using document.write with unsanitized content can lead to XSS vulnerabilities. Use secure alternatives like textContent or sanitize HTML with libraries like DOMPurify.
Context: document.write(chunks[0])
Note: [CWE-79] Improper Neutralization of Input During Web Page Generation [REFERENCES]
- https://www.dhairyashah.dev/posts/why-innerhtml-is-a-bad-idea-and-how-to-avoid-it/
- https://cwe.mitre.org/data/definitions/79.html

(unsafe-html-content-assignment)


[warning] 84-84: Direct modification of innerHTML or outerHTML properties detected. Modifying these properties with unsanitized user input can lead to XSS vulnerabilities. Use safe alternatives or sanitize content first.
Context: document.write(chunks[0])
Note: [CWE-79] Improper Neutralization of Input During Web Page Generation [REFERENCES]
- https://owasp.org/www-community/xss-filter-evasion-cheatsheet
- https://cwe.mitre.org/data/definitions/79.html

(dom-content-modification)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: test: node@24
  • GitHub Check: test: node@20
  • GitHub Check: test: node@22

@rturnq rturnq force-pushed the async-render-queues branch from 520271a to 9faf6c7 Compare December 4, 2025 00:37
@codecov
Copy link

codecov bot commented Dec 4, 2025

Codecov Report

❌ Patch coverage is 96.69118% with 9 lines in your changes missing coverage. Please review.
✅ Project coverage is 89.02%. Comparing base (8a147a7) to head (6aeb624).
⚠️ Report is 5 commits behind head on main.

Files with missing lines Patch % Lines
packages/runtime-tags/src/dom/control-flow.ts 96.12% 4 Missing and 1 partial ⚠️
packages/runtime-tags/src/dom/queue.ts 93.02% 3 Missing ⚠️
...kages/runtime-tags/src/translator/util/optional.ts 85.71% 0 Missing and 1 partial ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2982      +/-   ##
==========================================
+ Coverage   88.99%   89.02%   +0.02%     
==========================================
  Files         372      372              
  Lines       46332    46429      +97     
  Branches     3880     3892      +12     
==========================================
+ Hits        41235    41332      +97     
+ Misses       5048     5046       -2     
- Partials       49       51       +2     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
packages/runtime-tags/src/common/accessor.ts (1)

36-42: Critical: Duplicate enum values will cause collisions.

PendingRenders = "T" (line 36) and TagVariable = "T" (line 41) have the same string value. This will cause property collisions at runtime when both are used on the same object, leading to silent data corruption or unexpected behavior.

Assign a unique value to PendingRenders:

-  PendingRenders = "T",
+  PendingRenders = "W",

Or use another unused letter. Current usage in this enum: A-S, T (TagVariable), U, V (DetachedAwait).

♻️ Duplicate comments (2)
package.json (1)

69-69: Critical: Non-existent dependency version blocks installation.

This issue was flagged in a prior review and remains unresolved. The version [email protected] does not exist in the npm registry; the latest published version is 5.0.0. This will cause npm install to fail.

Please clarify intent:

  • If 5.0.1 is a planned release, confirm it will be published before this PR merges.
  • Otherwise, update to ^5.0.0 (or the latest stable version).
-    "mocha-snap": "^5.0.1",
+    "mocha-snap": "^5.0.0",

Alternatively, confirm the exact version constraint you need via:

npm view mocha-snap versions --json | tail -10
packages/runtime-tags/src/__tests__/utils/create-browser.ts (1)

69-76: Previous review feedback on type guard and empty script handling remains unaddressed.

The past review comments regarding:

  1. Adding a type guard before accessing tagName (line 69) - non-Element nodes would return undefined for tagName
  2. Handling empty script tags (lines 74-76) - calling walker.nextNode() on an empty script would skip the next sibling instead of script content

These issues are still present in the code.

🧹 Nitpick comments (6)
packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/test.ts (1)

3-3: Consider documenting why three flushes are needed.

The three consecutive flush calls likely correspond to the nesting depth being tested, but this isn't immediately clear. Adding a brief comment would improve maintainability.

Example:

-export const steps = [{}, flush, flush, flush, wait(4)];
+// Three flushes for three levels of nested placeholders
+export const steps = [{}, flush, flush, flush, wait(4)];
packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/test.ts (1)

5-5: LGTM! Appropriate flag for streaming mode differences.

The skip_equivalent flag correctly identifies that this test exhibits different behavior in certain modes due to the parent removal timing relative to the flush operation.

Consider expanding the comment to clarify which modes or scenarios this affects, e.g.:

-export const skip_equivalent = true; // try removed before flush
+export const skip_equivalent = true; // in-order streaming: parent removed before flush completes
packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/tags/recurse.marko (1)

6-6: Swapping inline Promise for resolveAfter keeps behavior explicit and controllable

Replacing await=new Promise(setImmediate) with await=resolveAfter(0, 1) makes the async timing explicit and consistent with the rest of the async fixtures, which should improve determinism in the test harness. The hard-coded (0, 1) arguments also seem fine for a single scheduling step in this recursive case, as long as you intend every level to share the same step id.

If you later need depth-aware scheduling, consider deriving one of the arguments from input.level, and validate behavior with the existing async-deep-recursive snapshot tests.

packages/runtime-tags/src/__tests__/fixtures/await-closure-within/template.marko (2)

4-5: Clarify: await result is not captured.

The promise from resolveAfter(0, 1) resolves with value 1, but this result is not assigned or used. Instead, value is independently initialized to 1 on line 5. If the test fixture intends to use the resolved value, consider capturing it. If the intent is solely to ensure closures execute after the await completes, the current implementation is acceptable but could benefit from a comment explaining the discarded result.


8-9: Condition is always true.

Since value is initialized to 1 (line 5) and only incremented by the button's onClick handler (line 7), the condition if=(value > 0) will always evaluate to true. If this test fixture intends to validate conditional rendering or reactivity with await/closures, this is acceptable. Otherwise, consider adding logic to decrement value or adjusting the condition to test a meaningful branch.

packages/runtime-tags/src/__tests__/main.test.ts (1)

530-554: Remove commented-out code block.

This large block of commented-out code appears to be the previous implementation that was replaced by the new matching algorithm above. Dead code should be removed to maintain code clarity.

-          // // when the steps for a test contains more than one input,
-          // // the updates are not run for the resume test
-          // // so we trim the csrLogs to match the number of resumeLogs
-          // const step1 = (config.steps as unknown[] | undefined)?.[1];
-          // const isAsyncRender = step1 && (isFlush(step1) || isWait(step1));
-          // let csrLogs = [...(await csr()).tracker.getRawLogs(true)];
-          // let skip = 0;
-          // if (isAsyncRender) {
-          //   while (csrLogs[skip + 1]?.startsWith(`# Render ASYNC`)) {
-          //     skip++;
-          //   }
-          //   for (const resumeLog of resumeLogs.slice(1)) {
-          //     if (resumeLog.startsWith(`# Render ASYNC`)) {
-          //       skip--;
-          //     } else {
-          //       break;
-          //     }
-          //   }
-          //   csrLogs[skip] = csrLogs[skip].replace(`# Render ASYNC`, `# Render`);
-          // }
-          // csrLogs = csrLogs.slice(skip, resumeLogs.length + skip);
-          // assert.strictEqual(
-          //   csrLogs.join("\n\n").replace(/[cs]M_[a-z0-9]+/g, "%id"),
-          //   resumeLogs.join("\n\n").replace(/[cs]M_[a-z0-9]+/g, "%id"),
-          // );
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 520271a and 9faf6c7.

⛔ Files ignored due to path filters (142)
  • package-lock.json is excluded by !**/package-lock.json and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/dom.expected/tags/recurse.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/html.expected/tags/recurse.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/script-tag-value-no-scope/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/script-tag-value-no-scope/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
📒 Files selected for processing (51)
  • .changeset/open-facts-obey.md (1 hunks)
  • .sizes.json (3 hunks)
  • .sizes/comments.ssr/entry.js (1 hunks)
  • .sizes/counter.ssr/entry.js (1 hunks)
  • .sizes/dom.js (21 hunks)
  • .sizes/name-cache.json (1 hunks)
  • package.json (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/tags/recurse.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-state/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/script-tag-value-no-scope/template.marko (0 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/main.test.ts (6 hunks)
  • packages/runtime-tags/src/__tests__/utils/create-browser.ts (2 hunks)
  • packages/runtime-tags/src/__tests__/utils/resolve.ts (1 hunks)
  • packages/runtime-tags/src/common/accessor.debug.ts (1 hunks)
  • packages/runtime-tags/src/common/accessor.ts (1 hunks)
  • packages/runtime-tags/src/common/types.ts (3 hunks)
  • packages/runtime-tags/src/dom/control-flow.ts (5 hunks)
  • packages/runtime-tags/src/dom/queue.ts (6 hunks)
  • packages/runtime-tags/src/dom/resume.ts (2 hunks)
  • packages/runtime-tags/src/dom/signals.ts (2 hunks)
  • packages/runtime-tags/src/translator/core/try.ts (3 hunks)
  • packages/runtime-tags/src/translator/util/optional.ts (1 hunks)
  • packages/runtime-tags/src/translator/util/signals.ts (4 hunks)
💤 Files with no reviewable changes (1)
  • packages/runtime-tags/src/tests/fixtures/script-tag-value-no-scope/template.marko
🚧 Files skipped from review as they are similar to previous changes (25)
  • packages/runtime-tags/src/common/accessor.debug.ts
  • packages/runtime-tags/src/tests/fixtures/await-update-before-resume/template.marko
  • .sizes/counter.ssr/entry.js
  • packages/runtime-tags/src/dom/resume.ts
  • packages/runtime-tags/src/tests/fixtures/await-closure-in-order/test.ts
  • packages/runtime-tags/src/tests/fixtures/async-reject-then-resolve-isolated-boundaries/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-closure-inert/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-tag/test.ts
  • packages/runtime-tags/src/tests/utils/resolve.ts
  • packages/runtime-tags/src/translator/util/signals.ts
  • packages/runtime-tags/src/tests/fixtures/await-closure/template.marko
  • packages/runtime-tags/src/tests/fixtures/async-deep-recursive/test.ts
  • packages/runtime-tags/src/tests/fixtures/catch-single-reject-async/test.ts
  • packages/runtime-tags/src/translator/core/try.ts
  • packages/runtime-tags/src/tests/fixtures/await-closure/test.ts
  • .sizes.json
  • packages/runtime-tags/src/tests/fixtures/await-update-after-resume/template.marko
  • packages/runtime-tags/src/dom/signals.ts
  • packages/runtime-tags/src/translator/util/optional.ts
  • packages/runtime-tags/src/tests/fixtures/await-closure-inert/template.marko
  • packages/runtime-tags/src/tests/fixtures/await-closure-within/test.ts
  • .changeset/open-facts-obey.md
  • packages/runtime-tags/src/tests/fixtures/async-reorder-nested-batched-resolve/test.ts
  • packages/runtime-tags/src/tests/fixtures/try-effects-async/test.ts
  • packages/runtime-tags/src/tests/fixtures/async-state/test.ts
🧰 Additional context used
🧬 Code graph analysis (14)
packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/fixtures/placeholder-single/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/common/types.ts (2)
packages/runtime-tags/src/dom/queue.ts (1)
  • PendingRender (7-12)
packages/runtime-tags/src/dom/renderer.ts (1)
  • Renderer (16-25)
packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/test.ts (4)
.sizes/dom.js (2)
  • steps (35-35)
  • steps (41-41)
packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/html/writer.ts (1)
  • flush (1045-1055)
packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
.sizes/dom.js (4)
packages/runtime-tags/src/dom/signals.ts (2)
  • _closure_get (181-209)
  • subscribeToScopeSet (145-157)
packages/runtime-tags/src/dom/renderer.ts (3)
  • createAndSetupBranch (57-67)
  • _content (76-119)
  • createBranch (29-55)
packages/runtime-tags/src/dom/queue.ts (3)
  • queueRender (24-46)
  • queuePendingRender (48-58)
  • run (67-80)
packages/runtime-tags/src/dom/scope.ts (2)
  • findBranchWithKey (27-36)
  • insertBranchBefore (63-74)
packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/utils/create-browser.ts (2)
packages/runtime-tags/src/dom/walker.ts (1)
  • walker (13-13)
.sizes/dom.js (1)
  • node (167-167)
packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/test.ts (2)
.sizes/dom.js (2)
  • steps (35-35)
  • steps (41-41)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (4-8)
🪛 ast-grep (0.40.0)
packages/runtime-tags/src/__tests__/utils/create-browser.ts

[warning] 84-84: Direct modification of innerHTML or outerHTML properties detected. Modifying these properties with unsanitized user input can lead to XSS vulnerabilities. Use safe alternatives or sanitize content first.
Context: document.write(chunks[0])
Note: [CWE-79] Improper Neutralization of Input During Web Page Generation [REFERENCES]
- https://owasp.org/www-community/xss-filter-evasion-cheatsheet
- https://cwe.mitre.org/data/definitions/79.html

(dom-content-modification)


[warning] 84-84: Direct HTML content assignment detected. Modifying innerHTML, outerHTML, or using document.write with unsanitized content can lead to XSS vulnerabilities. Use secure alternatives like textContent or sanitize HTML with libraries like DOMPurify.
Context: document.write(chunks[0])
Note: [CWE-79] Improper Neutralization of Input During Web Page Generation [REFERENCES]
- https://www.dhairyashah.dev/posts/why-innerhtml-is-a-bad-idea-and-how-to-avoid-it/
- https://cwe.mitre.org/data/definitions/79.html

(unsafe-html-content-assignment)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: test: node@24
  • GitHub Check: test: node@22
  • GitHub Check: test: node@20
🔇 Additional comments (57)
packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/test.ts (2)

1-3: Async steps wiring looks consistent with new flush semantics

Importing flush and inserting it into the steps sequence alongside shorter waits and the click helper fits the async fixture pattern and should exercise the new pending-render behavior without issues.


5-5: skip_equivalent flag is clear and self‑documenting

Exporting skip_equivalent = true with the // in-order streaming comment is a clean way to let the shared harness special‑case this fixture’s expectations. No changes needed.

packages/runtime-tags/src/__tests__/fixtures/placeholder-single/test.ts (3)

1-1: Import usage looks consistent

flush and wait are both used in steps, so this import shape is good and matches the existing test utilities pattern.


3-3: Clarify intent of the double flush in steps

steps = [{}, flush, flush, wait(2)] is a subtle sequence; the duplicate flush likely exercises the new pending‑render queue semantics (e.g., multiple pending scopes/placeholders). Please confirm that two flush entries are required here (vs a single flush) so future readers don’t “simplify” this back to one and break coverage.


5-5: skip_equivalent flag aligns with in‑order streaming behavior

Setting skip_equivalent = true for this placeholder fixture makes sense if the in‑order streaming output would otherwise be treated as equivalent by the shared harness. No changes requested.

packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/test.ts (1)

1-5: LGTM: async out-of-order fixture wiring looks consistent

The added flush import is correctly used in steps, and the steps = [{}, flush, wait(3)] shape matches the described async test patterns. Exporting skip_equivalent = true with the in-order streaming comment is consistent with how these fixtures indicate skipped equivalent runs. No issues from this file.

packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/test.ts (1)

1-3: Import + double-flush step sequence look correct

The new flush import is used as intended, and adding two flush steps before wait(4) makes the sequencing of pending renders explicit and is consistent with the async fixture patterns described for this PR. No issues from a typing or runtime perspective in this file.

packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/test.ts (2)

1-1: LGTM!

The addition of the flush import is appropriate for the updated test steps.


5-5: LGTM!

The skip_equivalent flag is appropriately documented and indicates that this test exhibits different behavior with in-order streaming, which aligns with the PR's async rendering changes.

packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/test.ts (2)

1-1: LGTM! Import addition aligns with new test pattern.

The addition of flush to the imports is correct and necessary for the updated test steps.


3-3: Test step sequence updated for explicit flush control.

The modification from wait(2) to wait(1), flush provides more precise control over render timing, consistent with the broader pattern for testing in-order streaming behavior.

Verify that this timing sequence still correctly exercises the scenario where the parent is removed during an await operation.

packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/template.marko (5)

1-1: LGTM!

Import statement is correct and resolveAfter is the appropriate test utility for this async fixture.


2-2: LGTM!

Stateful variable declaration is correctly structured for testing closure behavior with an initial non-zero value.


3-3: LGTM!

Button correctly implements the onClick handler to increment and display the stateful value, enabling testing of closure behavior during async operations.


4-5: LGTM!

The await block correctly establishes an async boundary for testing closure behavior. The resolved value from resolveAfter(0, 3) is not used in the template, which appears intentional for this fixture focused on in-order rendering and closure semantics rather than value propagation.


6-7: LGTM!

Conditional block correctly tests closure access to the stateful value across the async boundary, verifying that updates from the onClick handler are properly visible in the rendering logic.

packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/test.ts (3)

3-3: LGTM! Flush step added appropriately.

The insertion of flush between the initial step and wait(1) ensures pending renders are flushed before the timeout, which aligns with the PR's changes to pending-render tracking.


5-5: LGTM! Flag added for in-order streaming behavior.

The skip_equivalent flag appropriately handles differences in test behavior for in-order streaming mode, consistent with the PR's async rendering changes.


1-1: No action needed. The import of flush from utils/resolve.ts is valid—flush is properly exported as a test helper at line 10 of resolve.ts.

packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/test.ts (3)

1-1: LGTM: Import updated to include flush helper.

The addition of flush to the imports is necessary for its usage in the steps array and follows the pattern established across other test fixtures in this PR.


3-3: Test sequence updated to include flush operation.

The addition of flush between the initial state and wait(2) aligns with the PR's changes to handle in-order streaming for async rendering. This modification is consistent with the pattern applied across other async test fixtures.


5-5: Test configuration flag added for streaming behavior.

The skip_equivalent flag indicates this test should skip equivalence checks due to in-order streaming semantics. This is consistent with similar flags added across other async test fixtures in this PR.

packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/tags/recurse.marko (1)

1-1: Import path and shared test utility are correct

resolveAfter is properly exported from ../../../utils/resolve (line 30 of resolve.ts) and the relative path from this directory correctly resolves to src/__tests__/utils/resolve. The usage pattern with resolveAfter(0, 1) is consistent across all async test fixtures in the codebase.

packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/test.ts (3)

1-1: LGTM! Proper import of the flush helper.

The addition of flush to the imports is correct and necessary for the updated test steps.


5-5: LGTM! Appropriate flag for in-order streaming tests.

The skip_equivalent flag is correctly added to indicate this test uses in-order streaming semantics, consistent with the pattern across other async test fixtures in this PR.


3-3: Flush count correctly matches nesting structure.

The three flush calls correspond to the three-level nesting depth in the template's first async chain: result1result2result3. Each flush resolves one level of nested await|resolve blocks, followed by wait(4) to allow the second nested chain to complete. The change aligns with the PR's in-order streaming semantics.

.sizes/comments.ssr/entry.js (1)

1-1: LGTM!

Size annotation updated to reflect the 1-byte brotli reduction from the internal key refactoring.

.sizes/name-cache.json (1)

1-1: LGTM!

The name cache has been updated consistently with the new internal key scheme. The previously flagged typo ($kDetatchedAwait) is no longer present in this version.

.sizes/dom.js (8)

75-81: LGTM!

The renderer identification property check ("f" in normalized) is consistent with the updated _content return shape at line 896 where f: id is set.


748-780: LGTM!

The closure signal accessor renames (k for scopeInstancesAccessor, l for signalIndexAccessor, q for index) are applied consistently. The new resumeId parameter in _closure_get properly wires up resume registration when provided.


895-902: LGTM!

The renderer object shape is cleanly defined with the new property layout (f for id, b for params, d for dynamicScopesAccessor). This is consistently referenced throughout the file.


1181-1311: Substantial refactoring of async/await handling with pending render queues.

The new _await_promise implementation introduces branch-aware pending render tracking:

  1. awaitCounter (stored at tryBranch.O) tracks pending async operations with an i counter and c() completion callback
  2. Pending renders are queued in branch.T during async resolution and drained on completion (line 1278)
  3. Effect deduplication (lines 1283-1295) prevents duplicate effects when awaitCounter.m (resume effects function) is available

The placeholder/try-branch coordination logic is complex but appears correct. One observation: the awaitCounter.m property is set during resume at line 273 (branch.O.m = render.m).


1741-1758: LGTM!

The queuePendingRender extraction enables reuse for deferred render queuing during async resolution. The min-heap insertion (lines 1751-1757) correctly uses render.a for priority ordering.


1797-1866: LGTM!

The runRender enhancement (lines 1851-1866) properly postpones renders when a branch has pending async operations (branch.T). Postponed renders are tracked in both asyncRendersLookup (for deduplication) and branch.T (for later replay). The heap operations in runRenders correctly use the render.a key for ordering.


1384-1466: LGTM!

The _dynamic_tag function correctly uses the updated property names: normalizedRenderer.f for renderer identification, .n/.t for closure signals/values, .d for dynamic scopes accessor, and .b for params. The closure iteration (lines 1443-1447) properly applies each closure signal with its corresponding value.


1990-1999: LGTM!

The mount function correctly accesses this.b for the input params signal, consistent with the updated _content return shape.

packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/test.ts (1)

1-3: LGTM!

The test fixture correctly imports flush and wait utilities and defines a step sequence that exercises the flush-based streaming behavior. The pattern aligns with other async test fixtures in the PR.

packages/runtime-tags/src/__tests__/utils/create-browser.ts (3)

27-45: LGTM! Clean queue-based batching for requestAnimationFrame.

The implementation correctly batches callbacks within the same tick and flushes them together with a consistent timestamp, which is appropriate behavior for test environments simulating browser behavior.


83-89: Static analysis XSS warning is a false positive here.

The document.write(chunks[0]) usage is safe in this context - this is test infrastructure that writes pre-generated HTML output from the test harness, not user-supplied content. The chunks are controlled test data.


47-80: Streaming implementation looks correct overall.

The walker-based approach for multi-chunk streaming with flush markers (<!--%%FLUSH%%-->) is a clean solution for simulating incremental HTML streaming in tests. The WeakMap for tracking target nodes avoids memory leaks.

packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/test.ts (1)

1-3: LGTM!

New test fixture correctly imports utilities and defines a step sequence for testing await update after resume behavior.

packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/test.ts (1)

1-5: LGTM!

The test fixture correctly adopts the flush-based sequencing pattern with skip_equivalent flag to indicate in-order streaming behavior. The inline comment provides helpful context.

packages/runtime-tags/src/common/types.ts (3)

1-2: LGTM - Import changes align with new exports.

The import of PendingRender from ../dom/queue and the combined Renderer/ClientRenderer import properly support the new per-branch pending render tracking introduced in this PR.


16-18: New BranchScope fields support per-branch async rendering.

The new fields enable branch-aware rendering:

  • PlaceholderBranch: tracks the placeholder branch during async loading
  • PendingRenders: queues renders that should be delayed until async content resolves
  • DetachedAwait: holds the renderer for detached await content

The | 0 union pattern is consistent with the codebase's use of falsy sentinels.


44-48: AwaitCounter field changes support new async coordination logic.

  • m?: () => unknown[] - Changed from a simple flag to a function that returns pending effects for deduplication
  • c: () => void | 1 - Now returns 1 when the counter is still pending, enabling conditional flow in callers

These changes align with the new _await_promise implementation in control-flow.ts that uses awaitCounter.c() return value and awaitCounter.m() for effect deduplication.

packages/runtime-tags/src/dom/queue.ts (4)

7-12: PendingRender export enables per-branch render tracking.

Making PendingRender a public export allows control-flow.ts to use this type for the BranchScope[AccessorProp.PendingRenders] field.


48-58: Heap insertion logic is correct.

The queuePendingRender function correctly implements min-heap upheap insertion:

  1. Push the new element to the end
  2. Bubble up by swapping with parent while the new element's key is smaller
  3. The comparison render.___key - parent.___key >= 0 correctly breaks when the heap property is satisfied

This ensures renders are processed in priority order based on scope/signal keys.


202-219: Branch-aware render deferral logic.

When a render's scope has a branch with PendingRenders, the render is:

  1. Stored in asyncRendersLookup for later lookup (lines 207-210)
  2. Pushed to the branch's PendingRenders array (line 211)
  3. The original runRender is skipped

This correctly defers renders until the async content resolves and calls queuePendingRender on the deferred renders.


67-80: The asyncRendersLookup lifecycle correctly handles deferred render queuing.

The flow works as intended:

  • Line 69: Create a new asyncRendersLookup Map at the start
  • Line 74: Transfer accumulated deferred renders to pendingRendersLookup after runRenders()
  • Line 75: Reset both asyncRendersLookup and rendering to 0

This pattern ensures deferred renders accumulated during execution become the pending renders for the next cycle, maintaining proper queue continuity.

packages/runtime-tags/src/dom/control-flow.ts (4)

60-63: Branch selection logic for await handling.

The code correctly distinguishes between:

  • awaitBranch: The direct branch associated with this await
  • tryBranch: The branch with placeholder content (or falls back to awaitBranch)

This enables proper placeholder/content switching at the try boundary level rather than individual await level.


65-101: AwaitCounter initialization and completion callback.

The c() callback handles two distinct cases:

  1. Lines 70-76: When tryBranch === scope[branchAccessor] - replaces the comment node with the await branch's content
  2. Lines 77-89: Otherwise - inserts content before placeholder and removes placeholder branch

The return 1 at line 69 when counter is still positive signals to callers that more awaits are pending.


105-145: First-await placeholder setup with requestAnimationFrame.

The requestAnimationFrame callback (lines 107-144) sets up placeholders only if:

  1. This is the first await (!scope[promiseAccessor] && !awaitCounter.i++)
  2. The await branch exists

The logic inside handles:

  • Creating and inserting placeholder branch if PlaceholderContent exists
  • Detaching the try branch with a marker node if no placeholder but no DetachedAwait

This defers visual changes to the next animation frame, preventing flicker.


178-207: Effect deduplication when processing pending renders.

The deduplication at lines 189-206 prevents duplicate effects:

  1. Collect all current pending effects into a fnScopes Map keyed by function
  2. For each effect from awaitCounter.m(), only queue it if not already in pending effects

This prevents the same effect from running twice when multiple async operations complete.

packages/runtime-tags/src/__tests__/main.test.ts (4)

14-14: New test utilities imported for flush handling.

The isFlush and resolveAfter imports support the new streaming-based test flow where flush points are explicitly controlled.


243-256: SSR test updated to use streaming API.

The test now:

  1. Uses browser.stream(chunks) instead of browser.open()
  2. Calls flushNext() in a loop until all chunks are processed
  3. Awaits a microtask (await 1) between flushes

This aligns with the PR's goal of testing in-order streaming behavior.


308-309: CSR correctly skips flush steps.

Flush steps are only meaningful for SSR/resume tests where content is streamed. CSR renders synchronously, so flush markers are appropriately skipped with continue.


376-409: Test refactored with explicit flush control.

The runSteps function processes each step type appropriately:

  • Waits for async operations
  • Logs "FLUSH" when explicitly flushed (line 388)
  • Auto-flushes remaining chunks with "FLUSH (auto)" label (lines 403-408)
  • Uses resolveAfter(0, 1) at line 404 to introduce a 1ms delay before auto-flushing

@rturnq rturnq force-pushed the async-render-queues branch from 9faf6c7 to df7f03c Compare December 4, 2025 23:29
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
packages/runtime-tags/src/common/accessor.ts (1)

36-41: Enum value collision: PendingRenders and TagVariable both use "T".

Both PendingRenders (line 36) and TagVariable (line 41) are assigned the same string value "T". This will cause property collisions when both are used on the same scope object, leading to silent data corruption or unexpected behavior.

Assign a unique value to PendingRenders:

-  PendingRenders = "T",
+  PendingRenders = "W",

Alternatively, if TagVariable is no longer needed, it should be removed to free up "T" for PendingRenders.

♻️ Duplicate comments (2)
packages/runtime-tags/src/dom/control-flow.ts (1)

238-245: Previous review concern: Verify pendingScopes.pop() is balanced.

This was flagged in a prior review. The pendingScopes.pop() at line 244 assumes createBranch (called at line 238) always pushes to pendingScopes. If createBranch conditionally pushes (e.g., only when a Creating flag is set), this pop could underflow.

Verify that createBranch unconditionally pushes to pendingScopes:

#!/bin/bash
# Find createBranch implementation and check for pendingScopes.push
ast-grep --pattern 'function createBranch($$$) {
  $$$
}'
packages/runtime-tags/src/__tests__/utils/create-browser.ts (1)

70-70: Add type guard before accessing tagName despite previous review.

The code accesses tagName on a node without verifying it's an Element. Although a previous review marked this as addressed in commits 17c4ba7-df7f03c, the unsafe access still appears in the current code. TreeWalker can return any Node type (Text, Comment, Element), and accessing tagName on non-Element nodes will return undefined.

Apply this diff to add a type guard:

-          const isScript = (node as Element).tagName === "SCRIPT";
+          const isScript = node.nodeType === 1 /* Node.ELEMENT_NODE */ && (node as Element).tagName === "SCRIPT";
🧹 Nitpick comments (13)
packages/runtime-tags/src/dom/resume.ts (1)

164-171: Consider addressing the TODO for cross-flush parent syncing.

The TODO at lines 164-166 indicates a potential gap when a branch participates in a separate flush from its parent. The orphan branch handling below (lines 167-171) correctly assigns ParentBranch and adds to BranchScopes, but if the parent accessor syncing issue materializes in certain streaming scenarios, it could cause orphaned branches to miss updates.

Would you like me to help design a solution for the cross-flush scenario, or should this be tracked as a follow-up issue?

packages/runtime-tags/src/dom/control-flow.ts (1)

106-149: Complex placeholder/detach logic warrants documentation.

The conditional rendering logic at lines 106-149 handles three distinct cases:

  1. First await with placeholder content (lines 119-133)
  2. First await without placeholder but with detached await (lines 134-142)
  3. Subsequent awaits (reuses existing branch)

The nested conditions and requestAnimationFrame scheduling make this difficult to follow. Consider adding inline comments explaining each branch.

packages/runtime-tags/src/translator/core/try.ts (1)

145-157: DOM translator: mirrored placeholder handling keeps targets in sync

The dom enter path mirrors the html logic for detecting @placeholder via tag.node.extra?.attributeTags?.["@placeholder"] and setting setTryHasPlaceholder(bodySection, true), which should ensure consistent behavior between html and dom targets for try placeholders. If this pattern grows, you might later factor the shared @placeholder detection + flagging into a tiny helper to avoid divergence, but it’s fine as-is.

packages/runtime-tags/src/__tests__/utils/resolve.ts (2)

12-25: Consider clarifying the loop exit condition.

The loop condition on lines 18-21 combines multiple concerns: explicit ID matching and dynamic promise-count assignment. While functionally correct, the side-effect assignment nextId = __RESOLVE_STATE__.promises.size within the condition may reduce readability.

Consider extracting the condition for clarity:

 async function getWaitPromise(id?: number): Promise<number> {
   let nextId = id;
   while (true) {
     const curId = await getSharedPromise(nextId);
     await new Promise((r) => setImmediate(r));
+    
+    // Exit if waiting for explicit ID or all promises resolved
+    const allPromisesResolved = curId === __RESOLVE_STATE__.promises.size;
     if (
-      id !== undefined ||
-      curId === (nextId = __RESOLVE_STATE__.promises.size)
+      id !== undefined || allPromisesResolved
     ) {
-      return nextId!;
+      return id !== undefined ? id : curId;
     }
+    nextId = __RESOLVE_STATE__.promises.size;
   }
 }

90-100: Consider documenting the timing strategy.

The triple-nested timing pattern (setTimeout → setImmediate → setTimeout) appears intentional for ensuring multiple event loop cycles, but lacks explanation. This could be fragile if Node.js or browser timing semantics change.

Add a comment explaining the timing requirements:

 function tick() {
+  // Multi-phase delay ensures promises resolve across multiple event loop cycles:
+  // 1. setTimeout: defer to next timer phase
+  // 2. setImmediate: defer to check phase
+  // 3. setTimeout: final timer phase before resolution
   return new Promise<number>((r) => {
     setTimeout(() => {
       setImmediate(() => {
         setTimeout(() => {
           r(++__RESOLVE_STATE__.lastId);
         });
       });
     });
   });
 }
packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/test.ts (1)

1-3: LGTM! Quad flush for deep recursion.

The four flush calls appropriately correspond to the deep recursive nesting in this test fixture. The migration to ID-based resolution is consistent with the broader refactor.

Consider whether this fixture should also include skip_equivalent = true for in-order streaming, consistent with similar async fixtures like async-resolve-out-of-order, placeholder-single, and async-nested-resolve-in-order, which all have this flag set.

.sizes/dom.js (7)

748-762: Closure signal plumbing: verify owner-scope selection

The new _closure / _closure_get contract (using k/l/q for scope-set accessor, per-scope index, and signal index) is internally consistent:

  • _closure_get sets closureSignal.k = "B" + accessor and closureSignal.l = "C" + accessor, subscribes each scope to ownerScope[closureSignal.k], and records closureSignal.q.
  • _closure reads scope[___scopeInstancesAccessor] (the set created by subscribeToScopeSet) and dispatches to closureSignals[childScope[___signalIndexAccessor]], i.e., the right closure per child scope.

One thing to double‑check at the translator level is that getOwnerScope(scope) always returns a non‑null owner for the closure scopes you generate; otherwise subscribeToScopeSet will throw. If there are any cases where closures should attach to something other than scope._, it’s worth adding a small assertion or test to cover that.

Also applies to: 763-780


1099-1109: Dynamic content attribute: scope subscription looks correct but relies on content.e

The _attr_content changes:

  • Normalize content renderers via normalizeDynamicRenderer.
  • Track the active content id as scope["D"+nodeAccessor] = content?.f.
  • Subscribe the host scope into content.e’s dynamic scope set via content.d when provided.

This matches the new _content(..., dynamicScopesAccessor) shape. Please just confirm that translator‑generated dynamicScopesAccessor always points at a scope set on the same owner passed to _content (so content.e is the right owner for subscribeToScopeSet), especially for nested/forwarded content cases.


1185-1221: Await bookkeeping: branch/try selection and counter lifecycle

The front half of _await_promise now:

  • Decodes promiseAccessor and branchAccessor.
  • Locates awaitBranch = scope[branchAccessor] and tryBranch = findBranchWithKey(scope, "Q") || awaitBranch.
  • Reuses or creates tryBranch.O as awaitCounter with i count and c() finalizer, optionally seeded from render.p via the earlier branch.O = render.p?.[branchId] hook.
  • Uses awaitBranch.T as a per‑branch queue of pending renders and marks placeholderShown for the current pendingEffects batch.

The logic for reusing awaitCounter across resumptions and scoping it to the nearest try/placeholder branch looks sound, and the c() implementation correctly switches between in‑place replacement and placeholder‑branch handoff. I don’t see obvious reentrancy issues, but this is subtle enough that I’d strongly suggest tests around:

  • await inside and outside <try> with and without placeholders.
  • Multiple awaits sharing the same try/placeholder region.
  • Destroyed branches where tryBranch.O was set but never resolved.

1222-1257: Deferring renders while await is pending, then flushing on resolve

The success/error handlers in _await_promise now:

  • On then:

    • Guard on thisPromise === scope[promiseAccessor] to avoid races.
    • Schedule run via queueMicrotask before queueing a render to apply the resolution.
    • When the await branch has a pending renderer (V), push it into pendingScopes, run setupBranch, insert the branch before the placeholder node, and remove the placeholder.
    • Run params?.(awaitBranch, [data]), flush any queued renders in awaitBranch.T through queuePendingRender, and, if awaitCounter.m is present (resumed case), reconcile those effects against the current pendingEffects before re‑queuing.
  • On catch:

    • Reset awaitCounter.i and scope[promiseAccessor], and route to renderCatch via queueRender.

The design matches the PR goal of deferring renders in pending scopes and then replaying them after resolution, with care to avoid double‑running effects. I’d recommend adding at least one test where closures inside the awaited block enqueue renders both before and after resolution to ensure the fnScopes reconciliation correctly avoids duplicate queueEffect calls.

Also applies to: 1258-1303, 1305-1310


1734-1750: New render queue keying and pendingRendersLookup semantics

The new render queue logic:

  • Introduces asyncRendersLookup and pendingRendersLookup.
  • Uses key = scopeKey * scopeKeyOffset + signalKey with scopeKeyOffset = 1e3 and stores renders as { a: key, g: scope, u: signal, o: value }.
  • Deduplicates by {scopeKey, signalKey} when signalKey >= 0, updating .o instead of pushing new renders.

The heap maintenance in queuePendingRender (a compared as the priority key) looks correct. The only place this could go wrong is if translator‑assigned signalKey can ever be ≥ 1000, which would cause key collisions across scopes. If that’s not guaranteed today, I’d either:

  • Bump scopeKeyOffset significantly (e.g., 1e6), or
  • Add a small assertion in dev builds that Math.abs(signalKey) < scopeKeyOffset.

1765-1775: run / prepareEffects bookkeeping for async renders is subtle but coherent

run now:

  • Initializes asyncRendersLookup = new Map() per run.
  • Calls runRenders() under rendering = 1.
  • On exit, swaps pendingRendersLookup = asyncRendersLookup, clears asyncRendersLookup, pendingRenders, and pendingEffects.

prepareEffects:

  • Temporarily isolates pendingRenders and pendingEffects.
  • Points asyncRendersLookup at the current pendingRendersLookup while using a fresh pendingRendersLookup for the prepared run.
  • Restores both lookups and queues after running fn + runRenders().

That wiring ensures:

  • Normal runs see the latest async‑deferred renders via pendingRendersLookup.
  • Nested prepareEffects runs don’t lose async bookkeeping from the outer run.

Given how easy it is to regress this, I’d add tests that:

  • Queue renders that get deferred into branch.T, then trigger further queueRender calls for the same key before resolution, and ensure only the final value is applied.
  • Nest prepareEffects inside outer run() calls with pending awaits to confirm lookups are restored correctly.

Also applies to: 1778-1793


1827-1869: _enable_catch’s deferral of renders via branch.T and asyncRendersLookup

Once _enable_catch runs, it:

  • Wraps runEffects so that when placeholderShown/caughtError contain the effects array, it respects pending tries and branch destruction when invoking functions.

  • Wraps runRender so that any render whose branch or ancestor has a truthy .T is:

    • Recorded in asyncRendersLookup under its a key, and
    • Pushed into the waiting branch.T array, instead of being run immediately.

This matches the new _await_promise behavior where awaitBranch.T accumulates renders while the await is pending and then flushes them via queuePendingRender upon resolution. The ancestor scan (for (let branch = render.g.F; branch; branch = branch.N)) ensures we also defer descendants of a pending await block.

Given the interplay between placeholderShown, caughtError, asyncRendersLookup, and branch.T, I’d be inclined to add a regression test that:

  • Throws inside a render within a pending await branch,
  • Verifies it is caught by renderCatch and that no stale renders remain scheduled once the branch is destroyed.

@rturnq rturnq force-pushed the async-render-queues branch 2 times, most recently from 818c65d to c4d04e5 Compare December 5, 2025 00:27
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

♻️ Duplicate comments (4)
packages/runtime-tags/src/__tests__/utils/create-browser.ts (1)

75-77: Minor edge case: empty script tags may cause walker to skip next sibling.

This was flagged in a previous review and remains unaddressed. For empty <script></script> tags, calling walker.nextNode() would incorrectly skip the next sibling node instead of the script's (non-existent) content.

packages/runtime-tags/src/dom/control-flow.ts (2)

162-179: Conditional push to pendingScopes - ensure balanced with pop.

Line 167 conditionally pushes awaitBranch to pendingScopes only when DetachedAwait is truthy. This push must be balanced by a corresponding pop. The pop occurs in _await_content at line 244, but that pop is unconditional. If the push never happens (when DetachedAwait is falsy), the unconditional pop will cause a stack underflow.

This issue was previously flagged in the past review comments for lines 238-245.


237-245: Unconditional pop without guaranteed push - duplicate issue.

Line 244 unconditionally calls pendingScopes.pop(), but the corresponding push at line 167 in _await_promise only occurs when DetachedAwait is truthy. This creates a stack imbalance when the push doesn't happen.

As noted in the past review comment for lines 238-245, either:

  1. Guard the pop with the same condition: if (scope[branchAccessor][AccessorProp.DetachedAwait]) pendingScopes.pop();
  2. Verify pendingScopes.length before popping
  3. Restructure the flow to ensure balanced push/pop operations
.sizes/dom.js (1)

1314-1325: pendingScopes.pop() in _await_content can remove the wrong scope when createBranch creates nested scopes

_await_content currently does:

(scope[branchAccessor] = createBranch(...)).V = renderer;
pendingScopes.pop();

createBranch calls createScope, which pushes the branch scope into pendingScopes, and then runs renderer.h (clone/walk). That walk can itself call createScope for nested scopes (loops, conditionals, nested awaits, etc.), pushing additional scopes after the branch.

As a result, pendingScopes.pop() removes only the last scope created during createBranch—often a nested child scope—not necessarily the awaitBranch you just created. The consequences:

  • The wrong child scope can be left with H === 1 indefinitely (since it was popped and never cleared in runRenders), so _or, closures, and other scope.H‑sensitive logic will treat it as “pending” forever.
  • Conversely, the awaitBranch you intended to keep pending may remain in pendingScopes and have H cleared to 0 at the end of the current render pass, defeating the goal of delaying its activation until the promise resolves.

Instead of blindly popping, pendingScopes should specifically remove the awaitBranch instance created by createBranch, leaving any nested scopes intact. Conceptually:

-    (((scope[branchAccessor] = createBranch(
-      scope.$,
-      renderer,
-      scope,
-      scope[nodeAccessor].parentNode,
-    )).V = renderer),
-      pendingScopes.pop());
+    let awaitBranch = (scope[branchAccessor] = createBranch(
+      scope.$,
+      renderer,
+      scope,
+      scope[nodeAccessor].parentNode,
+    ));
+    awaitBranch.V = renderer;
+    // Remove exactly this branch from pendingScopes, without touching nested scopes.
+    let i = pendingScopes.lastIndexOf(awaitBranch);
+    if (i !== -1) pendingScopes.splice(i, 1);

The precise implementation should be done in the TypeScript source, but the key is: remove the specific awaitBranch from pendingScopes, not just the last entry.

🧹 Nitpick comments (4)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)

90-100: Document the timing guarantees of the tick mechanism.

The tick function uses a specific sequence of setTimeout, setImmediate, and another setTimeout to advance state. This timing pattern is critical for test determinism but is not documented.

Add a comment explaining why this specific sequence is necessary:

 function tick() {
+  // Three-phase tick ensures all microtasks and I/O callbacks complete
+  // before advancing to the next ID, providing deterministic test ordering
   return new Promise<number>((r) => {
     setTimeout(() => {
packages/runtime-tags/src/dom/queue.ts (1)

202-219: LGTM with minor observation.

The runRender wrapper correctly routes renders to branch-specific PendingRenders queues when in-order streaming is active. The deferred renders are tracked in asyncRendersLookup for later resolution.

Minor: Line 213 uses branch! non-null assertion, but since we're inside while (branch), the assertion is redundant (though harmless).

-        branch = branch![AccessorProp.ParentBranch];
+        branch = branch[AccessorProp.ParentBranch];
packages/runtime-tags/src/translator/util/signals.ts (2)

247-268: Closure branch builder logic looks good; minor cleanup opportunity

The new closure branch in getSignal looks consistent: using getCanonicalBinding(referencedBindings) for the accessor, consulting getClosureSignalBuilder(section) only for non‑dynamic closures, and falling back to _closure_get with the optional resume id tied to getResumeRegisterId(section, closure) is coherent with how other resume ids are generated.

Two small nits:

  1. You already read the builder into closureSignalBuilder, but then re‑read it when calling:
if (closureSignalBuilder && !isDynamicClosure(section, closure)) {
  return getClosureSignalBuilder(section)!(closure, render);
}

This could just use the local variable to avoid the extra map lookup:

- const closureSignalBuilder = getClosureSignalBuilder(section);
-
- if (closureSignalBuilder && !isDynamicClosure(section, closure)) {
-   return getClosureSignalBuilder(section)!(closure, render);
- }
+ const closureSignalBuilder = getClosureSignalBuilder(section);
+
+ if (closureSignalBuilder && !isDynamicClosure(section, closure)) {
+   return closureSignalBuilder(closure, render);
+ }
  1. Since getCanonicalBinding never returns undefined given a Binding (it returns either binding.upstreamAlias or binding), the non‑null assertion ! on closure is technically unnecessary, though harmless. You might consider dropping it for clarity.

16-16: Placeholder‑aware resume wiring is sensible; confirm underTryPlaceholder and getSerializeReason(section) semantics

The new placeholder plumbing — getTryHasPlaceholder/setTryHasPlaceholder, underTryPlaceholder, and its use both in _closure_get’s resume id and the HTML dynamic‑closure path — fits together well:

  • some(closure.closureSections, underTryPlaceholder) drives whether _closure_get receives a per‑closure resume register, matching the script resume id you emit in writeHTMLResumeStatements via getResumeRegisterId(section, closure).
  • In the HTML path, switching from _subscribe to emitting a _script resume when underTryPlaceholder(section) is true ensures placeholder branches serialize a resume entry instead of eagerly wiring subscribers.
  • Importing some (and find) from ./optional is consistent with how the rest of this file uses the optional helpers.

Two behaviors worth double‑checking:

  1. underTryPlaceholder only checks ancestors, not the section itself
function underTryPlaceholder(section: Section) {
  let curSection = section.parent;
  while (curSection) {
    if (getTryHasPlaceholder(curSection)) {
      return true;
    }
    curSection = curSection.parent;
  }
  return false;
}

Given this, a section on which setTryHasPlaceholder was called directly will not return true from underTryPlaceholder(section); only its descendants will. That’s consistent with the name (“under”), but it relies on setTryHasPlaceholder being applied to some ancestor section rather than the placeholder section itself.

If you ever tag the placeholder section itself (for example the section that actually renders the placeholder content), underTryPlaceholder will treat that section as not under a placeholder, and dynamic closures in that section will go down the _subscribe path instead of the _script resume path.

If your intent is “this section is within any try‑with‑placeholder region (including the root)”, you may want to change it to start from the section itself:

-function underTryPlaceholder(section: Section) {
-  let curSection = section.parent;
+function underTryPlaceholder(section: Section) {
+  let curSection: Section | undefined = section;
   while (curSection) {
     if (getTryHasPlaceholder(curSection)) {
       return true;
     }
     curSection = curSection.parent;
   }
   return false;
}

Otherwise, it’d be good to leave a brief comment in underTryPlaceholder or at the callsites clarifying that only descendants of a tryWithPlaceholder section are considered “under” it.

  1. New zero‑arg getSerializeReason(section) usage

In the HTML dynamic‑closure case you now do:

if (underTryPlaceholder(section)) {
  const reason = getSerializeReason(section);
  if (reason) {
    getHTMLSectionStatements(section).push(
      t.expressionStatement(
        getExprIfSerialized(
          section,
          reason,
          callRuntime(
            "_script",
            getScopeIdIdentifier(section),
            t.stringLiteral(getResumeRegisterId(section, closure)),
          ),
        ),
      ),
    );
  }
} else {
  addWriteScopeBuilder(section, (expr) =>
    callRuntime("_subscribe", identifier, expr),
  );
}

Elsewhere in this file getSerializeReason is always called with a binding or accessor argument. Assuming you’ve added/adjusted its overloads to support a section‑only call (returning a section‑level serialize reason that matches how section.serializeReason was previously used), this makes sense, but it’s a subtle API change.

Can you confirm that:

  • setTryHasPlaceholder is always applied on an ancestor section when you expect underTryPlaceholder(section) to be true, not on the section itself?
  • getSerializeReason has an overload/signature that supports being called with only the section and returns the intended section‑level serialize reason?

If either assumption isn’t true, underTryPlaceholder and/or the new getSerializeReason(section) call may need a small adjustment.

Also applies to: 105-107, 265-267, 275-284, 1041-1062

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between df7f03c and 818c65d.

⛔ Files ignored due to path filters (155)
  • package-lock.json is excluded by !**/package-lock.json and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/dom.expected/tags/recurse.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/html.expected/tags/recurse.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/script-tag-value-no-scope/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/script-tag-value-no-scope/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
📒 Files selected for processing (80)
  • .changeset/open-facts-obey.md (1 hunks)
  • .sizes.json (3 hunks)
  • .sizes/comments.ssr/entry.js (1 hunks)
  • .sizes/counter.ssr/entry.js (1 hunks)
  • .sizes/dom.js (21 hunks)
  • .sizes/name-cache.json (1 hunks)
  • package.json (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/tags/recurse.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-state/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-state/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/closure-owner-scope-serialize-in-serialized-function/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-input-intersection/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/error-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/for-tag-single-node-only-child-in-parent/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/for-tag-single-text-node-with-text-before/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/for-tag-with-state/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/function-references-normalize/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/function-references-optional-member-normalize/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/html-comment-var/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/if-member-expression-intersection/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/let-tag-set-in-effect/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/let-undefined-until-dom/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-assignment/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-this-attrs/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/local-closure-script/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/log-tag/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/merged-define-tag-templates/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/migrate-effect-tag/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-static-multiple/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/return-value-registered/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/script-tag-value-no-scope/template.marko (0 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/serialize-promise/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/user-effect-abort-signal/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/main.test.ts (7 hunks)
  • packages/runtime-tags/src/__tests__/utils/create-browser.ts (2 hunks)
  • packages/runtime-tags/src/__tests__/utils/resolve.ts (2 hunks)
  • packages/runtime-tags/src/common/accessor.debug.ts (1 hunks)
  • packages/runtime-tags/src/common/accessor.ts (1 hunks)
  • packages/runtime-tags/src/common/types.ts (3 hunks)
  • packages/runtime-tags/src/dom/control-flow.ts (5 hunks)
  • packages/runtime-tags/src/dom/queue.ts (6 hunks)
  • packages/runtime-tags/src/dom/resume.ts (2 hunks)
  • packages/runtime-tags/src/dom/signals.ts (2 hunks)
  • packages/runtime-tags/src/translator/core/try.ts (3 hunks)
  • packages/runtime-tags/src/translator/util/optional.ts (1 hunks)
  • packages/runtime-tags/src/translator/util/signals.ts (4 hunks)
💤 Files with no reviewable changes (1)
  • packages/runtime-tags/src/tests/fixtures/script-tag-value-no-scope/template.marko
✅ Files skipped from review due to trivial changes (1)
  • packages/runtime-tags/src/tests/fixtures/await-update-after-resume/template.marko
🚧 Files skipped from review as they are similar to previous changes (36)
  • packages/runtime-tags/src/tests/fixtures/catch-single-reject-async/test.ts
  • .changeset/open-facts-obey.md
  • package.json
  • packages/runtime-tags/src/tests/fixtures/await-closure-within/test.ts
  • packages/runtime-tags/src/dom/signals.ts
  • packages/runtime-tags/src/tests/fixtures/await-closure/test.ts
  • packages/runtime-tags/src/tests/fixtures/for-tag-single-node-only-child-in-parent/test.ts
  • packages/runtime-tags/src/tests/fixtures/for-tag-single-text-node-with-text-before/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-closure-within/template.marko
  • packages/runtime-tags/src/tests/fixtures/return-value-registered/test.ts
  • packages/runtime-tags/src/tests/fixtures/async-reject-then-resolve-isolated-boundaries/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-remove-parent/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-closure/template.marko
  • packages/runtime-tags/src/tests/fixtures/async-reorder-nested-batched-resolve/test.ts
  • .sizes/comments.ssr/entry.js
  • packages/runtime-tags/src/tests/fixtures/await-update-before-resume/test.ts
  • packages/runtime-tags/src/tests/fixtures/migrate-effect-tag/test.ts
  • packages/runtime-tags/src/tests/fixtures/user-effect-abort-signal/test.ts
  • packages/runtime-tags/src/tests/fixtures/placeholder-static-multiple/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-closure-inert/template.marko
  • packages/runtime-tags/src/common/accessor.debug.ts
  • packages/runtime-tags/src/tests/fixtures/async-multi-resolve-in-order-and-update/test.ts
  • packages/runtime-tags/src/translator/core/try.ts
  • packages/runtime-tags/src/tests/fixtures/assign-destructured-reduced/test.ts
  • packages/runtime-tags/src/tests/fixtures/try-effects-async/test.ts
  • packages/runtime-tags/src/tests/fixtures/html-comment-var/test.ts
  • packages/runtime-tags/src/tests/fixtures/error-async/test.ts
  • packages/runtime-tags/src/tests/fixtures/async-multi-resolve-in-order-and-update/template.marko
  • packages/runtime-tags/src/tests/fixtures/function-references-normalize/test.ts
  • packages/runtime-tags/src/tests/fixtures/async-state/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-update-after-resume/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-closure-inert/test.ts
  • packages/runtime-tags/src/tests/fixtures/dynamic-tag-input-intersection/test.ts
  • packages/runtime-tags/src/tests/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-closure-in-order/test.ts
  • .sizes/counter.ssr/entry.js
🧰 Additional context used
🧬 Code graph analysis (22)
packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/test.ts (3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (27-29)
  • wait (6-10)
packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/test.ts (1)
  • skip_equivalent (5-5)
packages/runtime-tags/src/__tests__/fixtures/await-tag/test.ts (1)
  • skip_equivalent (5-5)
packages/runtime-tags/src/__tests__/fixtures/await-tag/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (27-29)
  • wait (6-10)
packages/runtime-tags/src/__tests__/fixtures/placeholder-single/test.ts (3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (27-29)
  • wait (6-10)
packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/test.ts (1)
  • skip_equivalent (5-5)
packages/runtime-tags/src/__tests__/fixtures/await-tag/test.ts (1)
  • skip_equivalent (5-5)
packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-this-attrs/test.ts (16)
.sizes/dom.js (2)
  • steps (35-35)
  • steps (41-41)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-state/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts (1)
  • steps (3-13)
packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/await-closure-within/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/await-closure/test.ts (1)
  • steps (3-13)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (6-10)
packages/runtime-tags/src/common/types.ts (2)
packages/runtime-tags/src/dom/queue.ts (1)
  • PendingRender (7-12)
packages/runtime-tags/src/dom/renderer.ts (1)
  • Renderer (16-25)
packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/test.ts (3)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts (1)
  • steps (3-13)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (6-10)
packages/runtime-tags/src/__tests__/fixtures/function-references-optional-member-normalize/test.ts (6)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-state/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts (1)
  • steps (3-13)
packages/runtime-tags/src/__tests__/fixtures/await-closure-within/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (6-10)
packages/runtime-tags/src/__tests__/fixtures/local-closure-script/test.ts (8)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-state/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/await-closure-within/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (6-10)
packages/runtime-tags/src/__tests__/fixtures/let-tag-set-in-effect/test.ts (16)
.sizes/dom.js (2)
  • steps (35-35)
  • steps (41-41)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-state/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts (1)
  • steps (3-13)
packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/await-closure-within/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/await-closure/test.ts (1)
  • steps (3-13)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (6-10)
packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (27-29)
  • wait (6-10)
packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (27-29)
  • wait (6-10)
packages/runtime-tags/src/__tests__/fixtures/closure-owner-scope-serialize-in-serialized-function/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (6-10)
packages/runtime-tags/src/translator/util/signals.ts (3)
packages/runtime-tags/src/translator/util/state.ts (1)
  • createSectionState (22-38)
packages/runtime-tags/src/translator/util/references.ts (2)
  • getCanonicalBinding (1410-1421)
  • getScopeAccessorLiteral (1455-1469)
packages/runtime-tags/src/translator/util/optional.ts (1)
  • some (246-251)
packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (27-29)
  • wait (6-10)
packages/runtime-tags/src/__tests__/fixtures/let-undefined-until-dom/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (6-10)
packages/runtime-tags/src/__tests__/fixtures/log-tag/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (6-10)
packages/runtime-tags/src/__tests__/fixtures/merged-define-tag-templates/test.ts (3)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts (1)
  • steps (3-13)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (6-10)
packages/runtime-tags/src/__tests__/main.test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (4)
  • isFlush (39-41)
  • isWait (35-37)
  • resolveAfter (47-55)
  • resetResolveState (66-71)
.sizes/dom.js (3)
packages/runtime-tags/src/dom/compat.ts (1)
  • render (74-111)
packages/runtime-tags/src/dom/template.ts (2)
  • value (130-132)
  • value (133-135)
packages/runtime-tags/src/dom/renderer.ts (4)
  • createAndSetupBranch (57-67)
  • setupBranch (69-74)
  • _content (76-119)
  • createBranch (29-55)
packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/test.ts (2)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (27-29)
  • wait (6-10)
packages/runtime-tags/src/__tests__/fixtures/await-tag/test.ts (1)
  • skip_equivalent (5-5)
packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (27-29)
  • wait (6-10)
packages/runtime-tags/src/__tests__/utils/create-browser.ts (3)
packages/runtime-class/src/translator/taglib/core/parse-module-code.js (1)
  • fn (14-14)
packages/runtime-tags/src/dom/walker.ts (1)
  • walker (13-13)
.sizes/dom.js (1)
  • node (167-167)
🪛 ast-grep (0.40.0)
packages/runtime-tags/src/__tests__/utils/create-browser.ts

[warning] 85-85: Direct HTML content assignment detected. Modifying innerHTML, outerHTML, or using document.write with unsanitized content can lead to XSS vulnerabilities. Use secure alternatives like textContent or sanitize HTML with libraries like DOMPurify.
Context: document.write(chunks[0])
Note: [CWE-79] Improper Neutralization of Input During Web Page Generation [REFERENCES]
- https://www.dhairyashah.dev/posts/why-innerhtml-is-a-bad-idea-and-how-to-avoid-it/
- https://cwe.mitre.org/data/definitions/79.html

(unsafe-html-content-assignment)


[warning] 85-85: Direct modification of innerHTML or outerHTML properties detected. Modifying these properties with unsanitized user input can lead to XSS vulnerabilities. Use safe alternatives or sanitize content first.
Context: document.write(chunks[0])
Note: [CWE-79] Improper Neutralization of Input During Web Page Generation [REFERENCES]
- https://owasp.org/www-community/xss-filter-evasion-cheatsheet
- https://cwe.mitre.org/data/definitions/79.html

(dom-content-modification)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: test: node@24
  • GitHub Check: test: node@22
  • GitHub Check: test: node@20

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

♻️ Duplicate comments (7)
package.json (1)

69-69: 🔴 Non-existent dependency version blocks installation (unresolved from previous review).

Line 69 specifies [email protected], which does not exist on npm. The latest published version is 5.0.0. This will cause npm install to fail, blocking the PR from being built and deployed.

Either correct the version to ^5.0.0 or confirm that 5.0.1 will be published before this PR merges.

Apply this diff if correcting to the latest available release:

-    "mocha-snap": "^5.0.1",
+    "mocha-snap": "^5.0.0",
packages/runtime-tags/src/dom/resume.ts (1)

164-166: Typo in TODO comment already flagged.

The spelling errors "seperate" → "separate" and "it's" → "its" were already identified in a previous review.

packages/runtime-tags/src/__tests__/utils/resolve.ts (2)

1-4: Uninitialized global state already flagged.

The initialization issue with declare let __RESOLVE_STATE__ was already identified in a previous review, which noted it could cause runtime errors if accessed before resetResolveState() is called.


73-75: Default parameter initialization issue already flagged.

The potential initialization order issue with __RESOLVE_STATE__.lastId in the default parameter was already identified in a previous review.

.sizes/dom.js (1)

1314-1325: This issue was previously flagged and remains unresolved.

The past review comment correctly identified that pendingScopes.pop() at line 1324 incorrectly assumes createBranch leaves the newly created branch as the last pending scope. However, createBranch can create nested scopes via renderer.h (the clone function) which calls walk(), causing the pop to potentially remove the wrong scope.

Since this is a generated/bundled file, the fix should be applied in the source TypeScript files (likely in packages/runtime-tags/src/dom/control-flow.ts based on the function name _await_content).

packages/runtime-tags/src/dom/control-flow.ts (1)

162-173: Clarify pendingScopes push/pop invariants between _await_promise and _await_content.

In the success path of _await_promise, pendingScopes.push(awaitBranch) only runs when awaitBranch[AccessorProp.DetachedAwait] is truthy, but _await_content unconditionally calls pendingScopes.pop(). While Array.prototype.pop() on an empty array is runtime-safe, it can desynchronize the stack if _await_content ever runs without a corresponding push.

If the translator/runtime guarantees that every _await_content invocation is paired with a prior pendingScopes.push for the same branch, it would be helpful to either:

  • Encode that invariant explicitly (e.g., in a MARKO_DEBUG assertion), or
  • Defensively guard the pop, for example:
const branch = scope[branchAccessor] as BranchScope;
(scope[branchAccessor] = createBranch(
  scope[AccessorProp.Global],
  renderer,
  scope,
  (scope[nodeAccessor] as ChildNode).parentNode!,
))[AccessorProp.DetachedAwait] = renderer;

if (pendingScopes[pendingScopes.length - 1] === branch) {
  pendingScopes.pop();
}

This keeps behavior unchanged under current invariants but prevents silent stack corruption if those invariants ever shift.

Also applies to: 238-245

packages/runtime-tags/src/__tests__/utils/create-browser.ts (1)

5-12: Tighten typings for window augmentation and script detection.

Two small type-safety nits in the test helper:

  1. window.__RESOLVE_STATE__
    window is cast to DOMWindow & { MessageChannel: any }, but later you assign window.__RESOLVE_STATE__. Under typical TS settings this will complain that __RESOLVE_STATE__ does not exist on the type.

    To keep typings accurate without changing runtime behavior, consider:

    const window = browser.window as unknown as DOMWindow & {
      MessageChannel: any;
      __RESOLVE_STATE__: any;
    };
    
    window.__RESOLVE_STATE__ = (globalThis as any).__RESOLVE_STATE__;

    or, if you prefer a narrower cast:

    (window as any).__RESOLVE_STATE__ = (globalThis as any).__RESOLVE_STATE__;
  2. isScript in the TreeWalker loop
    createTreeWalker(parsed) can yield non-Element nodes (Document, Text, Comment, etc.), but isScript is currently computed as:

    const isScript = (node as Element).tagName === "SCRIPT";

    which relies on an unchecked cast. A small guard keeps both runtime and types honest:

    const isScript =
      node.nodeType === 1 /* Node.ELEMENT_NODE */ &&
      (node as Element).tagName === "SCRIPT";

    This also aligns with the earlier review feedback around this check.

Also applies to: 28-46, 61-77

🧹 Nitpick comments (5)
packages/runtime-tags/src/translator/util/optional.ts (1)

246-251: some helper is consistent with existing Opt utilities; consider falsy-singleton nuance as a low-priority follow-up

The implementation mirrors find/toArray/forEach semantics (array vs single vs undefined) and keeps the API surface nicely aligned.

One minor nuance to be aware of: using data ? ... : false means a single falsy value (e.g., 0, "", false) will be treated as “no data” and immediately return false. This is consistent with several other helpers in this file, so it’s not a regression, but if you ever need to support falsy singletons here, you’d want to switch to an explicit data !== undefined check and make the same adjustment across the other helpers for consistency.

packages/runtime-tags/src/translator/util/signals.ts (1)

275-284: Clarify whether the placeholder-marked section itself should count as “under” a try placeholder

underTryPlaceholder currently starts from section.parent, so only descendants of a section marked via setTryHasPlaceholder return true; the section that was marked itself returns false. Given that setTryHasPlaceholder is called on the try body section and underTryPlaceholder is used both from some(closure.closureSections, underTryPlaceholder) and writeHTMLResumeStatements(section), it’d be good to explicitly confirm this off‑by‑one in the ancestor chain is intentional.

If the intent is “has any try-with-placeholder ancestor (including self)”, you could adjust to start from section instead of section.parent; otherwise, a brief comment or a rename like hasTryPlaceholderAncestor would make the current behavior more obvious.

packages/runtime-tags/src/dom/queue.ts (1)

202-219: Consider narrowing the type instead of casting.

The type cast on line 207-208 assumes asyncRendersLookup is never 0 or undefined at this point. While this is guaranteed by the control flow (it's always initialized before runRender is called), the cast could be avoided with better type narrowing.

Consider adding a runtime assertion or restructuring to narrow the type:

     try {
       let branch = render.___scope[AccessorProp.ClosestBranch];
       while (branch) {
         if (branch[AccessorProp.PendingRenders]) {
-          (asyncRendersLookup as typeof pendingRendersLookup).set(
+          asyncRendersLookup!.set(
             render.___key,
             render,
           );
           return branch[AccessorProp.PendingRenders].push(render);
         }

Or add a type guard at the function entry if preferred.

packages/runtime-tags/src/__tests__/main.test.ts (2)

373-415: Consider invoking run() during the auto-flush loop as well.

In resume:

  • Explicit isFlush(update) steps call flushNext(), then run(), then await 1 before logging "FLUSH".
  • The later auto-flush loop (while (hasFlush)) only does await resolveAfter(0, 1), flushNext(), and logs "FLUSH (auto)", without a corresponding run() (or microtask yield after flushNext).

If additional DOM work or queued renders/effects can be scheduled when later chunks are streamed, skipping run() here could leave pending work unflushed at the point logs are captured, potentially making resume logs diverge from CSR behavior.

If parity with CSR is desired even for implicit flushes, consider aligning the auto-flush loop with the explicit flush path, e.g.:

while (hasFlush) {
  await resolveAfter(0, 1);
  tracker.beginUpdate();
  hasFlush = flushNext();
  run();
  await 1;
  tracker.logUpdate("FLUSH (auto)");
}

If the current behavior is intentional (e.g., auto flushes are meant to be purely network/HTML events without extra DOM queue drains), a brief comment would help future readers.


443-459: Verify whether resetResolveState should also run for sanitized render suites.

resetResolveState() is wired into beforeEach under describe("render", ...), which ensures the shared __RESOLVE_STATE__ is reset for the plain ssr/resume/csr tests.

The describe("sanitized", ...) block reuses the same ssr, resume, and csr helpers (and their internal caching) but does not have its own beforeEach reset. If __RESOLVE_STATE__ influences how steps, resolveAfter, or streaming behave, sanitized tests will observe whatever state was left after the last non-sanitized render test.

If that coupling is not intentional, consider either:

  • Moving beforeEach(resetResolveState) up into the enclosing describe(entry, ...), or
  • Adding a parallel beforeEach(resetResolveState) inside the sanitized describe.

Otherwise, a short comment clarifying that sanitized tests are expected to share resolve state with the prior render run would make this intention clearer.

Also applies to: 461-472

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between df7f03c and c4d04e5.

⛔ Files ignored due to path filters (155)
  • package-lock.json is excluded by !**/package-lock.json and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/dom.expected/tags/recurse.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/html.expected/tags/recurse.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/script-tag-value-no-scope/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/script-tag-value-no-scope/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
📒 Files selected for processing (80)
  • .changeset/open-facts-obey.md (1 hunks)
  • .sizes.json (3 hunks)
  • .sizes/comments.ssr/entry.js (1 hunks)
  • .sizes/counter.ssr/entry.js (1 hunks)
  • .sizes/dom.js (21 hunks)
  • .sizes/name-cache.json (1 hunks)
  • package.json (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/tags/recurse.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-state/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-state/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/closure-owner-scope-serialize-in-serialized-function/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-input-intersection/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/error-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/for-tag-single-node-only-child-in-parent/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/for-tag-single-text-node-with-text-before/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/for-tag-with-state/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/function-references-normalize/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/function-references-optional-member-normalize/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/html-comment-var/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/if-member-expression-intersection/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/let-tag-set-in-effect/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/let-undefined-until-dom/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-assignment/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-this-attrs/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/local-closure-script/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/log-tag/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/merged-define-tag-templates/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/migrate-effect-tag/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-static-multiple/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/return-value-registered/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/script-tag-value-no-scope/template.marko (0 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/serialize-promise/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/user-effect-abort-signal/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/main.test.ts (7 hunks)
  • packages/runtime-tags/src/__tests__/utils/create-browser.ts (2 hunks)
  • packages/runtime-tags/src/__tests__/utils/resolve.ts (2 hunks)
  • packages/runtime-tags/src/common/accessor.debug.ts (1 hunks)
  • packages/runtime-tags/src/common/accessor.ts (1 hunks)
  • packages/runtime-tags/src/common/types.ts (3 hunks)
  • packages/runtime-tags/src/dom/control-flow.ts (5 hunks)
  • packages/runtime-tags/src/dom/queue.ts (6 hunks)
  • packages/runtime-tags/src/dom/resume.ts (2 hunks)
  • packages/runtime-tags/src/dom/signals.ts (2 hunks)
  • packages/runtime-tags/src/translator/core/try.ts (3 hunks)
  • packages/runtime-tags/src/translator/util/optional.ts (1 hunks)
  • packages/runtime-tags/src/translator/util/signals.ts (4 hunks)
💤 Files with no reviewable changes (1)
  • packages/runtime-tags/src/tests/fixtures/script-tag-value-no-scope/template.marko
✅ Files skipped from review due to trivial changes (1)
  • .sizes/comments.ssr/entry.js
🚧 Files skipped from review as they are similar to previous changes (39)
  • .changeset/open-facts-obey.md
  • packages/runtime-tags/src/tests/fixtures/await-closure-within/test.ts
  • packages/runtime-tags/src/tests/fixtures/for-tag-with-state/test.ts
  • packages/runtime-tags/src/tests/fixtures/circular-tag-var-function-serialize/test.ts
  • packages/runtime-tags/src/tests/fixtures/async-resolve-in-order/test.ts
  • packages/runtime-tags/src/tests/fixtures/catch-single-reject-async/test.ts
  • packages/runtime-tags/src/tests/fixtures/migrate-effect-tag/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-remove-parent/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-closure/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-closure-within/template.marko
  • packages/runtime-tags/src/tests/fixtures/closure-owner-scope-serialize-in-serialized-function/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-closure-inert/test.ts
  • packages/runtime-tags/src/tests/fixtures/async-multi-resolve-in-order-and-update/test.ts
  • packages/runtime-tags/src/common/accessor.debug.ts
  • packages/runtime-tags/src/tests/fixtures/await-update-before-resume/test.ts
  • packages/runtime-tags/src/tests/fixtures/return-serialize-circular/test.ts
  • packages/runtime-tags/src/tests/fixtures/function-references-optional-member-normalize/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-closure-inert/template.marko
  • packages/runtime-tags/src/tests/fixtures/async-multi-resolve-in-order-and-update/template.marko
  • packages/runtime-tags/src/tests/fixtures/await-tag/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-closure-in-order/test.ts
  • .sizes/counter.ssr/entry.js
  • packages/runtime-tags/src/tests/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/test.ts
  • packages/runtime-tags/src/tests/fixtures/let-undefined-until-dom/test.ts
  • packages/runtime-tags/src/tests/fixtures/async-nested-resolve-in-order/test.ts
  • packages/runtime-tags/src/tests/fixtures/return-value-registered/test.ts
  • packages/runtime-tags/src/tests/fixtures/function-references-normalize/test.ts
  • packages/runtime-tags/src/tests/fixtures/async-deep-recursive/test.ts
  • packages/runtime-tags/src/tests/fixtures/html-comment-var/test.ts
  • packages/runtime-tags/src/tests/fixtures/for-tag-single-node-only-child-in-parent/test.ts
  • packages/runtime-tags/src/tests/fixtures/async-deep-recursive/tags/recurse.marko
  • packages/runtime-tags/src/tests/fixtures/user-effect-abort-signal/test.ts
  • packages/runtime-tags/src/tests/fixtures/placeholder-static-multiple/test.ts
  • packages/runtime-tags/src/tests/fixtures/lifecycle-tag-assignment/test.ts
  • packages/runtime-tags/src/tests/fixtures/assign-destructured-reduced/test.ts
  • packages/runtime-tags/src/tests/fixtures/async-nested-resolve-in-order/template.marko
  • packages/runtime-tags/src/tests/fixtures/lifecycle-tag-this-attrs/test.ts
  • packages/runtime-tags/src/tests/fixtures/placeholders-nested/test.ts
  • packages/runtime-tags/src/tests/fixtures/serialize-promise/test.ts
🧰 Additional context used
🧬 Code graph analysis (13)
packages/runtime-tags/src/dom/signals.ts (2)
packages/runtime-tags/src/dom/resume.ts (1)
  • _resume (316-318)
packages/runtime-tags/src/html/writer.ts (1)
  • _resume (164-176)
packages/runtime-tags/src/__tests__/fixtures/placeholder-single/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (27-29)
  • wait (6-10)
packages/runtime-tags/src/__tests__/fixtures/log-tag/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (6-10)
packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (27-29)
  • wait (6-10)
packages/runtime-tags/src/translator/util/signals.ts (6)
packages/runtime-tags/src/translator/util/state.ts (1)
  • createSectionState (22-38)
packages/runtime-tags/src/translator/util/references.ts (2)
  • getCanonicalBinding (1410-1421)
  • getScopeAccessorLiteral (1455-1469)
packages/runtime-tags/src/translator/util/sections.ts (3)
  • isDynamicClosure (356-358)
  • isImmediateOwner (348-350)
  • Section (51-80)
packages/runtime-tags/src/translator/util/scope-read.ts (1)
  • getScopeExpression (63-74)
packages/runtime-tags/src/translator/util/optional.ts (1)
  • some (246-251)
packages/runtime-tags/src/translator/util/serialize-guard.ts (1)
  • getExprIfSerialized (91-124)
packages/runtime-tags/src/__tests__/fixtures/merged-define-tag-templates/test.ts (15)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-state/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/await-closure-within/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/await-tag/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (6-10)
packages/runtime-tags/src/__tests__/fixtures/try-effects-async/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (27-29)
  • wait (6-10)
packages/runtime-tags/src/__tests__/fixtures/error-async/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (6-10)
packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts (1)
  • steps (3-13)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (27-29)
  • wait (6-10)
packages/runtime-tags/src/dom/queue.ts (1)
.sizes/dom.js (14)
  • render (1801-1802)
  • key (1744-1745)
  • scope (118-118)
  • i (28-28)
  • i (751-751)
  • i (982-982)
  • i (1003-1003)
  • i (1752-1752)
  • i (1797-1797)
  • i (1804-1806)
  • parentIndex (1754-1755)
  • parent (1175-1177)
  • effects (1765-1765)
  • prevRenders (1778-1781)
.sizes/dom.js (3)
packages/runtime-tags/src/dom/signals.ts (2)
  • _closure_get (181-209)
  • subscribeToScopeSet (145-157)
packages/runtime-tags/src/dom/renderer.ts (1)
  • _content (76-119)
packages/runtime-tags/src/dom/queue.ts (3)
  • queueRender (24-46)
  • run (67-80)
  • queuePendingRender (48-58)
packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (27-29)
  • wait (6-10)
packages/runtime-tags/src/common/types.ts (2)
packages/runtime-tags/src/dom/queue.ts (1)
  • PendingRender (7-12)
packages/runtime-tags/src/dom/renderer.ts (1)
  • Renderer (16-25)
🪛 ast-grep (0.40.0)
packages/runtime-tags/src/__tests__/utils/create-browser.ts

[warning] 85-85: Direct HTML content assignment detected. Modifying innerHTML, outerHTML, or using document.write with unsanitized content can lead to XSS vulnerabilities. Use secure alternatives like textContent or sanitize HTML with libraries like DOMPurify.
Context: document.write(chunks[0])
Note: [CWE-79] Improper Neutralization of Input During Web Page Generation [REFERENCES]
- https://www.dhairyashah.dev/posts/why-innerhtml-is-a-bad-idea-and-how-to-avoid-it/
- https://cwe.mitre.org/data/definitions/79.html

(unsafe-html-content-assignment)


[warning] 85-85: Direct modification of innerHTML or outerHTML properties detected. Modifying these properties with unsanitized user input can lead to XSS vulnerabilities. Use safe alternatives or sanitize content first.
Context: document.write(chunks[0])
Note: [CWE-79] Improper Neutralization of Input During Web Page Generation [REFERENCES]
- https://owasp.org/www-community/xss-filter-evasion-cheatsheet
- https://cwe.mitre.org/data/definitions/79.html

(dom-content-modification)

@rturnq rturnq force-pushed the async-render-queues branch from c4d04e5 to 0c484fc Compare December 5, 2025 02:14
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (7)
packages/runtime-tags/src/translator/util/signals.ts (1)

247-268: Redundant getClosureSignalBuilder call on line 252.

Line 252 calls getClosureSignalBuilder(section) again, but the result was already stored in the closureSignalBuilder variable on line 249.

Apply this diff to use the cached value:

-          return getClosureSignalBuilder(section)!(closure, render);
+          return closureSignalBuilder!(closure, render);
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)

1-4: Initialization dependency: __RESOLVE_STATE__ requires external setup.

The declare let pattern only types the variable but doesn't initialize it. The code relies on resetResolveState() being called externally (line 73 assigns to globalThis.__RESOLVE_STATE__) before any utility functions are used.

Verify that all test entry points call resetResolveState() before using wait, after, or resolveAfter:

#!/bin/bash
# Find test files that import from resolve but may not call resetResolveState

rg -l 'from.*utils/resolve' packages/runtime-tags/src/__tests__/fixtures/ | while read file; do
  base=$(dirname "$file")
  if [ -f "$base/test.ts" ] && ! rg -q 'resetResolveState' "$base/test.ts"; then
    echo "Fixture may be missing resetResolveState: $base"
  fi
done

79-81: Default parameter reads potentially uninitialized global.

The default parameter id: number = __RESOLVE_STATE__.lastId + 1 is evaluated when the function is called. If resetResolveState() hasn't been called yet, this will throw a runtime error.

Consider computing the default inside the function body:

 function getSharedPromise(
-  id: number = __RESOLVE_STATE__.lastId + 1,
+  id?: number,
 ): Promise<number> {
+  if (id === undefined) {
+    id = __RESOLVE_STATE__.lastId + 1;
+  }
   if (id < 1) {

This defers the access to __RESOLVE_STATE__ until after the function body executes, reducing the risk of premature access.

packages/runtime-tags/src/__tests__/fixtures/await-closure/template.marko (1)

2-2: Fix syntax error in variable declaration.

Line 2 contains let/value=1 with an unexpected forward slash. This should be let value = 1.

Apply this diff to fix the syntax:

-let/value=1
+let value = 1
packages/runtime-tags/src/dom/resume.ts (1)

164-165: Fix typos in TODO comment (“separate”, “its”)

The TODO reads: “seperate” and “it's”. It should be “separate” and the possessive “its”.

You could update it to something like:

-// TODO: when branch is part of a seperate flush than it's parent, we
-// may need to set branch parent to accessor when visitScope is a branch
+// TODO: when a branch is part of a separate flush than its parent,
+// we may need to set the branch parent to the accessor when visitScope is a branch
packages/runtime-tags/src/__tests__/main.test.ts (1)

488-538: Confirmed: Comparison logic with fallback is intentional.

The log comparison algorithm normalizes dynamic IDs and attempts to sequentially match resume logs to CSR logs. The fallback at lines 534-538 handles cases where the matching algorithm finds no correlations by falling back to direct full-log comparison. This was previously reviewed and confirmed as intentional behavior.

.sizes/dom.js (1)

1314-1325: pendingScopes.pop() still incorrectly assumes createBranch leaves it as the last pending scope.

As previously noted, the createBranch call at line 1318 can push multiple scopes to pendingScopes through nested walk processing (via renderer.hwalkwalkInternalcreateScope). The pop() at line 1324 only removes the last scope, which may not be the awaitBranch created at line 1318.

This issue remains unresolved from the previous review.

🧹 Nitpick comments (2)
packages/runtime-tags/src/__tests__/utils/create-browser.ts (1)

70-77: Minor: Empty script tags may skip incorrectly.

The logic calls walker.nextNode() once to skip script descendants. For empty script tags, this advances to the next sibling instead of skipping descendants (since there are none).

Consider checking for children before skipping:

           if (isScript) {
-            walker.nextNode();
+            if (node.hasChildNodes()) {
+              walker.nextNode();
+            }
           }

This is a minor edge case since empty script tags are uncommon in test fixtures.

packages/runtime-tags/src/__tests__/fixtures/await-closure-within/test.ts (1)

5-7: Consider adding a defensive check for the button element.

The non-null assertion operator (!) assumes a button will always exist. If the button is missing, this will throw a runtime error.

Apply this diff if you want to add a defensive check:

 function click(container: Element) {
-  container.querySelector("button")!.click();
+  const button = container.querySelector("button");
+  if (!button) throw new Error("Button not found in container");
+  button.click();
 }

Alternatively, if the button's presence is guaranteed by the test setup, consider adding a comment to document this assumption.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c4d04e5 and 0c484fc.

⛔ Files ignored due to path filters (155)
  • package-lock.json is excluded by !**/package-lock.json and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/dom.expected/tags/recurse.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/html.expected/tags/recurse.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/script-tag-value-no-scope/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/script-tag-value-no-scope/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
📒 Files selected for processing (82)
  • .changeset/open-facts-obey.md (1 hunks)
  • .sizes.json (3 hunks)
  • .sizes/comments.ssr/entry.js (1 hunks)
  • .sizes/counter.ssr/entry.js (1 hunks)
  • .sizes/dom.js (21 hunks)
  • .sizes/name-cache.json (1 hunks)
  • package.json (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/tags/recurse.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-state/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-state/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/closure-owner-scope-serialize-in-serialized-function/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-input-intersection/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/error-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/for-tag-single-node-only-child-in-parent/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/for-tag-single-text-node-with-text-before/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/for-tag-with-state/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/function-references-normalize/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/function-references-optional-member-normalize/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/html-comment-var/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/html-script-nonce/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/html-style-nonce/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/if-member-expression-intersection/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/let-tag-set-in-effect/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/let-undefined-until-dom/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-assignment/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-this-attrs/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/local-closure-script/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/log-tag/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/merged-define-tag-templates/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/migrate-effect-tag/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-static-multiple/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/return-value-registered/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/script-tag-value-no-scope/template.marko (0 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/serialize-promise/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/user-effect-abort-signal/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/main.test.ts (7 hunks)
  • packages/runtime-tags/src/__tests__/utils/create-browser.ts (2 hunks)
  • packages/runtime-tags/src/__tests__/utils/resolve.ts (2 hunks)
  • packages/runtime-tags/src/common/accessor.debug.ts (1 hunks)
  • packages/runtime-tags/src/common/accessor.ts (1 hunks)
  • packages/runtime-tags/src/common/types.ts (3 hunks)
  • packages/runtime-tags/src/dom/control-flow.ts (5 hunks)
  • packages/runtime-tags/src/dom/queue.ts (6 hunks)
  • packages/runtime-tags/src/dom/resume.ts (2 hunks)
  • packages/runtime-tags/src/dom/signals.ts (2 hunks)
  • packages/runtime-tags/src/translator/core/try.ts (3 hunks)
  • packages/runtime-tags/src/translator/util/optional.ts (1 hunks)
  • packages/runtime-tags/src/translator/util/signals.ts (4 hunks)
💤 Files with no reviewable changes (1)
  • packages/runtime-tags/src/tests/fixtures/script-tag-value-no-scope/template.marko
✅ Files skipped from review due to trivial changes (1)
  • .sizes/comments.ssr/entry.js
🚧 Files skipped from review as they are similar to previous changes (38)
  • .sizes/counter.ssr/entry.js
  • packages/runtime-tags/src/tests/fixtures/return-serialize-circular/test.ts
  • packages/runtime-tags/src/tests/fixtures/placeholder-static-multiple/test.ts
  • packages/runtime-tags/src/tests/fixtures/circular-tag-var-function-serialize/test.ts
  • packages/runtime-tags/src/tests/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-closure-inert/test.ts
  • packages/runtime-tags/src/tests/fixtures/async-deep-recursive/tags/recurse.marko
  • packages/runtime-tags/src/tests/fixtures/if-member-expression-intersection/test.ts
  • .sizes/name-cache.json
  • packages/runtime-tags/src/tests/fixtures/closure-owner-scope-serialize-in-serialized-function/test.ts
  • packages/runtime-tags/src/tests/fixtures/async-reorder-nested-batched-resolve/test.ts
  • packages/runtime-tags/src/tests/fixtures/async-resolve-in-order/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-closure-inert/template.marko
  • packages/runtime-tags/src/tests/fixtures/return-value-registered/test.ts
  • packages/runtime-tags/src/common/accessor.debug.ts
  • packages/runtime-tags/src/tests/fixtures/await-closure-within/template.marko
  • packages/runtime-tags/src/tests/fixtures/lifecycle-tag-assignment/test.ts
  • packages/runtime-tags/src/translator/core/try.ts
  • packages/runtime-tags/src/tests/fixtures/user-effect-abort-signal/test.ts
  • package.json
  • packages/runtime-tags/src/tests/fixtures/async-deep-recursive/test.ts
  • .changeset/open-facts-obey.md
  • packages/runtime-tags/src/tests/fixtures/catch-single-reject-async/test.ts
  • packages/runtime-tags/src/tests/fixtures/async-nested-resolve-in-order/test.ts
  • packages/runtime-tags/src/common/types.ts
  • packages/runtime-tags/src/tests/fixtures/merged-define-tag-templates/test.ts
  • packages/runtime-tags/src/tests/fixtures/try-effects-async/test.ts
  • packages/runtime-tags/src/tests/fixtures/for-tag-with-state/test.ts
  • packages/runtime-tags/src/translator/util/optional.ts
  • packages/runtime-tags/src/tests/fixtures/async-multi-resolve-in-order-and-update/template.marko
  • packages/runtime-tags/src/tests/fixtures/html-comment-var/test.ts
  • packages/runtime-tags/src/tests/fixtures/for-tag-single-text-node-with-text-before/test.ts
  • .sizes.json
  • packages/runtime-tags/src/tests/fixtures/error-async/test.ts
  • packages/runtime-tags/src/common/accessor.ts
  • packages/runtime-tags/src/tests/fixtures/local-closure-script/test.ts
  • packages/runtime-tags/src/tests/fixtures/function-references-optional-member-normalize/test.ts
  • packages/runtime-tags/src/tests/fixtures/lifecycle-tag-this-attrs/test.ts
🧰 Additional context used
🧬 Code graph analysis (20)
packages/runtime-tags/src/__tests__/fixtures/html-style-nonce/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (6-19)
packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/test.ts (2)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (33-35)
  • wait (6-19)
packages/runtime-tags/src/__tests__/fixtures/placeholder-single/test.ts (1)
  • skip_equivalent (5-5)
packages/runtime-tags/src/__tests__/fixtures/migrate-effect-tag/test.ts (5)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts (1)
  • steps (3-13)
packages/runtime-tags/src/__tests__/fixtures/await-closure/test.ts (1)
  • steps (3-13)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (6-19)
packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/await-closure/test.ts (1)
  • steps (3-13)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • after (21-31)
  • flush (33-35)
packages/runtime-tags/src/__tests__/fixtures/placeholder-single/test.ts (2)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (33-35)
  • wait (6-19)
packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/test.ts (1)
  • skip_equivalent (5-5)
packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (33-35)
  • wait (6-19)
packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (33-35)
  • wait (6-19)
packages/runtime-tags/src/__tests__/fixtures/serialize-promise/test.ts (1)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/test.ts (4)
packages/runtime-tags/src/__tests__/fixtures/await-closure/test.ts (1)
  • steps (3-13)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (33-35)
  • wait (6-19)
packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/test.ts (1)
  • skip_equivalent (5-5)
packages/runtime-tags/src/__tests__/fixtures/placeholder-single/test.ts (1)
  • skip_equivalent (5-5)
packages/runtime-tags/src/__tests__/fixtures/let-undefined-until-dom/test.ts (1)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/for-tag-single-node-only-child-in-parent/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (6-19)
packages/runtime-tags/src/__tests__/fixtures/let-tag-set-in-effect/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (6-19)
packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-input-intersection/test.ts (3)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/await-closure/test.ts (1)
  • steps (3-13)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (6-19)
packages/runtime-tags/src/__tests__/fixtures/html-script-nonce/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (6-19)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (6-19)
packages/runtime-tags/src/__tests__/fixtures/await-closure/test.ts (1)
packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts (1)
  • steps (3-13)
packages/runtime-tags/src/__tests__/fixtures/function-references-normalize/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (6-19)
packages/runtime-tags/src/__tests__/utils/create-browser.ts (2)
packages/runtime-tags/src/dom/walker.ts (1)
  • walker (13-13)
.sizes/dom.js (2)
  • node (167-167)
  • clone (865-894)
packages/runtime-tags/src/dom/control-flow.ts (6)
packages/runtime-tags/src/common/types.ts (3)
  • BranchScope (6-19)
  • AccessorProp (50-50)
  • Scope (20-32)
packages/runtime-tags/src/dom/scope.ts (4)
  • findBranchWithKey (27-36)
  • removeAndDestroyBranch (55-61)
  • insertBranchBefore (63-74)
  • tempDetachBranch (76-91)
packages/runtime-tags/src/dom/queue.ts (6)
  • queueEffect (60-65)
  • pendingEffects (19-19)
  • prepareEffects (82-103)
  • queueRender (24-46)
  • run (67-80)
  • PendingRender (7-12)
packages/runtime-tags/src/dom/renderer.ts (5)
  • createAndSetupBranch (57-67)
  • Renderer (16-25)
  • setupBranch (69-74)
  • _content (76-119)
  • createBranch (29-55)
packages/runtime-tags/src/dom.ts (2)
  • run (57-57)
  • _content (58-58)
packages/runtime-tags/src/html.ts (1)
  • _content (33-33)
.sizes/dom.js (8)
packages/runtime-tags/src/dom/signals.ts (2)
  • _closure_get (181-209)
  • subscribeToScopeSet (145-157)
packages/runtime-tags/src/common/helpers.ts (1)
  • decodeAccessor (100-101)
packages/runtime-tags/src/dom/resume.ts (1)
  • _resume (316-318)
packages/runtime-tags/src/dom/template.ts (2)
  • value (130-132)
  • value (133-135)
packages/runtime-tags/src/dom/control-flow.ts (2)
  • setConditionalRenderer (474-524)
  • renderCatch (279-310)
packages/runtime-tags/src/dom/renderer.ts (3)
  • createAndSetupBranch (57-67)
  • setupBranch (69-74)
  • createBranch (29-55)
packages/runtime-tags/src/dom/queue.ts (9)
  • _enable_catch (160-220)
  • runEffects (105-109)
  • placeholderShown (18-18)
  • pendingEffects (19-19)
  • prepareEffects (82-103)
  • queueRender (24-46)
  • run (67-80)
  • queuePendingRender (48-58)
  • rendering (21-21)
packages/runtime-tags/src/dom/scope.ts (3)
  • findBranchWithKey (27-36)
  • removeAndDestroyBranch (55-61)
  • insertBranchBefore (63-74)
🪛 ast-grep (0.40.0)
packages/runtime-tags/src/__tests__/utils/create-browser.ts

[warning] 85-85: Direct modification of innerHTML or outerHTML properties detected. Modifying these properties with unsanitized user input can lead to XSS vulnerabilities. Use safe alternatives or sanitize content first.
Context: document.write(chunks[0])
Note: [CWE-79] Improper Neutralization of Input During Web Page Generation [REFERENCES]
- https://owasp.org/www-community/xss-filter-evasion-cheatsheet
- https://cwe.mitre.org/data/definitions/79.html

(dom-content-modification)


[warning] 85-85: Direct HTML content assignment detected. Modifying innerHTML, outerHTML, or using document.write with unsanitized content can lead to XSS vulnerabilities. Use secure alternatives like textContent or sanitize HTML with libraries like DOMPurify.
Context: document.write(chunks[0])
Note: [CWE-79] Improper Neutralization of Input During Web Page Generation [REFERENCES]
- https://www.dhairyashah.dev/posts/why-innerhtml-is-a-bad-idea-and-how-to-avoid-it/
- https://cwe.mitre.org/data/definitions/79.html

(unsafe-html-content-assignment)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: test: node@24
  • GitHub Check: test: node@20
  • GitHub Check: test: node@22
  • GitHub Check: Analyze (javascript)

@rturnq rturnq force-pushed the async-render-queues branch from 0c484fc to 5eede97 Compare December 5, 2025 06:11
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
packages/runtime-tags/src/dom/resume.ts (1)

164-166: Fix grammar in TODO comment (“it’s” → “its”)

The TODO still reads “separate flush than it's parent”; this should be “its parent” (possessive), e.g.:

-                // TODO: when branch is part of a separate flush than it's parent, we
+                // TODO: when branch is part of a separate flush than its parent, we

You might also consider “separate flush from its parent” for slightly smoother phrasing.

🧹 Nitpick comments (9)
packages/runtime-tags/src/__tests__/fixtures/await-closure/test.ts (2)

3-13: Consider extracting shared test sequences.

The steps array appears identical to the one in await-closure-in-order/test.ts. If these test fixtures share the same interaction sequence, consider extracting the array to a shared constant to reduce duplication and improve maintainability.


15-17: Consider extracting to a shared test utility.

The click helper function appears to be duplicated across multiple test fixtures. Consider extracting it to a shared utility in the test utils directory to reduce duplication.

Note: The non-null assertion operator assumes a button always exists. While this fail-fast behavior is acceptable for test code, ensure all test fixtures using this helper have the expected button element.

packages/runtime-tags/src/__tests__/fixtures/await-closure-within/template.marko (1)

2-8: Await/placeholder/control-flow fixture matches intended behavior; double-check concise syntax

The try + @placeholder + await + local state pattern cleanly models “loading → resolved → interactive increment” and seems well-suited to exercise the new pending-scope/closure behavior this PR introduces.

One thing to double-check: the concise syntax forms await=resolveAfter(0, 1) and if=(value > 0)—if the current Marko translator prefers await(resolveAfter(0, 1)) / if (value > 0) instead, consider switching to those for consistency with other fixtures.

packages/runtime-tags/src/dom/resume.ts (1)

167-171: Consider simplifying orphan-branch loop for readability

The while (i && orphanBranches[--i]...) plus pop() dance is correct but hard to scan, especially now that the block also sets ParentBranch and BranchScopes. You can keep the same behavior with a slightly clearer structure:

-                while (i && orphanBranches[--i][AccessorProp.Id] > branchId) {
-                  orphanBranches[i][AccessorProp.ParentBranch] = branch;
-                  (branch[AccessorProp.BranchScopes] ||= new Set()).add(
-                    orphanBranches.pop()!,
-                  );
-                }
+                while (i) {
+                  const orphan = orphanBranches[i - 1];
+                  if (orphan[AccessorProp.Id] <= branchId) break;
+                  i--;
+                  orphan[AccessorProp.ParentBranch] = branch;
+                  (branch[AccessorProp.BranchScopes] ||= new Set()).add(
+                    orphanBranches.pop()!,
+                  );
+                }

Same semantics, but avoids the pre-decrement in the condition and the double indexing, which should make future maintenance less error-prone.

packages/runtime-tags/src/__tests__/main.test.ts (1)

504-531: Minor typo in variable name.

prevResumLog should be prevResumeLog for consistency with resumeLog and resumeIndex.

-          let prevResumLog = "";
+          let prevResumeLog = "";

           while (resumeIndex < resumeLogs.length) {
             const resumeLog = resumeLogs[resumeIndex++].replace(
               /(# Render)[^\n]+/,
               "$1",
             );
-            if (resumeLog !== prevResumLog) {
+            if (resumeLog !== prevResumeLog) {
               while (csrIndex < csrLogs.length) {
                 const csrLog = csrLogs[csrIndex++].replace(
                   /(# Render)[^\n]+/,
                   "$1",
                 );
                 if (csrLog === resumeLog) {
                   if (expected) {
                     expected += "\n\n";
                   }
                   expected += csrLog;
                   break;
                 }
               }

               if (actual) {
                 actual += "\n\n";
               }
               actual += resumeLog;
             }
-            prevResumLog = resumeLog;
+            prevResumeLog = resumeLog;
           }
packages/runtime-tags/src/__tests__/utils/resolve.ts (4)

1-16: Global resolve state initialization and reset

Using globalThis.__RESOLVE_STATE__ ||= { ... } is a clean way to guarantee a single, initialized shared state across tests. One optional tweak: resetResolveState could clear() the existing map instead of replacing it, which preserves the map identity for any external references (if those ever appear), while keeping behavior the same in current usage.

export function resetResolveState() {
  state.lastId = 0;
-  state.promises = new Map();
+  state.promises.clear();
}

18-31: wait’s do/while loop semantics are non-obvious—consider simplification or a comment

The interaction between id = await getSharedPromise(nextId) and nextId = state.promises.size makes it a bit hard to see at a glance when wait() finishes, especially if new IDs can be added while earlier ones are resolving. If callers always schedule all resolveAfter calls before invoking wait, you could simplify to snapshotting the target once (e.g., const target = state.promises.size; if (target) await getSharedPromise(target);) or add a short comment documenting that assumption so future readers don’t misinterpret the behavior.


65-82: Clarify the meaning of the optional id in resolveAfter / rejectAfter

Routing through getSharedPromise(id) is a nice way to centralize ordering, and attaching { value } to the returned promise is convenient for tests. The only slightly opaque part from the call site is that omitting id means “use state.lastId + 1”. If these helpers are used broadly, a brief doc comment or a more descriptive parameter name (e.g., stepId) could make that sequencing contract clearer without changing behavior.


84-106: Recursive getSharedPromise / staged tick ordering—watch for potential depth issues

The recursive getSharedPromise(id - 1).then(tick) pattern correctly enforces strictly ordered resolution across IDs and pairs well with the staged timers in tick() to control scheduling. If tests ever end up requesting a very large id for the first time, this recursion could get deep; an iterative fill (looping from existingMax + 1 up to id) would avoid any recursion-depth limits while preserving the same semantics.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0c484fc and 5eede97.

⛔ Files ignored due to path filters (26)
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/dom.expected/tags/recurse.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/html.expected/tags/recurse.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
📒 Files selected for processing (65)
  • packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/tags/recurse.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-state/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-state/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/closure-owner-scope-serialize-in-serialized-function/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-input-intersection/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/error-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/for-tag-single-node-only-child-in-parent/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/for-tag-single-text-node-with-text-before/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/for-tag-with-state/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/function-references-normalize/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/function-references-optional-member-normalize/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/html-comment-var/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/html-script-nonce/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/html-style-nonce/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/if-member-expression-intersection/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/let-tag-set-in-effect/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/let-undefined-until-dom/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-assignment/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-this-attrs/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/local-closure-script/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/log-tag/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/merged-define-tag-templates/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/migrate-effect-tag/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-static-multiple/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/return-value-registered/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/serialize-promise/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/user-effect-abort-signal/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/main.test.ts (7 hunks)
  • packages/runtime-tags/src/__tests__/utils/create-browser.ts (2 hunks)
  • packages/runtime-tags/src/__tests__/utils/resolve.ts (2 hunks)
  • packages/runtime-tags/src/dom/resume.ts (2 hunks)
  • packages/runtime-tags/src/translator/util/signals.ts (4 hunks)
✅ Files skipped from review due to trivial changes (1)
  • packages/runtime-tags/src/tests/fixtures/migrate-effect-tag/test.ts
🚧 Files skipped from review as they are similar to previous changes (27)
  • packages/runtime-tags/src/tests/fixtures/try-effects-async/template.marko
  • packages/runtime-tags/src/tests/fixtures/error-async/test.ts
  • packages/runtime-tags/src/tests/fixtures/placeholder-static-multiple/test.ts
  • packages/runtime-tags/src/tests/fixtures/placeholder-skipped/test.ts
  • packages/runtime-tags/src/tests/fixtures/html-script-nonce/test.ts
  • packages/runtime-tags/src/tests/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/test.ts
  • packages/runtime-tags/src/tests/fixtures/async-multi-resolve-in-order-and-update/template.marko
  • packages/runtime-tags/src/tests/fixtures/local-closure-script/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-tag/test.ts
  • packages/runtime-tags/src/tests/fixtures/user-effect-abort-signal/test.ts
  • packages/runtime-tags/src/tests/fixtures/async-deep-recursive/test.ts
  • packages/runtime-tags/src/tests/fixtures/lifecycle-tag-this-attrs/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-update-before-resume/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-update-before-resume/template.marko
  • packages/runtime-tags/src/tests/fixtures/let-undefined-until-dom/test.ts
  • packages/runtime-tags/src/tests/fixtures/placeholder-single/test.ts
  • packages/runtime-tags/src/tests/fixtures/if-member-expression-intersection/test.ts
  • packages/runtime-tags/src/tests/fixtures/html-style-nonce/test.ts
  • packages/runtime-tags/src/tests/fixtures/catch-single-reject-async/test.ts
  • packages/runtime-tags/src/tests/fixtures/placeholders-nested/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-update-after-resume/template.marko
  • packages/runtime-tags/src/tests/fixtures/async-nested-resolve-in-order/template.marko
  • packages/runtime-tags/src/tests/fixtures/async-resolve-out-of-order/test.ts
  • packages/runtime-tags/src/tests/fixtures/log-tag/test.ts
  • packages/runtime-tags/src/tests/fixtures/return-serialize-circular/test.ts
  • packages/runtime-tags/src/tests/fixtures/lifecycle-tag-assignment/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-closure-within/test.ts
🧰 Additional context used
🧬 Code graph analysis (19)
packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (45-47)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/test.ts (3)
packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • wait (18-31)
  • flush (45-47)
packages/runtime-tags/src/__tests__/fixtures/await-tag/test.ts (1)
  • skip_equivalent (5-5)
packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/test.ts (5)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts (2)
  • steps (3-13)
  • skip_equivalent (15-15)
packages/runtime-tags/src/__tests__/fixtures/await-closure/test.ts (1)
  • steps (3-13)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (45-47)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/test.ts (1)
  • skip_equivalent (5-5)
packages/runtime-tags/src/__tests__/fixtures/function-references-optional-member-normalize/test.ts (1)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/await-closure/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts (1)
  • steps (3-13)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • after (33-43)
  • flush (45-47)
packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/await-closure/test.ts (1)
  • steps (3-13)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • after (33-43)
  • flush (45-47)
packages/runtime-tags/src/__tests__/fixtures/merged-define-tag-templates/test.ts (3)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts (1)
  • steps (3-13)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/async-state/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (45-47)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-input-intersection/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (18-31)
packages/runtime-tags/src/__tests__/main.test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • resetResolveState (13-16)
packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (45-47)
  • wait (18-31)
packages/runtime-tags/src/dom/resume.ts (2)
packages/runtime-tags/src/common/types.ts (1)
  • AccessorProp (50-50)
packages/runtime-tags/src/dom/compat.ts (1)
  • render (74-111)
packages/runtime-tags/src/__tests__/fixtures/function-references-normalize/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (18-31)
packages/runtime-tags/src/__tests__/utils/create-browser.ts (2)
packages/runtime-tags/src/dom/walker.ts (1)
  • walker (13-13)
.sizes/dom.js (1)
  • node (167-167)
packages/runtime-tags/src/__tests__/fixtures/closure-owner-scope-serialize-in-serialized-function/test.ts (1)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/serialize-promise/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (45-47)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/for-tag-single-node-only-child-in-parent/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (18-31)
🪛 ast-grep (0.40.0)
packages/runtime-tags/src/__tests__/utils/create-browser.ts

[warning] 86-86: Direct HTML content assignment detected. Modifying innerHTML, outerHTML, or using document.write with unsanitized content can lead to XSS vulnerabilities. Use secure alternatives like textContent or sanitize HTML with libraries like DOMPurify.
Context: document.write(chunks[0])
Note: [CWE-79] Improper Neutralization of Input During Web Page Generation [REFERENCES]
- https://www.dhairyashah.dev/posts/why-innerhtml-is-a-bad-idea-and-how-to-avoid-it/
- https://cwe.mitre.org/data/definitions/79.html

(unsafe-html-content-assignment)


[warning] 86-86: Direct modification of innerHTML or outerHTML properties detected. Modifying these properties with unsanitized user input can lead to XSS vulnerabilities. Use safe alternatives or sanitize content first.
Context: document.write(chunks[0])
Note: [CWE-79] Improper Neutralization of Input During Web Page Generation [REFERENCES]
- https://owasp.org/www-community/xss-filter-evasion-cheatsheet
- https://cwe.mitre.org/data/definitions/79.html

(dom-content-modification)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: test: node@20
  • GitHub Check: test: node@22
  • GitHub Check: test: node@24
🔇 Additional comments (48)
packages/runtime-tags/src/__tests__/fixtures/for-tag-single-text-node-with-text-before/test.ts (1)

3-3: steps now correctly uses the shared wait helper as a step

Using wait directly (rather than a parameterized call) matches the updated resolve utilities and is consistent with other fixtures like assign-destructured-reduced/test.ts. Looks good.

packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)

1-3: Confirm wait step semantics match previous wait(1) usage

Using a bare wait function reference in steps is consistent with the new resolver-style test harness, assuming wait now encapsulates the default behavior that used to be expressed as wait(1). Please double-check that this fixture doesn’t rely on a non-default delay/argument from the old API so its timing still matches expectations.

packages/runtime-tags/src/__tests__/fixtures/serialize-promise/test.ts (1)

1-3: Serialize-promise steps now correctly use wait token instead of invocation

Using wait directly in steps = [{}, wait]; aligns this fixture with the new resolver contract (wait-as-token) and matches other updated fixtures (e.g., assign-destructured-reduced/test.ts). No issues from a typing or behavioral standpoint given wait’s callable + marker shape.

packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/test.ts (1)

1-5: Fixture update aligns with new flush/wait resolver semantics

Importing flush and updating steps to [{}, flush, wait, click, wait] plus skip_equivalent = true matches the new resolver contract and the in-order streaming pattern used in related fixtures. No issues spotted.

packages/runtime-tags/src/__tests__/fixtures/html-comment-var/test.ts (1)

3-3: LGTM! Test utility API updated correctly.

The change from wait(1) to wait aligns with the PR's refactoring of test timing utilities to an ID-driven resolver approach. This pattern is consistently applied across multiple test fixtures.

packages/runtime-tags/src/__tests__/fixtures/for-tag-single-node-only-child-in-parent/test.ts (1)

3-3: LGTM! Consistent with PR-wide test utility refactoring.

The change from wait(1) to wait correctly aligns with the updated test utilities that now use function references instead of invocations, matching the pattern seen in other fixtures.

packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/test.ts (1)

3-3: LGTM! Test utility refactoring aligns with PR pattern.

The change from wait(1) to wait correctly updates the test to use the function reference as a token rather than immediately invoking it. Since the wait function accepts no parameters, the previous argument was unused. This aligns with the PR's broader refactoring to ID-driven test resolvers.

packages/runtime-tags/src/__tests__/fixtures/await-closure/test.ts (1)

1-1: LGTM!

The imports are consistent with the new ID-driven test resolver utilities introduced in this PR.

packages/runtime-tags/src/__tests__/fixtures/try-effects-async/test.ts (1)

1-1: LGTM!

The addition of flush to the import is necessary for the updated test steps.

packages/runtime-tags/src/__tests__/fixtures/await-closure-within/template.marko (1)

1-1: Import and fixture wiring look correct

Importing resolveAfter from ../../utils/resolve matches the shared test utility and keeps this fixture consistent with the rest of the await-related tests.

packages/runtime-tags/src/__tests__/fixtures/return-value-registered/test.ts (1)

3-3: The test infrastructure confirms this is the correct pattern. The wait function is defined with a wait: true marker property, and the test runner checks for this marker using isWait() before invoking the function. Storing the function reference directly in the steps array is the intended design—no changes needed.

packages/runtime-tags/src/__tests__/utils/create-browser.ts (4)

5-12: LGTM!

The type augmentation correctly reflects the new stream API, and sharing __RESOLVE_STATE__ between the test environment and simulated browser window is appropriate for test coordination.


29-47: LGTM!

The queue-based batching implementation for requestAnimationFrame is a reasonable test mock. The constant return value of 0 simplifies the implementation, which is acceptable for this test utility context where cancelAnimationFrame usage is likely not tested.


49-92: LGTM!

The streaming implementation effectively uses TreeWalker to progressively clone and append nodes, with flush markers enabling incremental rendering for tests. The deep clone behavior for script elements (via document.importNode(node, isScript)) correctly ensures script content is copied together.

The single-chunk fallback path is appropriately simple, handling both empty and single-chunk cases.


85-91: Static analysis warning is a false positive.

The document.write warning from static analysis is not applicable here. This is a test utility where chunks are controlled test fixtures, not user-supplied content. Using document.write is appropriate for simulating browser streaming behavior in tests.

packages/runtime-tags/src/translator/util/signals.ts (5)

16-16: LGTM: Import addition supports new try placeholder logic.

The some utility is correctly imported and used on line 265 to check if any closure sections are under a try placeholder.


105-107: LGTM: Clean addition of try placeholder state tracking.

The new section state follows established patterns and provides the necessary infrastructure for tracking try blocks with placeholder attributes.


275-284: LGTM: Helper correctly detects try placeholder ancestors.

The underTryPlaceholder function properly walks up the section tree from the parent, checking if any ancestor has the try placeholder state. Starting from section.parent is semantically correct—it checks if the section is under (a descendant of) a try placeholder, not if it is one.


1041-1062: LGTM: Branching logic appropriately handles placeholder vs. non-placeholder paths.

The conditional logic correctly:

  • Emits guarded script resumes for dynamic closures under try placeholders (enabling deferred rendering based on serialization conditions)
  • Falls back to the original subscription model when not under a placeholder

The getExprIfSerialized() guard ensures script execution is conditional on the section's serialization reason, aligning with the PR's objective to delay renders in pending scopes.


247-268: Closure resolution logic is correct; resume ID handling is properly integrated.

The refactored code correctly:

  • Stores closureSignalBuilder once in a local variable (line 249) and reuses it without redundant calls
  • Branches between direct builder usage for non-dynamic closures and runtime _closure_get fallback
  • Conditionally includes the resume ID parameter only when a closure section is under a try placeholder, using getResumeRegisterId(section, closure) with consistent scoping
packages/runtime-tags/src/dom/resume.ts (1)

127-131: AwaitCounter propagation from render to branch looks correct

Wiring branch[AccessorProp.AwaitCounter] from render.p?.[branchId] and setting its .m back to render.m cleanly ties branch-level await state to the current render. This should give each resumed branch the right render context for pending work without introducing new side effects, since render.m is already defined before visitBranches is invoked.

packages/runtime-tags/src/__tests__/fixtures/merged-define-tag-templates/test.ts (1)

3-3: steps now use the shared wait token consistently

Passing the wait function as a step (instead of calling wait(1)) matches the token-based test API used elsewhere and keeps this fixture aligned with the shared resolve utilities.

packages/runtime-tags/src/__tests__/fixtures/function-references-normalize/test.ts (1)

3-3: steps correctly exercise function-reference behavior

Switching to a bare wait function reference (rather than wait(1)) better matches this fixture’s goal of normalizing function references and is consistent with other updated tests.

packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-input-intersection/test.ts (1)

3-3: Consistent use of wait marker in steps

Using wait directly here keeps this dynamic-tag fixture in sync with the shared resolve helpers and other async fixtures; no issues spotted.

packages/runtime-tags/src/__tests__/fixtures/for-tag-with-state/test.ts (1)

3-3: Mechanical steps update looks correct

The switch to [{}, wait] matches the new convention across fixtures and doesn’t introduce any behavioral risk for this for‑tag state test.

packages/runtime-tags/src/__tests__/fixtures/let-tag-set-in-effect/test.ts (1)

3-3: steps alignment with wait helper is fine

This fixture now follows the same [{}, wait] pattern as the others; the change is safe and consistent.

packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/tags/recurse.marko (1)

1-7: Recursive await now uses shared resolveAfter helper coherently

Importing resolveAfter and wiring the recursion through await=resolveAfter(0) under the placeholder matches the async pattern used in other fixtures and keeps the timing logic centralized in utils/resolve; the import path and template structure both look correct.

packages/runtime-tags/src/__tests__/fixtures/await-closure/template.marko (1)

1-7: await‑closure fixture shape looks correct

The concise <let> state (let/value=1), click handler, placeholder, and await=resolveAfter(0, 4) block together form a coherent exercise of await‑closure behavior; no syntax or structural issues stand out.

packages/runtime-tags/src/__tests__/fixtures/async-state/template.marko (1)

7-7: Updated await call remains consistent with async‑state intent

Using resolveAfter(clickCount) in the await expression keeps the behavior tied to the click count while aligning with the updated helper API; the overall async‑state flow of this fixture remains intact.

packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/test.ts (1)

1-3: Steps definition aligns with new resolve utilities

Importing flush/wait and using steps = [{}, flush, wait] matches the shared resolve helpers and the pattern in other fixtures; no issues from a test-harness perspective.

packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/template.marko (1)

1-7: Template correctly exercises await + closure over state

Importing resolveAfter, using let/value=1, a click handler that mutates value, and awaiting resolveAfter(0, 4) before rendering “Hello” and the conditional value span gives a good surface to validate closure behavior across the await boundary; the syntax and flow look consistent with other Marko fixtures.

packages/runtime-tags/src/__tests__/fixtures/async-state/test.ts (1)

1-7: Updated steps sequence matches flush/wait token model

The new steps = [{}, flush, wait, click, wait, click, wait] plus importing flush/wait cleanly maps to the shared resolver utilities and preserves the prior “render, stabilize, click, stabilize…” intent. The hoisted click function declaration is safe to reference in the array.

packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/test.ts (1)

1-5: Steps and skip_equivalent are coherent with the scenario comment

Using steps = [{}, wait, flush] together with skip_equivalent = true // try removed before flush reads correctly: first let async work (including the parent removal) settle via wait, then flush to observe post-removal output. No structural issues spotted.

packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/test.ts (1)

1-5: Fixture is consistent with in‑order streaming test pattern

The { flush, wait } import, steps = [{}, flush, wait], and skip_equivalent = true // in-order streaming mirror the updated async fixtures elsewhere and align with the shared resolve utilities; behavior should integrate cleanly with the test runner.

packages/runtime-tags/src/__tests__/fixtures/closure-owner-scope-serialize-in-serialized-function/test.ts (1)

1-3: Adapting to shared wait helper looks correct

Switching from wait(1) to the bare wait token in steps = [{}, wait] matches the new resolver API and is consistent with other fixtures; the import and usage are in sync.

packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts (1)

1-19: Well-structured in‑order await/closure test sequence

The steps sequence combining after(id) tokens, click, and a mid-stream flush, plus skip_equivalent = true, is coherent with the existing await-closure fixtures and should robustly exercise closure behavior across multiple await/resolve phases. The click helper is straightforward and safe for test usage.

packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/test.ts (1)

1-3: Multi‑flush steps configuration matches batched resolve intent

Adding flush to the imports and defining steps = [{}, flush, flush, wait] aligns with the new resolve utilities and the pattern for nested/batched resolve tests; the sequence should give good coverage of multiple flush phases before final stabilization.

packages/runtime-tags/src/__tests__/fixtures/function-references-optional-member-normalize/test.ts (1)

1-3: LGTM!

The update from wait(1) to the wait function reference aligns with the new ID-driven resolve utilities pattern used across the test suite.

packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/test.ts (1)

1-3: LGTM!

The migration from wait(4) to [{}, flush, flush, wait] aligns with the new streaming utilities. The absence of skip_equivalent appears intentional for this isolated boundaries test case.

packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/test.ts (1)

1-3: LGTM!

The new test fixture follows the established pattern for streaming-based tests with appropriate flush and wait tokens.

packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/test.ts (1)

1-5: LGTM!

The addition of skip_equivalent = true is appropriate for in-order streaming tests where resume and CSR paths intentionally produce different intermediate states.

packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/test.ts (1)

1-5: LGTM!

The three flush tokens appropriately model the nested async resolution steps, and skip_equivalent = true correctly marks this as an in-order streaming test.

packages/runtime-tags/src/__tests__/main.test.ts (5)

14-20: LGTM!

The new imports align with the expanded resolve utilities API.


249-262: LGTM!

The streaming-based SSR rendering with browser.stream(chunks) and the flush loop correctly handles the new streaming semantics.


311-336: LGTM!

CSR correctly skips flush tokens since client-side rendering doesn't require intermediate streaming flushes.


373-415: LGTM!

The resume path correctly implements streaming with:

  • Explicit flush handling that calls flushNext() and run()
  • Auto-flush loop at the end to process remaining pending flushes
  • Proper microtask boundaries via await 1

444-446: LGTM!

The beforeEach hook ensures test isolation by resetting the resolve state between render tests.

packages/runtime-tags/src/__tests__/utils/resolve.ts (1)

33-63: Tagging for after, flush, and throws aligns well with the type guards

Using Object.assign to attach .wait, .flush, and .throws flags to the respective functions keeps the runtime shapes simple, and isWait / isFlush / isThrows line up cleanly with those flags. The API surface here looks consistent and easy to consume.

@rturnq rturnq force-pushed the async-render-queues branch from 5eede97 to bd85162 Compare December 5, 2025 18:14
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (5)
.sizes/name-cache.json (1)

1-1: Verify the typo correction for "Detached".

A past review flagged a spelling error in the identifier $kDetatchedAwait (should be $kDetachedAwait). Please confirm this typo has been corrected throughout the codebase.

.sizes/dom.js (1)

1315-1325: Verify that pendingScopes.pop() removes the correct scope.

A past review identified a critical issue: createBranch (via clone/walk processing) can push nested scopes onto the stack, so pendingScopes.pop() may remove the wrong scope—not the awaitBranch that was just created.

Please ensure the logic specifically targets the newly created awaitBranch instance rather than blindly popping the last entry.

packages/runtime-tags/src/dom/resume.ts (1)

164-165: Fix typos in TODO comment.

The comment contains two typos:

  • "seperate" → "separate"
  • "it's" → "its" (possessive, not contraction)

Apply this diff:

-                // TODO: when branch is part of a seperate flush than it's parent, we
+                // TODO: when branch is part of a separate flush than its parent, we
packages/runtime-tags/src/__tests__/fixtures/try-effects-async/test.ts (1)

1-3: Add missing skip_equivalent export to match similar fixtures.

This fixture uses the same in-order streaming pattern as other fixtures in this PR (e.g., async-nested-resolve-in-order, placeholder-skipped), which all export skip_equivalent = true. Add this export after line 3:

+export const skip_equivalent = true; // in-order streaming
packages/runtime-tags/src/__tests__/utils/create-browser.ts (1)

62-82: Add type guard before accessing tagName on TreeWalker nodes.

Line 71 accesses tagName without checking if the node is an Element. Since createTreeWalker(parsed) is called without a nodeFilter parameter, it returns all node types. While Comment nodes are filtered at lines 64-68, Text and other node types can still reach line 71 and cause a runtime error.

Add a type check:

-          const isScript = (node as Element).tagName === "SCRIPT";
+          const isScript = 
+            node.nodeType === 1 /* Node.ELEMENT_NODE */ && 
+            (node as Element).tagName === "SCRIPT";
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5eede97 and bd85162.

⛔ Files ignored due to path filters (155)
  • package-lock.json is excluded by !**/package-lock.json and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/dom.expected/tags/recurse.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/html.expected/tags/recurse.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/script-tag-value-no-scope/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/script-tag-value-no-scope/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
📒 Files selected for processing (82)
  • .changeset/open-facts-obey.md (1 hunks)
  • .sizes.json (3 hunks)
  • .sizes/comments.ssr/entry.js (1 hunks)
  • .sizes/counter.ssr/entry.js (1 hunks)
  • .sizes/dom.js (21 hunks)
  • .sizes/name-cache.json (1 hunks)
  • package.json (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/tags/recurse.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-state/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-state/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/closure-owner-scope-serialize-in-serialized-function/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-input-intersection/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/error-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/for-tag-single-node-only-child-in-parent/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/for-tag-single-text-node-with-text-before/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/for-tag-with-state/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/function-references-normalize/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/function-references-optional-member-normalize/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/html-comment-var/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/html-script-nonce/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/html-style-nonce/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/if-member-expression-intersection/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/let-tag-set-in-effect/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/let-undefined-until-dom/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-assignment/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-this-attrs/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/local-closure-script/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/log-tag/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/merged-define-tag-templates/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/migrate-effect-tag/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-static-multiple/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/return-value-registered/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/script-tag-value-no-scope/template.marko (0 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/serialize-promise/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/user-effect-abort-signal/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/main.test.ts (7 hunks)
  • packages/runtime-tags/src/__tests__/utils/create-browser.ts (2 hunks)
  • packages/runtime-tags/src/__tests__/utils/resolve.ts (2 hunks)
  • packages/runtime-tags/src/common/accessor.debug.ts (1 hunks)
  • packages/runtime-tags/src/common/accessor.ts (1 hunks)
  • packages/runtime-tags/src/common/types.ts (3 hunks)
  • packages/runtime-tags/src/dom/control-flow.ts (5 hunks)
  • packages/runtime-tags/src/dom/queue.ts (6 hunks)
  • packages/runtime-tags/src/dom/resume.ts (2 hunks)
  • packages/runtime-tags/src/dom/signals.ts (2 hunks)
  • packages/runtime-tags/src/translator/core/try.ts (3 hunks)
  • packages/runtime-tags/src/translator/util/optional.ts (1 hunks)
  • packages/runtime-tags/src/translator/util/signals.ts (4 hunks)
💤 Files with no reviewable changes (1)
  • packages/runtime-tags/src/tests/fixtures/script-tag-value-no-scope/template.marko
✅ Files skipped from review due to trivial changes (2)
  • packages/runtime-tags/src/tests/fixtures/await-update-after-resume/template.marko
  • .sizes/counter.ssr/entry.js
🚧 Files skipped from review as they are similar to previous changes (28)
  • packages/runtime-tags/src/tests/fixtures/html-script-nonce/test.ts
  • packages/runtime-tags/src/tests/fixtures/user-effect-abort-signal/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-closure-in-order/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-closure/template.marko
  • package.json
  • packages/runtime-tags/src/tests/fixtures/log-tag/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-update-before-resume/template.marko
  • packages/runtime-tags/src/tests/fixtures/if-member-expression-intersection/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-closure-in-order/template.marko
  • packages/runtime-tags/src/tests/fixtures/function-references-optional-member-normalize/test.ts
  • packages/runtime-tags/src/tests/fixtures/async-multi-resolve-in-order-and-update/test.ts
  • packages/runtime-tags/src/tests/fixtures/async-resolve-out-of-order/test.ts
  • packages/runtime-tags/src/tests/fixtures/return-value-registered/test.ts
  • .sizes/comments.ssr/entry.js
  • packages/runtime-tags/src/tests/fixtures/async-resolve-in-order/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-closure-inert/test.ts
  • packages/runtime-tags/src/tests/fixtures/migrate-effect-tag/test.ts
  • packages/runtime-tags/src/tests/fixtures/for-tag-single-node-only-child-in-parent/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-closure-within/test.ts
  • packages/runtime-tags/src/tests/fixtures/local-closure-script/test.ts
  • packages/runtime-tags/src/tests/fixtures/let-tag-set-in-effect/test.ts
  • packages/runtime-tags/src/tests/fixtures/async-deep-recursive/tags/recurse.marko
  • packages/runtime-tags/src/tests/fixtures/placeholder-static-multiple/test.ts
  • packages/runtime-tags/src/common/accessor.debug.ts
  • packages/runtime-tags/src/tests/fixtures/await-closure/test.ts
  • packages/runtime-tags/src/tests/fixtures/async-reject-then-resolve-isolated-boundaries/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-tag/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-closure-within/template.marko
🧰 Additional context used
🧬 Code graph analysis (21)
packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (3)
  • after (33-43)
  • flush (45-47)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/function-references-normalize/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (45-47)
  • wait (18-31)
packages/runtime-tags/src/dom/signals.ts (2)
packages/runtime-tags/src/dom/resume.ts (1)
  • _resume (316-318)
packages/runtime-tags/src/html/writer.ts (1)
  • _resume (164-176)
packages/runtime-tags/src/dom/resume.ts (4)
.sizes/dom.js (13)
  • branch (125-125)
  • branch (841-842)
  • branch (1705-1710)
  • branch (1931-1932)
  • branch (1971-1974)
  • render (1801-1802)
  • i (28-28)
  • i (751-751)
  • i (982-982)
  • i (1003-1003)
  • i (1752-1752)
  • i (1797-1797)
  • i (1804-1806)
packages/runtime-tags/src/common/types.ts (1)
  • AccessorProp (50-50)
packages/runtime-tags/src/html/writer.ts (1)
  • render (1183-1195)
packages/runtime-tags/src/dom/compat.ts (1)
  • render (74-111)
packages/runtime-tags/src/dom/control-flow.ts (3)
packages/runtime-tags/src/common/types.ts (3)
  • BranchScope (6-19)
  • AccessorProp (50-50)
  • Scope (20-32)
packages/runtime-tags/src/dom/scope.ts (4)
  • findBranchWithKey (27-36)
  • removeAndDestroyBranch (55-61)
  • insertBranchBefore (63-74)
  • tempDetachBranch (76-91)
packages/runtime-tags/src/dom/queue.ts (8)
  • pendingEffects (19-19)
  • runEffects (105-109)
  • placeholderShown (18-18)
  • queueRender (24-46)
  • run (67-80)
  • pendingScopes (20-20)
  • PendingRender (7-12)
  • queuePendingRender (48-58)
packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-assignment/test.ts (3)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • wait (18-31)
  • flush (45-47)
packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/test.ts (13)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts (1)
  • steps (3-13)
packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/await-closure/test.ts (1)
  • steps (3-13)
packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/await-tag/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (45-47)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/html-style-nonce/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (18-31)
packages/runtime-tags/src/__tests__/main.test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (4)
  • isFlush (57-59)
  • isWait (53-55)
  • resolveAfter (65-73)
  • resetResolveState (13-16)
packages/runtime-tags/src/__tests__/fixtures/let-undefined-until-dom/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/try-effects-async/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (45-47)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/for-tag-with-state/test.ts (17)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-state/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts (1)
  • steps (3-13)
packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/await-closure-within/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/await-closure/test.ts (1)
  • steps (3-13)
packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/await-tag/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (18-31)
packages/runtime-tags/src/__tests__/utils/create-browser.ts (3)
packages/runtime-class/src/translator/taglib/core/parse-module-code.js (1)
  • fn (14-14)
packages/runtime-tags/src/dom/walker.ts (1)
  • walker (13-13)
.sizes/dom.js (1)
  • node (167-167)
packages/runtime-tags/src/__tests__/fixtures/async-state/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (45-47)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-this-attrs/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (18-31)
.sizes/dom.js (2)
packages/runtime-tags/src/dom/renderer.ts (2)
  • createAndSetupBranch (57-67)
  • _content (76-119)
packages/runtime-tags/src/dom/queue.ts (3)
  • queueRender (24-46)
  • run (67-80)
  • queuePendingRender (48-58)
packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-input-intersection/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/serialize-promise/test.ts (1)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
🪛 ast-grep (0.40.0)
packages/runtime-tags/src/__tests__/utils/create-browser.ts

[warning] 86-86: Direct modification of innerHTML or outerHTML properties detected. Modifying these properties with unsanitized user input can lead to XSS vulnerabilities. Use safe alternatives or sanitize content first.
Context: document.write(chunks[0])
Note: [CWE-79] Improper Neutralization of Input During Web Page Generation [REFERENCES]
- https://owasp.org/www-community/xss-filter-evasion-cheatsheet
- https://cwe.mitre.org/data/definitions/79.html

(dom-content-modification)


[warning] 86-86: Direct HTML content assignment detected. Modifying innerHTML, outerHTML, or using document.write with unsanitized content can lead to XSS vulnerabilities. Use secure alternatives like textContent or sanitize HTML with libraries like DOMPurify.
Context: document.write(chunks[0])
Note: [CWE-79] Improper Neutralization of Input During Web Page Generation [REFERENCES]
- https://www.dhairyashah.dev/posts/why-innerhtml-is-a-bad-idea-and-how-to-avoid-it/
- https://cwe.mitre.org/data/definitions/79.html

(unsafe-html-content-assignment)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: test: node@24
  • GitHub Check: test: node@22
  • GitHub Check: test: node@20

@rturnq rturnq force-pushed the async-render-queues branch from bd85162 to 6aeb624 Compare December 5, 2025 19:03
@rturnq rturnq merged commit 477b8d8 into main Dec 5, 2025
11 checks passed
@rturnq rturnq deleted the async-render-queues branch December 5, 2025 19:13
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (6)
package.json (1)

69-69: Non-existent version specified — align with prior review feedback.

As flagged in the previous review, [email protected] does not exist on npm. The latest published version is 5.0.0. Package installation will fail with the current configuration.

Update the dependency to match a valid published release.

Apply this diff to fix:

-    "mocha-snap": "^5.0.1",
+    "mocha-snap": "^5.0.0",

If 5.0.1 is a planned release that must be published before this PR merges, confirm the timeline and update the dependency once the package is published.

packages/runtime-tags/src/__tests__/fixtures/try-effects-async/test.ts (1)

1-3: Add skip_equivalent export to match other in-order async fixtures.

This fixture follows the same in-order streaming pattern as other async *-in-order tests that export skip_equivalent = true. To keep behavior consistent (especially for equivalent/SSR comparison), add the flag just after the import:

-import { flush, wait } from "../../utils/resolve";
-
-export const steps = [{}, flush, wait, click, wait, click, wait];
+import { flush, wait } from "../../utils/resolve";
+export const skip_equivalent = true; // in-order streaming
+
+export const steps = [{}, flush, wait, click, wait, click, wait];
packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/test.ts (1)

3-3: Possible missing flush in the sequence.

As noted in a previous review, the sequence currently has 3 flush calls, but if the original was wait(4), the pattern used in other fixtures (e.g., async-deep-recursive/test.ts) suggests this should have 4 flush calls before the final wait.

packages/runtime-tags/src/__tests__/utils/create-browser.ts (1)

71-71: Type guard still missing for tagName access.

A past review comment flagged this line for accessing tagName without ensuring node is an Element, and was marked as addressed. However, the current code still lacks the type guard. TreeWalker can return any Node type (Text, Comment, Element, etc.), so accessing .tagName on non-Element nodes is unsafe.

Apply this fix to add a proper type guard:

-          const isScript = (node as Element).tagName === "SCRIPT";
+          const isScript = node.nodeType === 1 /* Node.ELEMENT_NODE */ && (node as Element).tagName === "SCRIPT";
packages/runtime-tags/src/dom/resume.ts (1)

164-166: Typo in TODO comment already flagged.

This typo ("seperate" → "separate" and "it's" → "its") was identified in a previous review.

packages/runtime-tags/src/dom/control-flow.ts (1)

238-245: pendingScopes.pop() may remove wrong scope when walk creates nested scopes.

The createBranch call (line 238-242) pushes the branch scope to pendingScopes, but its internal ___clone()/walk processing can create additional nested scopes that also get pushed. The unconditional pop() at line 244 will remove only the last scope on the stack, which may be a nested scope rather than the awaitBranch that was just created.

This matches the concern raised in a past review on .sizes/dom.js. Consider tracking the specific branch instance and removing it by identity, or capturing the stack length before createBranch and restoring appropriately.

🧹 Nitpick comments (2)
packages/runtime-tags/src/dom/control-flow.ts (1)

190-190: Address the TODO comment.

The TODO suggests uncertainty about whether placeholderShown.add(pendingEffects) is still needed at this point. Consider verifying and either removing the TODO or the call if no longer necessary.

Do you want me to help investigate whether this call is still required?

packages/runtime-tags/src/__tests__/utils/resolve.ts (1)

96-106: Consider adding a comment explaining the triple-nested async pattern.

The setTimeout → setImmediate → setTimeout nesting creates specific timing guarantees for async test sequencing, but the rationale isn't immediately obvious. A brief comment would aid future maintainers.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between bd85162 and 6aeb624.

⛔ Files ignored due to path filters (155)
  • package-lock.json is excluded by !**/package-lock.json and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/dom.expected/tags/recurse.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/html.expected/tags/recurse.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/csr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/csr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/script-tag-value-no-scope/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/script-tag-value-no-scope/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/.name-cache.json is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/dom.expected/template.hydrate.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/dom.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/html.expected/template.js is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/resume-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/resume.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/ssr-sanitized.expected.md is excluded by !**/__snapshots__/** and included by **
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/__snapshots__/ssr.expected.md is excluded by !**/__snapshots__/** and included by **
📒 Files selected for processing (82)
  • .changeset/open-facts-obey.md (1 hunks)
  • .sizes.json (3 hunks)
  • .sizes/comments.ssr/entry.js (1 hunks)
  • .sizes/counter.ssr/entry.js (1 hunks)
  • .sizes/dom.js (21 hunks)
  • .sizes/name-cache.json (1 hunks)
  • package.json (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/tags/recurse.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-state/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/async-state/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure-within/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-closure/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-tag/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/closure-owner-scope-serialize-in-serialized-function/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/dynamic-tag-input-intersection/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/error-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/for-tag-single-node-only-child-in-parent/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/for-tag-single-text-node-with-text-before/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/for-tag-with-state/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/function-references-normalize/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/function-references-optional-member-normalize/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/html-comment-var/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/html-script-nonce/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/html-style-nonce/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/if-member-expression-intersection/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/let-tag-set-in-effect/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/let-undefined-until-dom/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-assignment/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-this-attrs/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/local-closure-script/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/log-tag/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/merged-define-tag-templates/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/migrate-effect-tag/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-single/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholder-static-multiple/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/return-value-registered/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/script-tag-value-no-scope/template.marko (0 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/serialize-promise/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/template.marko (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/try-effects-async/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/fixtures/user-effect-abort-signal/test.ts (1 hunks)
  • packages/runtime-tags/src/__tests__/main.test.ts (7 hunks)
  • packages/runtime-tags/src/__tests__/utils/create-browser.ts (2 hunks)
  • packages/runtime-tags/src/__tests__/utils/resolve.ts (2 hunks)
  • packages/runtime-tags/src/common/accessor.debug.ts (1 hunks)
  • packages/runtime-tags/src/common/accessor.ts (1 hunks)
  • packages/runtime-tags/src/common/types.ts (3 hunks)
  • packages/runtime-tags/src/dom/control-flow.ts (5 hunks)
  • packages/runtime-tags/src/dom/queue.ts (6 hunks)
  • packages/runtime-tags/src/dom/resume.ts (2 hunks)
  • packages/runtime-tags/src/dom/signals.ts (2 hunks)
  • packages/runtime-tags/src/translator/core/try.ts (3 hunks)
  • packages/runtime-tags/src/translator/util/optional.ts (1 hunks)
  • packages/runtime-tags/src/translator/util/signals.ts (4 hunks)
💤 Files with no reviewable changes (1)
  • packages/runtime-tags/src/tests/fixtures/script-tag-value-no-scope/template.marko
✅ Files skipped from review due to trivial changes (1)
  • .sizes/comments.ssr/entry.js
🚧 Files skipped from review as they are similar to previous changes (39)
  • packages/runtime-tags/src/tests/fixtures/await-closure-inert/test.ts
  • packages/runtime-tags/src/tests/fixtures/async-state/template.marko
  • packages/runtime-tags/src/common/accessor.debug.ts
  • .sizes/counter.ssr/entry.js
  • .changeset/open-facts-obey.md
  • packages/runtime-tags/src/tests/fixtures/user-effect-abort-signal/test.ts
  • packages/runtime-tags/src/tests/fixtures/function-references-optional-member-normalize/test.ts
  • packages/runtime-tags/src/translator/core/try.ts
  • packages/runtime-tags/src/tests/fixtures/await-closure-within/test.ts
  • packages/runtime-tags/src/tests/fixtures/catch-single-success-async/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-closure-in-order/test.ts
  • .sizes.json
  • packages/runtime-tags/src/tests/fixtures/dynamic-tag-input-intersection/test.ts
  • packages/runtime-tags/src/tests/fixtures/catch-single-reject-async/test.ts
  • packages/runtime-tags/src/tests/fixtures/async-multi-resolve-in-order-and-update/test.ts
  • packages/runtime-tags/src/tests/fixtures/if-member-expression-intersection/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-closure-within/template.marko
  • packages/runtime-tags/src/tests/fixtures/await-closure/template.marko
  • packages/runtime-tags/src/tests/fixtures/placeholder-skipped/test.ts
  • packages/runtime-tags/src/tests/fixtures/try-effects-async/template.marko
  • packages/runtime-tags/src/tests/fixtures/serialize-promise/test.ts
  • packages/runtime-tags/src/tests/fixtures/migrate-effect-tag/test.ts
  • packages/runtime-tags/src/common/types.ts
  • packages/runtime-tags/src/tests/fixtures/error-async/test.ts
  • packages/runtime-tags/src/tests/fixtures/closure-owner-scope-serialize-in-serialized-function/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-closure-in-order/template.marko
  • packages/runtime-tags/src/tests/fixtures/merged-define-tag-templates/test.ts
  • .sizes/name-cache.json
  • packages/runtime-tags/src/dom/signals.ts
  • packages/runtime-tags/src/tests/fixtures/await-closure-inert/template.marko
  • packages/runtime-tags/src/tests/fixtures/await-remove-parent/test.ts
  • packages/runtime-tags/src/tests/fixtures/await-update-after-resume/template.marko
  • packages/runtime-tags/src/tests/fixtures/async-deep-recursive/tags/recurse.marko
  • packages/runtime-tags/src/tests/fixtures/async-multi-resolve-in-order-and-update/template.marko
  • packages/runtime-tags/src/tests/fixtures/assign-destructured-reduced/test.ts
  • packages/runtime-tags/src/translator/util/optional.ts
  • packages/runtime-tags/src/tests/fixtures/async-resolve-in-order/test.ts
  • packages/runtime-tags/src/tests/fixtures/async-nested-resolve-in-order/template.marko
  • packages/runtime-tags/src/tests/fixtures/await-update-before-resume/template.marko
🧰 Additional context used
🧬 Code graph analysis (30)
packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-assignment/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/html-comment-var/test.ts (1)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/function-references-normalize/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/try-effects-async/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (45-47)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/test.ts (2)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (45-47)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/test.ts (1)
  • skip_equivalent (5-5)
packages/runtime-tags/src/__tests__/fixtures/await-tag/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (45-47)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/log-tag/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/async-state/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts (1)
  • steps (3-13)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (45-47)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (45-47)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts (1)
  • steps (3-13)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (45-47)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/for-tag-single-text-node-with-text-before/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (45-47)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/placeholder-static-multiple/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/lifecycle-tag-this-attrs/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/test.ts (17)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/async-state/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts (1)
  • steps (3-13)
packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/await-closure-within/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/await-closure/test.ts (1)
  • steps (3-13)
packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/fixtures/await-tag/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (45-47)
  • wait (18-31)
packages/runtime-tags/src/translator/util/signals.ts (5)
packages/runtime-tags/src/translator/util/state.ts (1)
  • createSectionState (22-38)
packages/runtime-tags/src/translator/util/references.ts (2)
  • getCanonicalBinding (1410-1421)
  • getScopeAccessorLiteral (1455-1469)
packages/runtime-tags/src/translator/util/sections.ts (3)
  • isDynamicClosure (356-358)
  • isImmediateOwner (348-350)
  • Section (51-80)
packages/runtime-tags/src/translator/util/scope-read.ts (1)
  • getScopeExpression (63-74)
packages/runtime-tags/src/translator/util/optional.ts (1)
  • some (246-251)
packages/runtime-tags/src/__tests__/fixtures/return-value-registered/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/await-closure/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts (1)
  • steps (3-13)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • after (33-43)
  • flush (45-47)
packages/runtime-tags/src/dom/resume.ts (2)
packages/runtime-tags/src/common/types.ts (1)
  • AccessorProp (50-50)
packages/runtime-tags/src/dom/compat.ts (1)
  • render (74-111)
packages/runtime-tags/src/__tests__/fixtures/let-undefined-until-dom/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (18-31)
packages/runtime-tags/src/__tests__/main.test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (4)
  • isFlush (57-59)
  • isWait (53-55)
  • resolveAfter (65-73)
  • resetResolveState (13-16)
packages/runtime-tags/src/__tests__/fixtures/local-closure-script/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/html-script-nonce/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/test.ts (2)
  • steps (3-3)
  • skip_equivalent (5-5)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (45-47)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/html-style-nonce/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (2)
  • flush (45-47)
  • wait (18-31)
packages/runtime-tags/src/__tests__/fixtures/for-tag-with-state/test.ts (2)
packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/test.ts (1)
  • steps (3-3)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (18-31)
.sizes/dom.js (4)
packages/runtime-tags/src/dom/compat.ts (1)
  • render (74-111)
packages/runtime-tags/src/dom/signals.ts (2)
  • _closure_get (181-209)
  • subscribeToScopeSet (145-157)
packages/runtime-tags/src/dom/queue.ts (7)
  • _enable_catch (160-220)
  • runEffects (105-109)
  • pendingEffects (19-19)
  • queueRender (24-46)
  • run (67-80)
  • queuePendingRender (48-58)
  • rendering (21-21)
packages/runtime-tags/src/dom/scope.ts (2)
  • findBranchWithKey (27-36)
  • removeAndDestroyBranch (55-61)
packages/runtime-tags/src/__tests__/fixtures/let-tag-set-in-effect/test.ts (1)
packages/runtime-tags/src/__tests__/utils/resolve.ts (1)
  • wait (18-31)
🪛 ast-grep (0.40.0)
packages/runtime-tags/src/__tests__/utils/create-browser.ts

[warning] 86-86: Direct HTML content assignment detected. Modifying innerHTML, outerHTML, or using document.write with unsanitized content can lead to XSS vulnerabilities. Use secure alternatives like textContent or sanitize HTML with libraries like DOMPurify.
Context: document.write(chunks[0])
Note: [CWE-79] Improper Neutralization of Input During Web Page Generation [REFERENCES]
- https://www.dhairyashah.dev/posts/why-innerhtml-is-a-bad-idea-and-how-to-avoid-it/
- https://cwe.mitre.org/data/definitions/79.html

(unsafe-html-content-assignment)


[warning] 86-86: Direct modification of innerHTML or outerHTML properties detected. Modifying these properties with unsanitized user input can lead to XSS vulnerabilities. Use safe alternatives or sanitize content first.
Context: document.write(chunks[0])
Note: [CWE-79] Improper Neutralization of Input During Web Page Generation [REFERENCES]
- https://owasp.org/www-community/xss-filter-evasion-cheatsheet
- https://cwe.mitre.org/data/definitions/79.html

(dom-content-modification)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: test: node@20
  • GitHub Check: test: node@24
  • GitHub Check: test: node@22

@github-actions github-actions bot mentioned this pull request Dec 5, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants