{"dist":{"shasum":"b2273c21a0888ede05871b14e4d388d2ab44543e","tarball":"https://registry.npmjs.org/solid-ssr/-/solid-ssr-0.17.0-beta.3.tgz","fileCount":10,"integrity":"sha512-TZvvhf0e3rgKK6XKqDL4R9sypxqdEkYMNepFHINJObaQwixM4y5Kw788E02fAB4LWu7V786yUnBHy3gU9y1TRQ==","signatures":[{"sig":"MEUCIAdJdoCZrwYj4g9xJJVAsFVEP67umFZOp8xRwx2AralOAiEAwwEupVb1b75J27FHMos+BUfjsWy2kWhVAclWLK2S9nc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9320,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeeYH8CRA9TVsSAnZWagAAMqYP/1frCaRsiF7J9Ceccjyx\nEc9T5IF1dASdExfBSP+aTVuageHfmzoCmjIqftO615tXivSDet1I7wuI8alH\nBJV67rnT+QjVWDe0CAMq6CBzw2sjjygMBDLFBVGtAO2uIx6xW1ciTsRr2cFc\n/Yfw5JxlrguC5hCugqO/tK/XKrBgx0HMwflSoeE1Sy+88nC8fwI603jbTVTa\n75Vv/Gpgub0TQDFQtFsHzAMGpcL1aOXWyhjzecdvtPkErtMpxJ/j4/0xTUpO\ncUOPXhSbqRsgLhvTKnRHId338ip1H3raa59xzi2V66qcOlHMfhgIKaLhfh0n\nnwohLj2PveHq0eCmc2MIcwNrs6yoF0po5AnXjzNfo4QKbwW6P/khP4DloGW6\n9t31ghTf9gDcHiTs9cqGjYgcnFTdngNAdSUaZW1HorY6cDdtQTELU/ABUspQ\nBRzDpjg8IOSVRMWqrZZbjXSJ9sd3OobZrdDaIqAB+EodW2c/zSF6rPf5mb71\nujTdKo8stQufr6xBq6A/T1aQ4kwFNzRibavFdvUQjRDuwJpIyTTabfrXMe3G\na9KDcrGGVK9Gd7wqRcB0FeOzmGNXamDt/93vcxGjUjfZNBG8BDAcGhX78n2T\nCneF6x1KpTiBOamC9g4nmeMdUN/34ykuM11wHmW1fdCwAxw0uegb0eos9EqW\nQzJ4\r\n=91hg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","name":"solid-ssr","types":"index.d.ts","author":{"name":"Ryan Carniato"},"readme":"# `solid-ssr`\n\nThis library sets up node compatible middleware to handle Solid's SSR. It uses JSDOM and isolated processes to handle environment injection. See instructions below. Also provides `solid-ssr/jest` which is a Jest environment to render Solid when testing (probably unnecessary at this point).\n\nThis project is still in progress. Server rendering is Async and supports Suspense including lazy components. However, client side hydration only supports lazy components. Any Suspense triggering due to data fetching during rehydration will cause loading states to be entered again. Similarly while Web Components are support, the Shadow DOM isn't yet.\n\n### To use SSR on the server:\n\n1. Install `solid-js`, `solid-preset-solid`, and `solid-ssr`.\n\n2. Configure babel-preset-solid with generate option 'ssr'\n\n```json\n\"presets\": [[\"solid\", { \"generate\": \"ssr\" }]]\n```\n\n3. Set up server application:\n```js\nconst createServer = require(\"solid-ssr/server\");\nconst server = createServer({ path: /* path to client entry*/ })\n\n// under request handler\napp.get(\"*\", (req, res) => {\n  const html = await server.render(req);\n  res.send(html);\n})\n```\n\n4. Use `renderToString` in client entry for SSR:\n\n```jsx\n// top of entry file, must be imported before any components\nimport ssr from \"solid-ssr\"\nimport { renderToString } from \"solid-js/dom\";\n\nssr(async (req) => {\n  // pull url off request to handle routing\n  const { url } = req;\n  const string = await renderToString(() => <App />);\n  return render(string);\n});\n```\n> Remember to mark all of \"solid-js\", \"solid-js/dom\", \"solid-ssr\" as externals as no need to bundle these for server rendering entry.\n\n### To rehydrate on the client:\n\n1. Configure babel-preset-solid with generate option 'hydrate'\n\n```json\n\"presets\": [[\"solid\", { \"generate\": \"hydrate\" }]]\n```\n\n2. Use `hydrate` entry:\n\n```jsx\nimport { hydrate } from \"solid-js/dom\";\n\nhydrate(() => <App />, document.getElementById(\"main\"));\n```\n\n### Static site generation:\n1. Use `renderToString` in client entry for SSR:\n\n```jsx\n// top of entry file, must be imported before any components\nimport ssr from \"solid-ssr\"\nimport { renderToString } from \"solid-js/dom\";\n\nssr(async (req) => {\n  // pull url off request to handle routing\n  const { url } = req;\n  const string = await renderToString(() => <App />);\n  return render(string);\n});\n```\n\n2. Point to file from static export file\n\n```js\nconst path = require(\"path\")\nconst ssg = require(\"solid-ssr/static\");\n\nssg(path.resolve(__dirname, \"dist\"), {\n  source: path.resolve(__dirname, \"lib/server.js\"),\n  pages: [\"/\", \"/profile\", \"/settings\"]\n});\n```\n\n### Example\n\nSee example folder. Runs on http://localhost:8080/.\n```\nlerna run build:example --stream\nlerna run start:example --stream\n```\nYou can also see basic static site generation via:\n```\nlerna run export:example --stream\n```\n\nDemos Async server side rendering with routing using Lazy Components and Suspense. Notice how the browser skips any initial loading state as it is prerendered. `useTransition` smooths loading of other tabs when navigating suspending the current content for 250ms before showing any fallback. The example also includes progressive hydration although there are currently no input fields to show it off. It captures input events before hydration is complete and replays them as it hydrates when safe to, to minimize uncanny valley.","gitHead":"d93b9d9a359c10aae199743c9dc16b3a3cbf2d28","license":"MIT","scripts":{"start":"node server.js","build:example":"rollup -c example/rollup.config.js","start:example":"node example/index.js","export:example":"node example/export.js"},"_npmUser":{"name":"ryansolid","email":"ryansolid@gmail.com"},"repository":{"url":"https://github.com/ryansolid/solid/solid-ssr","type":"git"},"_npmVersion":"lerna/3.20.2/node@v12.11.1+x64 (linux)","description":"Patches node to work with Solid's SSR","directories":{},"maintainers":[{"name":"ryansolid","email":"ryansolid@gmail.com"}],"_nodeVersion":"12.11.1","dependencies":{"basichtml":"2.2.1","jest-environment-node":"^25.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"express":"^4.17.1","solid-js":"^0.17.0-beta.3","babel-preset-solid":"^0.17.0-beta.3"},"peerDependencies":{"solid-js":"*"},"_npmOperationalInternal":{"tmp":"tmp/solid-ssr_0.17.0-beta.3_1585021436045_0.8721050635561669","host":"s3://npm-registry-packages"},"_id":"solid-ssr@0.17.0-beta.3","version":"0.17.0-beta.3"}