Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor(turbo-tasks): Convert local Vcs to non-local Vcs when returning from task functions #74714

Open
wants to merge 1 commit into
base: bgw/vcarc-uses-operationvc
Choose a base branch
from

Conversation

bgw
Copy link
Member

@bgw bgw commented Jan 9, 2025

No description provided.

Copy link
Member Author

bgw commented Jan 9, 2025

Warning

This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

This stack of pull requests is managed by Graphite. Learn more about stacking.

Comment on lines +196 to +208
fn $get_args_fn<$($arg: TaskInput + 'static,)*>(arg: &dyn MagicAny) -> Result<($($arg,)*)> {
match arg.downcast_ref::<($($arg,)*)>() {
Some(($($arg,)*)) => Ok(($($arg.clone(),)*)),
None => {
#[cfg(debug_assertions)]
let context_str = get_debug_downcast_error_msg::<($($arg,)*)>(arg);
#[cfg(not(debug_assertions))]
let context_str = "Invalid argument type";

anyhow::bail!(context_str);
}
}
}
Copy link
Member Author

Choose a reason for hiding this comment

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

Moved this inside the macro, which lets us deduplicate the .clone() calls, instead of putting them in each individual trait implementation.

Comment on lines -282 to 303
impl<F, Output, Recv, $($arg,)*> TaskFnInputFunctionWithThis<OperationMode, Recv, ($($arg,)*)> for F
where
Recv: Sync + Send + 'static,
$($arg: TaskInput + 'static,)*
F: Fn(OperationVc<Recv>, $($arg,)*) -> Output + Send + Sync + Clone + 'static,
Output: TaskOutput + 'static,
{
#[allow(non_snake_case)]
fn functor(&self, this: RawVc, arg: &dyn MagicAny) -> Result<NativeTaskFuture> {
let task_fn = self.clone();
let recv = OperationVc::<Recv>::from(this);

let ($($arg,)*) = get_args::<($($arg,)*)>(arg)?;
$(
let $arg = $arg.clone();
)*

let ($($arg,)*) = $get_args_fn::<$($arg,)*>(arg)?;
Ok(Box::pin(async move {
Output::try_into_raw_vc((task_fn)(recv, $($arg,)*))
let output = (task_fn)(recv, $($arg,)*);
output_try_into_non_local_raw_vc(output).await
}))
}
}
Copy link
Member Author

Choose a reason for hiding this comment

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

I ended up not implementing support for methods with #[turbo_tasks::function(operation)], given that there's a limited number of callsites, and dynamic dispatch likely couldn't work with methods taking self: OperationVc anyways.

@ijjk
Copy link
Member

ijjk commented Jan 9, 2025

Stats from current PR

Default Build
General
vercel/next.js canary vercel/next.js bgw/return-values-should-be-non-local Change
buildDuration 30.2s 28s N/A
buildDurationCached 23.7s 20s N/A
nodeModulesSize 417 MB 417 MB
nextStartRea..uration (ms) 779ms 797ms N/A
Client Bundles (main, webpack)
vercel/next.js canary vercel/next.js bgw/return-values-should-be-non-local Change
5306-HASH.js gzip 53.3 kB 53.3 kB N/A
8276.HASH.js gzip 169 B 168 B N/A
8377-HASH.js gzip 5.44 kB 5.44 kB N/A
bccd1874-HASH.js gzip 53 kB 53 kB
framework-HASH.js gzip 57.5 kB 57.5 kB N/A
main-app-HASH.js gzip 240 B 242 B N/A
main-HASH.js gzip 34.2 kB 34.2 kB N/A
webpack-HASH.js gzip 1.71 kB 1.71 kB N/A
Overall change 53 kB 53 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary vercel/next.js bgw/return-values-should-be-non-local Change
polyfills-HASH.js gzip 39.4 kB 39.4 kB
Overall change 39.4 kB 39.4 kB
Client Pages
vercel/next.js canary vercel/next.js bgw/return-values-should-be-non-local Change
_app-HASH.js gzip 193 B 193 B
_error-HASH.js gzip 193 B 193 B
amp-HASH.js gzip 512 B 510 B N/A
css-HASH.js gzip 343 B 342 B N/A
dynamic-HASH.js gzip 1.84 kB 1.84 kB
edge-ssr-HASH.js gzip 265 B 265 B
head-HASH.js gzip 363 B 362 B N/A
hooks-HASH.js gzip 393 B 392 B N/A
image-HASH.js gzip 4.57 kB 4.57 kB N/A
index-HASH.js gzip 268 B 268 B
link-HASH.js gzip 2.35 kB 2.34 kB N/A
routerDirect..HASH.js gzip 328 B 328 B
script-HASH.js gzip 397 B 397 B
withRouter-HASH.js gzip 323 B 326 B N/A
1afbb74e6ecf..834.css gzip 106 B 106 B
Overall change 3.59 kB 3.59 kB
Client Build Manifests
vercel/next.js canary vercel/next.js bgw/return-values-should-be-non-local Change
_buildManifest.js gzip 749 B 747 B N/A
Overall change 0 B 0 B
Rendered Page Sizes
vercel/next.js canary vercel/next.js bgw/return-values-should-be-non-local Change
index.html gzip 523 B 524 B N/A
link.html gzip 537 B 538 B N/A
withRouter.html gzip 518 B 520 B N/A
Overall change 0 B 0 B
Edge SSR bundle Size
vercel/next.js canary vercel/next.js bgw/return-values-should-be-non-local Change
edge-ssr.js gzip 129 kB 129 kB N/A
page.js gzip 207 kB 207 kB N/A
Overall change 0 B 0 B
Middleware size
vercel/next.js canary vercel/next.js bgw/return-values-should-be-non-local Change
middleware-b..fest.js gzip 671 B 669 B N/A
middleware-r..fest.js gzip 155 B 156 B N/A
middleware.js gzip 31.2 kB 31.2 kB N/A
edge-runtime..pack.js gzip 844 B 844 B
Overall change 844 B 844 B
Next Runtimes
vercel/next.js canary vercel/next.js bgw/return-values-should-be-non-local Change
274-experime...dev.js gzip 322 B 322 B
274.runtime.dev.js gzip 314 B 314 B
app-page-exp...dev.js gzip 369 kB 369 kB
app-page-exp..prod.js gzip 130 kB 130 kB
app-page-tur..prod.js gzip 142 kB 142 kB
app-page-tur..prod.js gzip 138 kB 138 kB
app-page.run...dev.js gzip 357 kB 357 kB
app-page.run..prod.js gzip 126 kB 126 kB
app-route-ex...dev.js gzip 37.6 kB 37.6 kB
app-route-ex..prod.js gzip 25.6 kB 25.6 kB
app-route-tu..prod.js gzip 25.6 kB 25.6 kB
app-route-tu..prod.js gzip 25.4 kB 25.4 kB
app-route.ru...dev.js gzip 39.2 kB 39.2 kB
app-route.ru..prod.js gzip 25.4 kB 25.4 kB
pages-api-tu..prod.js gzip 9.69 kB 9.69 kB
pages-api.ru...dev.js gzip 11.6 kB 11.6 kB
pages-api.ru..prod.js gzip 9.68 kB 9.68 kB
pages-turbo...prod.js gzip 21.7 kB 21.7 kB
pages.runtim...dev.js gzip 27.5 kB 27.5 kB
pages.runtim..prod.js gzip 21.7 kB 21.7 kB
server.runti..prod.js gzip 916 kB 916 kB
Overall change 2.46 MB 2.46 MB
build cache
vercel/next.js canary vercel/next.js bgw/return-values-should-be-non-local Change
0.pack gzip 2.09 MB 2.09 MB N/A
index.pack gzip 74.5 kB 74.3 kB N/A
Overall change 0 B 0 B
Diff details
Diff for main-HASH.js

Diff too large to display

Commit: 0e91d34

@sokra sokra added the CI Bypass Graphite Optimization Ignore Graphite CI optimizations, run the full CI suite. https://graphite.dev/docs/stacking-and-ci label Jan 10, 2025 — with Graphite App
Comment on lines -175 to -176
fn get_args<T: MagicAny>(arg: &dyn MagicAny) -> Result<&T> {
let value = arg.downcast_ref::<T>();
Copy link
Member

@sokra sokra Jan 10, 2025

Choose a reason for hiding this comment

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

I guess you could have archived the same with:

-fn get_args<T: MagicAny>(arg: &dyn MagicAny) -> Result<&T> {
+fn get_args<T: MagicAny + Clone>(arg: &dyn MagicAny) -> Result<T> {
-    let value = arg.downcast_ref::<T>();
+    let value = arg.downcast_ref::<T>().clone();

Since the tuple could be cloned

But not sure...

@bgw bgw force-pushed the bgw/vcarc-uses-operationvc branch from d2c1eab to 56c77c9 Compare January 10, 2025 21:20
@bgw bgw force-pushed the bgw/return-values-should-be-non-local branch from 110001f to 1f21777 Compare January 10, 2025 21:20
@ijjk
Copy link
Member

ijjk commented Jan 10, 2025

Failing test suites

Commit: 0e91d34

pnpm test-start-turbo test/e2e/app-dir/dynamic-io/dynamic-io.node-crypto.test.ts (turbopack)

  • dynamic-io > should not have route specific errors
  • dynamic-io > should prerender pages with cached require('node:crypto').getRandomValues(...) calls
  • dynamic-io > should not prerender pages with uncached require('node:crypto').getRandomValues(...) calls
  • dynamic-io > should prerender pages with cached require('node:crypto').randomUUID() calls
  • dynamic-io > should not prerender pages with uncached require('node:crypto').randomUUID() calls
  • dynamic-io > should prerender pages with cached require('node:crypto').randomBytes(size) calls
  • dynamic-io > should not prerender pages with uncached require('node:crypto').randomBytes(size) calls
  • dynamic-io > should prerender pages with cached require('node:crypto').randomFillSync(buffer) calls
  • dynamic-io > should not prerender pages with uncached require('node:crypto').randomFillSync(buffer) calls
  • dynamic-io > should prerender pages with cached require('node:crypto').randomInt(max) calls
  • dynamic-io > should not prerender pages with uncached require('node:crypto').randomInt(max) calls
  • dynamic-io > should prerender pages with cached require('node:crypto').randomInt(min, max) calls
  • dynamic-io > should not prerender pages with uncached require('node:crypto').randomInt(min, max) calls
  • dynamic-io > should prerender pages with cached require('node:crypto').generatePrimeSync(size, options) calls
  • dynamic-io > should not prerender pages with uncached require('node:crypto').generatePrimeSync(size, options) calls
  • dynamic-io > should prerender pages with cached require('node:crypto').generateKeyPairSync(type, options) calls
  • dynamic-io > should not prerender pages with uncached require('node:crypto').generateKeyPairSync(type, options) calls
  • dynamic-io > should prerender pages with cached require('node:crypto').generateKeySync(type, options) calls
  • dynamic-io > should not prerender pages with uncached require('node:crypto').generateKeySync(type, options) calls
Expand output

● dynamic-io › should not have route specific errors

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● dynamic-io › should prerender pages with cached require('node:crypto').getRandomValues(...) calls

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● dynamic-io › should not prerender pages with uncached require('node:crypto').getRandomValues(...) calls

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● dynamic-io › should prerender pages with cached require('node:crypto').randomUUID() calls

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● dynamic-io › should not prerender pages with uncached require('node:crypto').randomUUID() calls

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● dynamic-io › should prerender pages with cached require('node:crypto').randomBytes(size) calls

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● dynamic-io › should not prerender pages with uncached require('node:crypto').randomBytes(size) calls

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● dynamic-io › should prerender pages with cached require('node:crypto').randomFillSync(buffer) calls

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● dynamic-io › should not prerender pages with uncached require('node:crypto').randomFillSync(buffer) calls

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● dynamic-io › should prerender pages with cached require('node:crypto').randomInt(max) calls

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● dynamic-io › should not prerender pages with uncached require('node:crypto').randomInt(max) calls

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● dynamic-io › should prerender pages with cached require('node:crypto').randomInt(min, max) calls

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● dynamic-io › should not prerender pages with uncached require('node:crypto').randomInt(min, max) calls

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● dynamic-io › should prerender pages with cached require('node:crypto').generatePrimeSync(size, options) calls

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● dynamic-io › should not prerender pages with uncached require('node:crypto').generatePrimeSync(size, options) calls

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● dynamic-io › should prerender pages with cached require('node:crypto').generateKeyPairSync(type, options) calls

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● dynamic-io › should not prerender pages with uncached require('node:crypto').generateKeyPairSync(type, options) calls

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● dynamic-io › should prerender pages with cached require('node:crypto').generateKeySync(type, options) calls

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● dynamic-io › should not prerender pages with uncached require('node:crypto').generateKeySync(type, options) calls

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

Read more about building and testing Next.js in contributing.md.

pnpm test-dev-turbo test/development/basic/next-rs-api.test.ts (turbopack)

  • next.rs api > should allow to write root page to disk
  • next.rs api > should allow to write pages edge api to disk
  • next.rs api > should allow to write pages Node.js api to disk
  • next.rs api > should allow to write app edge page to disk
  • next.rs api > should allow to write app Node.js page to disk
  • next.rs api > should allow to write pages edge page to disk
  • next.rs api > should allow to write pages Node.js page to disk
  • next.rs api > should allow to write app edge route to disk
  • next.rs api > should allow to write app Node.js route to disk
Expand output

● next.rs api › should allow to write root page to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write root page to disk: diagnostics 1`

- Snapshot  -   1
+ Received  + 100

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcExperimentalDecorators": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcImportSource": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  300 |       name: 'pages edge page',
  301 |       path: '/page-edge',
> 302 |       type: 'page',
      |                    ^
  303 |       runtime: 'edge',
  304 |       config: {},
  305 |     },

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:302:74)

● next.rs api › should allow to write root page to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write root page to disk: data diagnostics 1`

- Snapshot  -   1
+ Received  + 100

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcExperimentalDecorators": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcImportSource": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  305 |     },
  306 |     {
> 307 |       name: 'pages Node.js page',
      |                                  ^
  308 |       path: '/page-nodejs',
  309 |       type: 'page',
  310 |       runtime: 'nodejs',

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:307:75)

● next.rs api › should allow to write pages edge api to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write pages edge api to disk: diagnostics 1`

- Snapshot  -   1
+ Received  + 100

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcExperimentalDecorators": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcImportSource": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  291 |     },
  292 |     {
> 293 |       name: 'app Node.js page',
      |                                ^
  294 |       path: '/app-nodejs',
  295 |       type: 'app-page',
  296 |       runtime: 'nodejs',

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:293:74)

● next.rs api › should allow to write pages Node.js api to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write pages Node.js api to disk: diagnostics 1`

- Snapshot  -   1
+ Received  + 100

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcExperimentalDecorators": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcImportSource": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  291 |     },
  292 |     {
> 293 |       name: 'app Node.js page',
      |                                ^
  294 |       path: '/app-nodejs',
  295 |       type: 'app-page',
  296 |       runtime: 'nodejs',

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:293:74)

● next.rs api › should allow to write app edge page to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write app edge page to disk: diagnostics 1`

- Snapshot  -   1
+ Received  + 100

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcExperimentalDecorators": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcImportSource": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  314 |       name: 'app edge route',
  315 |       path: '/route-edge',
> 316 |       type: 'app-route',
      |                         ^
  317 |       runtime: 'edge',
  318 |       config: {},
  319 |     },

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:316:74)

● next.rs api › should allow to write app edge page to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write app edge page to disk: rsc diagnostics 1`

- Snapshot  -   1
+ Received  + 100

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcExperimentalDecorators": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcImportSource": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  319 |     },
  320 |     {
> 321 |       name: 'app Node.js route',
      |                                 ^
  322 |       path: '/route-nodejs',
  323 |       type: 'app-route',
  324 |       runtime: 'nodejs',

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:321:75)

● next.rs api › should allow to write app Node.js page to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write app Node.js page to disk: diagnostics 1`

- Snapshot  -   1
+ Received  + 100

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcExperimentalDecorators": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcImportSource": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  314 |       name: 'app edge route',
  315 |       path: '/route-edge',
> 316 |       type: 'app-route',
      |                         ^
  317 |       runtime: 'edge',
  318 |       config: {},
  319 |     },

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:316:74)

● next.rs api › should allow to write app Node.js page to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write app Node.js page to disk: rsc diagnostics 1`

- Snapshot  -   1
+ Received  + 100

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcExperimentalDecorators": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcImportSource": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  319 |     },
  320 |     {
> 321 |       name: 'app Node.js route',
      |                                 ^
  322 |       path: '/route-nodejs',
  323 |       type: 'app-route',
  324 |       runtime: 'nodejs',

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:321:75)

