UNPKG

vite-plugin-react-server

Version:
67 lines (65 loc) 8.39 kB
/** * vite-plugin-react-server * Copyright (c) Nico Brinkkemper * MIT License */ function createRunnerTransport(port) { let nextRunnerId = 1; let nextRpcId = 1; const runnerPending = /* @__PURE__ */ new Map(); const rpcPending = /* @__PURE__ */ new Map(); port.on("message", (msg) => { if (!msg) return; if (msg.__vprs === "runner-response") { const resolve = runnerPending.get(msg.requestId); if (!resolve) return; runnerPending.delete(msg.requestId); resolve(msg.result); } else if (msg.__vprs === "rpc-response") { const pending = rpcPending.get(msg.requestId); if (!pending) return; rpcPending.delete(msg.requestId); if (msg.error) { const err = new Error(msg.error.message); if (msg.error.name) err.name = msg.error.name; if (msg.error.stack) err.stack = msg.error.stack; pending.reject(err); } else { pending.resolve(msg.result); } } }); const transport = { async invoke(payload) { return new Promise((resolve) => { const requestId = nextRunnerId++; runnerPending.set(requestId, resolve); const req = { __vprs: "runner-request", requestId, payload }; port.postMessage(req); }); } }; const rpc = async (method, args) => { return new Promise((resolve, reject) => { const requestId = nextRpcId++; rpcPending.set(requestId, { resolve, reject }); const req = { __vprs: "rpc-request", requestId, method, args }; port.postMessage(req); }); }; return { transport, rpc }; } export { createRunnerTransport }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlUnVubmVyVHJhbnNwb3J0LmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wbHVnaW4vd29ya2VyL3JzYy9jcmVhdGVSdW5uZXJUcmFuc3BvcnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBNZXNzYWdlUG9ydCB9IGZyb20gXCJub2RlOndvcmtlcl90aHJlYWRzXCI7XG5pbXBvcnQgdHlwZSB7IE1vZHVsZVJ1bm5lclRyYW5zcG9ydCB9IGZyb20gXCJ2aXRlL21vZHVsZS1ydW5uZXJcIjtcblxuZXhwb3J0IHR5cGUgUnVubmVyUG9ydFJlcXVlc3QgPSB7XG4gIF9fdnByczogXCJydW5uZXItcmVxdWVzdFwiO1xuICByZXF1ZXN0SWQ6IG51bWJlcjtcbiAgcGF5bG9hZDogdW5rbm93bjtcbn07XG5cbmV4cG9ydCB0eXBlIFJ1bm5lclBvcnRSZXNwb25zZSA9IHtcbiAgX192cHJzOiBcInJ1bm5lci1yZXNwb25zZVwiO1xuICByZXF1ZXN0SWQ6IG51bWJlcjtcbiAgcmVzdWx0OiB7IHJlc3VsdDogdW5rbm93biB9IHwgeyBlcnJvcjogdW5rbm93biB9O1xufTtcblxuZXhwb3J0IHR5cGUgUnBjUmVxdWVzdCA9IHtcbiAgX192cHJzOiBcInJwYy1yZXF1ZXN0XCI7XG4gIHJlcXVlc3RJZDogbnVtYmVyO1xuICBtZXRob2Q6IHN0cmluZztcbiAgYXJnczogdW5rbm93bltdO1xufTtcblxuZXhwb3J0IHR5cGUgUnBjUmVzcG9uc2UgPSB7XG4gIF9fdnByczogXCJycGMtcmVzcG9uc2VcIjtcbiAgcmVxdWVzdElkOiBudW1iZXI7XG4gIHJlc3VsdD86IHVua25vd247XG4gIGVycm9yPzogeyBuYW1lPzogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmc7IHN0YWNrPzogc3RyaW5nIH07XG59O1xuXG5leHBvcnQgdHlwZSBScGNJbnZva2VyID0gPFQgPSB1bmtub3duPihtZXRob2Q6IHN0cmluZywgYXJnczogdW5rbm93bltdKSA9PiBQcm9taXNlPFQ+O1xuXG5leHBvcnQgdHlwZSBSdW5uZXJUcmFuc3BvcnRCdW5kbGUgPSB7XG4gIHRyYW5zcG9ydDogTW9kdWxlUnVubmVyVHJhbnNwb3J0O1xuICBycGM6IFJwY0ludm9rZXI7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUnVubmVyVHJhbnNwb3J0KHBvcnQ6IE1lc3NhZ2VQb3J0KTogUnVubmVyVHJhbnNwb3J0QnVuZGxlIHtcbiAgbGV0IG5leHRSdW5uZXJJZCA9IDE7XG4gIGxldCBuZXh0UnBjSWQgPSAxO1xuICBjb25zdCBydW5uZXJQZW5kaW5nID0gbmV3IE1hcDxcbiAgICBudW1iZXIsXG4gICAgKHZhbHVlOiB7IHJlc3VsdDogdW5rbm93biB9IHwgeyBlcnJvcjogdW5rbm93biB9KSA9PiB2b2lkXG4gID4oKTtcbiAgY29uc3QgcnBjUGVuZGluZyA9IG5ldyBNYXA8XG4gICAgbnVtYmVyLFxuICAgIHsgcmVzb2x2ZTogKHZhbHVlOiB1bmtub3duKSA9PiB2b2lkOyByZWplY3Q6IChlcnJvcjogdW5rbm93bikgPT4gdm9pZCB9XG4gID4oKTtcblxuICBwb3J0Lm9uKFwibWVzc2FnZVwiLCAobXNnOiBSdW5uZXJQb3J0UmVzcG9uc2UgfCBScGNSZXNwb25zZSkgPT4ge1xuICAgIGlmICghbXNnKSByZXR1cm47XG4gICAgaWYgKG1zZy5fX3ZwcnMgPT09IFwicnVubmVyLXJlc3BvbnNlXCIpIHtcbiAgICAgIGNvbnN0IHJlc29sdmUgPSBydW5uZXJQZW5kaW5nLmdldChtc2cucmVxdWVzdElkKTtcbiAgICAgIGlmICghcmVzb2x2ZSkgcmV0dXJuO1xuICAgICAgcnVubmVyUGVuZGluZy5kZWxldGUobXNnLnJlcXVlc3RJZCk7XG4gICAgICByZXNvbHZlKG1zZy5yZXN1bHQpO1xuICAgIH0gZWxzZSBpZiAobXNnLl9fdnBycyA9PT0gXCJycGMtcmVzcG9uc2VcIikge1xuICAgICAgY29uc3QgcGVuZGluZyA9IHJwY1BlbmRpbmcuZ2V0KG1zZy5yZXF1ZXN0SWQpO1xuICAgICAgaWYgKCFwZW5kaW5nKSByZXR1cm47XG4gICAgICBycGNQZW5kaW5nLmRlbGV0ZShtc2cucmVxdWVzdElkKTtcbiAgICAgIGlmIChtc2cuZXJyb3IpIHtcbiAgICAgICAgY29uc3QgZXJyID0gbmV3IEVycm9yKG1zZy5lcnJvci5tZXNzYWdlKTtcbiAgICAgICAgaWYgKG1zZy5lcnJvci5uYW1lKSBlcnIubmFtZSA9IG1zZy5lcnJvci5uYW1lO1xuICAgICAgICBpZiAobXNnLmVycm9yLnN0YWNrKSBlcnIuc3RhY2sgPSBtc2cuZXJyb3Iuc3RhY2s7XG4gICAgICAgIHBlbmRpbmcucmVqZWN0KGVycik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZW5kaW5nLnJlc29sdmUobXNnLnJlc3VsdCk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICBjb25zdCB0cmFuc3BvcnQ6IE1vZHVsZVJ1bm5lclRyYW5zcG9ydCA9IHtcbiAgICBhc3luYyBpbnZva2UocGF5bG9hZCkge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3RJZCA9IG5leHRSdW5uZXJJZCsrO1xuICAgICAgICBydW5uZXJQZW5kaW5nLnNldChyZXF1ZXN0SWQsIHJlc29sdmUgYXMgYW55KTtcbiAgICAgICAgY29uc3QgcmVxOiBSdW5uZXJQb3J0UmVxdWVzdCA9IHtcbiAgICAgICAgICBfX3ZwcnM6IFwicnVubmVyLXJlcXVlc3RcIixcbiAgICAgICAgICByZXF1ZXN0SWQsXG4gICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgfTtcbiAgICAgICAgcG9ydC5wb3N0TWVzc2FnZShyZXEpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgfTtcblxuICBjb25zdCBycGM6IFJwY0ludm9rZXIgPSBhc3luYyA8VCA9IHVua25vd24+KFxuICAgIG1ldGhvZDogc3RyaW5nLFxuICAgIGFyZ3M6IHVua25vd25bXVxuICApOiBQcm9taXNlPFQ+ID0+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8VD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgcmVxdWVzdElkID0gbmV4dFJwY0lkKys7XG4gICAgICBycGNQZW5kaW5nLnNldChyZXF1ZXN0SWQsIHtcbiAgICAgICAgcmVzb2x2ZTogcmVzb2x2ZSBhcyAodmFsdWU6IHVua25vd24pID0+IHZvaWQsXG4gICAgICAgIHJlamVjdCxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgcmVxOiBScGNSZXF1ZXN0ID0ge1xuICAgICAgICBfX3ZwcnM6IFwicnBjLXJlcXVlc3RcIixcbiAgICAgICAgcmVxdWVzdElkLFxuICAgICAgICBtZXRob2QsXG4gICAgICAgIGFyZ3MsXG4gICAgICB9O1xuICAgICAgcG9ydC5wb3N0TWVzc2FnZShyZXEpO1xuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiB7IHRyYW5zcG9ydCwgcnBjIH07XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFvQ08sU0FBUyxzQkFBc0IsSUFBMEMsRUFBQTtBQUM5RSxFQUFBLElBQUksWUFBZSxHQUFBLENBQUE7QUFDbkIsRUFBQSxJQUFJLFNBQVksR0FBQSxDQUFBO0FBQ2hCLEVBQU0sTUFBQSxhQUFBLHVCQUFvQixHQUd4QixFQUFBO0FBQ0YsRUFBTSxNQUFBLFVBQUEsdUJBQWlCLEdBR3JCLEVBQUE7QUFFRixFQUFLLElBQUEsQ0FBQSxFQUFBLENBQUcsU0FBVyxFQUFBLENBQUMsR0FBMEMsS0FBQTtBQUM1RCxJQUFBLElBQUksQ0FBQyxHQUFLLEVBQUE7QUFDVixJQUFJLElBQUEsR0FBQSxDQUFJLFdBQVcsaUJBQW1CLEVBQUE7QUFDcEMsTUFBQSxNQUFNLE9BQVUsR0FBQSxhQUFBLENBQWMsR0FBSSxDQUFBLEdBQUEsQ0FBSSxTQUFTLENBQUE7QUFDL0MsTUFBQSxJQUFJLENBQUMsT0FBUyxFQUFBO0FBQ2QsTUFBYyxhQUFBLENBQUEsTUFBQSxDQUFPLElBQUksU0FBUyxDQUFBO0FBQ2xDLE1BQUEsT0FBQSxDQUFRLElBQUksTUFBTSxDQUFBO0FBQUEsS0FDcEIsTUFBQSxJQUFXLEdBQUksQ0FBQSxNQUFBLEtBQVcsY0FBZ0IsRUFBQTtBQUN4QyxNQUFBLE1BQU0sT0FBVSxHQUFBLFVBQUEsQ0FBVyxHQUFJLENBQUEsR0FBQSxDQUFJLFNBQVMsQ0FBQTtBQUM1QyxNQUFBLElBQUksQ0FBQyxPQUFTLEVBQUE7QUFDZCxNQUFXLFVBQUEsQ0FBQSxNQUFBLENBQU8sSUFBSSxTQUFTLENBQUE7QUFDL0IsTUFBQSxJQUFJLElBQUksS0FBTyxFQUFBO0FBQ2IsUUFBQSxNQUFNLEdBQU0sR0FBQSxJQUFJLEtBQU0sQ0FBQSxHQUFBLENBQUksTUFBTSxPQUFPLENBQUE7QUFDdkMsUUFBQSxJQUFJLElBQUksS0FBTSxDQUFBLElBQUEsRUFBVSxHQUFBLENBQUEsSUFBQSxHQUFPLElBQUksS0FBTSxDQUFBLElBQUE7QUFDekMsUUFBQSxJQUFJLElBQUksS0FBTSxDQUFBLEtBQUEsRUFBVyxHQUFBLENBQUEsS0FBQSxHQUFRLElBQUksS0FBTSxDQUFBLEtBQUE7QUFDM0MsUUFBQSxPQUFBLENBQVEsT0FBTyxHQUFHLENBQUE7QUFBQSxPQUNiLE1BQUE7QUFDTCxRQUFRLE9BQUEsQ0FBQSxPQUFBLENBQVEsSUFBSSxNQUFNLENBQUE7QUFBQTtBQUM1QjtBQUNGLEdBQ0QsQ0FBQTtBQUVELEVBQUEsTUFBTSxTQUFtQyxHQUFBO0FBQUEsSUFDdkMsTUFBTSxPQUFPLE9BQVMsRUFBQTtBQUNwQixNQUFPLE9BQUEsSUFBSSxPQUFRLENBQUEsQ0FBQyxPQUFZLEtBQUE7QUFDOUIsUUFBQSxNQUFNLFNBQVksR0FBQSxZQUFBLEVBQUE7QUFDbEIsUUFBYyxhQUFBLENBQUEsR0FBQSxDQUFJLFdBQVcsT0FBYyxDQUFBO0FBQzNDLFFBQUEsTUFBTSxHQUF5QixHQUFBO0FBQUEsVUFDN0IsTUFBUSxFQUFBLGdCQUFBO0FBQUEsVUFDUixTQUFBO0FBQUEsVUFDQTtBQUFBLFNBQ0Y7QUFDQSxRQUFBLElBQUEsQ0FBSyxZQUFZLEdBQUcsQ0FBQTtBQUFBLE9BQ3JCLENBQUE7QUFBQTtBQUNILEdBQ0Y7QUFFQSxFQUFNLE1BQUEsR0FBQSxHQUFrQixPQUN0QixNQUFBLEVBQ0EsSUFDZSxLQUFBO0FBQ2YsSUFBQSxPQUFPLElBQUksT0FBQSxDQUFXLENBQUMsT0FBQSxFQUFTLE1BQVcsS0FBQTtBQUN6QyxNQUFBLE1BQU0sU0FBWSxHQUFBLFNBQUEsRUFBQTtBQUNsQixNQUFBLFVBQUEsQ0FBVyxJQUFJLFNBQVcsRUFBQTtBQUFBLFFBQ3hCLE9BQUE7QUFBQSxRQUNBO0FBQUEsT0FDRCxDQUFBO0FBQ0QsTUFBQSxNQUFNLEdBQWtCLEdBQUE7QUFBQSxRQUN0QixNQUFRLEVBQUEsYUFBQTtBQUFBLFFBQ1IsU0FBQTtBQUFBLFFBQ0EsTUFBQTtBQUFBLFFBQ0E7QUFBQSxPQUNGO0FBQ0EsTUFBQSxJQUFBLENBQUssWUFBWSxHQUFHLENBQUE7QUFBQSxLQUNyQixDQUFBO0FBQUEsR0FDSDtBQUVBLEVBQU8sT0FBQSxFQUFFLFdBQVcsR0FBSSxFQUFBO0FBQzFCOzs7OyJ9