{"_id":"@boostmyschool/isomorphic-relay","_rev":"3-c40618ae5646d9f655a7317dae147016","name":"@boostmyschool/isomorphic-relay","dist-tags":{"latest":"0.7.6"},"versions":{"0.7.4":{"name":"@boostmyschool/isomorphic-relay","version":"0.7.4","description":"Adds server side rendering support to React Relay","author":{"name":"Denis Nedelyaev"},"homepage":"https://github.com/denvned/isomorphic-relay","bugs":{"url":"https://github.com/denvned/isomorphic-relay/issues"},"license":"BSD-2-Clause","keywords":["isomorphic","isomorphic-react-relay","isomorphic-relay","react","react-relay","relay","server","server-rendering","server-side","server-side-rendering"],"main":"lib/index.js","repository":{"type":"git","url":"git+https://github.com/denvned/isomorphic-relay.git"},"scripts":{"build":"babel src --out-dir lib","prepublish":"npm run build"},"dependencies":{"babel-runtime":"^6.6.1"},"peerDependencies":{"react":"^0.14.8 || ^15.0.1","react-relay":"0.9.3 - 0.10.0"},"devDependencies":{"babel-cli":"^6.7.5","babel-plugin-transform-es2015-classes":"^6.6.5","babel-plugin-transform-runtime":"^6.7.5","babel-preset-es2015":"^6.6.0","babel-preset-react":"^6.5.0","babel-preset-stage-0":"^6.5.0","babel-relay-plugin":"0.9.3","react":"^15.0.1","react-relay":"0.9.3"},"gitHead":"3fecea0a6fadda44c4c2e01582cf554938fe75c3","_id":"@boostmyschool/isomorphic-relay@0.7.4","_npmVersion":"6.1.0","_nodeVersion":"10.4.0","_npmUser":{"name":"golmansax","email":"holman@golmansax.com"},"dist":{"integrity":"sha512-GlIltt5x0kQImbJ1iD720iradBvknhEbFF1EI8PTJTEJoSEbxEcy70v5m7KrJqApVCtz6LDFABAbZPB6sK84PA==","shasum":"211baf0b668a6bd1e4f1b7b9594e45fb148bd74a","tarball":"https://registry.npmjs.org/@boostmyschool/isomorphic-relay/-/isomorphic-relay-0.7.4.tgz","fileCount":10,"unpackedSize":85040,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbJZr5CRA9TVsSAnZWagAAmzcP/iJlB6xTe03oOHHj78Kz\niz7rxRBnSkG9+1HV4wgUc7QWSBbxFfN6AW1b70TksnY5LlEe4jqJ7LRy/ED2\nxT1MEv+49bQ71jz6bGpLXy/Hl9NVFmIfdObVFln51G22NvujJVJs0S4/Ox9z\n1lxwxqMoXQV4vS+YkT0PVX7lxMxhD6knC7DxPvBXx3gW6Grut3edXRqibctj\nx//XvOFAdi8xwA137WPfeDv72lPV8eQ+5w+FfICh7JyQGh7gBQgcdM9uwnOU\nF+WPogivBh2tsw4lOSnFzXoyXutttt6fwmRIccXBUayRbsUtTOJonYuazO7W\nDt5cVGVmcTrjWY1tlg8XVmB3tljQO2zYtLqCuJofdWNAx4CL8vRGcf7hUGUq\n6Zf5CdQTPR+UM5ntZRrxXry3B79yV9LTLGB0KhGCrUHLNs1qh28IMVyoQFCT\njiVrFWAFPSp3oV7s6ehvvpItutXZEBKrFAOjPV0o0ZHeLEp7pVRRO7iQJMD3\n+C+JZvXfvdkkoKMU7NiekpfsO1hAPoVajg9QRDD44ZAZHQt8xdhc1m9Z5cwO\nambCAY5Z+ie9UizoEdXXpA1nANHrCnncBD+vuNcbcvE8YPfOwCRZ27pglZCH\n628ppc9zbxhdeEkajbnCR8uE4LF9REGZPkUH7kL5QiSi/oEfDKefCwGNS+6i\nrVNU\r\n=3Vlr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDp+rruqKPs68VPVH8MFp8itIgkIEOXjYs84RDC4UZ5NgIhAMsiQfnM6AT1wYuQvRELF3t4LVeAYmnNzcmrcUmpWtvG"}]},"maintainers":[{"name":"golmansax","email":"holman@golmansax.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isomorphic-relay_0.7.4_1529191160905_0.11504195283554841"},"_hasShrinkwrap":false},"0.7.5":{"name":"@boostmyschool/isomorphic-relay","version":"0.7.5","description":"Adds server side rendering support to React Relay","author":{"name":"Denis Nedelyaev"},"homepage":"https://github.com/denvned/isomorphic-relay","bugs":{"url":"https://github.com/denvned/isomorphic-relay/issues"},"license":"BSD-2-Clause","keywords":["isomorphic","isomorphic-react-relay","isomorphic-relay","react","react-relay","relay","server","server-rendering","server-side","server-side-rendering"],"main":"lib/index.js","repository":{"type":"git","url":"git+https://github.com/denvned/isomorphic-relay.git"},"scripts":{"build":"babel src --out-dir lib","prepublish":"npm run build"},"dependencies":{"babel-runtime":"^6.6.1"},"peerDependencies":{"prop-types":"^15.6.1","react":"^0.14.8 || ^15.0.1","react-relay":"~1.0.0"},"devDependencies":{"babel-cli":"^6.7.5","babel-plugin-transform-es2015-classes":"^6.6.5","babel-plugin-transform-runtime":"^6.7.5","babel-preset-es2015":"^6.6.0","babel-preset-react":"^6.5.0","babel-preset-stage-0":"^6.5.0","babel-relay-plugin":"0.9.3","prop-types":"^15.6.1","react":"^15.0.1","react-relay":"~1.0.0"},"gitHead":"0ef48861363bca78d17585cb045910a7db580145","_id":"@boostmyschool/isomorphic-relay@0.7.5","_npmVersion":"6.1.0","_nodeVersion":"10.4.0","_npmUser":{"name":"golmansax","email":"holman@golmansax.com"},"dist":{"integrity":"sha512-6GfIe5pZQKVRDwF+I3G4ZZwMDh/GTcsV29sPu8D1oEgFR5Jr9WighHdP/uakIs7kan++z5kCsO6VFWvdW9/b+A==","shasum":"fa82da42247874353fde9025e74a38a23be3c560","tarball":"https://registry.npmjs.org/@boostmyschool/isomorphic-relay/-/isomorphic-relay-0.7.5.tgz","fileCount":10,"unpackedSize":85458,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbJZ7BCRA9TVsSAnZWagAAX/8P/ijJGT9mEQM2xgiNLSYn\neLcZO55szEqdFBkofXp//UZq+Ac0FaUQTQcG/Q7+cz6DSwsMrj7lZnR9orIj\ncYqFaG3vVZxG4kYw94Y7QNdtrtRJ5jG9drhV6YXmt2Tbbg5EKey3dGeCixi2\nF7oXdzHNhFjOoNcDgxG1XWD/My6jYHEkIzipwq79XDmiG4GWEkBcVvyFv22q\n0w4abf+uX/VXtZKgNcZDY0pI3cOdgpnxqeGoC0orOcaYiTgTwY/U6qAaNPxR\n8t0DftikEHM315Cg2Lgj/Y49r5e7cB0OYx/Yq9V9ywbK+n8FhTB4OeXDPLxx\nSuPT0Ol4cDy6bhzaETm+xPBwZFwolABJYhmoTW9EE0BEtvzYGJjMrvqaOIS5\nl53F5TYP/5+g0mcr3BJiP6twYhiKbe43rdIMOEaLuJPOBmsAt/X81D33POJy\n+4659+L9m9kdA0rgn6hLR0yekgaVU9suYf96vBwmWTYpuPMEBR5G7/ZL6GUn\nDk1Ny+ifgL/r3Xq0jZrh2C3wde6FXHwAAbjBeDXVF0tecumX4gnzgWGL5RFu\nbk7aTUuw3/b4oyhf2U+FAHf54xA05LiAZ+N7sc0HEaHZQoxC7DXpA3kany/f\n2MHjbvyAC8So9v6KGyPvN4/OzCr99xrZju/K8SsYzSkmHsRLzYNu2KBQxTAo\n3B+Y\r\n=RnHl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGctZqQMaDoupWfigsM8JI/x4/EpAP1BiBMaluO/Aa8zAiAS3xMWFOWakx+oFdVqjiZ12JfptmtivmWWHutQoWMfMg=="}]},"maintainers":[{"name":"golmansax","email":"holman@golmansax.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isomorphic-relay_0.7.5_1529192129508_0.8127163438718397"},"_hasShrinkwrap":false},"0.7.6":{"name":"@boostmyschool/isomorphic-relay","version":"0.7.6","description":"Adds server side rendering support to React Relay","author":{"name":"Denis Nedelyaev"},"homepage":"https://github.com/denvned/isomorphic-relay","bugs":{"url":"https://github.com/denvned/isomorphic-relay/issues"},"license":"BSD-2-Clause","keywords":["isomorphic","isomorphic-react-relay","isomorphic-relay","react","react-relay","relay","server","server-rendering","server-side","server-side-rendering"],"main":"lib/index.js","repository":{"type":"git","url":"git+https://github.com/denvned/isomorphic-relay.git"},"scripts":{"build":"babel src --out-dir lib","prepublish":"npm run build"},"dependencies":{"babel-runtime":"^6.6.1"},"peerDependencies":{"prop-types":">= 15.6.1","react":">= 15.0.0","react-relay":"~1.0.0"},"devDependencies":{"babel-cli":"^6.7.5","babel-plugin-transform-es2015-classes":"^6.6.5","babel-plugin-transform-runtime":"^6.7.5","babel-preset-es2015":"^6.6.0","babel-preset-react":"^6.5.0","babel-preset-stage-0":"^6.5.0","babel-relay-plugin":"0.9.3","prop-types":"^15.6.1","react":"^15.0.1","react-relay":"~1.0.0"},"gitHead":"ae9c20e94810d918ea9e371ea2c30d348d0b0119","_id":"@boostmyschool/isomorphic-relay@0.7.6","_npmVersion":"6.1.0","_nodeVersion":"10.4.0","_npmUser":{"name":"golmansax","email":"holman@golmansax.com"},"dist":{"integrity":"sha512-XMMTBPmdUYKodCRNLupZXZXdLv3c83hhZK6qxdvm0bZEI+EAOfefN2oExPrWdo/MyFQcThMq5zqytB4p+2ul9A==","shasum":"6c4c4c7177b859d77b02ab805c78303136c416a3","tarball":"https://registry.npmjs.org/@boostmyschool/isomorphic-relay/-/isomorphic-relay-0.7.6.tgz","fileCount":10,"unpackedSize":85451,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbJrceCRA9TVsSAnZWagAA7Q0P/2xkwdw46GNs78Tdbh84\nltwWoZCM9Wkjtw4W9L7faU84JdZKI+R5tGoFRIp4z8S1ass12UMUVGiKvZpc\nE98PlMlr1m8YZbVR/r2w205t9LdD/FwdGZXtmEn/U4U1K7sukhv8crIwIFqj\nGiQFOWTQerxpLX+rQBpcaU9VNB2EZWp/00LYYLEIvIXmR9/dSxK5ajdHRs3P\nE+yPLzWgKO7U6hENiCVczc70lBGj0skosAsh+5gm+EvXBEzbveCqjFsXOq5B\nhXBthP9QiJz5Fs4lTSD7gpdvabw5TtDS3NZu/ddXeUiacg32U9Vb+CWzZwcP\naD2I+sWGnoTOq6IOGpPE8Wi/Qe4g4rCfvurk5TkFgujLA/QLEY8lk5VzqBYT\nzBFokTKhBl129YWt0Z2U49POYwIl5+T9vO0ogBNdMxe8h494E8odBvQf7j1b\nziFj97Z2KY15UTvuI3axVOYxBUFdsTVR3OMF4KDHqaB7T4KRlDTTAD8354zI\ntNxzFzcWIuaaxNIamc+oLawiTjdpSA8yrpHU2UdgwmgYAvZ9wzsrn8APfo15\nCDzF80s8OmtUztLYY2LxJ/Y1dvBn4v88eo9lAD0sIHx8cKq47Fb6Nd61fbce\nOaoMIzDVDGedPWQ3Mq3DwNznM1LTMlmfa2VjKlzbhP2e8w4431cT68P0rMD4\nVPQi\r\n=87Vw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBCJdnKYKQLxpmcvV6uirwwLdy8B9b9elGhQH3uU+u76AiEAscm+bTP+hYa2Lxs8sfUwdV8ySNClyM88BNEU3jUVsrU="}]},"maintainers":[{"name":"golmansax","email":"holman@golmansax.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/isomorphic-relay_0.7.6_1529263902180_0.26644058303834894"},"_hasShrinkwrap":false}},"time":{"created":"2018-06-16T23:19:20.840Z","0.7.4":"2018-06-16T23:19:20.987Z","modified":"2022-04-04T20:11:29.638Z","0.7.5":"2018-06-16T23:35:29.586Z","0.7.6":"2018-06-17T19:31:42.272Z"},"maintainers":[{"name":"golmansax","email":"holman@golmansax.com"}],"description":"Adds server side rendering support to React Relay","homepage":"https://github.com/denvned/isomorphic-relay","keywords":["isomorphic","isomorphic-react-relay","isomorphic-relay","react","react-relay","relay","server","server-rendering","server-side","server-side-rendering"],"repository":{"type":"git","url":"git+https://github.com/denvned/isomorphic-relay.git"},"author":{"name":"Denis Nedelyaev"},"bugs":{"url":"https://github.com/denvned/isomorphic-relay/issues"},"license":"BSD-2-Clause","readme":"Isomorphic React Relay [![npm version][npm-badge]][npm]\n======================\n\nEnables server-side rendering of [React Relay](https://facebook.github.io/relay/) containers.\n\nIf you use [react-router-relay](https://github.com/relay-tools/react-router-relay)\nyou might also become interested in\n[isomorphic-relay-router](https://github.com/denvned/isomorphic-relay-router).\n\nAcknowledgments\n---------------\n\nThank you to everyone who helped in the development of this project with suggestions,\ntesting, reported issues, pull-requests. Thank you to the Facebook employees who reviewed\nmy [contributions](https://github.com/facebook/relay/commits/master?author=denvned)\nto Relay, which helped to improve the server-side rendering support.\n\nInstallation\n------------\n\n    npm install --save @boostmyschool/isomorphic-relay\n\nHow to Use\n----------\n\nHere is an example with detailed comments of how *isomorphic-relay*\ncan be used **on the server:**\n```jsx\nimport IsomorphicRelay from 'isomorphic-relay';\n\nconst rootContainerProps = {\n  Container: MyContainer,\n  queryConfig: new MyRoute(),\n};\n\napp.get('/', (req, res, next) => {\n  // Create a Relay network layer. Note that on the server you need to specify\n  // the absolute URL of your GraphQL server endpoint.\n  // Here we also pass the user cookies on to the GraphQL server to allow them\n  // to be used there, e.g. for authentication.\n  const networkLayer = new Relay.DefaultNetworkLayer(\n    'http://localhost:8080/graphql',\n    { headers: { cookie: req.headers.cookie } },\n  );\n\n  // Use IsomorphicRelay.prepareData() to prefetch the data required for\n  // rendering of the Relay container.\n  IsomorphicRelay.prepareData(rootContainerProps, networkLayer).then(({ data, props }) => {\n    // Use <IsomorphicRelay.Renderer> to render your Relay container when the data is ready.\n    // Note that we cannot use the standard <Relay.Renderer> because at the first render\n    // it renders an empty/loading screen even when all the required data is already available.\n    // Unlike that, <IsomorphicRelay.Renderer> in that case renders normally right at\n    // the first render, and it is important for server side rendering\n    // where we do not have a second render.\n    const reactOutput = ReactDOMServer.renderToString(\n      <IsomorphicRelay.Renderer {...props} />\n    );\n\n    // To allow the data to be reused in the browser, serialize and embed it\n    // in the page together with the React markup.\n    res.render('index.ejs', {\n      preloadedData: JSON.stringify(data),\n      reactOutput\n    });\n  }).catch(next);\n});\n```\n\nAnd here is an example of the code that can be used **in the browser:**\n```jsx\nimport IsomorphicRelay from 'isomorphic-relay';\n\nconst environment = new Relay.Environment();\nenvironment.injectNetworkLayer(new Relay.DefaultNetworkLayer('/graphql'));\n\n// Deserialize the data preloaded on the server.\nconst data = JSON.parse(document.getElementById('preloadedData').textContent);\n\n// Use IsomorphicRelay.injectPreparedData() to inject the data into the Relay cache,\n// so Relay doesn't need to make GraphQL requests to fetch the data.\nIsomorphicRelay.injectPreparedData(environment, data);\n\n// Use IsomorphicRelay.prepareInitialRender() to wait until all the required data\n// is ready for rendering of the Relay container.\n// Note that it is important to use the same rootContainerProps as on the server to\n// avoid additional GraphQL requests.\nIsomorphicRelay.prepareInitialRender({ ...rootContainerProps, environment }).then(props => {\n  // Use <IsomorphicRelay.Renderer> to render your Relay container when the data is ready.\n  // Like on the server we cannot use the standard <Relay.Renderer>, bacause here\n  // we also need to render normally right at the initial render, otherwise we would get\n  // React markup mismatch with the markup prerendered on the server.\n  ReactDOM.render(<IsomorphicRelay.Renderer {...props} />, document.getElementById('root'));\n});\n```\n\nAlso see the [Star Wars](examples/star-wars) example.\n\n[npm-badge]: https://img.shields.io/npm/v/isomorphic-relay.svg\n[npm]: https://www.npmjs.com/package/isomorphic-relay\n","readmeFilename":"README.md"}