● next.rs api › should allow to write pages edge page to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write pages edge page to disk: diagnostics 1`

- Snapshot  -   1
+ Received  + 100

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcExperimentalDecorators": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcImportSource": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  300 |       name: 'pages edge page',
  301 |       path: '/page-edge',
> 302 |       type: 'page',
      |                    ^
  303 |       runtime: 'edge',
  304 |       config: {},
  305 |     },

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:302:74)

● next.rs api › should allow to write pages edge page to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write pages edge page to disk: data diagnostics 1`

- Snapshot  -   1
+ Received  + 100

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcExperimentalDecorators": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcImportSource": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  305 |     },
  306 |     {
> 307 |       name: 'pages Node.js page',
      |                                  ^
  308 |       path: '/page-nodejs',
  309 |       type: 'page',
  310 |       runtime: 'nodejs',

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:307:75)

● next.rs api › should allow to write pages Node.js page to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write pages Node.js page to disk: diagnostics 1`

- Snapshot  -   1
+ Received  + 100

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcExperimentalDecorators": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcImportSource": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  300 |       name: 'pages edge page',
  301 |       path: '/page-edge',
> 302 |       type: 'page',
      |                    ^
  303 |       runtime: 'edge',
  304 |       config: {},
  305 |     },

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:302:74)

● next.rs api › should allow to write pages Node.js page to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write pages Node.js page to disk: data diagnostics 1`

