UNPKG

vite-plugin-react-server

Version:
162 lines (159 loc) 17.4 kB
/** * vite-plugin-react-server * Copyright (c) Nico Brinkkemper * MIT License */ import { toError } from '../error/toError.js'; const resolveProps = async ({ id, url, exportName, loader }) => { const propsLoadResult = await (async () => { try { const result = await loader(`${id}#${exportName}`); return { type: "success", key: id, module: result }; } catch (error) { return { type: "error", error: toError(error) }; } })(); if (propsLoadResult.type !== "success") { return { key: id, ...propsLoadResult }; } const { module } = propsLoadResult; const props = module[exportName]; if (module instanceof Error) { return { key: id, type: "error", error: module }; } else if (!(exportName in module)) { return { key: id, type: "success", module: { [exportName]: { url, ...module } } }; } else if (!props) { return { key: id, type: "success", module: { [exportName]: { url } } }; } else if (props instanceof Error) { return { key: id, type: "error", error: props }; } else if (typeof props === "function") { try { let propsResult; if (props.prototype && props.prototype.constructor) { propsResult = new props(url); } else { propsResult = props(url); } if (propsResult instanceof Promise) { propsResult = await propsResult; } if (typeof propsResult === "function") { return resolveProps({ id, url, exportName, loader: async () => ({ [exportName]: propsResult }) }); } else if (Array.isArray(propsResult)) { return { type: "success", key: id, module: { [exportName]: Object.fromEntries( propsResult.map( (prop) => typeof prop === "string" ? [prop, prop] : prop ) ) } }; } return { type: "success", key: id, module: { [exportName]: propsResult } }; } catch (error) { return { type: "error", key: id, error: toError(error) }; } } else if (props instanceof Promise) { try { return { type: "success", key: id, module: { [exportName]: await props } }; } catch (error) { return { type: "error", key: id, error: toError(error) }; } } else if (Array.isArray(props)) { try { return { type: "success", key: id, module: { [exportName]: Object.fromEntries( props.map( (prop) => typeof prop === "string" ? [prop, prop] : prop ) ) } }; } catch (error) { return { type: "error", key: id, error: toError(error) }; } } else if (typeof props === "string") { try { return { type: "success", key: id, module: { [exportName]: JSON.parse(props) } }; } catch (error) { return { type: "error", key: id, error: toError(error) }; } } return { type: "success", key: id, module: { [exportName]: props } }; }; export { resolveProps }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZVByb3BzLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9wbHVnaW4vaGVscGVycy9yZXNvbHZlUHJvcHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdG9FcnJvciB9IGZyb20gXCIuLi9lcnJvci90b0Vycm9yLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEdlbmVyaWNNb2R1bGVMb2FkZXIsIFBhZ2VQcm9wT3B0LCBQcm9wc05hbWUgfSBmcm9tIFwiLi4vdHlwZXMuanNcIjtcblxudHlwZSBSZXNvbHZlUHJvcHNPcHRpb25zID0ge1xuICBpZDogc3RyaW5nO1xuICB1cmw6IHN0cmluZztcbiAgZXhwb3J0TmFtZTogc3RyaW5nO1xuICBsb2FkZXI6IEdlbmVyaWNNb2R1bGVMb2FkZXI7XG59O1xuXG50eXBlIFZhbGlkUHJvcFR5cGVzPFQ+ID1cbiAgfCBUXG4gIHwgUHJvbWlzZTxUPlxuICB8IEFycmF5PFRba2V5b2YgVF0+XG4gIHwgQXJyYXk8W3N0cmluZywgVFtrZXlvZiBUXV0+XG4gIHwgKCh1cmw6IHN0cmluZykgPT4gVmFsaWRQcm9wVHlwZXM8VD4pO1xuXG4vLyBwcm90b3R5cGUgY2xhc3Nlc1xuXG50eXBlIFJlc29sdmVQcm9wc1Jlc3VsdDxUIGV4dGVuZHMgUGFnZVByb3BPcHQsIE4gZXh0ZW5kcyBzdHJpbmc+ID1cbiAgfCB7XG4gICAgICB0eXBlOiBcInN1Y2Nlc3NcIjtcbiAgICAgIGtleTogc3RyaW5nO1xuICAgICAgbW9kdWxlPzoge1xuICAgICAgICBba2V5IGluIE5dOlxuICAgICAgICAgIHwgVmFsaWRQcm9wVHlwZXM8VD5cbiAgICAgICAgICB8ICgodXJsOiBzdHJpbmcpID0+IFZhbGlkUHJvcFR5cGVzPFQ+KVxuICAgICAgICAgIHwgKG5ldyAodXJsOiBzdHJpbmcpID0+IFQpO1xuICAgICAgfTtcbiAgICB9XG4gIHwgeyB0eXBlOiBcImVycm9yXCI7IGtleTogc3RyaW5nOyBlcnJvcjogRXJyb3I7IG1vZHVsZT86IG5ldmVyIH1cbiAgfCB7IHR5cGU6IFwic2tpcFwiOyBrZXk6IHN0cmluZzsgbW9kdWxlPzogbmV2ZXI7IGVycm9yPzogbmV2ZXIgfTtcblxuLyoqXG4gKiBSZXNvbHZlcyBwcm9wcyBmcm9tIGEgbW9kdWxlLCBoYW5kbGluZyBib3RoIHJlYWwgYW5kIHZpcnR1YWwgbW9kdWxlcy5cbiAqXG4gKiBEdXJpbmcgZGV2ZWxvcG1lbnQgKHNzckxvYWRNb2R1bGUpOlxuICogLSBSZWFsIG1vZHVsZXMgaGF2ZSBleHBvcnRzIGF2YWlsYWJsZSBkaXJlY3RseSBvbiB0aGUgbW9kdWxlIG9iamVjdFxuICogLSBWaXJ0dWFsIG1vZHVsZXMgaGF2ZSBleHBvcnRzIHN0b3JlZCBpbiB0ZW1wb3JhcnlSZWZlcmVuY2VzXG4gKlxuICogRHVyaW5nIGJ1aWxkIChjcmVhdGVCdWlsZExvYWRlcik6XG4gKiAtIFRyYW5zZm9ybWVkIG1vZHVsZXMgKHdpdGggYXN0L2NvZGUpIGhhdmUgZXhwb3J0cyBhcyBkaXJlY3QgcHJvcGVydGllc1xuICogLSBUaGUgZXhwb3J0cyBhcnJheSBjb250YWlucyBqdXN0IHRoZSBuYW1lcyBvZiB0aG9zZSBleHBvcnRzXG4gKiAtIFdlIHN0b3JlIHRoZSBtb2R1bGUgaW4gdGVtcG9yYXJ5UmVmZXJlbmNlcyBmb3IgbGF0ZXIgdXNlXG4gKiAtIFdlIGFjY2VzcyBleHBvcnRzIGRpcmVjdGx5IGZyb20gdGhlIG1vZHVsZSBvYmplY3RcbiAqXG4gKiBQcm9wcyBjYW4gYmU6XG4gKiAxLiBBIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSBVUkwgYW5kIHJldHVybnMgcHJvcHNcbiAqIDIuIEEgZGlyZWN0IG9iamVjdCBvZiBwcm9wc1xuICogMy4gQSByZW5hbWVkIGV4cG9ydCAod2hlcmUgdGhlIGFjdHVhbCBleHBvcnQgbmFtZSBkaWZmZXJzIGZyb20gdGhlIGV4cGVjdGVkIG5hbWUpXG4gKlxuICogQHBhcmFtIG9wdGlvbnMucHJvcHNNb2R1bGUgLSBUaGUgbW9kdWxlIG9iamVjdCBmcm9tIHNzckxvYWRNb2R1bGUgb3IgY3JlYXRlQnVpbGRMb2FkZXJcbiAqIEBwYXJhbSBvcHRpb25zLnBhdGggLSBUaGUgbm9ybWFsaXplZCBwYXRoIHRvIHRoZSBtb2R1bGVcbiAqIEBwYXJhbSBvcHRpb25zLnVybCAtIFRoZSBVUkwgcm91dGUgdGhpcyBwYWdlIGhhbmRsZXNcbiAqIEBwYXJhbSBvcHRpb25zLmV4cG9ydE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZXhwb3J0IHRvIHJlc29sdmUgKGUuZy4gJ3Byb3BzJylcbiAqIEBwYXJhbSBvcHRpb25zLnRlbXBvcmFyeVJlZmVyZW5jZXMgLSBXZWFrTWFwIHVzZWQgdG8gc3RvcmUgYW5kIHJldHJpZXZlIHZpcnR1YWwgbW9kdWxlIHJlZmVyZW5jZXNcbiAqXG4gKiBAcmV0dXJucyBBIHJlc3VsdCBvYmplY3QgY29udGFpbmluZzpcbiAqICAgLSB0eXBlOiBcInN1Y2Nlc3NcIiB8IFwiZXJyb3JcIiB8IFwic2tpcFwiXG4gKiAgIC0ga2V5OiBUaGUgZXhwb3J0IG5hbWUgaWYgc3VjY2Vzc2Z1bFxuICogICAtIHByb3BzOiBUaGUgcmVzb2x2ZWQgcHJvcHMgaWYgc3VjY2Vzc2Z1bFxuICogICAtIGVycm9yOiBFcnJvciBtZXNzYWdlIGlmIGZhaWxlZFxuICovXG5leHBvcnQgY29uc3QgcmVzb2x2ZVByb3BzID0gYXN5bmMgPFxuICBUIGV4dGVuZHMgUGFnZVByb3BPcHQgPSBQYWdlUHJvcE9wdCxcbiAgTiBleHRlbmRzIHN0cmluZyA9IFByb3BzTmFtZVxuPih7XG4gIGlkLFxuICB1cmwsXG4gIGV4cG9ydE5hbWUsXG4gIGxvYWRlcixcbn06IFJlc29sdmVQcm9wc09wdGlvbnMpOiBQcm9taXNlPFJlc29sdmVQcm9wc1Jlc3VsdDxULCBOPj4gPT4ge1xuICAvLyBDaGVjayBpZiB0aGlzIGlzIGEgc3Rhc2hlZCBwYWdlIHRoYXQgbmVlZHMgc3BlY2lhbCBoYW5kbGluZ1xuICBjb25zdCBwcm9wc0xvYWRSZXN1bHQgPSBhd2FpdCAoYXN5bmMgKCk6IFByb21pc2U8XG4gICAgfCB7XG4gICAgICAgIHR5cGU6IFwic3VjY2Vzc1wiO1xuICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgbW9kdWxlOiB7IFtrZXkgaW4gTl06IFZhbGlkUHJvcFR5cGVzPFQ+IH07XG4gICAgICB9XG4gICAgfCB7IHR5cGU6IFwiZXJyb3JcIjsgZXJyb3I6IEVycm9yOyBtb2R1bGU/OiBuZXZlciB9XG4gID4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBsb2FkZXIoYCR7aWR9IyR7ZXhwb3J0TmFtZX1gKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IFwic3VjY2Vzc1wiLFxuICAgICAgICBrZXk6IGlkLFxuICAgICAgICBtb2R1bGU6IHJlc3VsdCBhcyB7IFtrZXkgaW4gTl06IFQgfSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IFwiZXJyb3JcIixcbiAgICAgICAgZXJyb3I6IHRvRXJyb3IoZXJyb3IpLFxuICAgICAgfTtcbiAgICB9XG4gIH0pKCk7XG5cbiAgaWYgKHByb3BzTG9hZFJlc3VsdC50eXBlICE9PSBcInN1Y2Nlc3NcIikge1xuICAgIHJldHVybiB7XG4gICAgICBrZXk6IGlkLFxuICAgICAgLi4ucHJvcHNMb2FkUmVzdWx0LFxuICAgIH07XG4gIH1cbiAgY29uc3QgeyBtb2R1bGUgfSA9IHByb3BzTG9hZFJlc3VsdDtcbiAgY29uc3QgcHJvcHMgPSBtb2R1bGVbZXhwb3J0TmFtZSBhcyBOXTtcbiAgLy8gaGFuZGxlIGRpZmZlcmVudCBwcm9wcyB1c2UtY2FzZXNcbiAgaWYgKG1vZHVsZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtleTogaWQsXG4gICAgICB0eXBlOiBcImVycm9yXCIsXG4gICAgICBlcnJvcjogbW9kdWxlLFxuICAgIH07XG4gIH0gZWxzZSBpZiAoIShleHBvcnROYW1lIGluIG1vZHVsZSkpIHtcbiAgICByZXR1cm4ge1xuICAgICAga2V5OiBpZCxcbiAgICAgIHR5cGU6IFwic3VjY2Vzc1wiLFxuICAgICAgbW9kdWxlOiB7IFtleHBvcnROYW1lXTogeyB1cmwsIC4uLm1vZHVsZSB9IH0gYXMgbmV2ZXIsXG4gICAgfTtcbiAgfSBlbHNlIGlmICghcHJvcHMpIHtcbiAgICByZXR1cm4ge1xuICAgICAga2V5OiBpZCxcbiAgICAgIHR5cGU6IFwic3VjY2Vzc1wiLFxuICAgICAgbW9kdWxlOiB7IFtleHBvcnROYW1lXTogeyB1cmwgfSB9IGFzIG5ldmVyLFxuICAgIH07XG4gIH0gZWxzZSBpZiAocHJvcHMgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgIHJldHVybiB7XG4gICAgICBrZXk6IGlkLFxuICAgICAgdHlwZTogXCJlcnJvclwiLFxuICAgICAgZXJyb3I6IHByb3BzLFxuICAgIH07XG4gIH0gZWxzZSBpZiAodHlwZW9mIHByb3BzID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAvLyBIYW5kbGUgYm90aCBjbGFzcyBjb25zdHJ1Y3RvcnMgYW5kIHJlZ3VsYXIgZnVuY3Rpb25zXG4gICAgdHJ5IHtcbiAgICAgIGxldCBwcm9wc1Jlc3VsdDtcbiAgICAgIGlmIChwcm9wcy5wcm90b3R5cGUgJiYgcHJvcHMucHJvdG90eXBlLmNvbnN0cnVjdG9yKSB7XG4gICAgICAgIC8vIENsYXNzIGNvbnN0cnVjdG9yIGNhc2VcbiAgICAgICAgcHJvcHNSZXN1bHQgPSBuZXcgKHByb3BzIGFzIHVua25vd24gYXMgbmV3ICh1cmw6IHN0cmluZykgPT4gVCkodXJsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFJlZ3VsYXIgZnVuY3Rpb24gY2FzZVxuICAgICAgICBwcm9wc1Jlc3VsdCA9IHByb3BzKHVybCk7XG4gICAgICB9XG5cbiAgICAgIC8vIEhhbmRsZSByZWN1cnNpdmUgcHJvcHMgdmFsaWRhdGlvblxuICAgICAgaWYgKHByb3BzUmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICBwcm9wc1Jlc3VsdCA9IGF3YWl0IHByb3BzUmVzdWx0O1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBwcm9wc1Jlc3VsdCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGhhbmRsZSBuZXN0ZWQgZnVuY3Rpb25zXG4gICAgICAgIHJldHVybiByZXNvbHZlUHJvcHM8VCwgTj4oe1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIHVybCxcbiAgICAgICAgICBleHBvcnROYW1lLFxuICAgICAgICAgIGxvYWRlcjogYXN5bmMgKCkgPT5cbiAgICAgICAgICAgICh7IFtleHBvcnROYW1lXTogcHJvcHNSZXN1bHQgfSBhcyB7XG4gICAgICAgICAgICAgIFtrZXkgaW4gTl06IFZhbGlkUHJvcFR5cGVzPFQ+O1xuICAgICAgICAgICAgfSksXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHByb3BzUmVzdWx0KSkge1xuICAgICAgICAvLyBIYW5kbGUgYXJyYXkgY2FzZVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IFwic3VjY2Vzc1wiLFxuICAgICAgICAgIGtleTogaWQsXG4gICAgICAgICAgbW9kdWxlOiB7XG4gICAgICAgICAgICBbZXhwb3J0TmFtZV06IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgICAgICAgICAgKHByb3BzUmVzdWx0IGFzIEFycmF5PFtzdHJpbmcsIFRba2V5b2YgVF1dPikubWFwKChwcm9wKSA9PlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wID09PSBcInN0cmluZ1wiID8gW3Byb3AsIHByb3BdIDogcHJvcFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApIGFzIFQsXG4gICAgICAgICAgfSBhcyBuZXZlcixcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogXCJzdWNjZXNzXCIsXG4gICAgICAgIGtleTogaWQsXG4gICAgICAgIG1vZHVsZTogeyBbZXhwb3J0TmFtZV06IHByb3BzUmVzdWx0IH0gYXMgbmV2ZXIsXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcImVycm9yXCIsXG4gICAgICAgIGtleTogaWQsXG4gICAgICAgIGVycm9yOiB0b0Vycm9yKGVycm9yKSxcbiAgICAgIH07XG4gICAgfVxuICB9IGVsc2UgaWYgKHByb3BzIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgIC8vIG9iamVjdCBjYXNlXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IFwic3VjY2Vzc1wiLFxuICAgICAgICBrZXk6IGlkLFxuICAgICAgICBtb2R1bGU6IHsgW2V4cG9ydE5hbWVdOiBhd2FpdCBwcm9wcyB9IGFzIG5ldmVyLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogXCJlcnJvclwiLFxuICAgICAgICBrZXk6IGlkLFxuICAgICAgICBlcnJvcjogdG9FcnJvcihlcnJvciksXG4gICAgICB9O1xuICAgIH1cbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHByb3BzKSkge1xuICAgIC8vIGFycmF5IGNhc2VcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogXCJzdWNjZXNzXCIsXG4gICAgICAgIGtleTogaWQsXG4gICAgICAgIG1vZHVsZToge1xuICAgICAgICAgIFtleHBvcnROYW1lXTogT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICAgICAgKHByb3BzIGFzIEFycmF5PFtzdHJpbmcsIFRba2V5b2YgVF1dPikubWFwKChwcm9wKSA9PlxuICAgICAgICAgICAgICB0eXBlb2YgcHJvcCA9PT0gXCJzdHJpbmdcIiA/IFtwcm9wLCBwcm9wXSA6IHByb3BcbiAgICAgICAgICAgIClcbiAgICAgICAgICApIGFzIFQsXG4gICAgICAgIH0gYXMgbmV2ZXIsXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcImVycm9yXCIsXG4gICAgICAgIGtleTogaWQsXG4gICAgICAgIGVycm9yOiB0b0Vycm9yKGVycm9yKSxcbiAgICAgIH07XG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGVvZiBwcm9wcyA9PT0gXCJzdHJpbmdcIikge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcInN1Y2Nlc3NcIixcbiAgICAgICAga2V5OiBpZCxcbiAgICAgICAgbW9kdWxlOiB7IFtleHBvcnROYW1lXTogSlNPTi5wYXJzZShwcm9wcykgfSBhcyBuZXZlcixcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IFwiZXJyb3JcIixcbiAgICAgICAga2V5OiBpZCxcbiAgICAgICAgZXJyb3I6IHRvRXJyb3IoZXJyb3IpLFxuICAgICAgfTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcInN1Y2Nlc3NcIixcbiAgICBrZXk6IGlkLFxuICAgIG1vZHVsZTogeyBbZXhwb3J0TmFtZV06IHByb3BzIH0gYXMgbmV2ZXIsXG4gIH07XG59O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUErRE8sTUFBTSxlQUFlLE9BRzFCO0FBQUEsRUFDQSxFQUFBO0FBQUEsRUFDQSxHQUFBO0FBQUEsRUFDQSxVQUFBO0FBQUEsRUFDQTtBQUNGLENBQThELEtBQUE7QUFFNUQsRUFBTSxNQUFBLGVBQUEsR0FBa0IsT0FBTyxZQU8xQjtBQUNILElBQUksSUFBQTtBQUNGLE1BQUEsTUFBTSxTQUFTLE1BQU0sTUFBQSxDQUFPLEdBQUcsRUFBRSxDQUFBLENBQUEsRUFBSSxVQUFVLENBQUUsQ0FBQSxDQUFBO0FBQ2pELE1BQU8sT0FBQTtBQUFBLFFBQ0wsSUFBTSxFQUFBLFNBQUE7QUFBQSxRQUNOLEdBQUssRUFBQSxFQUFBO0FBQUEsUUFD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