UNPKG

@harlem/plugin-ssr

Version:

The official server-side rendering plugin for Harlem

2 lines (1 loc) 782 B
var a="plugin:ssr",S=t=>JSON.stringify(t),s={init:"plugin:ssr:init"};import{EVENTS as l}from"@harlem/core";import{objectOverwrite as m}from"@harlem/utilities";var p={};function c(t,n,e){if(!n)return;let r=t.get(n.store);r&&e(r)}function u(t=S){return`window.__harlemState = ${t(p)};`}function w(t=S){return`<script>${u(t)}</script>`}function N(){return(t,n,e)=>{e.forEach(r=>r.flags.set("ssr:server",!0)),n.on(l.ssr.initServer,r=>c(e,r,i=>{p[i.name]=i.state}))}}function h(){return(t,n,e)=>{let r=window.__harlemState;e.forEach(i=>i.flags.set("ssr:client",!0)),n.on(l.ssr.initClient,i=>c(e,i,o=>{o.name in r&&(o.write(s.init,a,f=>m(f,r[o.name])),delete r[o.name])}))}}export{h as createClientSSRPlugin,N as createServerSSRPlugin,u as getBridgingScript,w as getBridgingScriptBlock};