- Snapshot  -   1
+ Received  + 100

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcExperimentalDecorators": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcImportSource": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  305 |     },
  306 |     {
> 307 |       name: 'pages Node.js page',
      |                                  ^
  308 |       path: '/page-nodejs',
  309 |       type: 'page',
  310 |       runtime: 'nodejs',

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:307:75)

● next.rs api › should allow to write app edge route to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write app edge route to disk: diagnostics 1`

- Snapshot  -   1
+ Received  + 100

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcExperimentalDecorators": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcImportSource": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  291 |     },
  292 |     {
> 293 |       name: 'app Node.js page',
      |                                ^
  294 |       path: '/app-nodejs',
  295 |       type: 'app-page',
  296 |       runtime: 'nodejs',

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:293:74)

● next.rs api › should allow to write app Node.js route to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write app Node.js route to disk: diagnostics 1`

- Snapshot  -   1
+ Received  + 100

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcExperimentalDecorators": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcImportSource": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  291 |     },
  292 |     {
> 293 |       name: 'app Node.js page',
      |                                ^
  294 |       path: '/app-nodejs',
  295 |       type: 'app-page',
  296 |       runtime: 'nodejs',

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:293:74)

Read more about building and testing Next.js in contributing.md.

pnpm test-dev-turbo test/e2e/conflicting-app-page-error/index.test.ts (turbopack)

  • Conflict between app file and pages file > should show error overlay for /another
  • Conflict between app file and pages file > should show error overlay for /
  • Conflict between app file and pages file > should error again when there is new conflict
