UNPKG

vite-plugin-react-server

Version:
74 lines (71 loc) 10.5 kB
/** * vite-plugin-react-server * Copyright (c) Nico Brinkkemper * MIT License */ import 'node:stream'; import { parseServerActionRequest, resolveServerAction, loadServerAction, executeServerAction, sendServerActionResponse, handleServerActionError } from './handleServerActionHelper.js'; export { createServerActionResponse, parseServerActionRequestBody, setupServerActionHeaders } from './handleServerActionHelper.js'; async function handleServerAction(req, res, options) { const { projectRoot, verbose = false, logger, ssrLoadModule } = options; try { if (verbose) { logger?.info("[handleServerAction:server] Processing server action request"); } const { id, args } = await parseServerActionRequest( req, verbose, logger ); const { fullPath, exportName } = resolveServerAction( id, projectRoot, verbose, logger ); if (!ssrLoadModule) { throw new Error("ssrLoadModule is required for server action execution"); } const action = await loadServerAction( fullPath, exportName, ssrLoadModule, verbose, logger ); const result = await executeServerAction( action, args, verbose, logger ); sendServerActionResponse( res, result, verbose, logger ); if (verbose) { logger?.info("[handleServerAction:server] Server action completed successfully"); } } catch (error) { handleServerActionError(error, res, logger); } } async function handleServerActionWithViteServer(req, res, server, handlerOptions) { const serverEnv = server.environments["server"]; let ssrLoadModule; if (serverEnv && "runner" in serverEnv && serverEnv.runner) { ssrLoadModule = (url) => serverEnv.runner.import(url); } else { ssrLoadModule = server.ssrLoadModule; } return handleServerAction(req, res, { projectRoot: handlerOptions.projectRoot, verbose: handlerOptions.verbose, logger: server.config.customLogger || server.config.logger, ssrLoadModule }); } export { handleServerAction, handleServerActionWithViteServer, parseServerActionRequest }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlU2VydmVyQWN0aW9uLnNlcnZlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGx1Z2luL2hlbHBlcnMvaGFuZGxlU2VydmVyQWN0aW9uLnNlcnZlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IExvZ2dlciwgVml0ZURldlNlcnZlciB9IGZyb20gXCJ2aXRlXCI7XG5pbXBvcnQgdHlwZSB7IEluY29taW5nTWVzc2FnZSwgU2VydmVyUmVzcG9uc2UgfSBmcm9tIFwibm9kZTpodHRwXCI7XG5pbXBvcnQgeyBsb2dFcnJvciwgdG9FcnJvciB9IGZyb20gXCIuLi9lcnJvci9pbmRleC5qc1wiO1xuaW1wb3J0IHsgUGFzc1Rocm91Z2ggfSBmcm9tIFwibm9kZTpzdHJlYW1cIjtcbmltcG9ydCB0eXBlIHtcbiAgU2VydmVyQWN0aW9uSGFuZGxlck9wdGlvbnMsXG59IGZyb20gXCIuL2hhbmRsZVNlcnZlckFjdGlvbkhlbHBlci5qc1wiO1xuaW1wb3J0IHtcbiAgcGFyc2VTZXJ2ZXJBY3Rpb25SZXF1ZXN0IGFzIHBhcnNlU2VydmVyQWN0aW9uUmVxdWVzdEhlbHBlcixcbiAgY3JlYXRlU2VydmVyQWN0aW9uUmVzcG9uc2UsXG4gIHJlc29sdmVTZXJ2ZXJBY3Rpb24sXG4gIGxvYWRTZXJ2ZXJBY3Rpb24sXG4gIGV4ZWN1dGVTZXJ2ZXJBY3Rpb24sXG4gIHNlbmRTZXJ2ZXJBY3Rpb25SZXNwb25zZSxcbiAgaGFuZGxlU2VydmVyQWN0aW9uRXJyb3IgYXMgaGFuZGxlU2VydmVyQWN0aW9uRXJyb3JIZWxwZXIsXG59IGZyb20gXCIuL2hhbmRsZVNlcnZlckFjdGlvbkhlbHBlci5qc1wiO1xuXG4vLyBVc2Ugc2hhcmVkIGhlbHBlciBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIGxvZ2ljXG5cbi8vIFVzZSBzaGFyZWQgaGVscGVyIGluc3RlYWQgb2YgZHVwbGljYXRpbmcgbG9naWNcblxuLyoqXG4gKiBDcmVhdGVzIGEgcGFzcy10aHJvdWdoIHN0cmVhbSBmb3Igc2VydmVyIGFjdGlvbiByZXNwb25zZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTZXJ2ZXJBY3Rpb25TdHJlYW0ocmVzOiBTZXJ2ZXJSZXNwb25zZSk6IFBhc3NUaHJvdWdoIHtcbiAgY29uc3QgcGFzc1Rocm91Z2ggPSBuZXcgUGFzc1Rocm91Z2goKTtcbiAgcGFzc1Rocm91Z2gucGlwZShyZXMsIHsgZW5kOiB0cnVlIH0pO1xuICBwYXNzVGhyb3VnaC5vbignZW5kJywgKCkgPT4ge1xuICAgIHJlcy5lbmQoKTtcbiAgfSk7XG4gIHJldHVybiBwYXNzVGhyb3VnaDtcbn1cblxuLyoqXG4gKiBIYW5kbGVzIGVycm9ycyBpbiBzZXJ2ZXIgYWN0aW9uIHByb2Nlc3NpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVTZXJ2ZXJBY3Rpb25FcnJvcihlcnJvcjogdW5rbm93biwgcmVzOiBTZXJ2ZXJSZXNwb25zZSwgbG9nZ2VyPzogTG9nZ2VyKSB7XG4gIGNvbnN0IGVyciA9IHRvRXJyb3IoZXJyb3IpO1xuICBsb2dFcnJvcihlcnIsIGxvZ2dlcik7XG4gIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xuICByZXMuZW5kKEpTT04uc3RyaW5naWZ5KGNyZWF0ZVNlcnZlckFjdGlvblJlc3BvbnNlKHVuZGVmaW5lZCwgZXJyLm1lc3NhZ2UpKSk7XG59XG5cbi8qKlxuICogU2VydmVyLXNpZGUgc2VydmVyIGFjdGlvbiBoYW5kbGVyIHRoYXQgdXNlcyBzc3JMb2FkTW9kdWxlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVTZXJ2ZXJBY3Rpb24oXG4gIHJlcTogSW5jb21pbmdNZXNzYWdlLFxuICByZXM6IFNlcnZlclJlc3BvbnNlLFxuICBvcHRpb25zOiBTZXJ2ZXJBY3Rpb25IYW5kbGVyT3B0aW9uc1xuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgcHJvamVjdFJvb3QsIHZlcmJvc2UgPSBmYWxzZSwgbG9nZ2VyLCBzc3JMb2FkTW9kdWxlIH0gPSBvcHRpb25zO1xuXG4gIHRyeSB7XG4gICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgIGxvZ2dlcj8uaW5mbyhcIltoYW5kbGVTZXJ2ZXJBY3Rpb246c2VydmVyXSBQcm9jZXNzaW5nIHNlcnZlciBhY3Rpb24gcmVxdWVzdFwiKTtcbiAgICB9XG5cbiAgICAvLyBQYXJzZSB0aGUgc2VydmVyIGFjdGlvbiByZXF1ZXN0XG4gICAgY29uc3QgeyBpZCwgYXJncyB9ID0gYXdhaXQgcGFyc2VTZXJ2ZXJBY3Rpb25SZXF1ZXN0SGVscGVyKFxuICAgICAgcmVxLFxuICAgICAgdmVyYm9zZSxcbiAgICAgIGxvZ2dlclxuICAgICk7XG5cbiAgICAvLyBSZXNvbHZlIHRoZSBzZXJ2ZXIgYWN0aW9uXG4gICAgY29uc3QgeyBmdWxsUGF0aCwgZXhwb3J0TmFtZSB9ID0gcmVzb2x2ZVNlcnZlckFjdGlvbihcbiAgICAgIGlkLFxuICAgICAgcHJvamVjdFJvb3QsXG4gICAgICB2ZXJib3NlLFxuICAgICAgbG9nZ2VyXG4gICAgKTtcblxuICAgIC8vIExvYWQgdGhlIHNlcnZlciBhY3Rpb24gKGlmIHNzckxvYWRNb2R1bGUgaXMgcHJvdmlkZWQpXG4gICAgaWYgKCFzc3JMb2FkTW9kdWxlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJzc3JMb2FkTW9kdWxlIGlzIHJlcXVpcmVkIGZvciBzZXJ2ZXIgYWN0aW9uIGV4ZWN1dGlvblwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBhY3Rpb24gPSBhd2FpdCBsb2FkU2VydmVyQWN0aW9uKFxuICAgICAgZnVsbFBhdGgsXG4gICAgICBleHBvcnROYW1lLFxuICAgICAgc3NyTG9hZE1vZHVsZSxcbiAgICAgIHZlcmJvc2UsXG4gICAgICBsb2dnZXJcbiAgICApO1xuXG4gICAgLy8gRXhlY3V0ZSB0aGUgc2VydmVyIGFjdGlvblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGV4ZWN1dGVTZXJ2ZXJBY3Rpb24oXG4gICAgICBhY3Rpb24sXG4gICAgICBhcmdzLFxuICAgICAgdmVyYm9zZSxcbiAgICAgIGxvZ2dlclxuICAgICk7XG5cbiAgICAvLyBTZW5kIHRoZSByZXNwb25zZVxuICAgIHNlbmRTZXJ2ZXJBY3Rpb25SZXNwb25zZShcbiAgICAgIHJlcyxcbiAgICAgIHJlc3VsdCxcbiAgICAgIHZlcmJvc2UsXG4gICAgICBsb2dnZXJcbiAgICApO1xuXG4gICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgIGxvZ2dlcj8uaW5mbyhcIltoYW5kbGVTZXJ2ZXJBY3Rpb246c2VydmVyXSBTZXJ2ZXIgYWN0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHlcIik7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgIGhhbmRsZVNlcnZlckFjdGlvbkVycm9ySGVscGVyKGVycm9yLCByZXMsIGxvZ2dlcik7XG4gIH1cbn1cblxuLyoqXG4gKiBWaXRlRGV2U2VydmVyLXNwZWNpZmljIHdyYXBwZXIgZm9yIHRoZSBzZXJ2ZXIgaGFuZGxlclxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlU2VydmVyQWN0aW9uV2l0aFZpdGVTZXJ2ZXIoXG4gIHJlcTogSW5jb21pbmdNZXNzYWdlLFxuICByZXM6IFNlcnZlclJlc3BvbnNlLFxuICBzZXJ2ZXI6IFZpdGVEZXZTZXJ2ZXIsXG4gIGhhbmRsZXJPcHRpb25zOiB7XG4gICAgdmVyYm9zZT86IGJvb2xlYW47XG4gICAgcHJvamVjdFJvb3Q6IHN0cmluZztcbiAgfVxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIC8vIFVzZSBzZXJ2ZXIgZW52aXJvbm1lbnQgcnVubmVyIGZvciBwcm9wZXIgcmVhY3Qtc2VydmVyIGNvbmRpdGlvbiBoYW5kbGluZ1xuICAvLyBUaGlzIGVuc3VyZXMgY2xpZW50IGNvbXBvbmVudHMgYXJlIHRyYW5zZm9ybWVkIHRvIHJlZ2lzdGVyQ2xpZW50UmVmZXJlbmNlXG4gIGNvbnN0IHNlcnZlckVudiA9IHNlcnZlci5lbnZpcm9ubWVudHNbJ3NlcnZlciddO1xuICBsZXQgc3NyTG9hZE1vZHVsZTogKHVybDogc3RyaW5nKSA9PiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgXG4gIGlmIChzZXJ2ZXJFbnYgJiYgJ3J1bm5lcicgaW4gc2VydmVyRW52ICYmIHNlcnZlckVudi5ydW5uZXIpIHtcbiAgICAvLyBWaXRlIDYgRW52aXJvbm1lbnQgQVBJOiB1c2Ugc2VydmVyIGVudmlyb25tZW50IHJ1bm5lciBmb3IgUlNDXG4gICAgc3NyTG9hZE1vZHVsZSA9ICh1cmw6IHN0cmluZykgPT4gXG4gICAgICAoc2VydmVyRW52LnJ1bm5lciBhcyB7IGltcG9ydDogKHVybDogc3RyaW5nKSA9PiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB9KS5pbXBvcnQodXJsKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGYWxsYmFjayB0byBzc3JMb2FkTW9kdWxlIChzaG91bGQgbm90IGhhcHBlbiBpbiBWaXRlIDYrKVxuICAgIHNzckxvYWRNb2R1bGUgPSBzZXJ2ZXIuc3NyTG9hZE1vZHVsZTtcbiAgfVxuICBcbiAgcmV0dXJuIGhhbmRsZVNlcnZlckFjdGlvbihyZXEsIHJlcywge1xuICAgIHByb2plY3RSb290OiBoYW5kbGVyT3B0aW9ucy5wcm9qZWN0Um9vdCxcbiAgICB2ZXJib3NlOiBoYW5kbGVyT3B0aW9ucy52ZXJib3NlLFxuICAgIGxvZ2dlcjogc2VydmVyLmNvbmZpZy5jdXN0b21Mb2dnZXIgfHwgc2VydmVyLmNvbmZpZy5sb2dnZXIsXG4gICAgc3NyTG9hZE1vZHVsZSxcbiAgfSk7XG59XG5cbi8vIFJlLWV4cG9ydCBoZWxwZXIgZnVuY3Rpb25zIGZvciB0aGUgZW50cnkgcG9pbnRcbmV4cG9ydCB7IFxuICBwYXJzZVNlcnZlckFjdGlvblJlcXVlc3QsXG4gIHBhcnNlU2VydmVyQWN0aW9uUmVxdWVzdEJvZHksXG4gIGNyZWF0ZVNlcnZlckFjdGlvblJlc3BvbnNlLCBcbiAgc2V0dXBTZXJ2ZXJBY3Rpb25IZWFkZXJzIFxufSBmcm9tIFwiLi9oYW5kbGVTZXJ2ZXJBY3Rpb25IZWxwZXIuanNcIjtcblxuZXhwb3J0IHR5cGUgeyBTZXJ2ZXJBY3Rpb25SZXF1ZXN0LCBTZXJ2ZXJBY3Rpb25IYW5kbGVyT3B0aW9ucyB9IGZyb20gXCIuL2hhbmRsZVNlcnZlckFjdGlvbkhlbHBlci5qc1wiO1xuIl0sIm5hbWVzIjpbInBhcnNlU2VydmVyQWN0aW9uUmVxdWVzdEhlbHBlciIsImhhbmRsZVNlcnZlckFjdGlvbkVycm9ySGVscGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUE4Q0EsZUFBc0Isa0JBQUEsQ0FDcEIsR0FDQSxFQUFBLEdBQUEsRUFDQSxPQUNlLEVBQUE7QUFDZixFQUFBLE1BQU0sRUFBRSxXQUFhLEVBQUEsT0FBQSxHQUFVLEtBQU8sRUFBQSxNQUFBLEVBQVEsZUFBa0IsR0FBQSxPQUFBO0FBRWhFLEVBQUksSUFBQTtBQUNGLElBQUEsSUFBSSxPQUFTLEVBQUE7QUFDWCxNQUFBLE1BQUEsRUFBUSxLQUFLLDhEQUE4RCxDQUFBO0FBQUE7QUFJN0UsSUFBQSxNQUFNLEVBQUUsRUFBQSxFQUFJLElBQUssRUFBQSxHQUFJLE1BQU1BLHdCQUFBO0FBQUEsTUFDekIsR0FBQTtBQUFBLE1BQ0EsT0FBQTtBQUFBLE1BQ0E7QUFBQSxLQUNGO0FBR0EsSUFBTSxNQUFBLEVBQUUsUUFBVSxFQUFBLFVBQUEsRUFBZSxHQUFBLG1CQUFBO0FBQUEsTUFDL0IsRUFBQTtBQUFBLE1BQ0EsV0FBQTtBQUFBLE1BQ0EsT0FBQTtBQUFBLE1BQ0E7QUFBQSxLQUNGO0FBR0EsSUFBQSxJQUFJLENBQUMsYUFBZSxFQUFBO0FBQ2xCLE1BQU0sTUFBQSxJQUFJLE1BQU0sdURBQXVELENBQUE7QUFBQTtBQUd6RSxJQUFBLE1BQU0sU0FBUyxNQUFNLGdCQUFBO0FBQUEsTUFDbkIsUUFBQTtBQUFBLE1BQ0EsVUFBQTtBQUFBLE1BQ0EsYUFBQTtBQUFBLE1BQ0EsT0FBQTtBQUFBLE1BQ0E7QUFBQSxLQUNGO0FBR0EsSUFBQSxNQUFNLFNBQVMsTUFBTSxtQkFBQTtBQUFBLE1BQ25CLE1BQUE7QUFBQSxNQUNBLElBQUE7QUFBQSxNQUNBLE9BQUE7QUFBQSxNQUNBO0FBQUEsS0FDRjtBQUdBLElBQUEsd0JBQUE7QUFBQSxNQUNFLEdBQUE7QUFBQSxNQUNBLE1BQUE7QUFBQSxNQUNBLE9BQUE7QUFBQSxNQUNBO0FBQUEsS0FDRjtBQUVBLElBQUEsSUFBSSxPQUFTLEVBQUE7QUFDWCxNQUFBLE1BQUEsRUFBUSxLQUFLLGtFQUFrRSxDQUFBO0FBQUE7QUFDakYsV0FDTyxLQUFnQixFQUFBO0FBQ3ZCLElBQThCQyx1QkFBQSxDQUFBLEtBQUEsRUFBTyxLQUFLLE1BQU0sQ0FBQTtBQUFBO0FBRXBEO0FBS0EsZUFBc0IsZ0NBQ3BCLENBQUEsR0FBQSxFQUNBLEdBQ0EsRUFBQSxNQUFBLEVBQ0EsY0FJZSxFQUFBO0FBR2YsRUFBTSxNQUFBLFNBQUEsR0FBWSxNQUFPLENBQUEsWUFBQSxDQUFhLFFBQVEsQ0FBQTtBQUM5QyxFQUFJLElBQUEsYUFBQTtBQUVKLEVBQUEsSUFBSSxTQUFhLElBQUEsUUFBQSxJQUFZLFNBQWEsSUFBQSxTQUFBLENBQVUsTUFBUSxFQUFBO0FBRTFELElBQUEsYUFBQSxHQUFnQixDQUFDLEdBQUEsS0FDZCxTQUFVLENBQUEsTUFBQSxDQUF5RSxPQUFPLEdBQUcsQ0FBQTtBQUFBLEdBQzNGLE1BQUE7QUFFTCxJQUFBLGFBQUEsR0FBZ0IsTUFBTyxDQUFBLGFBQUE7QUFBQTtBQUd6QixFQUFPLE9BQUEsa0JBQUEsQ0FBbUIsS0FBSyxHQUFLLEVBQUE7QUFBQSxJQUNsQyxhQUFhLGNBQWUsQ0FBQSxXQUFBO0FBQUEsSUFDNUIsU0FBUyxjQUFlLENBQUEsT0FBQTtBQUFBLElBQ3hCLE1BQVEsRUFBQSxNQUFBLENBQU8sTUFBTyxDQUFBLFlBQUEsSUFBZ0IsT0FBTyxNQUFPLENBQUEsTUFBQTtBQUFBLElBQ3BEO0FBQUEsR0FDRCxDQUFBO0FBQ0g7Ozs7In0=