@harlem/plugin-ssr
Version:
The official server-side rendering plugin for Harlem
2 lines (1 loc) • 1.35 kB
JavaScript
;var S=Object.defineProperty;var E=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var I=(r,t)=>{for(var n in t)S(r,n,{get:t[n],enumerable:!0})},v=(r,t,n,e)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of R(t))!d.call(r,i)&&i!==n&&S(r,i,{get:()=>t[i],enumerable:!(e=E(t,i))||e.enumerable});return r};var x=r=>v(S({},"__esModule",{value:!0}),r);var h={};I(h,{createClientSSRPlugin:()=>N,createServerSSRPlugin:()=>w,getBridgingScript:()=>u,getBridgingScriptBlock:()=>P});module.exports=x(h);var l="plugin:ssr",a=r=>JSON.stringify(r),p={init:"plugin:ssr:init"};var s=require("@harlem/core"),c=require("@harlem/utilities"),f={};function m(r,t,n){if(!t)return;let e=r.get(t.store);e&&n(e)}function u(r=a){return`window.__harlemState = ${r(f)};`}function P(r=a){return`<script>${u(r)}</script>`}function w(){return(r,t,n)=>{n.forEach(e=>e.flags.set("ssr:server",!0)),t.on(s.EVENTS.ssr.initServer,e=>m(n,e,i=>{f[i.name]=i.state}))}}function N(){return(r,t,n)=>{let e=window.__harlemState;n.forEach(i=>i.flags.set("ssr:client",!0)),t.on(s.EVENTS.ssr.initClient,i=>m(n,i,o=>{o.name in e&&(o.write(p.init,l,g=>(0,c.objectOverwrite)(g,e[o.name])),delete e[o.name])}))}}0&&(module.exports={createClientSSRPlugin,createServerSSRPlugin,getBridgingScript,getBridgingScriptBlock});