Expand output

● Conflict between app file and pages file › should show error overlay for /another

expect(received).toContain(expected) // indexOf

Expected substring: "App Router and Pages Router both match path:"
Received string:    "Failed to compile"

  52 |       await assertHasRedbox(browser)
  53 |       if (process.env.TURBOPACK) {
> 54 |         expect(await getRedboxDescription(browser)).toContain(
     |                                                     ^
  55 |           'App Router and Pages Router both match path:'
  56 |         )
  57 |       }

  at toContain (e2e/conflicting-app-page-error/index.test.ts:54:53)
  at retry (lib/next-test-utils.ts:806:14)
  at containConflictsError (e2e/conflicting-app-page-error/index.test.ts:51:5)
  at Object.<anonymous> (e2e/conflicting-app-page-error/index.test.ts:74:7)

● Conflict between app file and pages file › should show error overlay for /

expect(received).toContain(expected) // indexOf

Expected substring: "App Router and Pages Router both match path:"
Received string:    "Failed to compile"

  52 |       await assertHasRedbox(browser)
  53 |       if (process.env.TURBOPACK) {
> 54 |         expect(await getRedboxDescription(browser)).toContain(
     |                                                     ^
  55 |           'App Router and Pages Router both match path:'
  56 |         )
  57 |       }

  at toContain (e2e/conflicting-app-page-error/index.test.ts:54:53)
  at retry (lib/next-test-utils.ts:806:14)
  at containConflictsError (e2e/conflicting-app-page-error/index.test.ts:51:5)
  at Object.<anonymous> (e2e/conflicting-app-page-error/index.test.ts:83:7)

