{"dist":{"shasum":"2e955ec2463961c5b21f60be08636acb08d74af7","tarball":"https://registry.npmjs.org/solid-ssr/-/solid-ssr-0.18.0-beta.0.tgz","fileCount":5,"integrity":"sha512-Yvf8sbJRylPXzSzdqYeiQoEoE33lyJOWxzgJhVdoxTfgtBxCW7OcWPyOof4cRYD8MF3+YsS08UCZOzjuTq+ZNg==","signatures":[{"sig":"MEYCIQDmYpgyyAnBwCuNbtl6unfOnTl8M6oxp0VNaqNONv70LwIhAONCqiEijwawozGNeZcXekjykmBbN24y2/c0TBh+jVrB","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5171,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJep708CRA9TVsSAnZWagAATRMP/AxzIxuSKmTZ4YU775d4\ndKC40SLW6GLBlaamoQrSXYdPjqL0NH9Dd7gF9Cq6enqlrPLgy6wWN5ZsZ6WW\nCNbQUHL+o+XhGoJ2cMxesQ9gy/7+jMARq57CQrpLo73dWGKKZca9E5G6GPsK\nwLL9GjUlWBBe3bdvzUM/tnFXISoLUN9XcmK7HJOfsJIgFgCrwgS1gGx5rQkr\nrbdG16djavFvfF39bch0r9UEGFPafVKurnoqKdKoZgYZzfl8IhMvyqVRwi6B\nXo2k74QybuOCvgJ+wgB34tPcMJnfMVj/g5Hj3237+qIFipYUheroFFREP7Yi\nRB8XHczTNWmZxNr5I1vaO0CBsCg41Q8OPSWyGo/1Zgq0hNiLwTI2UsPJj1tM\nGglCOZvUgFOYfdCcdqKee8Y5fgf+DTZNpuq0EgqEiiTFAbQPCwNtOpfw94JZ\nDHmIXiYrPHmG7o45U/AImqBNxllkfyjoQcNrAbiXrZG66MpNkwNl/CIQaRQy\n2uRZB8CVjBFnSOgZrVvk+SUXb94zmrATd7K+zuQw+tAnrD6mNUQs9unoEMag\nT34tSMjcpgZbnm6IdfLMJ7szJ/YJ7Vdkeavcb2W45FQ97/v0nO8hNSIIAMEy\nw9inaXh04hpCPeVhk/mhym7wmB5Q4PI9vyn65u6U0PXwIsT8lSbgOMW1Xe6w\njk1/\r\n=bf6R\r\n-----END PGP SIGNATURE-----\r\n"},"name":"solid-ssr","author":{"name":"Ryan Carniato"},"readme":"# `solid-ssr`\n\nThis library provides tools to help with SSR. So far it's a simple Static Generator.\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\", \"hydratable\": true }]]\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\n3. Use `renderToString` in server entry for SSR:\n\n```jsx\nimport { renderToString } from \"solid-js/dom\";\n\nexport default async (req) => {\n  // pull url off request to handle routing\n  const html = await renderToString(() => <App url={req.url} />);\n  return `<html><body>${html}</body></html>`;\n});\n```\n\n4. Set up express application:\n```js\nconst render = require(\"./lib/server\"); // your server entry\n\n// under request handler\napp.get(\"*\", (req, res) => {\n  const html = await render(req);\n  res.send(html);\n})\n```\n\n### To rehydrate on the client:\n\n1. Configure babel-preset-solid with generate option 'hydrate'\n\n```json\n\"presets\": [[\"solid\", { \"generate\": \"dom\", \"hydratable\": true }]]\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:\nPoint to server entry and call pages.\n\n```js\nconst path = require(\"path\")\nconst ssg = require(\"solid-ssr/static\");\n\nssg(path.resolve(__dirname, \"dist\"), {\n  source: require(\"lib/server.js\"),\n  pages: [\"index\", \"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":"7f5682c1fbf43401f97eecde224de5933d992d59","license":"MIT","scripts":{"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","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"express":"^4.17.1","solid-js":"^0.18.0-beta.0","babel-preset-solid":"^0.18.0-beta.0"},"peerDependencies":{"solid-js":"*"},"_npmOperationalInternal":{"tmp":"tmp/solid-ssr_0.18.0-beta.0_1588051259177_0.9090091250737882","host":"s3://npm-registry-packages"},"_id":"solid-ssr@0.18.0-beta.0","version":"0.18.0-beta.0"}