From 590fe985be8f8f38eccdd0090dc504b0394b6ace Mon Sep 17 00:00:00 2001 From: OJ Kwon <1210596+kwonoj@users.noreply.github.com> Date: Tue, 27 Jun 2023 11:03:02 -0700 Subject: [PATCH] feat(next-dev): add a new experimental flag --- packages/next-swc/crates/napi/src/turbopack.rs | 5 +++++ packages/next/src/build/swc/index.ts | 9 +++++++++ packages/next/src/cli/next-dev.ts | 8 ++++++++ packages/next/src/server/lib/start-server.ts | 1 + 4 files changed, 23 insertions(+) diff --git a/packages/next-swc/crates/napi/src/turbopack.rs b/packages/next-swc/crates/napi/src/turbopack.rs index 04e5c18c2e1e..56046e394b0e 100644 --- a/packages/next-swc/crates/napi/src/turbopack.rs +++ b/packages/next-swc/crates/napi/src/turbopack.rs @@ -181,3 +181,8 @@ impl From for RouteHas { pub async fn next_build(ctx: NextBuildContext) -> napi::Result<()> { turbo_next_build(ctx.try_into()?).await.convert_err() } + +#[napi] +pub async fn experimental_turbo(_unused: Buffer) -> napi::Result<()> { + unimplemented!("__experimental_turbo is not yet implemented"); +} diff --git a/packages/next/src/build/swc/index.ts b/packages/next/src/build/swc/index.ts index e08dc42ea1a2..3b779c46ee1d 100644 --- a/packages/next/src/build/swc/index.ts +++ b/packages/next/src/build/swc/index.ts @@ -296,6 +296,9 @@ async function loadWasm(importPath = '', isCustomTurbopack: boolean) { startTrace: () => { Log.error('Wasm binding does not support trace yet') }, + experimentalTurbo: () => { + Log.error('Wasm binding does not support this interface') + }, entrypoints: { stream: ( turboTasks: any, @@ -555,6 +558,12 @@ function loadNative(isCustomTurbopack = false) { ) return ret }, + experimentalTurbo: () => { + initHeapProfiler() + + const ret = bindings.experimentalTurbo() + return ret + }, createTurboTasks: (memoryLimit?: number): unknown => bindings.createTurboTasks(memoryLimit), entrypoints: { diff --git a/packages/next/src/cli/next-dev.ts b/packages/next/src/cli/next-dev.ts index c9f16183e27d..e019a0bf6767 100644 --- a/packages/next/src/cli/next-dev.ts +++ b/packages/next/src/cli/next-dev.ts @@ -119,6 +119,7 @@ const nextDev: CliCommand = async (argv) => { '--port': Number, '--hostname': String, '--turbo': Boolean, + '--experimental-turbo': Boolean, // To align current messages with native binary. // Will need to adjust subcommand later. @@ -209,6 +210,7 @@ const nextDev: CliCommand = async (argv) => { // We do not set a default host value here to prevent breaking // some set-ups that rely on listening on other interfaces const host = args['--hostname'] + const experimentalTurbo = args['--experimental-turbo'] const devServerOptions: StartServerOptions = { dir, @@ -218,6 +220,7 @@ const nextDev: CliCommand = async (argv) => { hostname: host, // This is required especially for app dir. useWorkers: true, + isExperimentalTurbo: experimentalTurbo, } if (args['--turbo']) { @@ -311,6 +314,11 @@ const nextDev: CliCommand = async (argv) => { return server } else { + if (experimentalTurbo) { + Log.error('Not supported yet') + process.exit(1) + } + let cleanupFns: (() => Promise | void)[] = [] const runDevServer = async () => { const oldCleanupFns = cleanupFns diff --git a/packages/next/src/server/lib/start-server.ts b/packages/next/src/server/lib/start-server.ts index 50fa905a53ad..e10a34e1fb64 100644 --- a/packages/next/src/server/lib/start-server.ts +++ b/packages/next/src/server/lib/start-server.ts @@ -22,6 +22,7 @@ export interface StartServerOptions { useWorkers: boolean allowRetry?: boolean isTurbopack?: boolean + isExperimentalTurbo?: boolean keepAliveTimeout?: number onStdout?: (data: any) => void onStderr?: (data: any) => void