● Conflict between app file and pages file › should error again when there is new conflict

expect(received).toContain(expected) // indexOf

Expected substring: "App Router and Pages Router both match path:"
Received string:    "Failed to compile"

  52 |       await assertHasRedbox(browser)
  53 |       if (process.env.TURBOPACK) {
> 54 |         expect(await getRedboxDescription(browser)).toContain(
     |                                                     ^
  55 |           'App Router and Pages Router both match path:'
  56 |         )
  57 |       }

  at toContain (e2e/conflicting-app-page-error/index.test.ts:54:53)
  at retry (lib/next-test-utils.ts:806:14)
  at containConflictsError (e2e/conflicting-app-page-error/index.test.ts:51:5)
  at Object.<anonymous> (e2e/conflicting-app-page-error/index.test.ts:124:7)

Read more about building and testing Next.js in contributing.md.

pnpm test-dev test/e2e/persistent-caching/persistent-caching.test.ts

  • persistent-caching > should persistent cache loaders
Expand output

● persistent-caching › should persistent cache loaders

expect(received).toBe(expected) // Object.is equality

Expected: "Timestamp = 1736563493062"
Received: "Timestamp = 1736563512318"

  55 |       const browser = await next.browser('/pages')
  56 |       // TODO Persistent Caching for webpack dev server is broken
