'use strict'; const url = require('url'); // Webpack loader that runs in the RSC compilation. // When a module starts with 'use client', it replaces the entire source // with a client module proxy. This makes the RSC renderer serialize a // client reference into the Flight stream instead of rendering the component. module.exports = function rscClientRefLoader(source) { const trimmed = source.trimStart(); if ( trimmed.startsWith("'use client'") || trimmed.startsWith('"use client"') ) { const href = url.pathToFileURL(this.resourcePath).href; return [ `const { createClientModuleProxy } = require('react-server-dom-webpack/server');`, `module.exports = createClientModuleProxy(${JSON.stringify(href)});`, ].join('\n'); } return source; };