vite-plugin-react-server
Version:
Vite plugin for React Server Components (RSC)
38 lines (35 loc) • 7.03 kB
JavaScript
/**
* vite-plugin-react-server
* Copyright (c) Nico Brinkkemper
* MIT License
*/
function augmentClientReferenceError(error) {
if (!(error instanceof Error)) return error;
const message = error.message || "";
const isHostedRootError = message.includes(
"Client Module outside the hosted root"
);
const missingClientModule = message.startsWith("Cannot find module") && /[\\/](client|static)[\\/]/.test(message);
if (!isHostedRootError && !missingClientModule) return error;
if (error.vprsClientReferenceAugmented) {
return error;
}
const detail = isHostedRootError ? [
"A client module's moduleID is not hosted (it does not start with the configured `moduleBasePath`).",
'This usually means a `"use client"` module was not recognized as a client reference and got a raw, unhosted moduleID.',
'Directive-detected `"use client"` modules (no `.client.` filename) ARE supported — ensure the module declares the directive at the very top of the file.'
].join(" ") : [
"A hosted client reference points at a file that was not emitted to the client build output.",
'This usually means a directive-only `"use client"` module was hosted but not added as a client/SSR build input.'
].join(" ");
const augmented = new Error(
`${message}
[vite-plugin-react-server] ${detail}`
);
augmented.stack = error.stack;
augmented.cause = error;
augmented.vprsClientReferenceAugmented = true;
return augmented;
}
export { augmentClientReferenceError };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVnbWVudENsaWVudFJlZmVyZW5jZUVycm9yLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9wbHVnaW4vZXJyb3IvYXVnbWVudENsaWVudFJlZmVyZW5jZUVycm9yLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQXVnbWVudHMgdGhlIG9wYXF1ZSByZWFjdC1zZXJ2ZXItZG9tLWVzbSBjbGllbnQtcmVmZXJlbmNlIGZhaWx1cmVzIHRoYXRcbiAqIHN1cmZhY2UgZHVyaW5nIHN0YXRpYyAoYC0tYXBwYCkgcHJlcmVuZGVyIHdpdGggYW4gYWN0aW9uYWJsZSBleHBsYW5hdGlvbi5cbiAqXG4gKiBUd28gZmFpbHVyZSBtb2RlcyBzaGFyZSB0aGUgc2FtZSByb290IGNhdXNlIOKAlCBhIGNsaWVudCBtb2R1bGUgd2hvc2UgaG9zdGVkXG4gKiBtb2R1bGVJRCBpcyB3cm9uZyDigJQgYnV0IHJlYWN0LXNlcnZlci1kb20tZXNtIHJlcG9ydHMgdGhlbSB3aXRob3V0IGNvbnRleHQ6XG4gKlxuICogICAxLiBcIkF0dGVtcHRlZCB0byBsb2FkIGEgQ2xpZW50IE1vZHVsZSBvdXRzaWRlIHRoZSBob3N0ZWQgcm9vdC5cIlxuICogICAgICBUaHJvd24gYnkgYHNlcmlhbGl6ZUNsaWVudFJlZmVyZW5jZWAgd2hlbiBhIGNsaWVudCByZWZlcmVuY2UncyBgJCRpZGBcbiAqICAgICAgZG9lcyBub3Qgc3RhcnQgd2l0aCB0aGUgYnVuZGxlcidzIGJhc2VVUkwgKGBtb2R1bGVCYXNlUGF0aGApLiBIYXBwZW5zXG4gKiAgICAgIHdoZW4gYSBgXCJ1c2UgY2xpZW50XCJgIG1vZHVsZSB3YXNuJ3QgaG9zdGVkIChgL2AtcHJlZml4ZWQpIOKAlCBlLmcuIGFcbiAqICAgICAgZGlyZWN0aXZlLW9ubHkgY2xpZW50IG1vZHVsZSB0aGF0IHRoZSBidWlsZCBkaWRuJ3QgcmVjb2duaXplLlxuICpcbiAqICAgMi4gXCJDYW5ub3QgZmluZCBtb2R1bGUgJzxkaXN0L2NsaWVudD4v4oCmJ1wiXG4gKiAgICAgIFRocm93biB3aGVuIHRoZSBodG1sLXdvcmtlciBpbXBvcnRzIHRoZSBob3N0ZWQgbW9kdWxlSUQgYnV0IG5vIGZpbGUgd2FzXG4gKiAgICAgIGVtaXR0ZWQgdGhlcmUg4oCUIGUuZy4gYSBkaXJlY3RpdmUtb25seSBjbGllbnQgbW9kdWxlIHRoYXQgd2FzIGhvc3RlZCBidXRcbiAqICAgICAgbmV2ZXIgYWRkZWQgYXMgYSBjbGllbnQvU1NSIGJ1aWxkIGlucHV0LlxuICpcbiAqIE5laXRoZXIgbWVzc2FnZSBuYW1lcyB0aGUgb2ZmZW5kaW5nIG1vZHVsZSAodGhlIGlkIGlzIGRpc2NhcmRlZCBpbnNpZGUgdGhlXG4gKiB2ZW5kb3JlZCBsaWIgZm9yIGNhc2UgMSksIHNvIHdlIGF0dGFjaCB0aGUgbW9zdCBhY3Rpb25hYmxlIGd1aWRhbmNlIHdlIGNhbjpcbiAqIHRoZSBsaWtlbHkgY2F1c2UgYW5kIHRoZSBmYWN0IHRoYXQgZGlyZWN0aXZlLW9ubHkgYFwidXNlIGNsaWVudFwiYCBtb2R1bGVzIGFyZVxuICogc3VwcG9ydGVkLCBpbmNsdWRpbmcgdGhlIHJlc29sdmVkIHBhdGggd2UgKmNhbiogc2VlIGZvciBjYXNlIDIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhdWdtZW50Q2xpZW50UmVmZXJlbmNlRXJyb3IoZXJyb3I6IHVua25vd24pOiB1bmtub3duIHtcbiAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikpIHJldHVybiBlcnJvcjtcblxuICBjb25zdCBtZXNzYWdlID0gZXJyb3IubWVzc2FnZSB8fCBcIlwiO1xuXG4gIGNvbnN0IGlzSG9zdGVkUm9vdEVycm9yID0gbWVzc2FnZS5pbmNsdWRlcyhcbiAgICBcIkNsaWVudCBNb2R1bGUgb3V0c2lkZSB0aGUgaG9zdGVkIHJvb3RcIlxuICApO1xuICAvLyBPbmx5IHRyZWF0IFwiQ2Fubm90IGZpbmQgbW9kdWxlXCIgYXMgY2xpZW50LXJlZmVyZW5jZS1yZWxhdGVkIHdoZW4gaXQgcG9pbnRzXG4gIC8vIGludG8gYSBidWlsZCdzIGNsaWVudCBvdXRwdXQgZGlyZWN0b3J5ICh0aGF0J3Mgd2hlcmUgY2xpZW50IHJlZnMgcmVzb2x2ZSkuXG4gIGNvbnN0IG1pc3NpbmdDbGllbnRNb2R1bGUgPVxuICAgIG1lc3NhZ2Uuc3RhcnRzV2l0aChcIkNhbm5vdCBmaW5kIG1vZHVsZVwiKSAmJlxuICAgIC9bXFxcXC9dKGNsaWVudHxzdGF0aWMpW1xcXFwvXS8udGVzdChtZXNzYWdlKTtcblxuICBpZiAoIWlzSG9zdGVkUm9vdEVycm9yICYmICFtaXNzaW5nQ2xpZW50TW9kdWxlKSByZXR1cm4gZXJyb3I7XG5cbiAgaWYgKChlcnJvciBhcyB7IHZwcnNDbGllbnRSZWZlcmVuY2VBdWdtZW50ZWQ/OiBib29sZWFuIH0pXG4gICAgICAudnByc0NsaWVudFJlZmVyZW5jZUF1Z21lbnRlZCkge1xuICAgIHJldHVybiBlcnJvcjtcbiAgfVxuXG4gIGNvbnN0IGRldGFpbCA9IGlzSG9zdGVkUm9vdEVycm9yXG4gICAgPyBbXG4gICAgICAgIFwiQSBjbGllbnQgbW9kdWxlJ3MgbW9kdWxlSUQgaXMgbm90IGhvc3RlZCAoaXQgZG9lcyBub3Qgc3RhcnQgd2l0aCB0aGUgY29uZmlndXJlZCBgbW9kdWxlQmFzZVBhdGhgKS5cIixcbiAgICAgICAgXCJUaGlzIHVzdWFsbHkgbWVhbnMgYSBgXFxcInVzZSBjbGllbnRcXFwiYCBtb2R1bGUgd2FzIG5vdCByZWNvZ25pemVkIGFzIGEgY2xpZW50IHJlZmVyZW5jZSBhbmQgZ290IGEgcmF3LCB1bmhvc3RlZCBtb2R1bGVJRC5cIixcbiAgICAgICAgXCJEaXJlY3RpdmUtZGV0ZWN0ZWQgYFxcXCJ1c2UgY2xpZW50XFxcImAgbW9kdWxlcyAobm8gYC5jbGllbnQuYCBmaWxlbmFtZSkgQVJFIHN1cHBvcnRlZCDigJQgZW5zdXJlIHRoZSBtb2R1bGUgZGVjbGFyZXMgdGhlIGRpcmVjdGl2ZSBhdCB0aGUgdmVyeSB0b3Agb2YgdGhlIGZpbGUuXCIsXG4gICAgICBdLmpvaW4oXCIgXCIpXG4gICAgOiBbXG4gICAgICAgIFwiQSBob3N0ZWQgY2xpZW50IHJlZmVyZW5jZSBwb2ludHMgYXQgYSBmaWxlIHRoYXQgd2FzIG5vdCBlbWl0dGVkIHRvIHRoZSBjbGllbnQgYnVpbGQgb3V0cHV0LlwiLFxuICAgICAgICBcIlRoaXMgdXN1YWxseSBtZWFucyBhIGRpcmVjdGl2ZS1vbmx5IGBcXFwidXNlIGNsaWVudFxcXCJgIG1vZHVsZSB3YXMgaG9zdGVkIGJ1dCBub3QgYWRkZWQgYXMgYSBjbGllbnQvU1NSIGJ1aWxkIGlucHV0LlwiLFxuICAgICAgXS5qb2luKFwiIFwiKTtcblxuICBjb25zdCBhdWdtZW50ZWQgPSBuZXcgRXJyb3IoXG4gICAgYCR7bWVzc2FnZX1cXG5cXG5bdml0ZS1wbHVnaW4tcmVhY3Qtc2VydmVyXSAke2RldGFpbH1gXG4gICk7XG4gIGF1Z21lbnRlZC5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAoYXVnbWVudGVkIGFzIHsgY2F1c2U/OiB1bmtub3duIH0pLmNhdXNlID0gZXJyb3I7XG4gIChhdWdtZW50ZWQgYXMgeyB2cHJzQ2xpZW50UmVmZXJlbmNlQXVnbWVudGVkPzogYm9vbGVhbiB9KVxuICAgIC52cHJzQ2xpZW50UmVmZXJlbmNlQXVnbWVudGVkID0gdHJ1ZTtcbiAgcmV0dXJuIGF1Z21lbnRlZDtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQXVCTyxTQUFTLDRCQUE0QixLQUF5QixFQUFBO0FBQ25FLEVBQUksSUFBQSxFQUFFLEtBQWlCLFlBQUEsS0FBQSxDQUFBLEVBQWUsT0FBQSxLQUFBO0FBRXRDLEVBQU0sTUFBQSxPQUFBLEdBQVUsTUFBTSxPQUFXLElBQUEsRUFBQTtBQUVqQyxFQUFBLE1BQU0sb0JBQW9CLE9BQVEsQ0FBQSxRQUFBO0FBQUEsSUFDaEM7QUFBQSxHQUNGO0FBR0EsRUFBQSxNQUFNLHNCQUNKLE9BQVEsQ0FBQSxVQUFBLENBQVcsb0JBQW9CLENBQ3ZDLElBQUEsMkJBQUEsQ0FBNEIsS0FBSyxPQUFPLENBQUE7QUFFMUMsRUFBQSxJQUFJLENBQUMsaUJBQUEsSUFBcUIsQ0FBQyxtQkFBQSxFQUE0QixPQUFBLEtBQUE7QUFFdkQsRUFBQSxJQUFLLE1BQ0EsNEJBQThCLEVBQUE7QUFDakMsSUFBTyxPQUFBLEtBQUE7QUFBQTtBQUdULEVBQUEsTUFBTSxTQUFTLGlCQUNYLEdBQUE7QUFBQSxJQUNFLG9HQUFBO0FBQUEsSUFDQSx1SEFBQTtBQUFBLElBQ0E7QUFBQSxHQUNGLENBQUUsSUFBSyxDQUFBLEdBQUcsQ0FDVixHQUFBO0FBQUEsSUFDRSw2RkFBQTtBQUFBLElBQ0E7QUFBQSxHQUNGLENBQUUsS0FBSyxHQUFHLENBQUE7QUFFZCxFQUFBLE1BQU0sWUFBWSxJQUFJLEtBQUE7QUFBQSxJQUNwQixHQUFHLE9BQU87O0FBQUEsMkJBQUEsRUFBa0MsTUFBTSxDQUFBO0FBQUEsR0FDcEQ7QUFDQSxFQUFBLFNBQUEsQ0FBVSxRQUFRLEtBQU0sQ0FBQSxLQUFBO0FBQ3hCLEVBQUMsVUFBa0MsS0FBUSxHQUFBLEtBQUE7QUFDM0MsRUFBQyxVQUNFLDRCQUErQixHQUFBLElBQUE7QUFDbEMsRUFBTyxPQUFBLFNBQUE7QUFDVDs7OzsifQ==