> 57 |       expect(await browser.elementByCss('main').text()).toBe(pagesTimestamp)
     |                                                         ^
  58 |       await browser.close()
  59 |     }
  60 |   })

  at Object.toBe (e2e/persistent-caching/persistent-caching.test.ts:57:57)

Read more about building and testing Next.js in contributing.md.

@bgw bgw force-pushed the bgw/vcarc-uses-operationvc branch from 56c77c9 to 3ca36f6 Compare January 10, 2025 22:48
@bgw bgw force-pushed the bgw/return-values-should-be-non-local branch from 1f21777 to 1a10536 Compare January 10, 2025 22:49
@bgw bgw force-pushed the bgw/vcarc-uses-operationvc branch from 3ca36f6 to d930890 Compare January 10, 2025 23:11
@bgw bgw force-pushed the bgw/return-values-should-be-non-local branch from 1a10536 to 59ff3b4 Compare January 10, 2025 23:11
@bgw bgw force-pushed the bgw/vcarc-uses-operationvc branch from d930890 to fc3f3d2 Compare January 10, 2025 23:46
@bgw bgw force-pushed the bgw/return-values-should-be-non-local branch from 59ff3b4 to 1713534 Compare January 10, 2025 23:46
@bgw bgw force-pushed the bgw/vcarc-uses-operationvc branch from fc3f3d2 to 968aa54 Compare January 11, 2025 00:33
@bgw bgw force-pushed the bgw/return-values-should-be-non-local branch from 1713534 to 90c2d5c Compare January 11, 2025 00:34
@bgw bgw force-pushed the bgw/vcarc-uses-operationvc branch from 968aa54 to 9585d5e Compare January 11, 2025 01:40
@bgw bgw force-pushed the bgw/return-values-should-be-non-local branch from 90c2d5c to fe63d1b Compare January 11, 2025 01:41
@bgw bgw force-pushed the bgw/vcarc-uses-operationvc branch from 9585d5e to 2d433d3 Compare January 11, 2025 02:11
@bgw bgw force-pushed the bgw/return-values-should-be-non-local branch from fe63d1b to 0e91d34 Compare January 11, 2025 02:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CI Bypass Graphite Optimization Ignore Graphite CI optimizations, run the full CI suite. https://graphite.dev/docs/stacking-and-ci created-by: Turbopack team PRs by the Turbopack team.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants