{"_id":"@sanity/presence-store","_rev":"440-7738222fb5d50e51163b6dbd7b7dfb10","name":"@sanity/presence-store","dist-tags":{"custom-login":"0.124.0-default-login.063643d2","rc":"0.125.0-rc.4","fix-span-keys":"0.126.0-fix-span-keys.12d2645d","vega":"0.133.0-vega.cb3cdeee","babel-7":"0.133.0-babel-7.06032ac5","structure":"0.134.0-alpha.d19d4c0c","gql-rtb":"0.136.3-gql-rtb.417","graphql":"0.136.1-canary.66","realtime-block-editor":"0.140.0-alpha.4","alpha":"0.139.3-parrot.0","initial-value-templates":"0.143.0-initial-value-templates.55","cheesy-bites":"0.144.4-cheesy-bites.121","asset-sources":"0.147.0-alpha.2","block-tools-white-space-fix":"0.147.0-block-tools-white-space-fix.2","hints-mode":"0.146.4-hints-mode.156","handle-access-control-errors":"0.147.0-handle-access-control-errors.38","ts-client":"0.147.10-ts-client.1","next":"0.147.10-next.23","document-actions":"1.148.5-document-actions.23","review-changes":"1.150.9-review-changes.1024","latest":"2.0.9","canary":"2.0.10-canary.0"},"versions":{"0.122.0":{"name":"@sanity/presence-store","version":"0.122.0","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.122.0","maintainers":[{"name":"rexxars","email":"rexxars@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"55f2a19a0e8ad525c995abb590d840d06d8b7892","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.122.0.tgz","integrity":"sha512-JwJnZs8xq34wEYiGCeZuSSusRfKT+6jJGIsNpyKbASzEqwruCrAhx4oxY/QZvhlKqGgKYkWd0EfBgJlyfEjsAg==","signatures":[{"sig":"MEUCIQD2XFUgM03vJQojt7L1GU4orjNO2FCGwrJBDMW7o1ocCQIgTNlyA9I489P6YkdJIOqamTLj3yVO4pF+WS9CjCOdopY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"rexxars@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.5.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"9.0.0","dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"^0.120.0","@sanity/observable":"^0.118.4"},"publishConfig":{"access":"public"},"devDependencies":{"tape":"^4.8.0","eslint":"^3.19.0","rimraf":"^2.6.1","babel-cli":"^6.24.0","babel-eslint":"^7.2.1","babel-plugin-lodash":"^3.2.11","babel-preset-es2015":"^6.24.0","eslint-config-sanity":"^2.1.4","eslint-plugin-import":"^2.2.0","babel-plugin-syntax-flow":"^6.18.0","babel-plugin-syntax-class-properties":"^6.13.0","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0"},"_npmOperationalInternal":{"tmp":"tmp/presence-store-0.122.0.tgz_1511523498163_0.5578503273427486","host":"s3://npm-registry-packages"}},"0.123.0-alpha.ce219b27":{"name":"@sanity/presence-store","version":"0.123.0-alpha.ce219b27","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.123.0-alpha.ce219b27","maintainers":[{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"bjoerge","email":"bjoerge@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"d40808628587b70c7b1ff470ba4cffc3a8747f70","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.123.0-alpha.ce219b27.tgz","integrity":"sha512-XwymGduxhpIFG+cZMQgK5g0c2xHFGtLhtlw6JvSA0/kJiQZtCFEatEZy2akfO/NHGByxXpoTNKSY3o/N9uc0hw==","signatures":[{"sig":"MEYCIQCi0xBZLPuL/eJnZY6OOSGqsGl0ArVfYmhLRrrEhphRfQIhAKivTnF8uUadey9MXtkaFAxza8PZ5e11325cJy9P1dZC","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/Connector.js","_from":".","_shasum":"d40808628587b70c7b1ff470ba4cffc3a8747f70","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"rexxars@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"3.10.10","description":"Client side presence channel handler","directories":{},"_nodeVersion":"6.12.0","dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.123.0-alpha.ce219b27","@sanity/observable":"^0.118.4"},"publishConfig":{"access":"public"},"devDependencies":{"tape":"^4.8.0","eslint":"^3.19.0","rimraf":"^2.6.1","babel-cli":"^6.24.0","babel-eslint":"^7.2.1","babel-plugin-lodash":"^3.2.11","babel-preset-es2015":"^6.24.0","eslint-config-sanity":"^2.1.4","eslint-plugin-import":"^2.2.0","babel-plugin-syntax-flow":"^6.18.0","babel-plugin-syntax-class-properties":"^6.13.0","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0"},"_npmOperationalInternal":{"tmp":"tmp/presence-store-0.123.0-alpha.ce219b27.tgz_1512069624281_0.5952687808312476","host":"s3://npm-registry-packages"}},"0.123.0-beta.ce219b27":{"name":"@sanity/presence-store","version":"0.123.0-beta.ce219b27","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.123.0-beta.ce219b27","maintainers":[{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"bjoerge","email":"bjoerge@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"02a42962d095e7ba83b5cc96086ec6265a1eca28","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.123.0-beta.ce219b27.tgz","integrity":"sha512-54eOj37j6/hVsQIl3W5/Q0jSmqzxP9T0aV+/ZVHohzWuKsxxMFqU9dUO1Y3axH7uKV4EsjqQOjtHIXW5XywLnw==","signatures":[{"sig":"MEQCIEUG/9DwmwVGffkSjo+Tl+6s+XFkiag65xrEQ8h6LmHhAiAXy0v8GvbSUvVLEVgVEndWpn3P4XndkDVJve/aQhJlzg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/Connector.js","_from":".","_shasum":"02a42962d095e7ba83b5cc96086ec6265a1eca28","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"rexxars@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"3.10.10","description":"Client side presence channel handler","directories":{},"_nodeVersion":"6.12.0","dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.123.0-beta.ce219b27","@sanity/observable":"^0.118.4"},"publishConfig":{"access":"public"},"devDependencies":{"tape":"^4.8.0","eslint":"^3.19.0","rimraf":"^2.6.1","babel-cli":"^6.24.0","babel-eslint":"^7.2.1","babel-plugin-lodash":"^3.2.11","babel-preset-es2015":"^6.24.0","eslint-config-sanity":"^2.1.4","eslint-plugin-import":"^2.2.0","babel-plugin-syntax-flow":"^6.18.0","babel-plugin-syntax-class-properties":"^6.13.0","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0"},"_npmOperationalInternal":{"tmp":"tmp/presence-store-0.123.0-beta.ce219b27.tgz_1512071960364_0.8591963136568666","host":"s3://npm-registry-packages"}},"0.124.0-alpha.35b4b49a":{"name":"@sanity/presence-store","version":"0.124.0-alpha.35b4b49a","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.124.0-alpha.35b4b49a","maintainers":[{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"bjoerge","email":"bjoerge@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"0af6f7d961ab4a75b73ad94be259cd95511cdf3e","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.124.0-alpha.35b4b49a.tgz","integrity":"sha512-vatfPDIjiQug1akcuZFSnVM+xT6QfM67oMcDupsicukzdYhgnQgX6AvFcdleRdf0uSr5deWd5kmNC4sDZvrs4w==","signatures":[{"sig":"MEUCIQDxjDAeMERCMqT1/4MnVjfvjzUG+3XuR2ptafFkKcdVxgIgSKUWyw1D0CxzNE3IZdj3YrMRaBzXVvT9zNvQDudUtL4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.5.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.4.0","dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.124.0-alpha.35b4b49a","@sanity/observable":"^0.118.4"},"publishConfig":{"access":"public"},"devDependencies":{"tape":"^4.8.0","eslint":"^3.19.0","rimraf":"^2.6.1","babel-cli":"^6.24.0","babel-eslint":"^7.2.1","babel-plugin-lodash":"^3.2.11","babel-preset-es2015":"^6.24.0","eslint-config-sanity":"^2.1.4","eslint-plugin-import":"^2.2.0","babel-plugin-syntax-flow":"^6.18.0","babel-plugin-syntax-class-properties":"^6.13.0","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0"},"_npmOperationalInternal":{"tmp":"tmp/presence-store-0.124.0-alpha.35b4b49a.tgz_1513199330215_0.047815981321036816","host":"s3://npm-registry-packages"}},"0.124.0-alpha.d5ac0a90":{"name":"@sanity/presence-store","version":"0.124.0-alpha.d5ac0a90","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.124.0-alpha.d5ac0a90","maintainers":[{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"bjoerge","email":"bjoerge@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"3e4bd7742e614d3fb77aa965bc8a0547e7ba5ef0","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.124.0-alpha.d5ac0a90.tgz","integrity":"sha512-SQVHMR9L7682WxelC9Zp4nw9bHlhSLSgACTDxIO5cQYGhXxJYSnRTNi5+P/S3OykeMz59KSVx+rzJfnKD12cww==","signatures":[{"sig":"MEYCIQC5Vlg3Pb3P/xOBv9pNrk+tf2jph1BHMBB0A9a509ioxwIhAPNP/6Y9fxcpd++Inh1Seo7m4dTxfhPlteWVUzV8Pykh","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.5.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.4.0","dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.124.0-alpha.d5ac0a90","@sanity/observable":"^0.118.4"},"publishConfig":{"access":"public"},"devDependencies":{"tape":"^4.8.0","eslint":"^3.19.0","rimraf":"^2.6.1","babel-cli":"^6.24.0","babel-eslint":"^7.2.1","babel-plugin-lodash":"^3.2.11","babel-preset-es2015":"^6.24.0","eslint-config-sanity":"^2.1.4","eslint-plugin-import":"^2.2.0","babel-plugin-syntax-flow":"^6.18.0","babel-plugin-syntax-class-properties":"^6.13.0","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0"},"_npmOperationalInternal":{"tmp":"tmp/presence-store-0.124.0-alpha.d5ac0a90.tgz_1513245638023_0.6288393079303205","host":"s3://npm-registry-packages"}},"0.124.0-alpha.f0625b40":{"name":"@sanity/presence-store","version":"0.124.0-alpha.f0625b40","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.124.0-alpha.f0625b40","maintainers":[{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"bjoerge","email":"bjoerge@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"7f1e60aa9a37b8e3d9a1f7c72dd68d359b07ac9b","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.124.0-alpha.f0625b40.tgz","integrity":"sha512-OReWpI0sTUypAE6zO1GatHHO05H2gVNktVIXGBYiMcEzIjZnXmMN5YPy6kDHIF2f1sRvjm4dvm9hU+1nenjWWA==","signatures":[{"sig":"MEQCIBlKIUbKpeNjPK8psGRLJqAFQrsmv15gYAIcAiH3TIUkAiBGjH3+2yGp7dXbgWsx/cjL34YDBBXfHW/z0mMc035upg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"rexxars@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.6.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.1","dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.124.0-alpha.f0625b40","@sanity/observable":"^0.118.4"},"publishConfig":{"access":"public"},"devDependencies":{"tape":"^4.8.0","eslint":"^3.19.0","rimraf":"^2.6.1","babel-cli":"^6.24.0","babel-eslint":"^7.2.1","babel-plugin-lodash":"^3.2.11","babel-preset-es2015":"^6.24.0","eslint-config-sanity":"^2.1.4","eslint-plugin-import":"^2.2.0","babel-plugin-syntax-flow":"^6.18.0","babel-plugin-syntax-class-properties":"^6.13.0","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0"},"_npmOperationalInternal":{"tmp":"tmp/presence-store-0.124.0-alpha.f0625b40.tgz_1513764389039_0.7562166142743081","host":"s3://npm-registry-packages"}},"0.124.0-alpha.56833000":{"name":"@sanity/presence-store","version":"0.124.0-alpha.56833000","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.124.0-alpha.56833000","maintainers":[{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"bjoerge","email":"bjoerge@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"ddf6cff28547aaebb2e43bdb51808f0bf9190796","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.124.0-alpha.56833000.tgz","integrity":"sha512-uW/W+58X+fQnDxMDupMCo1lzeeV3GjNdw5gYQ/RY1RxGdU0xnMot7gSh8hJbxHplWos6ey25aMhFr5Yy8j6GSg==","signatures":[{"sig":"MEUCIC93NCdGFEeeYsQfRmIlYpFgGBSbn9tAJvhwQONThpt3AiEAxa3IJehOEVX4+1mUsZAt5wD5CGRHzN+lr4yOhatc0zM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.6.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.4","dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.124.0-alpha.56833000","@sanity/observable":"^0.118.4"},"publishConfig":{"access":"public"},"devDependencies":{"tape":"^4.8.0","eslint":"^3.19.0","rimraf":"^2.6.1","babel-cli":"^6.24.0","babel-eslint":"^7.2.1","babel-plugin-lodash":"^3.2.11","babel-preset-es2015":"^6.24.0","eslint-config-sanity":"^2.1.4","eslint-plugin-import":"^2.2.0","babel-plugin-syntax-flow":"^6.18.0","babel-plugin-syntax-class-properties":"^6.13.0","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0"},"_npmOperationalInternal":{"tmp":"tmp/presence-store-0.124.0-alpha.56833000.tgz_1515149366576_0.9603784854989499","host":"s3://npm-registry-packages"}},"0.124.0-alpha.803a5e05":{"name":"@sanity/presence-store","version":"0.124.0-alpha.803a5e05","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.124.0-alpha.803a5e05","maintainers":[{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"bjoerge","email":"bjoerge@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"ce5c491fe2ebdcb37c11a0e8b67c75106c9c184a","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.124.0-alpha.803a5e05.tgz","integrity":"sha512-M1WeqVeAvrXBNoQ2zQ0/NJgfnSkRbT0UVf87BDJa2rFZdQcJkqFipffgWyIfXv/HVsbxFUR1DyaUtSRHtlHolg==","signatures":[{"sig":"MEQCIHwxmwuQpWN0eFz5rkR/bEVJDKFSnBsrMJIq2jkcgo2vAiAgSfQiT8w+SrXt8PGyo/sxKZJOfmeBbrWjQgWZ30FRlg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.6.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.4","dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.124.0-alpha.803a5e05","@sanity/observable":"^0.118.4"},"publishConfig":{"access":"public"},"devDependencies":{"tape":"^4.8.0","eslint":"^3.19.0","rimraf":"^2.6.1","babel-cli":"^6.24.0","babel-eslint":"^7.2.1","babel-plugin-lodash":"^3.2.11","babel-preset-es2015":"^6.24.0","eslint-config-sanity":"^2.1.4","eslint-plugin-import":"^2.2.0","babel-plugin-syntax-flow":"^6.18.0","babel-plugin-syntax-class-properties":"^6.13.0","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0"},"_npmOperationalInternal":{"tmp":"tmp/presence-store-0.124.0-alpha.803a5e05.tgz_1515150054685_0.5180742777884007","host":"s3://npm-registry-packages"}},"0.124.0-alpha.831a5eca":{"name":"@sanity/presence-store","version":"0.124.0-alpha.831a5eca","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.124.0-alpha.831a5eca","maintainers":[{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"bjoerge","email":"bjoerge@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"633265ef196c0570a1d9ee2938cd34356d236f74","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.124.0-alpha.831a5eca.tgz","integrity":"sha512-kpJ4HKoAIHVV0aCDEUWve1Mmwymd/sJ8lj7oZUKLiS4RqLM3YocsdkUsZfuOTt1bjVtFqbq3cUOeuRWnQ3D9xw==","signatures":[{"sig":"MEQCIDDKfrNp4su8VWNfLXoI7tHjR5qu0ZsFl2x5mRxkqPWFAiAd2NdemDLELMKF5XTlOqZtvUUKwJ0BchpDQh98ASaSCg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.6.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.4","dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.124.0-alpha.831a5eca","@sanity/observable":"^0.118.4"},"publishConfig":{"access":"public"},"devDependencies":{"tape":"^4.8.0","eslint":"^3.19.0","rimraf":"^2.6.1","babel-cli":"^6.24.0","babel-eslint":"^7.2.1","babel-plugin-lodash":"^3.2.11","babel-preset-es2015":"^6.24.0","eslint-config-sanity":"^2.1.4","eslint-plugin-import":"^2.2.0","babel-plugin-syntax-flow":"^6.18.0","babel-plugin-syntax-class-properties":"^6.13.0","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0"},"_npmOperationalInternal":{"tmp":"tmp/presence-store-0.124.0-alpha.831a5eca.tgz_1515152097469_0.11860515153966844","host":"s3://npm-registry-packages"}},"0.124.0-next.71deafdf":{"name":"@sanity/presence-store","version":"0.124.0-next.71deafdf","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.124.0-next.71deafdf","maintainers":[{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"bjoerge","email":"bjoerge@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"5da07562053981b1e61cad598ab5e8c4d3aa6c05","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.124.0-next.71deafdf.tgz","integrity":"sha512-LmTMya6Wi3rWb1eMlW0NOCZYPvi6Z5Bz+P6slACzjORnkA7FUvtvylDUUNHbuyL43sSCW/MX7wPMJ45hgDBHLQ==","signatures":[{"sig":"MEYCIQCtZXeGb6f1NtMT30eVxMCZ3ldwX8QKsAjhsL+dQiRcHgIhALYVoW1uQFsyUAM3tz42ScY4AgzFPebbJ5r/6HrOfHaF","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.6.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.4","dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.124.0-next.71deafdf","@sanity/observable":"^0.118.4"},"publishConfig":{"access":"public"},"devDependencies":{"tape":"^4.8.0","eslint":"^3.19.0","rimraf":"^2.6.1","babel-cli":"^6.24.0","babel-eslint":"^7.2.1","babel-plugin-lodash":"^3.2.11","babel-preset-es2015":"^6.24.0","eslint-config-sanity":"^2.1.4","eslint-plugin-import":"^2.2.0","babel-plugin-syntax-flow":"^6.18.0","babel-plugin-syntax-class-properties":"^6.13.0","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0"},"_npmOperationalInternal":{"tmp":"tmp/presence-store-0.124.0-next.71deafdf.tgz_1515423431856_0.8622703575529158","host":"s3://npm-registry-packages"}},"0.124.0-next.6c328976":{"name":"@sanity/presence-store","version":"0.124.0-next.6c328976","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.124.0-next.6c328976","maintainers":[{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"bjoerge","email":"bjoerge@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"888147d3d1842f224ff1eee42463e0c80bacd93a","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.124.0-next.6c328976.tgz","integrity":"sha512-eB9rrFtIqBVvqz2n6tbn02xRbBEaHnhk0SSR1XJBHp5GStw90D+uTf3eUak00juzq0RLq47eRHOYnrT9ety2QA==","signatures":[{"sig":"MEQCIC98zumQu5cwuy6lazbw+HTKEkoWULS1KJAyUP/2wUFYAiAZ5Dx8aSza3ieTCfvKJnxdnDBSJTxd6BtVz2LqMJUFGQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.6.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.4","dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.124.0-next.6c328976","@sanity/observable":"^0.118.4"},"publishConfig":{"access":"public"},"devDependencies":{"tape":"^4.8.0","eslint":"^3.19.0","rimraf":"^2.6.1","babel-cli":"^6.24.0","babel-eslint":"^7.2.1","babel-plugin-lodash":"^3.2.11","babel-preset-es2015":"^6.24.0","eslint-config-sanity":"^2.1.4","eslint-plugin-import":"^2.2.0","babel-plugin-syntax-flow":"^6.18.0","babel-plugin-syntax-class-properties":"^6.13.0","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0"},"_npmOperationalInternal":{"tmp":"tmp/presence-store-0.124.0-next.6c328976.tgz_1515438723233_0.891264560399577","host":"s3://npm-registry-packages"}},"0.124.0-next.a6431d11":{"name":"@sanity/presence-store","version":"0.124.0-next.a6431d11","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.124.0-next.a6431d11","maintainers":[{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"bjoerge","email":"bjoerge@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"81cab9e4f01877807c97bd720f228d96ce3fa5d2","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.124.0-next.a6431d11.tgz","integrity":"sha512-UyiolFtjCMXfKiRL3rG+HkHX+bX8Vy3M3jZ4lXh5Ji2zKGnMfYi1zW3uQ+Q08dtL2vCubVE1exrC4Xp3kNampg==","signatures":[{"sig":"MEQCIAv310K+hxK2SygMzrdx+yKjqDzraFwv2A/mY8N3I6EIAiBEIMVA6pydVXTLAvHZ3PPNCL7cqNN2OJHUGpQD4/EbNg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.6.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.4","dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.124.0-next.a6431d11","@sanity/observable":"^0.118.4"},"publishConfig":{"access":"public"},"devDependencies":{"tape":"^4.8.0","eslint":"^3.19.0","rimraf":"^2.6.1","babel-cli":"^6.24.0","babel-eslint":"^7.2.1","babel-plugin-lodash":"^3.2.11","babel-preset-es2015":"^6.24.0","eslint-config-sanity":"^2.1.4","eslint-plugin-import":"^2.2.0","babel-plugin-syntax-flow":"^6.18.0","babel-plugin-syntax-class-properties":"^6.13.0","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0"},"_npmOperationalInternal":{"tmp":"tmp/presence-store-0.124.0-next.a6431d11.tgz_1515440821107_0.17131927702575922","host":"s3://npm-registry-packages"}},"0.124.0-default-login.063643d2":{"name":"@sanity/presence-store","version":"0.124.0-default-login.063643d2","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.124.0-default-login.063643d2","maintainers":[{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"bjoerge","email":"bjoerge@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"d1561d1086b6f0df9aad66c22220667c364ae8e5","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.124.0-default-login.063643d2.tgz","integrity":"sha512-owiNUMgDk8Cy9SHvxN+ommmoQdjFLi6xq9D8DLchbeMlFuQ7CC+dp3++WxnYX5d8OL7tag+kyL6/T1htkglgyQ==","signatures":[{"sig":"MEYCIQC2w7q0NB47EHsUej0LLQc9F/DAv3DA79OzZCswllb3WAIhAIy5q+0R8M84vdN4ZqjhTylydg5A0f2cnJSbMN63Erd3","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.5.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.4.0","dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.124.0-default-login.063643d2","@sanity/observable":"^0.118.4"},"publishConfig":{"access":"public"},"devDependencies":{"tape":"^4.8.0","eslint":"^3.19.0","rimraf":"^2.6.1","babel-cli":"^6.24.0","babel-eslint":"^7.2.1","babel-plugin-lodash":"^3.2.11","babel-preset-es2015":"^6.24.0","eslint-config-sanity":"^2.1.4","eslint-plugin-import":"^2.2.0","babel-plugin-syntax-flow":"^6.18.0","babel-plugin-syntax-class-properties":"^6.13.0","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0"},"_npmOperationalInternal":{"tmp":"tmp/presence-store-0.124.0-default-login.063643d2.tgz_1515505927354_0.5255363574251533","host":"s3://npm-registry-packages"}},"0.125.0-vega.c48b34cc":{"name":"@sanity/presence-store","version":"0.125.0-vega.c48b34cc","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.125.0-vega.c48b34cc","maintainers":[{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"bjoerge","email":"bjoerge@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"568d91993a1ac922a33d1b43ac7723cec86240f2","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.125.0-vega.c48b34cc.tgz","integrity":"sha512-bBoMRJ9NT3ue7ktdEKOJTj10YteJPszYXYqqdz/D60pkwv2ngM3i2oKMsxi1vjX5DrZpCg/xblVCPONreGGHbw==","signatures":[{"sig":"MEUCIQCANhIEI+AnX5r3HX0TqIttJZ06h4lX9BrNIM6GIlzcWgIgYyQPx1X13z5ZXOdVY8t144Kkz0xmffeCW0tjuHRyhrA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.6.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.4","dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.125.0-vega.c48b34cc","@sanity/observable":"0.125.0-vega.c48b34cc"},"publishConfig":{"access":"public"},"devDependencies":{"tape":"^4.8.0","eslint":"^4.11.0","rimraf":"^2.6.2","babel-cli":"^6.26.0","babel-eslint":"^8.0.1","babel-plugin-lodash":"^3.2.11","babel-preset-es2015":"^6.24.1","eslint-config-sanity":"^3.1.0","eslint-plugin-import":"^2.7.0","babel-plugin-syntax-flow":"^6.18.0","babel-plugin-syntax-class-properties":"^6.13.0","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0"},"_npmOperationalInternal":{"tmp":"tmp/presence-store-0.125.0-vega.c48b34cc.tgz_1516026469233_0.3552681431174278","host":"s3://npm-registry-packages"}},"0.125.0-vega.1bc71a10":{"name":"@sanity/presence-store","version":"0.125.0-vega.1bc71a10","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.125.0-vega.1bc71a10","maintainers":[{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"bjoerge","email":"bjoerge@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"e63aa9609ae80a0df59237f750f405d855ed3c27","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.125.0-vega.1bc71a10.tgz","integrity":"sha512-K79+zmOLq3QHb/Uk5F92aUI6p63WV64nIUn7qkw4P04wIiBWsuLE/XTDrd1HqQEw9PpV/CBICr3pzXSFI32TtA==","signatures":[{"sig":"MEUCIQCPo1fLl0kK9tWBnj6IsxRFFqkKlCr+wbGZ39u1arLuHwIgE/r3dqhYlP1HKA+iYHq9YwvJHE2jZ/pu5QZZ7UqoSVc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.6.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.4","dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.125.0-vega.1bc71a10","@sanity/observable":"0.125.0-vega.1bc71a10"},"publishConfig":{"access":"public"},"devDependencies":{"tape":"^4.8.0","eslint":"^4.11.0","rimraf":"^2.6.2","babel-cli":"^6.26.0","babel-eslint":"^8.0.1","babel-plugin-lodash":"^3.2.11","babel-preset-es2015":"^6.24.1","eslint-config-sanity":"^3.1.0","eslint-plugin-import":"^2.7.0","babel-plugin-syntax-flow":"^6.18.0","babel-plugin-syntax-class-properties":"^6.13.0","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0"},"_npmOperationalInternal":{"tmp":"tmp/presence-store-0.125.0-vega.1bc71a10.tgz_1516026953055_0.25495212129317224","host":"s3://npm-registry-packages"}},"0.125.0-next.b1f0d4fa":{"name":"@sanity/presence-store","version":"0.125.0-next.b1f0d4fa","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.125.0-next.b1f0d4fa","maintainers":[{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"bjoerge","email":"bjoerge@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"4d2061041dafc9a1520f4ce2801023ff3b4dcfb7","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.125.0-next.b1f0d4fa.tgz","integrity":"sha512-J8edld7MMkzuBencUX0qc4/n/cxKsI5NZbBr35DNprGpXETMjNw1bzH+TWYfMEhnTgKonDkSy4ZIbuvDAl5ETQ==","signatures":[{"sig":"MEYCIQDmvXas5DkPIO6wCKYpSR1KrN4ZawWc+Urg0yp3DRjEBAIhAMqZgBsa/LjcMKQp3UHe1xJn+x2DLDH6wRaKUAYMsq+V","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"description":"Client side presence channel handler","directories":{},"dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"^0.125.0-next.b1f0d4fa","@sanity/observable":"^0.125.0-next.b1f0d4fa"},"publishConfig":{"access":"public"},"devDependencies":{"tape":"^4.8.0","eslint":"^4.11.0","rimraf":"^2.6.2","babel-cli":"^6.26.0","babel-eslint":"^8.0.1","babel-plugin-lodash":"^3.2.11","babel-preset-es2015":"^6.24.1","eslint-config-sanity":"^3.1.0","eslint-plugin-import":"^2.7.0","babel-plugin-syntax-flow":"^6.18.0","babel-plugin-syntax-class-properties":"^6.13.0","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0"},"_npmOperationalInternal":{"tmp":"tmp/presence-store-0.125.0-next.b1f0d4fa.tgz_1516112970394_0.010104943066835403","host":"s3://npm-registry-packages"}},"0.125.0-next.f7d2f004":{"name":"@sanity/presence-store","version":"0.125.0-next.f7d2f004","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.125.0-next.f7d2f004","maintainers":[{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"bjoerge","email":"bjoerge@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"555f1a69cbd76afab4f368600401191b005f7361","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.125.0-next.f7d2f004.tgz","integrity":"sha512-f8VDUSzBBn2lyLykgpwe7Y2FbLGpWecvBtAsbrqW6UglI2+TVgY8zNYTw9STyeXIES/ubnPk7yXWahypqDvk1Q==","signatures":[{"sig":"MEUCIQCjBEu9JxAXZxMHbbci2VQYv+PqdF7fdh+MYawosquvkAIgK3qojX3beLEtMIXtXZzX8IjIvTz87iNN5bZw08CxRH0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"description":"Client side presence channel handler","directories":{},"dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"^0.125.0-next.f7d2f004","@sanity/observable":"^0.125.0-next.f7d2f004"},"publishConfig":{"access":"public"},"devDependencies":{"tape":"^4.8.0","eslint":"^4.11.0","rimraf":"^2.6.2","babel-cli":"^6.26.0","babel-eslint":"^8.0.1","babel-plugin-lodash":"^3.2.11","babel-preset-es2015":"^6.24.1","eslint-config-sanity":"^3.1.0","eslint-plugin-import":"^2.7.0","babel-plugin-syntax-flow":"^6.18.0","babel-plugin-syntax-class-properties":"^6.13.0","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0"},"_npmOperationalInternal":{"tmp":"tmp/presence-store-0.125.0-next.f7d2f004.tgz_1516113471638_0.08429402532055974","host":"s3://npm-registry-packages"}},"0.124.5":{"name":"@sanity/presence-store","version":"0.124.5","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.124.5","maintainers":[{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"bjoerge","email":"bjoerge@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"64a74fa4befd15de3d51ef29275fe5f6f681e355","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.124.5.tgz","integrity":"sha512-ALcOfnvLEm+dUs6gsgzAFcl5M2G7IAnoJwFtjk4plFeBkZeZIGawjxIRMyG9aFcQcl5diLjSl/iokAgtS1hIBw==","signatures":[{"sig":"MEUCIQDw4xb/mD6feT0+sbcbasdjnznmr+kMdk4rHbe7P9Y9jQIgFUuLontfh7rEN7z/v+TEqnAi5d8MNhay6sJ/1F4NxaI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"description":"Client side presence channel handler","directories":{},"dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"^0.124.5","@sanity/observable":"^0.118.4"},"publishConfig":{"access":"public"},"devDependencies":{"tape":"^4.8.0","eslint":"^3.19.0","rimraf":"^2.6.1","babel-cli":"^6.24.0","babel-eslint":"^7.2.1","babel-plugin-lodash":"^3.2.11","babel-preset-es2015":"^6.24.0","eslint-config-sanity":"^2.1.4","eslint-plugin-import":"^2.2.0","babel-plugin-syntax-flow":"^6.18.0","babel-plugin-syntax-class-properties":"^6.13.0","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0"},"_npmOperationalInternal":{"tmp":"tmp/presence-store-0.124.5.tgz_1516118497045_0.9650337663479149","host":"s3://npm-registry-packages"}},"0.124.9":{"name":"@sanity/presence-store","version":"0.124.9","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.124.9","maintainers":[{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"bjoerge","email":"bjoerge@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"19985fa4efd5a982707d2480e5ccbb17f68af9f3","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.124.9.tgz","integrity":"sha512-5eZHvqyimxyz9O4/iJ4mtxfQ6AJptoA5JpVi8QTxNihYDiujYU2mexmFHNNoatDyR57J1QlnFUYb0gPiC9rJqg==","signatures":[{"sig":"MEUCIGVqwfuuBd5ln4mdWllLU65W6QRE2/d5soKFmWE4O/+FAiEAvwWU0VFxG6ljzB5TTTQuzDm6IGz9t2wiGv9Ik7JGNtg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"rexxars@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"description":"Client side presence channel handler","directories":{},"dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"^0.124.9","@sanity/observable":"^0.118.4"},"publishConfig":{"access":"public"},"devDependencies":{"tape":"^4.8.0","eslint":"^3.19.0","rimraf":"^2.6.1","babel-cli":"^6.24.0","babel-eslint":"^7.2.1","babel-plugin-lodash":"^3.2.11","babel-preset-es2015":"^6.24.0","eslint-config-sanity":"^2.1.4","eslint-plugin-import":"^2.2.0","babel-plugin-syntax-flow":"^6.18.0","babel-plugin-syntax-class-properties":"^6.13.0","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0"},"_npmOperationalInternal":{"tmp":"tmp/presence-store-0.124.9.tgz_1516807015684_0.7679917053319514","host":"s3://npm-registry-packages"}},"0.125.0-next.f0a45fc8":{"name":"@sanity/presence-store","version":"0.125.0-next.f0a45fc8","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.125.0-next.f0a45fc8","maintainers":[{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"bjoerge","email":"bjoerge@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"12c6e81d06474521be64382429d023c9a8d2b2cf","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.125.0-next.f0a45fc8.tgz","integrity":"sha512-g+NCkVV1oi+WCn3TDWL0R1R6JqP10XhwE17DHp9X/fQyW7Paj3U820xVvL8aqHVOJsOcNWKfBUvEH7EV7ZwKjA==","signatures":[{"sig":"MEQCIDrxF6S8nPXe4cSmLz48+FyC0lE16PtbfX44aXDZ7MTnAiA9Us4C9izyUdVSfa47Xhiizxu6HSyH65ZkvMgtXYKJvA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"description":"Client side presence channel handler","directories":{},"dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"^0.125.0-next.f0a45fc8","@sanity/observable":"^0.125.0-next.f0a45fc8"},"publishConfig":{"access":"public"},"devDependencies":{"tape":"^4.8.0","eslint":"^4.11.0","rimraf":"^2.6.2","babel-cli":"^6.26.0","babel-eslint":"^8.0.1","babel-plugin-lodash":"^3.2.11","babel-preset-es2015":"^6.24.1","eslint-config-sanity":"^3.1.0","eslint-plugin-import":"^2.7.0","babel-plugin-syntax-flow":"^6.18.0","babel-plugin-syntax-class-properties":"^6.13.0","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0"},"_npmOperationalInternal":{"tmp":"tmp/presence-store-0.125.0-next.f0a45fc8.tgz_1516808663696_0.12016453826799989","host":"s3://npm-registry-packages"}},"0.125.0-next.e3503829":{"name":"@sanity/presence-store","version":"0.125.0-next.e3503829","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.125.0-next.e3503829","maintainers":[{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"bjoerge","email":"bjoerge@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"4e5f45dca03dd78d07ec3cfecaf8c8ae79e2f47b","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.125.0-next.e3503829.tgz","integrity":"sha512-m+OFEAranaf2lJkbnTg8ro6cdkVXvjePc8DLCBB+DmrLR+hd1rsglUU52laoh2f2ZHUE1vKy+NFjKMFf3RZ5MQ==","signatures":[{"sig":"MEUCIQCW+UdStEw2QxbwLOhWJQ9hJ052tMe7RrqqbrgIB/zlJwIgQ9lro0u8zpdMI/5XLMARV0K37ExcauzwNGa5P7P+ws4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.6.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.4","dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.125.0-next.e3503829","@sanity/observable":"0.125.0-next.e3503829"},"publishConfig":{"access":"public"},"devDependencies":{"tape":"^4.8.0","eslint":"^4.11.0","rimraf":"^2.6.2","babel-cli":"^6.26.0","babel-eslint":"^8.0.1","babel-plugin-lodash":"^3.2.11","babel-preset-es2015":"^6.24.1","eslint-config-sanity":"^3.1.0","eslint-plugin-import":"^2.7.0","babel-plugin-syntax-flow":"^6.18.0","babel-plugin-syntax-class-properties":"^6.13.0","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0"},"_npmOperationalInternal":{"tmp":"tmp/presence-store-0.125.0-next.e3503829.tgz_1516826324542_0.2700457670725882","host":"s3://npm-registry-packages"}},"0.125.0-next.509884e7":{"name":"@sanity/presence-store","version":"0.125.0-next.509884e7","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.125.0-next.509884e7","maintainers":[{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"bjoerge","email":"bjoerge@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"a568d5caf084b6682b5646c07bfaa729b530654e","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.125.0-next.509884e7.tgz","integrity":"sha512-lTNMp4m9aSSBMoRz4XsJXOh8TAp42UmIwQPv6SRjadbqgvLuv5N0ox0wMEl7LppLGlrVzED+sIQRxLnvUNsSlQ==","signatures":[{"sig":"MEUCICeTNDxOOBNfLg2QJM0J7Jcf5OVmGEtbnQRP5wR5a556AiEAxr77ljndksvsnI7cVk7GGDDEkFc7kERbh52VjtG7jM8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.6.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.4","dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.125.0-next.509884e7","@sanity/observable":"0.125.0-next.509884e7"},"publishConfig":{"access":"public"},"devDependencies":{"tape":"^4.8.0","eslint":"^4.11.0","rimraf":"^2.6.2","babel-cli":"^6.26.0","babel-eslint":"^8.0.1","babel-plugin-lodash":"^3.2.11","babel-preset-es2015":"^6.24.1","eslint-config-sanity":"^3.1.0","eslint-plugin-import":"^2.7.0","babel-plugin-syntax-flow":"^6.18.0","babel-plugin-syntax-class-properties":"^6.13.0","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0"},"_npmOperationalInternal":{"tmp":"tmp/presence-store-0.125.0-next.509884e7.tgz_1516827610667_0.6335929820779711","host":"s3://npm-registry-packages"}},"0.125.0-next.90bb7dbc":{"name":"@sanity/presence-store","version":"0.125.0-next.90bb7dbc","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.125.0-next.90bb7dbc","maintainers":[{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"bjoerge","email":"bjoerge@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"9bcdbbf895303bfb433a5a2293862b10033549b1","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.125.0-next.90bb7dbc.tgz","integrity":"sha512-S7P19tDBYBvE3uuTHdIyIuBuaYmJfCkSrNH7RlkjYQQKoGfeoJlhB+AVRkg+2RmBL4wiQ8uA/DtPGIWEIP55uA==","signatures":[{"sig":"MEUCIC2E6ezoCtMu+WSZHQt5ISviw9+cuuaAy0a3IRg3keKQAiEArLaRUvfOkEf5tEQsGnIAerGTFmhvxvPBYXhWy7gZ1Ac=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.6.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.4","dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.125.0-next.90bb7dbc","@sanity/observable":"0.125.0-next.90bb7dbc"},"publishConfig":{"access":"public"},"devDependencies":{"tape":"^4.8.0","eslint":"^4.11.0","rimraf":"^2.6.2","babel-cli":"^6.26.0","babel-eslint":"^8.0.1","babel-plugin-lodash":"^3.2.11","babel-preset-es2015":"^6.24.1","eslint-config-sanity":"^3.1.0","eslint-plugin-import":"^2.7.0","babel-plugin-syntax-flow":"^6.18.0","babel-plugin-syntax-class-properties":"^6.13.0","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0"},"_npmOperationalInternal":{"tmp":"tmp/presence-store-0.125.0-next.90bb7dbc.tgz_1516828614920_0.48387635545805097","host":"s3://npm-registry-packages"}},"0.125.0-next.e8a95940":{"name":"@sanity/presence-store","version":"0.125.0-next.e8a95940","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.125.0-next.e8a95940","maintainers":[{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"bjoerge","email":"bjoerge@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"95f15f4c464e176584225c0f1f544fd3aeb6242b","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.125.0-next.e8a95940.tgz","integrity":"sha512-1234P/apgMWQKfatHwoYq5CitU9mdI/mIjpiGPTsM5+PYhj79jUTQUDV+LQStfK/vNkCDrHPe54QhJFE51LoqQ==","signatures":[{"sig":"MEUCIAV9nqU4u9ryh8pgXxtlovHpNcXum/FNRcrGzYxo5mzNAiEAgME7fSj80kDOJW3SYzr8tnKzni+qky4ZO1jc481QDx4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.6.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.4","dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.125.0-next.e8a95940","@sanity/observable":"0.125.0-next.e8a95940"},"publishConfig":{"access":"public"},"devDependencies":{"tape":"^4.8.0","eslint":"^4.11.0","rimraf":"^2.6.2","babel-cli":"^6.26.0","babel-eslint":"^8.0.1","babel-plugin-lodash":"^3.2.11","babel-preset-es2015":"^6.24.1","eslint-config-sanity":"^3.1.0","eslint-plugin-import":"^2.7.0","babel-plugin-syntax-flow":"^6.18.0","babel-plugin-syntax-class-properties":"^6.13.0","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0"},"_npmOperationalInternal":{"tmp":"tmp/presence-store-0.125.0-next.e8a95940.tgz_1516911375213_0.478663346497342","host":"s3://npm-registry-packages"}},"0.125.0-next.7f27340d":{"name":"@sanity/presence-store","version":"0.125.0-next.7f27340d","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.125.0-next.7f27340d","maintainers":[{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"bjoerge","email":"bjoerge@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"c17923c101c3a44229694823432b4de29414ba34","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.125.0-next.7f27340d.tgz","integrity":"sha512-ZV6W6m1ynB6Ux42fbQIXZvPcgok6pq0om/JGBovh2CGqbCiqmm1nrCRjF+wMpBdHxTW0yEyvbFgBnfyev/JaYg==","signatures":[{"sig":"MEUCIERLFLs9Hx+gZIk5TU58sfSLk9zZBEyCx3uGWa1ptxPIAiEAg5EdncdGkQYOZ5trCQTAzg8k3Mizb8uhwkB1kE9f/Vg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.6.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.4","dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.125.0-next.7f27340d","@sanity/observable":"0.125.0-next.7f27340d"},"publishConfig":{"access":"public"},"devDependencies":{"tape":"^4.8.0","eslint":"^4.11.0","rimraf":"^2.6.2","babel-cli":"^6.26.0","babel-eslint":"^8.0.1","babel-plugin-lodash":"^3.2.11","babel-preset-es2015":"^6.24.1","eslint-config-sanity":"^3.1.0","eslint-plugin-import":"^2.7.0","babel-plugin-syntax-flow":"^6.18.0","babel-plugin-syntax-class-properties":"^6.13.0","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0"},"_npmOperationalInternal":{"tmp":"tmp/presence-store-0.125.0-next.7f27340d.tgz_1517130550642_0.7063960777595639","host":"s3://npm-registry-packages"}},"0.125.0-alpha.593130df":{"name":"@sanity/presence-store","version":"0.125.0-alpha.593130df","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.125.0-alpha.593130df","maintainers":[{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"bjoerge","email":"bjoerge@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"fe65209aa6f50335ec9374df5ea6614e90b09562","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.125.0-alpha.593130df.tgz","integrity":"sha512-+uUqUGwlgegGut0IhPJw9WnDQpWG/uLFlFjx0iVnJ7O4mLbP5mDSgawVYAf36CYV+ScujxOK8roqeMYuXSzxbA==","signatures":[{"sig":"MEUCIHEBFeM8tjpA06EAFbSfiK//w9cyHJ0CETANDN3TuU94AiEApx21w3YkW29nK+d1C3tlnSfkb1MSsE3jAQCH0AaV8sc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.6.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.4","dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.125.0-alpha.593130df","@sanity/observable":"0.125.0-alpha.593130df"},"publishConfig":{"access":"public"},"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store-0.125.0-alpha.593130df.tgz_1517149859418_0.893036604160443","host":"s3://npm-registry-packages"}},"0.125.0-rc.0":{"name":"@sanity/presence-store","version":"0.125.0-rc.0","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.125.0-rc.0","maintainers":[{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"bjoerge","email":"bjoerge@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"bc1c57ca4696caba6c0e8c3fb25b6743c4cb511c","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.125.0-rc.0.tgz","integrity":"sha512-ssvJhAY4ErRuAEqGQ2vjaW5Qa0fsrOc/00eUs3TWf/tI3YkVA8bZC9hkUGjxrOnbG16xcqmcJ7OgNzor7harIg==","signatures":[{"sig":"MEUCIQCceHqS4d6hqXmEges1cU5rI/4tLcU5p7Hm++fuWYDbOgIgGUrH/g2gP6dmMpzDpDjd962ImZsTKNX/n1uXEa0TeXs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"description":"Client side presence channel handler","directories":{},"dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"^0.125.0-rc.0","@sanity/observable":"^0.125.0-rc.0"},"publishConfig":{"access":"public"},"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store-0.125.0-rc.0.tgz_1517244341725_0.8219670546241105","host":"s3://npm-registry-packages"}},"0.125.0-rc.1":{"name":"@sanity/presence-store","version":"0.125.0-rc.1","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.125.0-rc.1","maintainers":[{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"bjoerge","email":"bjoerge@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"6fb1858d501cabf44ac7447e27062bf73bf1bdba","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.125.0-rc.1.tgz","integrity":"sha512-YiHlW1HI7R1CjoG11sU8s34guzz8isWzS5o3n7sXaHAyZO9WpLtJF8ujOSfZ36AtHW3+h0sbY8vgeGQ3hXv+Ew==","signatures":[{"sig":"MEUCIQDuenlkCmfwJzKkxPbZI2Z3FXZnzT0vEgpVZsSWy1Bj9gIgN6sERdQur1qBRF6FEf0q7tNjE3pEpzes8E3BwwYDXgI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"description":"Client side presence channel handler","directories":{},"dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"^0.125.0-rc.1","@sanity/observable":"^0.125.0-rc.1"},"publishConfig":{"access":"public"},"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store-0.125.0-rc.1.tgz_1517250185604_0.9151923623867333","host":"s3://npm-registry-packages"}},"0.125.0-rc.2":{"name":"@sanity/presence-store","version":"0.125.0-rc.2","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.125.0-rc.2","maintainers":[{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"bjoerge","email":"bjoerge@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"9a4e902a777ee12331b90bb9ed8fbc93fc386e37","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.125.0-rc.2.tgz","integrity":"sha512-9gK6PiequEyUydBYGN39suma5ELR+CZHWvpGuL8zYoVZC0b4yLp3MEipN3Fr+YDZBebnLyidfrRIfvp17YcQCw==","signatures":[{"sig":"MEUCIQDY12mwPoney8LUAoijf2Wp8dHFLkW/mTH982ZbUXomJwIgJH2NPmzkyTztmJCG/HnVD7PhFHrS4ShqOZz6xgB9WR4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"description":"Client side presence channel handler","directories":{},"dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.125.0-rc.2","@sanity/observable":"0.125.0-rc.2"},"publishConfig":{"access":"public"},"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store-0.125.0-rc.2.tgz_1517250541663_0.5240705441683531","host":"s3://npm-registry-packages"}},"0.125.0-rc.3":{"name":"@sanity/presence-store","version":"0.125.0-rc.3","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.125.0-rc.3","maintainers":[{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"bjoerge","email":"bjoerge@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"100d78cf3973797935d933f164c0bef7b6eb81ec","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.125.0-rc.3.tgz","integrity":"sha512-7BlCaP4klKl2AiyWxe3SfquoFrBND97uWMwfzZLdiqMx4K9wNXFpQcUbweeSTYtpfBbzQfUAzDHSmvgCEN4a6w==","signatures":[{"sig":"MEUCIQD3bPvHa55T929hciZCl023XF0CzKVEPd5qs4LaJP3PSQIge9N+WH3hHhhk77CtR+4/gvEWM6h1nXfbwLeNc+PZFtY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"description":"Client side presence channel handler","directories":{},"dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.125.0-rc.3","@sanity/observable":"0.125.0-rc.3"},"publishConfig":{"access":"public"},"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store-0.125.0-rc.3.tgz_1517251039970_0.49216637876816094","host":"s3://npm-registry-packages"}},"0.124.12":{"name":"@sanity/presence-store","version":"0.124.12","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.124.12","maintainers":[{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"bjoerge","email":"bjoerge@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"7f9dea0fd6ea5f7cfb6b2858d60bbc99bd1b6056","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.124.12.tgz","integrity":"sha512-sawQ/8I8krdn+xxuzR7OOg6ceoIy6rOKUj7HOzGspwUsEGpb9YwaZiNLQDVboPhF6swr4jV2Oi7o1I4pG6MdYQ==","signatures":[{"sig":"MEUCIQCCm1BAtXkKt1jU9278ptO9HZy6I5QEpS0xBt8hS9xiFAIgYblRAa+8haKlgF07r7Padm9ixZMY+D7wt7PAbt35tBc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"description":"Client side presence channel handler","directories":{},"dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.124.12","@sanity/observable":"^0.118.4"},"publishConfig":{"access":"public"},"devDependencies":{"tape":"^4.8.0","eslint":"^3.19.0","rimraf":"^2.6.1","babel-cli":"^6.24.0","babel-eslint":"^7.2.1","babel-plugin-lodash":"^3.2.11","babel-preset-es2015":"^6.24.0","eslint-config-sanity":"^2.1.4","eslint-plugin-import":"^2.2.0","babel-plugin-syntax-flow":"^6.18.0","babel-plugin-syntax-class-properties":"^6.13.0","babel-plugin-transform-flow-comments":"^6.22.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0"},"_npmOperationalInternal":{"tmp":"tmp/presence-store-0.124.12.tgz_1517251555291_0.6867971075698733","host":"s3://npm-registry-packages"}},"0.125.0-next.c0a1c26b":{"name":"@sanity/presence-store","version":"0.125.0-next.c0a1c26b","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.125.0-next.c0a1c26b","maintainers":[{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"bjoerge","email":"bjoerge@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"09a488ab33b85a97e924c452287a9fb44d417a7d","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.125.0-next.c0a1c26b.tgz","integrity":"sha512-o/TpUap+J0anaZ/Kt2eGE855axGC7qEei/WGgGiTwTSNaBxx9LkmsN3U7tOCiVmrvFiYc1Y8Ww/7M5hdMXMgxw==","signatures":[{"sig":"MEUCIA0804IiorqLToLTzT5IuOMx+/rEvMDgDbdAdMWnXmSBAiEAoSAZOSSc8z068MqOIXKi+Mew70ciJj/pV4UNLdbaKXE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"description":"Client side presence channel handler","directories":{},"dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.125.0-next.c0a1c26b","@sanity/observable":"0.125.0-next.c0a1c26b"},"publishConfig":{"access":"public"},"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store-0.125.0-next.c0a1c26b.tgz_1517254928438_0.13144149794243276","host":"s3://npm-registry-packages"}},"0.125.0-next.d323ee1a":{"name":"@sanity/presence-store","version":"0.125.0-next.d323ee1a","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.125.0-next.d323ee1a","maintainers":[{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"bjoerge","email":"bjoerge@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"c5b7634ed2d51953551c91e93c364ff24b98f33d","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.125.0-next.d323ee1a.tgz","integrity":"sha512-IvMzK4Xdh0YfB3Bx4ZtWYAA4PgYFn12SjEMTFBmsRi33+mUarVaw40AhCCeYumDimN9qp8zKTaTKugzolqBigg==","signatures":[{"sig":"MEYCIQCyqXKbJi7Sae08AwfyUKAfc2oR0ghwcXwm24lyuo9HdgIhAPHoYggA43R1UGm45dwHCjN3Umy7oOjJppEQYFieI7ea","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"description":"Client side presence channel handler","directories":{},"dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.125.0-next.d323ee1a","@sanity/observable":"0.125.0-next.d323ee1a"},"publishConfig":{"access":"public"},"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store-0.125.0-next.d323ee1a.tgz_1517255799284_0.8990985131822526","host":"s3://npm-registry-packages"}},"0.125.0-rc.4":{"name":"@sanity/presence-store","version":"0.125.0-rc.4","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.125.0-rc.4","maintainers":[{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"bjoerge","email":"bjoerge@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"3c8422e37c7baa2203fd024f21b036f9e0a048a6","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.125.0-rc.4.tgz","integrity":"sha512-8i8/osoByBHcmCRcC7fjhYO8prVdBk6xc5IsgmflCECBZG4y/VEfbIfMVs3LxzNQJyK16yleaL9RtrvFJ8JonQ==","signatures":[{"sig":"MEUCIBBJ9og/xj7XTzGFxBNs6XI6U2lJAbY6WWRmm8OleUdlAiEAkNULuXDcCzUvTKXJNMvmBr+EDToov97Er3fWj3r0Uqs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"description":"Client side presence channel handler","directories":{},"dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.125.0-rc.4","@sanity/observable":"0.125.0-rc.4"},"publishConfig":{"access":"public"},"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store-0.125.0-rc.4.tgz_1517257461261_0.8797644802834839","host":"s3://npm-registry-packages"}},"0.125.0":{"name":"@sanity/presence-store","version":"0.125.0","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.125.0","maintainers":[{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"bjoerge","email":"bjoerge@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"6601d01f0f685b093e5777e11378c597cde98d7b","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.125.0.tgz","integrity":"sha512-qpPF6P9FSO5e8uIzEAMN1C4J3hLU5z/kUqat3I0mivgEHwV+B9pDy80lTI27FPKE9QbIGAVFjcdhpJUtgiEotg==","signatures":[{"sig":"MEUCIQCFrc9p+dJOiehZqr3SLAZayVMRzGwBojyBSuxCjZMcxQIgBAz/Vv5BlFRHhF499Ko25/026mDcRaT86mrNlv5C5Gw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"description":"Client side presence channel handler","directories":{},"dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.125.0","@sanity/observable":"0.125.0"},"publishConfig":{"access":"public"},"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store-0.125.0.tgz_1517315539314_0.9850353270303458","host":"s3://npm-registry-packages"}},"0.126.0-alpha.74ae7fc1":{"name":"@sanity/presence-store","version":"0.126.0-alpha.74ae7fc1","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.126.0-alpha.74ae7fc1","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"179eafc5dbff8073ad0433f7bd1268a045ead054","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.126.0-alpha.74ae7fc1.tgz","fileCount":7,"integrity":"sha512-gDeuWUay3sauBFdfOMKTfzPspLofwSytrDzrTdnIrRvZGZHaq1HMsQsHr8lcaOetMaD8q1WgameSxhuL0FIwQg==","signatures":[{"sig":"MEUCIBc7YOxC90vxxh6T4U6VkVhunpO7tVhd7JBWBwU2FoXhAiEAxF6yhNsvATou+NdVKjOqaKPT1/T7h9cMPAmT/VkgIzo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11254},"main":"lib/Connector.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"description":"Client side presence channel handler","directories":{},"dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.126.0-alpha.74ae7fc1","@sanity/observable":"0.126.0-alpha.74ae7fc1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.126.0-alpha.74ae7fc1_1518406026842_0.4452678031561821","host":"s3://npm-registry-packages"}},"0.125.6":{"name":"@sanity/presence-store","version":"0.125.6","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.125.6","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"4007811c2937a5ea78eb3f704330edd60f98a3ee","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.125.6.tgz","fileCount":7,"integrity":"sha512-bGUG9yEyKdCVc+RhbWZ/79jGkBRj5Pd0bglh/pdxFe/DUxlhht+vw4Cy9xNCfA3g76VKl5mfdwmzm6yT5UyqFg==","signatures":[{"sig":"MEQCIG1+KeBVui+DjxH6fdJzSrXuQyternTYtbe9otYPiGFuAiAoFiETFGvTAUdIqe9TWYDHyuiBWhdYBMh2oMVmxPE+/w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11211},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"rexxars@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"description":"Client side presence channel handler","directories":{},"dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"^0.125.6","@sanity/observable":"^0.125.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.125.6_1518601284269_0.9605682743794421","host":"s3://npm-registry-packages"}},"0.126.0-fix-span-keys.12d2645d":{"name":"@sanity/presence-store","version":"0.126.0-fix-span-keys.12d2645d","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.126.0-fix-span-keys.12d2645d","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"9250ddc8707ec306d72883266ab47c19ac0582e9","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.126.0-fix-span-keys.12d2645d.tgz","fileCount":7,"integrity":"sha512-DHIFoaCSyJPVxGnzESt/bmaMmWqaJY2x1oEwzQFvUq4G/C/uaJ1J47U7FrOkp9UKloxlMA1vsLjN3DdHeFUEDg==","signatures":[{"sig":"MEUCIBn5HYdzTne983A1HPzaxTBmYljAb0syoh3OLupuUvqLAiEAvUU36Brm+YaIFpWzpUbnwjUwY9uNpm3broOGRI5P6QM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11278},"main":"lib/Connector.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"description":"Client side presence channel handler","directories":{},"dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.126.0-fix-span-keys.12d2645d","@sanity/observable":"0.126.0-fix-span-keys.12d2645d"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.126.0-fix-span-keys.12d2645d_1518606456591_0.05062928755476759","host":"s3://npm-registry-packages"}},"0.125.8":{"name":"@sanity/presence-store","version":"0.125.8","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.125.8","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"52f813213a848756aebc211141bc0a2bd2933f15","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.125.8.tgz","fileCount":7,"integrity":"sha512-CAQECptHDX3e29/x3GHa36PesyxGNklGVDVd8Kw00bYaqHlhrF78cB7Lc9P4ewEt4zhYrETAI6JMqJeLJlTUog==","signatures":[{"sig":"MEYCIQD5T+3pybbeTrjNkw9vGyPzZzJ/GdfaEr0aM+xsnKpOOwIhAInzl9Hp2V1iYM0Tv6SYyMXA1biodQGk6FNNN3ak3B5H","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11211},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"description":"Client side presence channel handler","directories":{},"dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"^0.125.8","@sanity/observable":"^0.125.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.125.8_1518694589367_0.4820170742857963","host":"s3://npm-registry-packages"}},"0.126.0-next.a249ae9f":{"name":"@sanity/presence-store","version":"0.126.0-next.a249ae9f","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.126.0-next.a249ae9f","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"6c20e4a2ed1707164cd90aa561a07bb400f15809","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.126.0-next.a249ae9f.tgz","fileCount":7,"integrity":"sha512-gGXYjDfESpptq3tt4XGbsJnA9lokfCZbggEqivWjLYZEFEViHYxz2vUFah5wNbCXuNMzi/lOfhm9Qp4HVSNQwQ==","signatures":[{"sig":"MEQCIBz7yHbzLYtVGw37A79J0bsPCnjTsByL+LNmWJwaWFpvAiApY4g2NDHphogdvjnUNDMUnsXZUR+5E+9Ja+3g5lEPgA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11251},"main":"lib/Connector.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"description":"Client side presence channel handler","directories":{},"dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.126.0-next.a249ae9f","@sanity/observable":"0.126.0-next.a249ae9f"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.126.0-next.a249ae9f_1519576359699_0.2178258297468294","host":"s3://npm-registry-packages"}},"0.126.0-alpha.8a1ee38f":{"name":"@sanity/presence-store","version":"0.126.0-alpha.8a1ee38f","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.126.0-alpha.8a1ee38f","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"cdea507bfe121cf0969375162b078a31677fd6a2","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.126.0-alpha.8a1ee38f.tgz","fileCount":7,"integrity":"sha512-KQHwajQKSdHAEi5HXB53Mnc+MmUO3UYFoQaijYZCDu3rnPkC4zFo/2NhfLK6NyCaoXyLTqu8tn9yZCuVU8ZBmw==","signatures":[{"sig":"MEYCIQC72JMU9IEuf5GksAEv1FWp+inj0p41s3s5lBdv2PXrCQIhALEP8/F5ejdjfsBbEPH39NZIvHuI/LBMJqHZYpKn9XJJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11254},"main":"lib/Connector.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"description":"Client side presence channel handler","directories":{},"dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.126.0-alpha.8a1ee38f","@sanity/observable":"0.126.0-alpha.8a1ee38f"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.126.0-alpha.8a1ee38f_1519632860272_0.09156540627685272","host":"s3://npm-registry-packages"}},"0.126.0-next.febffa69":{"name":"@sanity/presence-store","version":"0.126.0-next.febffa69","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.126.0-next.febffa69","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"cf4002e8e391a71917b1025aaa8f8359bf89fa5b","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.126.0-next.febffa69.tgz","fileCount":7,"integrity":"sha512-kfGe1bkLFu/8HBJ7cc/31Yla9gAy5BplC3taG2VSgl28Bibazf4CHceMb1NtTFyUNta6KPM8wtqXyylj+BwyUA==","signatures":[{"sig":"MEUCIQC9a26et8xpgqPW6w0tKigrJL32/wmHc8/rTQxvOoC0GwIgLkZdXWPLbN8OKYcFK30lq+1bi7zORBo26N0znlyqL3w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11251},"main":"lib/Connector.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"description":"Client side presence channel handler","directories":{},"dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.126.0-next.febffa69","@sanity/observable":"0.126.0-next.febffa69"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.126.0-next.febffa69_1519979707609_0.2056214468466162","host":"s3://npm-registry-packages"}},"0.126.0-next.536d8adf":{"name":"@sanity/presence-store","version":"0.126.0-next.536d8adf","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.126.0-next.536d8adf","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"f2915dd0ad32be27937ebeb3b6c019d55fcb261b","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.126.0-next.536d8adf.tgz","fileCount":7,"integrity":"sha512-zCpNaiSfqTDOVBhJjV64AR58NWDRKeXiC6ia6hCW4iFrOu//TrWDVK3363NjuA9Df0P7pCv5i0AUPJEdU3MC8Q==","signatures":[{"sig":"MEUCIQCPf+x4d0RkJIwWH8bwyTcnZdpMbB3dcz4KeS8IgkahRQIgIoA2K5wYjdSAUaXkA1fwMaEN6zhwCCK34kOrZFeLPzU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11251},"main":"lib/Connector.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"description":"Client side presence channel handler","directories":{},"dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.126.0-next.536d8adf","@sanity/observable":"0.126.0-next.536d8adf"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.126.0-next.536d8adf_1520278240551_0.6786539192472822","host":"s3://npm-registry-packages"}},"0.126.0":{"name":"@sanity/presence-store","version":"0.126.0","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.126.0","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"31b6f0b29400f4cb16002b32fd6c472cb82db70f","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.126.0.tgz","fileCount":7,"integrity":"sha512-tiM6hiPBB9D5qVpnHhbzPDbshmrVV/QSFRmnpst3rXHV8yErdihf6bjI6HdOiUQ2shv83O5KIygQt5n1o6fyzg==","signatures":[{"sig":"MEUCIC1fei6lJ9j3v6PcQ9XBmLhtmr02Vc5hEel67TD6aY5vAiEAvyPD4ppzIUhsB0HpHupacKC4PNIqfItNpI3UcsRodVw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11211},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"description":"Client side presence channel handler","directories":{},"dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"^0.126.0","@sanity/observable":"^0.125.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.126.0_1520338620284_0.2801774564733468","host":"s3://npm-registry-packages"}},"0.127.0-next.f6814493":{"name":"@sanity/presence-store","version":"0.127.0-next.f6814493","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.127.0-next.f6814493","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"cedff7535929ffc0ddfb9e728fd21a56b88b1036","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.127.0-next.f6814493.tgz","fileCount":7,"integrity":"sha512-H5XzBMqar8jpLljowyZpNLv7BXgbt3vuePZ4gdAmkJNH24UVGw+LQwq+6hUto1Uvd3k67b395Xvlgek6Yv8v9A==","signatures":[{"sig":"MEUCIBBVGWlnWtyNwfyBukManDSMRloZivnbfOVt5akz+favAiEAhsPaIlbP93rfariVOWzSC1BhGH6395lhynH/3M864ho=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11253},"main":"lib/Connector.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"description":"Client side presence channel handler","directories":{},"dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"^0.127.0-next.f6814493","@sanity/observable":"^0.127.0-next.f6814493"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.127.0-next.f6814493_1521108062031_0.13295234794807342","host":"s3://npm-registry-packages"}},"0.127.0-next.39c2be50":{"name":"@sanity/presence-store","version":"0.127.0-next.39c2be50","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.127.0-next.39c2be50","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"4bc96aeb3e5fdfdda3160beaa9ddd765d60b978f","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.127.0-next.39c2be50.tgz","fileCount":7,"integrity":"sha512-XJpn0zjjTmk3DiXc4katkJRLtNbAOZEsY1J0MsLmV2BS44vEUMuzMsvLkS+O4XUdgMaqsPmWjwwVJh8QFj2/SA==","signatures":[{"sig":"MEQCIFH4cXiS3dbosHH/BpQd0WJu5W33mOiG2N8afI7x0s77AiB42QwpY6mWr4Nx8tRDTedanszze1AcoSZLHSh2CET73g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11253},"main":"lib/Connector.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"description":"Client side presence channel handler","directories":{},"dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"^0.127.0-next.39c2be50","@sanity/observable":"^0.127.0-next.39c2be50"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.127.0-next.39c2be50_1521114061666_0.48329938551781937","host":"s3://npm-registry-packages"}},"0.127.0-next.2eed79ff":{"name":"@sanity/presence-store","version":"0.127.0-next.2eed79ff","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.127.0-next.2eed79ff","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"2aa2924810ab95a88666f01c48985fcd91340cc3","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.127.0-next.2eed79ff.tgz","fileCount":7,"integrity":"sha512-/UdDkjfAmdF1hOTVHsWQG5peAy/gYiC+o7Ab4AE6Cxx2GV1M9nVo5kh3iWaDjzk6nE0W2fVpADcqgS6r/3EcnQ==","signatures":[{"sig":"MEUCIE/FT+2CJ8pm9ecRVfzq3G87IauIvwghMXvc1A0EmQN0AiEArg7stjDpXysLIi9xA8iOLu19QAIH4Y4rCahmP3w7Oyc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11253},"main":"lib/Connector.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"description":"Client side presence channel handler","directories":{},"dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"^0.127.0-next.2eed79ff","@sanity/observable":"^0.127.0-next.2eed79ff"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.127.0-next.2eed79ff_1521117409279_0.7357331098752349","host":"s3://npm-registry-packages"}},"0.127.1":{"name":"@sanity/presence-store","version":"0.127.1","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.127.1","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"9f438c5f8861f65e3f42d6d5420ed7fe884b38c5","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.127.1.tgz","fileCount":7,"integrity":"sha512-w+CnSIHf+8fUpNxbeBZYPxIxgfV2eNar15iYgippOo8Jrb91Oc9bX7zo/ok+D3/TSQvLAp6xkoyBqjF0fium+w==","signatures":[{"sig":"MEUCIH6bM3Tm6S3MLzmAdjANZDbZNZxmLGph8aq/fQjNtGkMAiEAiM2de8qRSnOBnIfN+1pvwdY1lmlGJvxnwiFkQYo1WSU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11209},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"description":"Client side presence channel handler","directories":{},"dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.127.1","@sanity/observable":"0.127.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.127.1_1521128160547_0.24897690506639214","host":"s3://npm-registry-packages"}},"0.128.0-next.124ce231":{"name":"@sanity/presence-store","version":"0.128.0-next.124ce231","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.128.0-next.124ce231","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"49be28db5b2c19b3c1675d229579e9cd9703f14f","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.128.0-next.124ce231.tgz","fileCount":7,"integrity":"sha512-vW86R1oaMSQEq0KW03mvUi/kQupjuuJ8koPP+FUhwow8RHSjCfxa+uGeZGzup3QagZlwvV8tZYQJE2yOAv9Qxw==","signatures":[{"sig":"MEQCIEPFQ/9in2uvuVL33PRff1tLn44Xqr+ZroNyktPfzOPTAiA+AUCIt+t80Ma3KCtxBdaTMjYuKEAbJPZJLJOJs04VWQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11318},"main":"lib/Connector.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"description":"Client side presence channel handler","directories":{},"dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.128.0-next.124ce231","@sanity/observable":"0.128.0-next.124ce231"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.128.0-next.124ce231_1521719648765_0.5871447175511779","host":"s3://npm-registry-packages"}},"0.128.0-next.3c762f83":{"name":"@sanity/presence-store","version":"0.128.0-next.3c762f83","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.128.0-next.3c762f83","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"4f52204879832e81beb1a9d7018be67b4c5c374a","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.128.0-next.3c762f83.tgz","fileCount":7,"integrity":"sha512-DRfg2pu0j/NaKuwqlVVWZIwLk7SwZcmnl/trZdKpWAb9TuoHxTHJ1FiSzeCzIoLcpITvUbl5JKpEl1CYmcb7HA==","signatures":[{"sig":"MEYCIQDsGZjC3hoqBQMX4dM16xFT1Xuv6yaUiH5/TiqSQdpUfAIhAOoqNtLEVdsmDusz8Z3q4kYJzJKwLS4rQ/75wieih/Vq","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11318},"main":"lib/Connector.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"description":"Client side presence channel handler","directories":{},"dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.128.0-next.3c762f83","@sanity/observable":"0.128.0-next.3c762f83"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.128.0-next.3c762f83_1521720777441_0.10402358985971905","host":"s3://npm-registry-packages"}},"0.128.0":{"name":"@sanity/presence-store","version":"0.128.0","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.128.0","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"5cfb24b2118c33ad121a516e52d9df8f7c20f396","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.128.0.tgz","fileCount":7,"integrity":"sha512-paNJGh9hKS0IgXDVD5/MQD6d51MVQMZrHyVcqMtqoP5s3Q1T0+XNF3/vvdRe6miLOkkQPnOW3WTQcQjTj/biDQ==","signatures":[{"sig":"MEQCIBaj+wWPW8EhwKUmxWiEpdJ2NpxLJiRllD7yDNCcHQqGAiA5qcNzHfnpULGSQOhUUpeO3S0qH0ZHQA9DBdK6x+rP1Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11276},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"description":"Client side presence channel handler","directories":{},"dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.127.1","@sanity/observable":"0.128.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.128.0_1521726413827_0.6408071651956779","host":"s3://npm-registry-packages"}},"0.128.1":{"name":"@sanity/presence-store","version":"0.128.1","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.128.1","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"27c896ea5d7af28af904fe6d5a53b41500614982","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.128.1.tgz","fileCount":7,"integrity":"sha512-roLaFJufFCAEQGCS7rQbtSwSNIlyjaASV724p3hJ9xbJiEFxFl4Xp2Kk8fIJR7jukdAgIOc5WDXxUqxGhp7SBA==","signatures":[{"sig":"MEYCIQDDu2IvNB6r68WvGiXvACDJXjoKtpBVMpC/lcGNTt3cmwIhANm/yP9/o4YwqdZG+ljO3oD6hw788v8MQ7ifcdSMTsTt","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11276},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"description":"Client side presence channel handler","directories":{},"dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.128.1","@sanity/observable":"0.128.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.128.1_1521727516292_0.8295239670509149","host":"s3://npm-registry-packages"}},"0.128.3":{"name":"@sanity/presence-store","version":"0.128.3","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.128.3","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"61b0a4ceb8c84c3f2d847872e663273ce1174367","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.128.3.tgz","fileCount":7,"integrity":"sha512-UEOmWOWRcQ8M2DGjpbsqfy+ikz/fnqkK2OKIJY9Ch2wkyZ0J/SR3R/d8xMKo5yew8jn9nNvHF/jVE/VddDvUnQ==","signatures":[{"sig":"MEQCIAv7fgSOpFG3/Bx56Hw/X1HmdWlevhIi+QK75px/XMemAiBODQNfKzbr+EG87Bvw0hUvSp9HRBgyq2unI0qEvr2cig==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11276},"main":"lib/Connector.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"description":"Client side presence channel handler","directories":{},"dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.128.3","@sanity/observable":"0.128.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.128.3_1521728043223_0.8877773566024405","host":"s3://npm-registry-packages"}},"0.129.0-alpha.298b96b5":{"name":"@sanity/presence-store","version":"0.129.0-alpha.298b96b5","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.129.0-alpha.298b96b5","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"cd8f7264bb5a0e5ecb0c50debc4341cd50ed0ecc","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.129.0-alpha.298b96b5.tgz","fileCount":5,"integrity":"sha512-d5sSFIbnyyMMxUul5BEdJBHUHI08moeEwGloTJ/P0nriAA0eoLKOfmwC2JyMV0IBDBqJICgmKT66Uk+x2PyVCg==","signatures":[{"sig":"MEUCIQDsVQ8FCM3dqVp1+NM29YMvcZ6nkPXcqkFDAoo87FI5fwIgf1oHJR9yqGPw+hrKYMJVc5IAeezs2L9xlU/BDB7aVQs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16050,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa1hLhCRA9TVsSAnZWagAAwy0P/1lnfcoACGXH5YfNOo2s\nxRr9B6zwtKeRzr77NwDHtsYM2v1sNaQFLVjha0bPfW7lBZ7P6p5VBaHN0tZp\nECLa6o9FmZZBVfkX+ylfy58S7ESFuBIzfP/66flW9RFiDHqRYqrJDWPzAk+W\n1gMuk4eG7S5iR6F+MNP63OghrUzpUfAumIrafhbda8/FYB21NBlhOZHi9vnB\n5hMsiTlEi4Wm0MkXYFgUpxN/DiBb9a4O+Ps8o/x7yug0/qqut8ZfZHnjUzLg\n8p+TUzUL1lYMqEjO7v16B4lujUvQtumXx7wMXDzMMbbJjx41NEITcPC1WdNi\nRm8PPmgEzi/OxclW+t6qA4wMjoAZVBRu8+pohpJbOKH7b/fi0s6SCUepBF7X\npNr2zuL38XAhqsoZI7RxAw/ZMjQeFaHRb/PS1EmPLDYLuwMaKlY0KE0XbHrT\naeID4k3O8rN5EJGpY/7lfLa55ucQDQezF5dcOsn25vFcmt2mTPOlT2bZss/M\ntd4DqbftcV33BurnDp1bPsXNOjNuyKV1K13j65cjki0kKHhOGF5179GoMhrI\nLayiO9Leu0ZQ3aDkJX5wK+q9XfRvyhqqEWvrkAJo6EC/t4wKtAEF4XkkbZmJ\nPowJyZ+xrcgWfKGsu4Cdfn3O9AK1/pA8wzTiO/goGx5l8ZHAN37464LND5YC\nr217\r\n=UpPU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/Connector.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.8.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.4","dependencies":{"rxjs":"^6.0.0-uncanny-rc.7","deep-equal":"^1.0.1","@sanity/uuid":"0.129.0-alpha.298b96b5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.129.0-alpha.298b96b5_1523978970035_0.73371385003134","host":"s3://npm-registry-packages"}},"0.129.0-realtime-block-editor.3bcf6473":{"name":"@sanity/presence-store","version":"0.129.0-realtime-block-editor.3bcf6473","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.129.0-realtime-block-editor.3bcf6473","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"a7e189f03fd7c3a2e55f617d85d3b1e94c619bb8","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.129.0-realtime-block-editor.3bcf6473.tgz","fileCount":7,"integrity":"sha512-7S+MumNNXfNji/qUyd1MDPtcVih9aGDSaPxryGmCTnR0mTCY8Ses/jtqtjtfYmauzWTWx+dA6TYxmjlwidWIqw==","signatures":[{"sig":"MEUCIEryu/KtEzm1FSnjFKad4nYq15sSgcLqhdXKs2YtgSueAiEA2fPN5TnlRFUippONQMw9RFrbzKWfC6zLbgtd5cixJ60=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa1w3hCRA9TVsSAnZWagAArc4P/iB78oS99fR/HkMZeK32\ndaVmjnb+VtBMsNLhcW1KefyT1zIAxOsBFWdYpHr+ATcffYaNGI6sbG2r4t6A\nbkAi6DhAYgVUzk9dAaqdI4k3wZWBwYWoSKRdYen0jUDS9neDsuwlSUApTkzD\nKPb7ba1abyY2KFE0MJ3WdlzH1xgvdHuh2RXm4PsGAydmExDQawPL/ZoT1eJa\nsGglshg0ad5Pymy3WMkRNFTz5GL2EFfkgkr7VG7MvxE1AyCxAk3U2p2a1GjR\neaZaLVCibQpVyO+g/OSWQNPt7GJHiVXlIaLIwu60/PimMzDnj1wiI4NaPYNA\nKqDwAugdmudJc53sAyHwJW70Mol4ur5ojuX1hTOpEToUIWRgJJPw32jhioaJ\ncMG1oeTOeypIhsGIFzd+JZ+fsiIxZEHotHs4UvucVt17W1c1gIC76dFhKAEW\nWmNyctL+L6id4/6W0cM4S38zQSUn5x/CALJjvBmc5F/uWcvfMDSgEqx5iqU9\nuVILIuG1FEWrj9sW7Sh8B8nWhHTgy4kwhfTXg56PejO1B6jW60nWa0tVv1VV\nS3KFOLzfw6vJgQE8okK7cHbPBfsFA96gZ8r1rwWK1kbuJ7Z0zvptuv4gEjrX\n3tcw7wGZ70kQ+s6Ano4Ups+q55sjkq79BHPe+ad3t4ycdLfWboWor01rkdjp\nYnuE\r\n=TPdo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/Connector.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"sanity-io","email":"hello@sanity.io"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"description":"Client side presence channel handler","directories":{},"dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.129.0-realtime-block-editor.3bcf6473","@sanity/observable":"0.129.0-realtime-block-editor.3bcf6473"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.129.0-realtime-block-editor.3bcf6473_1524043233315_0.8095727433534494","host":"s3://npm-registry-packages"}},"0.130.0-realtime-block-editor.e9285437":{"name":"@sanity/presence-store","version":"0.130.0-realtime-block-editor.e9285437","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.130.0-realtime-block-editor.e9285437","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"6c499918dfab3b8e50b14613656afbe9e6dabca1","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.130.0-realtime-block-editor.e9285437.tgz","fileCount":5,"integrity":"sha512-QRAK9Mp134acWEUFK7dIVAozDgsEl1wdi1C+mZLSQPFQek3Exh0jbV0PdT5mHIdU5+P5Ago+5RMmYgtskZb1xQ==","signatures":[{"sig":"MEQCIAOs/1dkJpQXmFA665BKsFNk5iVSlcl/JincHcYoAx+7AiAa5Q3wlnnoFvcXf9FoXfLgkzvlsz/D08soLCWFinZLlA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16232,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa30DkCRA9TVsSAnZWagAAGQ0P/jof5i04PrBUIMefXVnb\ncCMVCxnNUI5WUhU0+1TYm/ycrA/4LC2agn3CeqDa3Lh5MoWnS0YT6AIOb5hf\nWtI8ImhRf7R8G8xRyqg2S0OizM0XryNB5NLN8Hw/Pd9KIcEhkaZmTZcNn0sd\n7cnnjzwze9h7/XILoSQySYADix85WRrRXcpnLLhfBr51/Yu40GUrTD9Comdk\nnKD/hibopPy9G36rbdiu7dmrZu2rJ6UHv/qLKoY3wjEtrRusKKzDOF2hX/Si\nugwp1aUOpM2I9FR2iLfF4NGHtMCSMo5vgPH7Y9aULRVLWzu0M72lStlRdHWs\nHVlORQ87qpZzeQP6SgWQlcJzo0UbZPF0m6AsMfCOodJHxRwvE/mVHKqDozNo\n6SzGKCg+ahwOATcM2cZmQPm5x7Ftr0vFhyNaKx1w3gwQDr0xUa690JbVOsH6\nr65mSk1Le5dSTDlYay7V69xQG7mMQW0wPRuwuRC6L+9WiRzgLoleVH1/f34p\ndqjesCydWSSVwn+LeaBRdg7ML4XmRe5FGPznX7ERA/0c+cszoJHgIjIMSPH6\nLmlSlxLCEgVSCzo57dSX98vh3uDsRLycedlfeASPmecXuBhxOlCKO+my6REX\nPTke/6kQmNpICDh9CT0Zdqz9Wbx4vQYblzn04NY5txqDTUqgUr339ypE8n4p\n/Qzs\r\n=4eRC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/Connector.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"sanity-io","email":"developers@sanity.io"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.5.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.4.0","dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.130.0-realtime-block-editor.e9285437","@sanity/observable":"0.130.0-realtime-block-editor.e9285437"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.130.0-realtime-block-editor.e9285437_1524580579440_0.6011079246431483","host":"s3://npm-registry-packages"}},"0.130.0-alpha.7e3ea3ad":{"name":"@sanity/presence-store","version":"0.130.0-alpha.7e3ea3ad","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.130.0-alpha.7e3ea3ad","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"d891adf731535427b7f0889d27b2a8f197d41663","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.130.0-alpha.7e3ea3ad.tgz","fileCount":5,"integrity":"sha512-R3cNQpBZX4FU/BxYJVm6des3PP7068wzK1g1qj852dEu3WXGeQLFIFAeA6643GKpksYbDD0cdqj8XkmaeLxwvg==","signatures":[{"sig":"MEUCIB1qxJWj/0JFZ4AX3PzUbyTQiiUJ55DEBJpq+HPN6H9IAiEA9wCyLvb6VDCdxmQ8L7pU5Lw+SDZ3bsKHAnpUxrgjOu8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16352,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa43v5CRA9TVsSAnZWagAAt2cP/RtykWbPPhdhbf+bwy8D\nzZIiW2e0cVNxxj4vMa+HJ+gWVC6U9W9oLK2vjGE113AR83ZBe3sHSIXz4+aq\nq4+ZqX3AkMhMN/tNAITvJuwoP6K9M9ZnGoDfOU7XCJ2xvt0Nr7wxiZS9SIRW\nIFapOIZRYXnAZJ8hfJo/iy1UmRiu5mIOATbl4USGCDcPP+7vKlW0B5WpjeR2\nAFOTg1YHM0g8B6d8EwX3Y3nvvzVqaDi6rk+cQY4LqXmDtE7fH/Wir7iwk1Fp\nkuxYMlqnesSm70+lwSHJXZ0ZrjCIiRduppP1mX4mQ32X/MOAmeCyfKq33dMV\nRIBMPrIxTF1DyqbwhOnLFVAGtg0wLgdWgcpHSTblXUdQARh5WQBTcH10lVfn\nTiRwXhWVDT3DZO5VjfRzajMxUXUFxRnAOf/x8xYZeiy7lcwAtsx1uLrKM0HN\n53rtF0o6bQf3nFKJos55CxqFvV60XYvoUMf33dD8OOEYkq9mNUiKJW/2mX7+\nIx5BeDZj5n24JfnROeUn0yAbpA/oEJllGdJIZkOpQOeKQFFGV29BltIOQMSW\npEy8pAMaifDs0xiDOGFQUQRd9ceC91ogwyGeVEnPufXb91EblzL7XnMVMunz\nNU3p1kDJYytlrehFzOPII8NXQ+knnAQvT+n5kQhIHNkYij36hMtcHK+0u5o4\n/0J2\r\n=mYuU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"rexxars@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.8.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.1","dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.130.0-alpha.7e3ea3ad","@sanity/observable":"0.130.0-alpha.7e3ea3ad"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.130.0-alpha.7e3ea3ad_1524857839523_0.32964426905620114","host":"s3://npm-registry-packages"}},"0.130.0":{"name":"@sanity/presence-store","version":"0.130.0","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.130.0","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"3b8c74bda3204d87b658e89d8f2dcc510ea121f3","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.130.0.tgz","fileCount":5,"integrity":"sha512-Y0oIJ+7S2B/08xTBQL8PrYeiTdNkImgjjHyEDKKRJTE+315/i4v9lmk5ukWi5waNCr0oW+tl5pNYpSgEeDqM/g==","signatures":[{"sig":"MEQCIGH/1DyuNIGApiP0sbE0ULm7T7ZSfqkHtj8o5tz24MCKAiBGg4+Xu2qGyG9QEb27jsa4zRWruqOvBJewGgT1s5KIBg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16352,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa6rOTCRA9TVsSAnZWagAAuGIP+gPFGL+ppgeZILACCKGP\ngNzYHfloRrtPBoULKxiK/Cb6W/rs+8Vbqj63eSo+vu2Kdncdj/BWe9FP69Is\ntLM/WVa04jxrQK5BEAoYwlsSQ5qBTce4glq53DjbVGJhDv6xwPqTwOvxZoUN\neqkeiaoE9gHcO12MCXyQqJkWh87a3krQawvndFsKD3IRQqM63CjavsDOry/U\nRMqeTpaeJwfKwS2JLsWhDw2N9NuQelKyW1260h4TOO++bdFkw7jxH1fHnC1u\nA0/GU3tzY15gz5y4sD4l5tPmh48RvfaePkxZn2qMsKv63joIjWg7SDbTlPFq\nJj6gXKkAZ/PTjMPxuCoT+8YdjXYKEEFNgujRWSeELnT8XkFMHMsjztB8Z68x\ncgwy9ZzoG+Xzd8gEYE8Bo/Ghtrezrxw5uvdQo7uAPVtPsMSmOlkwzq7eYptf\n39/0Fg0+rvVSvv/iU3E9/UAWH9fGjBG7M1sjxbLpoqIfksx26kAChXxBPEcR\ngyCx31VJT53i2afia9HFO79PjH37R2mJOsz+lrYO4CZ8uvaqsWppYv4jck9A\nfYjIhoOdn9QaYQdM1D00/AVt+Rqz+EeN0rbKrcc8la9dDNp8EcWzd4oXb67s\nTQsauMB+3TU4rfJGwhrzGIPVces9XsnK2M+iZ3buwzVWpKBzIJc25cD/h83x\nkfuv\r\n=qNhs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.0.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.0.0","dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.128.3","@sanity/observable":"0.128.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.130.0_1525330834903_0.28220758312997996","host":"s3://npm-registry-packages"}},"0.131.0-alpha.7b4bcb14":{"name":"@sanity/presence-store","version":"0.131.0-alpha.7b4bcb14","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.131.0-alpha.7b4bcb14","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"1150c41e4752c9e8ffd0fe8887e0c89c01b91e79","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.131.0-alpha.7b4bcb14.tgz","fileCount":5,"integrity":"sha512-QkaQ/M9B7JtSL3XhwQBdyXx+Z8VuL4GA7S7M5vUmx2m/zRwZQhLDAfPVT8ypoY52+RopbbqKA3xn0pwWv3zmmg==","signatures":[{"sig":"MEYCIQC19SC8d7D2hfSYxfZNVEMuxq6t7S3TdzQLfJm43nzgAQIhAOBCKp/FP1x1NGijYPH5T9+vhR/gMkdG5vEWwkRIRt4O","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16397,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa8XO8CRA9TVsSAnZWagAAiloQAIqyB6Kgf9Mh6/h69vz4\nAeHEPKim0agpYqv+MEfOTFozIVYJhDetXKPrtNBJjaEyq+l5F845D7ed2lCI\nJ5zrjSNCvSy9yA+zuFPL3B4WmS8ZYrRSC2JJ1xg8MIaQqNVOKMi9i5QqLqWh\nzZqj5shuN/QPnx1rQfDd5m04RqufHASY/Hfgrjqom4CMjczdUgeB9bP2TJ6H\nFXUOPQZFEZYH4bbZNqAU8AvcYJBgCPhnAgx1R53Vir5hoBSHDQXD9Seh3Ci7\nqDgLlcOMk/ZGPQ6ed38iMa27qaHDxQNSF4d+r5QqXdygPEBCjX4U+BEet+rA\narSrZSc5TJJdo2sXndZnqfuyQN54qm6qv6DiyIAZrqEQDn+l4AnyUuQX8/K7\nAQinqZDQhaKGKNyQcFLWJIPSOCX86LUV4cjVjoOwgd4FYFpEjmcT3cFNGydN\nF4O6ixYq0LStZgHk7BmN8XjlYs3ZvacskpsB+kE8GB6Y3fbt9OtnBuzuSTlB\nMKwV6osazpEwzPG42OltGs7qLJhyRGjdDrKm5Kk0jJ3UEgm5p15M+ktYPVUY\nI4lbX6HJH+8AGp3LV+pBWnYnLDC8gGoJYtrfjclfcEic3AJheCNQATPMl+6M\neq6L1Dgi6IcuxE1NedvUzvwjusg8y//q7PnPEyFKbjxo9ggiSDqsNWiZLeVP\nj3wq\r\n=tO6P\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.0.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.11.1","dependencies":{"deep-equal":"^1.0.1","@sanity/uuid":"0.131.0-alpha.7b4bcb14","@sanity/observable":"0.131.0-alpha.7b4bcb14"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.131.0-alpha.7b4bcb14_1525773244157_0.07724015682217433","host":"s3://npm-registry-packages"}},"0.132.0-next.f8f265d4":{"name":"@sanity/presence-store","version":"0.132.0-next.f8f265d4","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.132.0-next.f8f265d4","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"205a5b6993e06ca50e0073108e3d1930fc635f9d","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.132.0-next.f8f265d4.tgz","fileCount":5,"integrity":"sha512-DqmDcHZ7sN6L4ip9ByAiSTKoiHgRiOVBnBgnUVleBMurxq5BJPaLRUte4fmeDNj/1NUNIx+7moVWRqVZwsbQNA==","signatures":[{"sig":"MEYCIQDunDEciMNvJBK3Exl7B+6V6R0nDl6HjpSGghFQFZ4QggIhAP8kaNTm60PA6hFYEacMpoS9uDo2gHkCVMvtSA/yUYyO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16248,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa/ozqCRA9TVsSAnZWagAAqlgQAIDG59XEQ73uTJWNPvzJ\nob0Iu9ck+wat6OqF0U7DSCpErogAMK/fsn5mPkXCXjDsBPyYfNmE6dS40Pny\nnjCaJu49AjDJNFFYRU7RloFU1xKkwMw8B+kP7tcbx5NCGfhwYUfBEydF62vv\nvn1HNnOiX689Ly/UHamn4x2bG4TJcodXYWNtXNcqQsVk5XrcLcvHMzHdDkHF\nwRNWAMN4bSuyycdqPgsN1xsvZjl1B8/YcMaN8J1xsCRfshIO9mXt5OOfB1Wd\ncDzlFNRa4PDTTSY1NW8LJsVNOkZnn9UkRiy58woYCJc76R6uUR8b1An81VTd\nVFbtSFf9PzExv40sB5ZGhhGjzd8e84nI1jsLBmojGDAj+Z5UYIik7ODIEzwa\nDjhKy+w39E8RHwqofII3TBb9rDU38WaT5STA8ufmeCxQtxnN85GE8ZsskKWK\nVYZ/zuNLTttHF+8De747bTNK1fPpY9syHq18Ijsrq1o1VarMmJBZIxUu0tvX\nBv0ZV9AsOU6CeHw1Imc/15907nUzpCN6vruUFPWcdRxtIN3wCRb5kUYa5DIP\n1F9vPSgt3C7h6jFGg3Rz5YTN0thkr6xQJHi3y0Q7a+DlA+FhPZmlvtjKNxPb\nfbaS7RAjdZCyJQi7tId1oK5MKZG/Q0KEsRJBfXv+LFMAh1+/8ROtF9Ul4Iqa\ndOwJ\r\n=hiAd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.0.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.11.1","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.132.0-next.f8f265d4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.132.0-next.f8f265d4_1526631657989_0.10540479519550328","host":"s3://npm-registry-packages"}},"0.132.0-next.d3b8c54c":{"name":"@sanity/presence-store","version":"0.132.0-next.d3b8c54c","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.132.0-next.d3b8c54c","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"443b004eee4d25f0f9c99de6a2f3bb9d147705e4","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.132.0-next.d3b8c54c.tgz","fileCount":5,"integrity":"sha512-/A0/t+HPTjIfQCcqdoWCk78sgZcl+RsLK78V9XMZrdos2au5HL7d+Ml7ntSGE8Ak94qzjnqndvPP0WSAADTV8w==","signatures":[{"sig":"MEUCIDz2d/b9C07XFP0ueBaHqSnOdtSWp5E/YS/9HGXWnDuaAiEAsx31yR7y2XcOWBeqtIvvYUmcodcHNEKaFhwLjQ4b2Hw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16248,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbBYLPCRA9TVsSAnZWagAAzOIP+gIcrIKhWPfvjdCrkakR\nb1+TWPdWVD8Z5qPigEN5RTlgT+yFtm9LCjLmKtuNX+DevEDzW2cGufptvhL2\nC3H7oscqOJNkfIN3QTkSqXkkIyAJkvLAjbyIK/YceFCVA44rLv2DJ3AuUDHx\nkcLGGq5d3fMsGrnV8NCW4FUm3vPq/Byl4AcjBRXDMQv8fUSJWGcCqlUu+q2m\nSjKohNzZlkvQM6zXMJBMFY7CHQTw0gNo/cArK1TereFytyFOn9+E7e5dRmss\nliMBdDWkNAtlPTPaD/TET2mrqA0WCJFgwFnS5wu9mNmkrugVnDsJePoJG2lD\nh2FguAMo5kLaQ8AqJVAO6ofSh+PsKk4iT6kUv8E2R4/vkJAI1E95faPeDsjd\njTSZRlTyimsFpJCQHkJOBu8GtiSkbS/H0frMBYO2zW7EVvANBsiAk+hLkrqZ\nRj3r4yaekgtNPYSS/tjXN35+7AyfRPAo5rV7Vc2SwZcUGgS4ZBPzVlPxU0aV\nSxzrOGNeciKtYdR7ipdH1xbV4I6MhrrMvRXW/Ymg+mRK3djC6YpVpvr73oxF\nIHvJfzP0ZdDGo53Ehfi75pPITwYs25vjnigNUHGbQAUCW1gj2Z/Mqadr3HjP\nVVjRlYfFSRYEAbpFumG+uP1kFH8ywTt1Hy+MBMOuSiLIB8NHmlc9yaBIhEJ3\nybdl\r\n=Cooc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.0.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.11.1","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.132.0-next.d3b8c54c"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.132.0-next.d3b8c54c_1527087822665_0.21817339627849597","host":"s3://npm-registry-packages"}},"0.132.0-next.d060f6dc":{"name":"@sanity/presence-store","version":"0.132.0-next.d060f6dc","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.132.0-next.d060f6dc","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"7c8b264f18ff356c3ea604ea3acdb0a63b32306d","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.132.0-next.d060f6dc.tgz","fileCount":5,"integrity":"sha512-VgmtxUG43kQV0x9zc/SFa5rltgjHiDkyyMUt5AAFZsKoTav8yARo/QQ2xfCuhwRIole2BB5kc2qIkeQHeZ2CqQ==","signatures":[{"sig":"MEUCIBZhPiCxL7u870MPv1M4MZih55O0c0JJWLO85xYPWGGVAiEA0SCNmwfUjcsskKpdPgg87v+Q0X8JzGYcJySQ2RcmIMw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16248,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbBpYNCRA9TVsSAnZWagAAmFwP/0pXL7tAMOvEALuLAMRk\nmxuIk09WtLivRWhnVivo4w0La0IICrrDNHC9JJb4ydzLjW7W/GajcJIm0ghk\n4HBY6aUuP0ujme9Bal54WgUA2gFteP7cDjNFqzxCALKUDHpiw+BDmPoLrKsQ\nrlBfV1BNYA2dE3HtPc1uFTJXj7Bl0WX+ESvAWGhqSao5MLl9TuAINh9BJ1Uq\nFRnAebGj5h+gbRgmDCZYAOeOuRN0IOjnRSnFPJpZIFriMCji1R3v/NbDPe1z\nCCZ/UXWM2U/jdm3sOaoe75c7kJadVn6CbnXhSpXM0HBpJxBRE4Fx769R6y0z\nOIEjQqWTPlNr7iBQE+ZaXG7rDFVX8CBEMn3XthecGlGQnZeitLpm0kbddkbT\nPIw5FTYHQY+9Z9k96Rh1mXStBKt91t134ghvX7ZiFQ2O3d8DjqMVCEeqIlTn\nvKcjRRO6dH5Ws+tZ1W9ZMyB930trsf6xNqaLSUNiQj4EQEFwGUQ1p05/hVm9\ntKhq5E3BgwyRIxTSScWJ4cRp7AFXPCkXjLDX4chqACQyexzIA8Xm8cpP0deU\nDXDpBIIEC4blNbSaJ9ZiTw5JY6DaQBzmJPkpl75aV/Vg4cs0OusSbThKmEEV\nYEbNTHHBrB0WqYVyf0YPKBk1KErgGPJmg5chofu+p+jDog084fjgXIZ5lJDb\naymM\r\n=i4K0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.0.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.11.1","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.132.0-next.d060f6dc"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.132.0-next.d060f6dc_1527158284919_0.8770486958669446","host":"s3://npm-registry-packages"}},"0.132.0-alpha.7fcf9a39":{"name":"@sanity/presence-store","version":"0.132.0-alpha.7fcf9a39","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.132.0-alpha.7fcf9a39","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"ed2eb413ca82a8a8d7e8bcbbbd762721cf978e31","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.132.0-alpha.7fcf9a39.tgz","fileCount":5,"integrity":"sha512-B2tBgZl5Sz7kShLbkbkl9qhsir4kybu7wFZ402Kea0nTIewFeSxj1vJ3/yyANn9VnLXdUe6OqteKux41RAbMkw==","signatures":[{"sig":"MEUCIC3jbW/WFHXdTtBJAXRM9FserBGcaIlV+wtaIoQV5oVZAiEAlkUWWIu7toNMMv69kt392bMPQUqRc0mhmlc10g5D9Cs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16250,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbBp49CRA9TVsSAnZWagAAwksP/0DXCWIFQesJQub6vJSM\nXYMdZVWaqsuaG/GMc+NOaGsyqx/SDukAqHPlBr9ahFrTJKV6ib1EcrMv7NWl\n2nJ6kPwlHLc/t3Vf5CAdoQ7Iz8nxEGhT89L1VNU6yg4emAB5P9MXZlbKtBZn\nu2CttqnF3rn7PytqE3qcWdsu6u2dkMf62COrm1/ZI7JDvFD7+ZvciazfL3c4\nXgeDEeiGeKFdhu+R1TNi2tuOFNWNmxby0AnYeiYCfUyguS++Viw6OtW0NV6X\n80XvSzbre08695UPtTCg7px50Nr60rDR4ES64Ue4P28wYm8tmjhK89Ic3zus\nMDK0Jf3rUr3SyUoUM4l1po9XalzL7TdGAMNd7fDZv66pcmwj/7HXdBxPjvRj\nZy2S2SuOf24UxAlfM6L4pyyJvr9MI6Z7M116YyOHaPpaODqbdXB/8rkatuZ2\nKxefLbWFejVwS14R7SZfak6Nn5LsVKkZIPf3kYUsnAelnvGsniN5Z/L6PSfg\newMAVCqVJGCLBh5HezQ70ZOqKSF/aI0xDLh+jvnNt4fzx/STjwCYMPxx8oQ8\n17xQekxIj8e/kicoOXKnywunc8izNKj1RCUSxUqiapTSbgJlCsPbhIo+blA+\nCIELbx6+64liB9VMDJaHF7QUQAkmYwOBX/T6dpFLfn89XXToQvsOtuFUKaOp\nR/1l\r\n=uHSU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.0.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.11.1","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.132.0-alpha.7fcf9a39"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.132.0-alpha.7fcf9a39_1527160381044_0.5269513765791989","host":"s3://npm-registry-packages"}},"0.132.0":{"name":"@sanity/presence-store","version":"0.132.0","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.132.0","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"c2a7ac2d090b2887ad7e2f4078621cb66cdbb61f","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.132.0.tgz","fileCount":5,"integrity":"sha512-OPt4jfnF9S3OU0VqzUqmPH02itnweoYKVc4Tcr0zLm34to0Lho+qcI6Hr2jDSyJARIQJrGGakxxEGbq2758piA==","signatures":[{"sig":"MEUCIHftYppFAavsAV8vYtnHY2Qbzb0rZV4H8duy7KjLGpvVAiEA4/iuYp7WetkK8jAZzm9cVVN3UIKkDXkN6+M14ix+CVM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16220,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbBrywCRA9TVsSAnZWagAAcEcP/3QcRkStzutCQcSj0rQf\nvu1oiycYmwHeQrMJqpV6ksi9RQVX8amxJyaM8DAt79dMhUm64gq6IeH41ZCX\nx2UjrS5A4DdGsxXOrOB1+GBLCy1NI+YkH5dnUVJ5x9/SaFQfXZ1SkiXKr64W\n6exdozey8adySZU94vXr96XLajJphJ202Ka0lhnVWYfoaax5bES8f5N11bUr\nwzebEgYYEKFkfNuUz0B3EQMv86xkfmU1CyfLjhlRFd9PMkoQrXreEgNFwEeH\nyUTY0ryNSD/PoZhdbbuCAvhf0/zkD0zYd9gr6Hqx3Cz1KRm/BYdDP2cKjmLm\nqjewO/10/zfecQB3NHE3WhbgVnesZxHcvQxicWZZFtCrPg0GbxcMWY47xlZA\ndzUreFHH4qkYcET5dPpxGJiVCU6K9uWENvYVgyp0MuRKwbyLj1SpimUJS+vL\nSzkWyHmMSpTmECHpW3aiQ1zZQdcHi/odEXA36Eo7rphIKQWpxDA71LF56wQ2\n69rQ7QWOZdnEbOFB92FjqHa2dVNg+Dd1ZReveIwHvGPM5tAZr8TzOcQNcia2\nVw+Et7oWLxk+xCuzb4ro92wmmjYh5GTD/Tf4B/o7PCuVZfjvqy5aa4NhtMwn\nNt2GjDaRu7KLIEHiXYWxk28LEr91y2cuh2WL3PxZ0z/6zE9YLyV20rwZdZYo\nuA/4\r\n=w0tX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.0.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.11.1","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.132.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.132.0_1527168175525_0.5377465676108271","host":"s3://npm-registry-packages"}},"0.133.0-next.ddda7af6":{"name":"@sanity/presence-store","version":"0.133.0-next.ddda7af6","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.133.0-next.ddda7af6","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"5c6852fd7bf5bd4c77d8422d617e6982caaa19d4","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.133.0-next.ddda7af6.tgz","fileCount":5,"integrity":"sha512-frHMl/XiCH5cdXZGPMrNl3f9Sa8sR437gXWbX/XLLczi7gqp3aTBSQeXtrxFVqdoeW2EPteEznJyY16slff79A==","signatures":[{"sig":"MEQCICJJ5sdAgoeNaVGxKp0U2TPTQbj8o3qG8cDR+XRWXMgXAiABdG0+Gj6w3+UFMPJdtTpSS2+1vykVzdwiCtLRQRBfSg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16248,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbDRRqCRA9TVsSAnZWagAAE8UQAJcOr+VcqxF3sWyV74m6\nKseurHJTTDwc/DLtSA3yho7RS65Xtpw8N+RShNzolZuLtA7OsmUfZUGLycfR\nOL7YpX5UZ9kertF36UD/QjhjdepG1CIFF+vwhr1TZXZqTw3eYLueQpwMJvkr\niW73HxieTWoSX35MYRRIwI89TFYNQUGWT2qDwS3aknM2URnPg94wUV7w8ngY\n6xKSdygZUldrTjQ8M7/QPev8I0rUEHMsvp1mtg4iCpL3K67kYlEeIWJgSLLq\nbQ+V5Ogsa4Rvr+/RL8VQo0mqXo5/nRum3bgLTyh8WqClI30k+V5Ha56H1bPh\n9BQ4MIsOW9cF2g4I8GQXYvDMl/lYmi3/CpTyDuwpl5U8+78GEh+9BVOAGPd/\nL0Bde5c6wCyd9XGEuwUZP6mAxVNgKS6pXIDw3mn0o77rxqUrHOGpyCoPGshj\nJO3YjeDvKddaaoiGlaGQCMWdi9hCQ12dGA6ir9/xjd72bIX/3ntk1FAzZsZg\nt1NGkV5HG5Y9FnRz9o9PxYnLRG1JQL/kfGNi4R0nlpq5+0oe5P7BEOkzL2Y7\nUttiBzPC2aE9mDa8bhG/N8b0vWqx8EHmTa38sP53CKkFLjCIrI4ViecZqN75\n+rN+hLUoeOxQQGcTTF0HALrCEN8KNuNu1wkUXnC4q0SyA+6kctUn9qznvHOl\nNdD0\r\n=2gcY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.1.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.11.2","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.133.0-next.ddda7af6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.133.0-next.ddda7af6_1527583850558_0.7316583838429822","host":"s3://npm-registry-packages"}},"0.133.0-next.0fc5a66d":{"name":"@sanity/presence-store","version":"0.133.0-next.0fc5a66d","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.133.0-next.0fc5a66d","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"29eecc5fb750ab3684317890b6351562da3d7806","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.133.0-next.0fc5a66d.tgz","fileCount":5,"integrity":"sha512-K6dsqfkWwlQU+dBOkEZwHCjO9lhLJn5oS7uwDxfjM8JT6pPHAM5MceHnxsvKZ4wbaUeDwk11WVDZMPKBZPO/+A==","signatures":[{"sig":"MEYCIQCnbtOZw7ZmehfIHGUzw+WfrakxHXLtIZMlLKHeC1KoMgIhALWijmWF4Z55L2dLPZYJvLEO06/WgunlLKfe+iWSv5bQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16248,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbEBjnCRA9TVsSAnZWagAA/ScP/RTui2bcJbEpVgEcPlVC\nNMy7ilpLwDSji1Lw5NnF8uAHO9klcEYUH3Z/IfkP6c6CTmgdLexK9klpfiBk\noXPw+93SapKBttugO8/GcOQbFLQT4GF6vAuCicxBtGYXUv9lGePRnl4L6fHr\nTNtY1s6r3gUeI7STtlWxT58cg+VNUme5MJPSQlqDzYcdP/pJHmqw4Z1ZlEBY\n3xMsSAPzXKWp5pkWDF1RyporvwL6N1igkrLDcABaPkqyg4RIgDwgeqv2mX9g\nIHvmSbfApJIkXHdmpIRhDiUVTIpKba5BFQaUlOLVpy8tswkak2WP/NdI18sw\n9PX1BiuqzFgxaWLI9ny/ESdfRsYUaGjoOpgbQGiXNcw1rTA4ZEQxzzyg/axN\nSzhd6ElssjvlG0XJZhAaucvRHyQqZfHIOk355bKhaD5X0B0BoC/12Qw3uBw/\n2lsKJ2ZvX//dIl/1nPO6I2bdwgIzmPXp1RtqgjCNUeQSrZAkUWv3hqz3tS+3\ngNckUfrhCNlCJ2p1L8fnWezxUqBWvntvlkxahyS1s+FW83yNJQzcteGCFTZG\n3KIAU2HNTASGmgPTrgMRQIku/W6VEBnKFXaXGIVOSjdIL0cMCPphInNvFkE7\nZVtgnbBxKMXxoAX8S7RO/6XvBiev/wrK31jYpLbOhe07bSvr8Oy0v487Fhd3\nWqon\r\n=UVqQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.1.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.11.2","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.133.0-next.0fc5a66d"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.133.0-next.0fc5a66d_1527781606413_0.40700569776237283","host":"s3://npm-registry-packages"}},"0.132.2":{"name":"@sanity/presence-store","version":"0.132.2","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.132.2","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"499e9815030c5600e8c47a9ba4a599544b2066b7","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.132.2.tgz","fileCount":5,"integrity":"sha512-1PeS7kuQTl59HZDRPmHt9inurWmY5uQhI0TXg7Ha62oddlUxoA+OrFfydN3x/WY+/YIS2k1eyieM8fM4qOVibg==","signatures":[{"sig":"MEUCIBa86Z9JpbwajDNxMXexszs3TKS6PXeW7JZA6LH+sI/XAiEAs8r9dciqkITsNKnh/mzDy1g5/j22//GV2igsNsStgAE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16220,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbESMfCRA9TVsSAnZWagAA5WMP/Rbv06Abz3eYYqdtcRJP\ny+6PiRGdh8gXVOsgY3VdzzY7NGIUDqn/E9sa5PL9gZu5Evue0Pa8O1du7U7s\ni4emujfsaCd18BIpjOjKRp148DqHhbvgmD+5AaDvLt2RXRV615fJ6+zkacvJ\npJmgW5an02T/UthYXGEtbn/ALj58oHfYmCUZsJHk9wp3EJo+2h1mPSkqvxub\nqpN0tOqu2x+zjQondMfhWt75/Y0oEnEpey2viVN3NeuSq0knMNGoVgEPdUqW\ntMxFYakJW158/HsyEXTKAbPJfPICnTruuw09s9bTzHTHB5C+h26lrsZnv2w/\nFSeI3rPGz0J9I7Ro83YI8E/3MXgTy7ouqy0gPEUebepteWOj2wre12HxzgD8\nOXX2KxKiaa9DrdFCF+f/Dg6nyTibLR7q6BeSeI4ndXqbklRb6HeANJR1eJa0\nAJA4UIBHACXhvzi3th2uBLUaRAGnauUATavXVNhbvD0S6wO6iKCyhWNpMOUx\nkMpK8zo/pT7uBtqexZbdFtFf+WyX5TJCoGQQ6ceZLHLLeyAejTk5L0P/iuVC\nwIdkW82L9k0cTNlPRUrtZIQXbPyOXLQEDryeUoR+ulJykc4lcN3B3/l5rOwe\nT1QC3fcBFCOAXtAlDTr5+k+ci4+k0WqHQi3aoiwEASEuTMRUzgKdD1MLsQpv\n8L2g\r\n=XhlQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"rexxars@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.1.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.1","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.132.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.132.2_1527849758443_0.8594984247762576","host":"s3://npm-registry-packages"}},"0.132.4-next.0":{"name":"@sanity/presence-store","version":"0.132.4-next.0","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.132.4-next.0","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"712f9be19166c61e8491bc895085fb9d19ba74c0","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.132.4-next.0.tgz","fileCount":5,"integrity":"sha512-Cqsc1q4pEakOUSw2nBLxv8kGpduq5J7FmH8IPVV+OoEvS5r9wrvuwA6xFA5WGYceSe9VNp1oYTLNgM3j3I87Pg==","signatures":[{"sig":"MEQCIAZcVRMq9VRZgoTl2OEkyPwx6kJ/ZViUCwt39hhINhsCAiApYtOQF9APX53fXkz4Gt3keoVLV8HhbXlxfeJDujaBpA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16235,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbFbTcCRA9TVsSAnZWagAAkNkP/3VonY1aEIDIHtYQEHS6\nRQ2lDqei7TQppkGE+qQ639/IO7CSt215MAEAdx/2Gmytf+Apug38TOCf7FT7\nJyQOTQiznq3iiTVF9wz6y3Y0fLu0KnCB2blBL8S2cUxQpys3cyw0ALkd8aSC\nqR2ndyT9SMIymfHXtp6Oc768rekip4Amg/ZVb02l7jSKfG+D304/f2N6vgoH\nKMOiSraansksi30tYDI+geg+nKw4RMphay3N+ksDEGlkhpCbm3UI68Ra+y2I\neE+V0EtZ7oVmIW/hG9U65lC02wR79L/Oe9L7teMmaDMbhD8gkSh0wD4qPu95\nO7lHh1lxjG/0D04eHlur/DJ6lzE/PS1Hfv9oFuQAu224aay+xxMnSgu0WE5C\nNMOTtDJiWYIO/bOCYHKJ+U2hghbx11U90eAh/Y59P0MN0MpbxUxvyBKPJm/X\n5sEaAh3nMAe1S4YgC+2ZoqEhu041HBJCY0XyYhPBkw7qQjIpwdLHELWADcHn\nGletuB/78f9tuBOKT6i+y1fQd5wefP7Wc1PHRJWyumitvpBLH5IlmygXJzut\nLTN376uCxxE4as2kWwKg8dUNqH/PizCzczJma0rGuXYhZzmMS8iW4rI1u0Dj\nAN/niAsV9hsLoFyGl9dJNrMJjsvrru5eSMt4HDA+O/11G2ztEelSW1PZiDCb\nir+q\r\n=LhKh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"sanity-io","email":"developers@sanity.io"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.6.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.11.2","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"^0.132.4-next.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.132.4-next.0_1528149204020_0.648976200007271","host":"s3://npm-registry-packages"}},"0.133.0-realtime-block-editor.72c3aa98":{"name":"@sanity/presence-store","version":"0.133.0-realtime-block-editor.72c3aa98","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.133.0-realtime-block-editor.72c3aa98","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"b820e5b1149920689dbddfb616fc3bb5e7a86f4b","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.133.0-realtime-block-editor.72c3aa98.tgz","fileCount":5,"integrity":"sha512-YZx0sZ9d1qpkm/dtztkAafEEVLe7DG6QB1ZtCmAOQ6GiU6+ZxnM1wiGrGIuBE4fhiSF3pJQHTRicaLJiUDOAig==","signatures":[{"sig":"MEQCIAFW6bPqi2aev1WV3adglxgsxhmjV1G0oi3NMcBywu94AiAfAbDvwsEIogOnzrorqXj+JsvLZzUJfQQpzCiWEkNA3w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16282,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbGnmICRA9TVsSAnZWagAAgVAP/3z3M0HdrIbuXrtZqJ1w\nSp6mT77NzN86DGANl5gH5YiLcOTgcd9ehkBMAkCVs7BhD3BlTsb0ifrUCq74\neaGJtaQngFi2geiqThMj7QMXP0uZEaL45a8UTswPl/3/S46kVDvKqOARXts9\nurt2OdZecy8Tf4f/MuiaPJkvcgijmM/eSaXJH7Sr7XhuSqvFo0184og6u7PK\nPBj4w0fn1Un9rUQ8LN1b5F1QPvcQhaOdSpgOEu5vK+YNKj/s1NYdjRcMpvYD\n5thGkZQgG7OBqKLyESw16+TOUcYPpRp820EdeNunCqqGMCebkGGFb23ziTpt\np0qPE+ipJeKUSUQngf/Mi8UxNrqUiH9VZ8TamOgxwLAO/GalUrwjz7jdcXCN\nccT7ZkAikguYAkjkj6LF2clUUi11vu9Luoc0/U81JzKFf+R2ZCGiyBlBoFpU\n2aiPT+ev5fUdbvr/tXcpN1bHsq0V7oW9grSZy/TlL38et1OQp9msFKZRMgOP\nSLfek7oOlJ4GRSww2Irr8uWuBYvgkAFvNDlp43QgVX6b1a0kJKxzSFlEFAwl\nIwYWwpg6uH6kHaBwhn2etNaGuzORd2zbrOGPTgmpAaRefeOoBH0Bku779o3M\nkw6ZLXx/ItV9CpmcP7DawFwKtWIq3El7QmDOSTwI2Bus0xysO0YLcHTlfcDu\n8dQR\r\n=rjim\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"sanity-io","email":"developers@sanity.io"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.1.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.4.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.133.0-realtime-block-editor.72c3aa98"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.133.0-realtime-block-editor.72c3aa98_1528461695879_0.5155845454344123","host":"s3://npm-registry-packages"}},"0.133.0-realtime-block-editor.b0c02255":{"name":"@sanity/presence-store","version":"0.133.0-realtime-block-editor.b0c02255","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.133.0-realtime-block-editor.b0c02255","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"db6d9943e6a46e6b2d6f96840e5e1fbbac81c963","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.133.0-realtime-block-editor.b0c02255.tgz","fileCount":5,"integrity":"sha512-inLZMt1ngCM7Bo6b+4TBS657Z76wT8HiKT4FEonAxmC1vWtrXz/fWCiRuaBkFVLlIbfe2uFjuGyRY77R/KjvOA==","signatures":[{"sig":"MEUCIEptnucUPx1loanwWlZggzZad37V7BWb1MzH/56xj6l5AiEAyBxwoRJ2Ej2gd/nv7PpWEjFwvyOJbyQi58vIURa0mRU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11274,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbI4V3CRA9TVsSAnZWagAA9ToP/RqqoFIwv5aXXFmvWgp2\n8cxXC72i1iuCsUVr7Y2D9IIYusl2KEMGvAJsIpSsBSmqAZgvI1oFOLsUZAIE\nbCg12F0hD8yezvmZVn+kTN307VQaMfpfRPc/UNFadzK7JztwiqlHaMNmatNz\nDKmUb+rGYOGKIln2LYjdyaxeYeXPM3NbSsN+3tddFRX5wiOQci9X1Enrig4F\nHBMZNisGow69mByqJRtADAarGW3GQDYp7bZpV06F4mx4N4dhDWgSAa2/d9ZZ\nnAxbTJw5OSkWEiLztOa+gMh1KXwSHpOZvdtuKZr/7KncfTPj1XMTz19zly8Z\nTFFqYjbXrwL8+LmUkoFdsoBpjFCSVbKpJBhxp5wDrjbcyNqux4kQewG+mvd5\nPLatWprghgZtMPGgDVCWCahgGCZdk0NGiiOFLgJW/QO7hnUdsHlpGZeGMuMa\n/g9zbuWVPMc06WMelT2pjA2FmvDTTTMl4zKkGkMtp1bnpdyhtrGdaZBg0B0Z\nc8SW/IwFpPth/g1CSuK3RxVnn6rXjTVZs7dbEaC704r2v3Ex7/BTHLVDcY8o\ngUx2RQYmzZXH742XZMO3NAdvmifbvkI3CF314HN9q8m6LuuEBY0FpstEC8pn\nCigzE8uVE50nSOTjxgLACe7cV74tMn+lVDvTJW0gX3bc8EUeHYkiR8YPFIN0\nGI65\r\n=TuSa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"sanity-io","email":"developers@sanity.io"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.3.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.6.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.133.0-realtime-block-editor.b0c02255"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.133.0-realtime-block-editor.b0c02255_1529054583466_0.39196616827113284","host":"s3://npm-registry-packages"}},"0.133.0-realtime-block-editor.8efe50ed":{"name":"@sanity/presence-store","version":"0.133.0-realtime-block-editor.8efe50ed","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.133.0-realtime-block-editor.8efe50ed","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"e65141025139a0abf705ffac29e65873923bf46b","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.133.0-realtime-block-editor.8efe50ed.tgz","fileCount":5,"integrity":"sha512-AxUvZWq6id/w33wqK9ZDv9kempr9WDphwK05M4EeyuJD5xlCpDLV4goIKog0PIRgAFh/6xDGNzk30N442AdFWw==","signatures":[{"sig":"MEUCIQCyYdWwljrZ+1x9UOpyNTThiIbCl7VzD4lCFRxJA3G/ugIgaixNmvw7RgcYg3lrZLfF2FEja4IdytcJgN18M29MGjI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11274,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbKl36CRA9TVsSAnZWagAAk9wP/iMKZbIHiQLmZqdGtc2g\nr2dLukZlxWzcvSf0TNgY/dgxTtMBRjf9fy+G1egChvcw052/AbXDSCKIjK/q\n5wX03p/qLIuRhDtXHNLokVOoj4sX29bI0OopdKB3wvd3jxpPt0VftqmC4NXq\nVDh9cbFOdZ7Rx6e3qSJsgubwBcBkrwS2tyvkHlJCOx2M6jcZXUo/s6dEcs+U\nDacE56l/pD7eLvP0BuKOCE0cHXJ75bqx4bYbZCZ4BVYpleruOSXMlnbYtxnO\n4hwj56UThGGsLDwheM+vaPbquNz20KRLwZDYsVkmmW3mtvFt812Im9TFMkKB\nUHzDtTU6A4O8mQ35vPLS5obUjGhZL5Ll8wBF/K76+1yyRR+tmWEbwDSrMBa5\n6BBSybpSN2s0m/Sk2QTtwgW0cCcbXEJ8nv0CRkoQxD4BzTzEa2yY1aOnGd4Q\nwR8XSlZRNGcUYtjB5aCLfhmDPVh3pSRjyM0R4IgAjg4XKgr4L4aXptj3hqy3\nu4lDItY3bQ2HclI2xajj32mwyio38v8NebDBXiGD0tx+AvAnUkVdvpJA8+Dz\nyBA5n47ZuSu9FGXZ+oPoBHha8/WlSWF7R5Di85SJRQnodBi99pB368DPlKgu\nLbNjjtt6sanMPjSciQjaSPMjA+VlVC51oSpio9wYLOPQrm+bVKHSmBqJyohC\neNH4\r\n=X/Sv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"sanity-io","email":"developers@sanity.io"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.3.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.6.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.133.0-realtime-block-editor.8efe50ed"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.133.0-realtime-block-editor.8efe50ed_1529503217671_0.2963792954053972","host":"s3://npm-registry-packages"}},"0.133.0-realtime-block-editor.e0a05fd0":{"name":"@sanity/presence-store","version":"0.133.0-realtime-block-editor.e0a05fd0","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.133.0-realtime-block-editor.e0a05fd0","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"1f82e147fbe0551918eb9a8d72c7edf22ea3147c","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.133.0-realtime-block-editor.e0a05fd0.tgz","fileCount":5,"integrity":"sha512-B2LP4Ev0slwxFI04HD9ST5HkDmopx7BVnI7y9yaP390/zLicD1GV7/mu30KT/VrQobgC6Tf89il3XJkUhxEVeQ==","signatures":[{"sig":"MEYCIQD7nCxohbUmMQsKm6CND8SxgUlh24jKohGXlNcvzhyvgwIhAJMKcfLowyo5P/UpbhR12faWB5uQy9ZDvX1rtFaB5SHg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11274,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbMjx0CRA9TVsSAnZWagAAsWIP/A0hqq5f3+gFWC1QIfdV\nJYYDXMhY1qxkPefYyPEc1I5TCDgx6CjgDWXm+6+d36zjGl01CCKhISh5SOdP\noiSEbcRmBTFeVTqWxAmgfok1I8JBT8yENiafeF6bFSTm6TxDdqQEOR1ul/2U\n0fiOTSCPLlxI9xl6ONFS7Kw2vQvDfNExuOnDJjrvKBrSHG2P7rQ4eWJud4WP\nWAlBEm0Xz/B6dcxlZGx5buG0fv/GRTYkOad76WbR5md2r12RJLSL0CoY1jQy\nLZroWIyRPGb4OSLjvwJTEDKa7e32yg+Jinm+CFkCL7yeWNrcNi0R/eh8dGXe\nI+CRuaopzRo7iX23BlS2rkTmP7NuCCrh5GgD1z0zDm19mMqvlTpilPEScGf8\nDgdXjSKLR1U+E5g8jM3Ld5WX/qDo3sB1uPXOzNP9qTA6Z8Py+yM/r58ZPlZU\nPZ8S6+tdPY0aVeEzGEHXXulPYAgtxt73MuGY6911PHHoWOoVzWqKbRKLfxCc\ntQduarCziAAZkhXoF69VYk28RItxzueqNeyA9Juc52hnK231IQrNjyBuSIk/\nTTrUIp4E0NR6412kgnCn23RCQ+zQhPpxUD0gUx5WdwfZQ5ZHOoFg6TqVhrBP\n4M0hKx1zcn8MFeZ5ymRvd+0BGNnjPdBBvqpJ+cd5lEh2aDQWe5hllZrGWMj+\nYfsb\r\n=fDnQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"sanity-io","email":"developers@sanity.io"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.3.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.6.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.133.0-realtime-block-editor.e0a05fd0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.133.0-realtime-block-editor.e0a05fd0_1530018932060_0.7299932125514264","host":"s3://npm-registry-packages"}},"0.133.0-realtime-block-editor.410b182f":{"name":"@sanity/presence-store","version":"0.133.0-realtime-block-editor.410b182f","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.133.0-realtime-block-editor.410b182f","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"0b6d26e5398fa796a56bd66fa0e4a386b25657d5","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.133.0-realtime-block-editor.410b182f.tgz","fileCount":5,"integrity":"sha512-gNmMF+HB27qcrTo5Lso/jMrYCjjF4iLlTCDBhBZOLdvR6QpjX7Wm3TsJcPLkkVrZGpHYXf+LR4PuKHiNQseq+A==","signatures":[{"sig":"MEQCIHLRGABTQA2dIGHAS03agyDovDqDHd43NaShjy6UcwFZAiAuimA55afP6geRB2SlIuttx3O9/AwYk+M8SurY+hsP8w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11274,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbM1IxCRA9TVsSAnZWagAAQoYP/RamR5nHKtCbRKjuDhyp\n94L98rk+NfuijckJzVHo34mJ7h0lY3CHOfRqddAre56YyqsDcteNqLRmzeLs\n5wmJAdNdn9KcTH/NX5ym5y3SmI3ZcZRFGiV86W/1mXLlI6sEex+xvVXhiGNH\noJCY4DAqHvjJvu8ddjDes2q7fRKHNC1iyd4rTwYmn+5wJYCEUp1vfq0Klpqk\nmuanc5xI9ZDWJdVvMsj8U4RfnbSETwH5npXEQdVXY2DFmFX5fVSAOuFitmQZ\nL6oZQus4MGHFLEsfOeLzhz3nObpwnOmsNOR16w1OzxWbKFIpZ94ZSpok6ypO\nZT4C0VgiuoQpyYHwXjgGtZW+vGv3lNSF13dBENXxKf3eD/YlG2Opc7c7lIlR\nzlDw/m530wACHfh4whk9AyHbEnj0fFt5AfrRRYTjRrpHvXdmvRih0hOdER3u\nvkJ7yNYPjbjwrI6u/v11jqeJBHrNXMg0MWepZCIL3V4PtkGhuDuiNfQ+efFl\nLE0RwsRHQ8jTowOGFR03H02UlIX5ihfYz8eAHoLkEA3mw1gPPs09v1ZGw3J+\nDhgu0aUHC/bBo0PXbC0Rta4l9N08JRn9uLnTNRpNEZKCIQxBu9rS3lxP2cKp\n9j4dpWiAnCWyFsvk32dN2aQhneZgfnrJE5H8gHRUthTePyXPcw0OPC40CAnr\nl5U/\r\n=XMSN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"sanity-io","email":"developers@sanity.io"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.3.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.6.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.133.0-realtime-block-editor.410b182f"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.133.0-realtime-block-editor.410b182f_1530090033324_0.7759916278392021","host":"s3://npm-registry-packages"}},"0.133.0-realtime-block-editor.6696d11c":{"name":"@sanity/presence-store","version":"0.133.0-realtime-block-editor.6696d11c","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.133.0-realtime-block-editor.6696d11c","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"f466e785446d91ce40a3629238dbeb4b8d0ba420","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.133.0-realtime-block-editor.6696d11c.tgz","fileCount":5,"integrity":"sha512-yuGWz2IIs+oZMyOQOjgxfceLr4hIxjQo8P3mox5bhTZCdlAnJhw31jSnVmFGczWMz2kt6rDfxXm887Q9eIglfw==","signatures":[{"sig":"MEUCICD3KHCh9gsG4ArdZKcNTgyoEWRs8BgK1iC6W1/GVytkAiEAixpvAYUSsm/d39IvcgigtZxEJWcW1n86Y483704NEQY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11274,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbM1dfCRA9TVsSAnZWagAAFt0P/jdrZDYBhoIcUXma/4CT\nPtlu2N1Ms73PB9N/VClbqxDicZu/2e2BHzjxTxPF8fNgmyBnmg/rypclByKj\ncTPFBSwFWASd1a9gevKj14zWnp4FhH4BN1mnoAvT0XfKvj/utcvSyAIMxa6d\nYf6WMjObF7RlNubvTeQNAl4ML8Gzr147hfCIpRgq/AU3RnYJthbCpGKgukeF\n1YzYepK24VMBEBkFZW2EJXg/lU0QfYBLAxDQo5HWlIafBjcQGuJvcCyVo5Ub\nLh0vRMNVEOeu3jvRbDAqQI/cqlDJDFHfpPglRjeZ2NKXThet4hffPb3LwtqY\nTywJCAraY9SCrE63YSPMLafmj1lNcmAYEMV2wNU81C+dmxxPAz25evEjNi8J\nxO/jIGr3buVJcW7o1BaYPMcX9Ah7eI4B57dUDO2MwwRz7fMlNIbz4hcoUWs2\nYs4Bqaiz+my0g2sZoeMQc0qOyGEeXGZXW78FJRBmO/GBT0r2PfYEdEPEAlDE\n9XKDI81DDg4P1jQWXdh+SNuBTCbNl6OLCTuX0vtZbkRdlOYeBWzU4KeZcyeJ\nO2/ZmTiOfyMNbWsilaSbzXFjm/VBu+kiaByaqgylwUJjOLHrjRrRXxNuX3FZ\nAdl3UdDSuy0j5yxKAkI9Rtqp4AYYKMEm1j8s86QyTX9DLywYhXyKBpk26erq\n4YjC\r\n=k9tS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"sanity-io","email":"developers@sanity.io"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.3.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.6.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.133.0-realtime-block-editor.6696d11c"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.133.0-realtime-block-editor.6696d11c_1530091349691_0.08491983356173383","host":"s3://npm-registry-packages"}},"0.133.0-realtime-block-editor.6334c043":{"name":"@sanity/presence-store","version":"0.133.0-realtime-block-editor.6334c043","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.133.0-realtime-block-editor.6334c043","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"01410ec1652cc90e0a0aa2cf14768f50ef4c8280","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.133.0-realtime-block-editor.6334c043.tgz","fileCount":5,"integrity":"sha512-tOjEhM47EaQmyqNo4IF8RIE7HduWFPVrqKSZcV5jZ9GXe2HozroYC+P6Qbjm5mpuZawe57WTAOtZHeUwMbqIkA==","signatures":[{"sig":"MEQCIBlaYUB7TvReeTmShY0A8/io9SyUIDycNVthU5pBLae8AiAkiMmV4rTC3vUyx7ivx9RP/+DCguoywDmu86UOsNdQ+w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11274,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbM2ThCRA9TVsSAnZWagAA5kAQAJtUFMJ4lz+WSH2jT0W0\napchvDTF7+35AXBWXBozCfiYpr9ieoDsQRNBTslhcWmSb5pUXfCiqA3ZSPLI\nD+fpp/3DuJ2GTW+zYja72utw/FBNBx4n3xHASgnQtWeFshYCKDhCMJsJLorD\nSvnQzbVwE7bmLNjTZu94jsIeYkYaDgs3zoBkCJfNINngu8qHyDKLdQviM8P2\nV0pZy3jVKFJgZ/lXPN+CHHgh1ScC2dE91pWxcZIdQg7GYdMq2g1vqdxHHBfI\nEHfSUp6m7AUeFbHwfPz6z7ecAXQClW5bDwJ22nc9oMlLZeERUbvB8uaBtigh\n0uV1aFIZBg7pHiL9ayh0A6nXtdPM2ZI+EU2a2YExppo6+zN1X2MafdOKxn1+\n8io6vHmdoQbe2+QsxXC7MVAP4W/01wsyWkKrKRHyVgg43BaC9iiFMYKpb7Nr\njcziPlrQXn5FMGUxTVuzWonAb5xwa02wiubsmL5f4VUtPaXrgAe4Ok66QV2c\nLn1lX8xwGlfoOHi64nzy/IBX87mUe9SI2xDAkzpeQSL4l96K5uBd0qrKX3lN\nSHw9aPqQtagQHePxuC1gMhmi2m1v9xnEgCaXh66nLDEa96VuLZm3Q/8j6Ne7\nX4h5zEC+8H3sr44wAwM+hy7AX2UKYzDXD+T1cYn5OnN45ThNpr8uCB9Q+PSx\ncHHc\r\n=pt+f\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"sanity-io","email":"developers@sanity.io"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.3.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.6.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.133.0-realtime-block-editor.6334c043"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.133.0-realtime-block-editor.6334c043_1530094817717_0.41304498608772766","host":"s3://npm-registry-packages"}},"0.133.0-realtime-block-editor.33c2edde":{"name":"@sanity/presence-store","version":"0.133.0-realtime-block-editor.33c2edde","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.133.0-realtime-block-editor.33c2edde","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"509db6b94dcc449af9cac9ed4655030e0de58591","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.133.0-realtime-block-editor.33c2edde.tgz","fileCount":5,"integrity":"sha512-9xOHhZFsAsDlKzulqmOIUqpvdU2t6wjFttF+ik2ZEl82jjEfr+k9jaUXbqfzOSeLh+nEYc/8d6Am1K775K7Ddg==","signatures":[{"sig":"MEUCIQCMcFTps6kmiHK21IqKMnuUYGekhM4ef0txVKZeWRjV0wIgD/qvw6/8y9Cr2Kd4ZQlR2Lqqa+9+uAoAdh6cxHoXuXI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11274,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbM3S2CRA9TVsSAnZWagAAH5QP/i4dwy1ibdYJwUHgmg2F\nu7D7ewPtfwHAr0hx9aRB+ZI2/DYtVHi99OGnSAMPA3TeCE/5pzjGIq9uWgef\nLuGzc1focgOQsKYcpcnlvJU0jQz1Kwfp42M8udnWwgnFS2hCkCheZ+3YhXTw\nlEem2+Q0Fh+uVWc11VA5VFni8hQYoKPwxRBs+lAbtw8HqVjjK0Y3euy6tFUu\nIGlPxmtgPJAZYW1jFRh///bxRCvoCrhCc4MOMTYRhHbeDqdiPa6i/TBJO6vy\nPMFnVIgHGoU82ClYA4XrxhPnNSmSW0dIX4IabSVVJq3QjrdovTfktlECkQN0\nNDBMluqP7zDN7wZGucgIALAMbfThRdlfc6FfasSwub6uwsOddDGIK6+r9k4Z\nPJX7ZQM/iIzjoCN7vPCwJqtamRKk+6X+NJW+/k/aMhprHmWg9rW+ScQli9mv\nJjp3QW+fBolp8GWn/233HuYAxiBDX4ahN3USTnwEFS1unyGFJJW8qoOi9JOZ\niIFrMJ4qpaiTRx0Pu2AJs+JAOn/FSmBUDOhyLtu1ggV0UdpqgJ6VAQlgE+ux\neygT92ocEajVbv3RYnWSZPgJotxvho/laGDEgzA+PoAvxgHjcDgrEjC0COf3\n/Dlw8W4KllfRugiQmDWgsltHQMdrVUre4cBMAYJDtd7pU+NfjBx3ECklvUxK\nGTgc\r\n=ch8v\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"sanity-io","email":"developers@sanity.io"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.3.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.6.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.133.0-realtime-block-editor.33c2edde"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.133.0-realtime-block-editor.33c2edde_1530098870536_0.902429763219798","host":"s3://npm-registry-packages"}},"0.133.0-realtime-block-editor.5fcc290f":{"name":"@sanity/presence-store","version":"0.133.0-realtime-block-editor.5fcc290f","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.133.0-realtime-block-editor.5fcc290f","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"601a473559f7355800da302322eef6293b8428b5","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.133.0-realtime-block-editor.5fcc290f.tgz","fileCount":5,"integrity":"sha512-7VZptiwOn4TKIsJom1Uzul1vvohheaXEKBRmb+5nj79/kpXQKWXRmVJXHRbnQtQHNfm0OPhNmvELnlxVJ7KPVQ==","signatures":[{"sig":"MEUCIF3VGxB0M17GcWtwFykZ2fxjjAg5AEIhu0daiCan5LY0AiEAzRgmveorEVmOw0gyWwlbDRBG4yAoASThYsAjUWT6M7g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11274,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbM51gCRA9TVsSAnZWagAAuK8P/0D2O/9+iweLR75sfv9E\nA/ULFf75iE/1Q/YavG/i/bEUMICCKmHInwup5M1JyUX3ByP6kNDKBJM5gQ18\nyQC2zr0dqTDJKgSqqQXn3ofU/YyQPXeQ3rUNJ4vYU0QO66xNVdtDjix/XhO4\nVlRvAuBXIz79cgVM7LLO5KnRcHKSDRv0JZPxPwBCC34pmlQQfhC5ohSMGyAj\nLGcyEtlJ5ngJLp4C8Aw0WMObXZzFvNhJ0NRNsN4UkGVigMVAg73XySPa7u6z\nApU7+aYLMMTr0jSZppKmgyROCymki42AWg9lcAiY4TaJoAngH2+KTVP9nZ6v\nl65yMpg9kBxMnuigRv8yTWkw4huZ3EFXwSIfrbviaKX2d4n3udcbS8ZSuFBA\nFsuIGViiES97THCYCEB0xOVe8sL0OefaPIivJDt+bAG9/4Ok9zABcKlqpeZZ\noRpEY6qYeCgKiYkd7nyL2KUEm2tjyibqOoxq32IX8pxNdhtMMtwNR6oeOCNW\nm4bl0BQD0t4c4pkwM7ZK+YDiJxIG7F5qe1f3iFyPzrKZ/kAtNhLCWEVwEh8P\n4zu2XMkKC8w/qeR0rdu6GtDBsRL0XstAtehVuJXRU+TWxjFQKfHFwoWPUNJx\neHC7Q2GhSJ0WSf4J2IfaLNJxUUYIno2IKGFkpa++CGGc3G69v/ftD3cY9IWj\nZEP2\r\n=7VbH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"sanity-io","email":"developers@sanity.io"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.3.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.6.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.133.0-realtime-block-editor.5fcc290f"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.133.0-realtime-block-editor.5fcc290f_1530109280535_0.6127154528233891","host":"s3://npm-registry-packages"}},"0.132.5":{"name":"@sanity/presence-store","version":"0.132.5","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.132.5","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"c190f93a6d89f2d0aa95029323b4e4cfb5b2132f","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.132.5.tgz","fileCount":5,"integrity":"sha512-ewVeVHa0D9ITVJZinuynLu+Vy1l3hoz63OoHtP00LTkHoqcPtOHHhJrTnbYwHkx0sDZVzA+AoHpOtX+U4aOFVw==","signatures":[{"sig":"MEQCIDy/0+SNGrIC3R/GjYivg/C8yxq7e0VYVxoENux8YpqcAiB/LPCMPigClT8n6kTcbiVn/hBm1HwGZXoxjaG8LHn1XA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16220,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbNN3XCRA9TVsSAnZWagAAQHoP+wTK+JOCRbQCXFlvigMa\nKj1sxFMG5dqxB0E2QKa188Dq6wM3+yC5/+MBUyKrVZhtl+Fg9acBLUUuItIY\nV7yV4Wm00owbDkwO6S7BpJdOfedS2tFdZKmXTgIPj711GUjSLEZboIN48G3s\nNET3Sh5Z3o0FSCROWlcgK/o4ITKWqgpaa5zz6mdZ0+0jS/whQjq3Yg0D+O0D\nfGM7hGoxLwOPT4vgHS0Kaffl6qPoUnZPTTM8d7Ig81p3zDhwmJctTYZnh/oL\n6Na5LYrnzaZH4bl5/DUNT2M4PVQPF8pu8jIY7P1RZDB1ERnBivbTDV7Yx3vo\nTmWi6wu9jNyg/XkZwLGVXpiEw2EnX8qMSjB8HJyvwgv3bH2yE4p7hQ2aUfQK\nnTh5yqTD4GVmPMf/D0HKBapaY84r2D7/KXQEPGdsFVfEOt1mbKGKr/zj8b5i\nyVI/nH5OIbS5gnPyMuXmlTFsBY1zuSpQ+U4VmYvlPQC42RD/9SVzRR3q881Y\n27jc02UyH/LUaPaP69J5G2ZyTkSkkdE1YJy2ivWyGN3RzshkG80bFWBzWxfW\nW7p29KRk8QPTgPzYtzreI5B54fcEOGB87GX6kePvJOOUByUp4azfAuYO5emP\nzmnYAJcWhWRyFR2I8SmJ2YXvw8KDzhw/o8bNZkLtpJgrUmVFgAnYZVCDalpW\nHpcY\r\n=rHju\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"rexxars@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.1.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.1","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.132.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.132.5_1530191319702_0.41548704521366164","host":"s3://npm-registry-packages"}},"0.133.0-realtime-block-editor.6a0cdbe8":{"name":"@sanity/presence-store","version":"0.133.0-realtime-block-editor.6a0cdbe8","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.133.0-realtime-block-editor.6a0cdbe8","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"8394a5d914fde4d96e1620c18e32bb5c872755b7","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.133.0-realtime-block-editor.6a0cdbe8.tgz","fileCount":5,"integrity":"sha512-LPU6ErAKq7o8VKl0mPLCsYVkOVHBmdBonQQaXNMZf0nV9vpd7OE8mXnMTLcO55AEUn/9utb2ji2nFiOaxXjEcQ==","signatures":[{"sig":"MEUCIQDz9XyKhvwydi9MKXnWJ+DZZw1Ny0wmFskCueZHPW/gAgIgKcKlroZ8D0urv3SuIxpzYCIdQ78DcsBbMASZt2uYn3Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16282,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbOdyBCRA9TVsSAnZWagAACdgP/iVq4Fr7zUDsJ9pKmtOY\nO6cMPQrcAK2jkzyWZi9HR1bYGD/U5+pncTLHb7OQ7h9PQD+uzB9UVY8fF326\nJ0M+CtyilFJQC3Cqf7gqeuS0eQqJrWnZiW11R3Gjr+pcKdSSZGpJDLvxbM37\ntL4d7XszgQimJDc29vlAIz8Fy8ooNTI+FzWXKW34HP1ftkv0ErYiDkiKo2MQ\nX2JNMI4+0/MkN9TarAeXedjNgv9QXeiuWPtply8eTz1qSnzPMR3bHo8Sab24\nkRbzWlcq8YnpovdGc2v1oJARYfQNe9yzkeCXfE7jHeb3hgujInwdicMwV+JE\nlFCk3VbBl5aEtJi/2Ciih54kYg3AnQFiV6+4LA4UO76nWwq3zk5SNbQubUZP\naSqUVIVnT9sTqeodgvHSshwDrlzTDxovVKZ0H+Cqx+VmfpKuSjP1t3UdG9zj\nJ6d0/EoezhfNg30/w/nHrTovKiSV4qxSNnnJzFG4x7qcLcolK5QXiPCjVK7z\neF0An+GAEcOuj2zQZHZazD1PP08bu1le6fnKhzKf4nyXb5k4WLEipG4GwrPf\niTz6cq1yLgGWzMeySRpVVeS2o0PTwfaj0GA+zptfvtGu4QGBZN4/PXwUBcWm\nY5yiDRF4ETsKPGceABFdiR/Rzvn6kHyhU2nLFaoVx9/eC/iLjIx82QocoZ7Q\nqTl0\r\n=juDQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"sanity-io","email":"developers@sanity.io"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.1.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.6.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.133.0-realtime-block-editor.6a0cdbe8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.133.0-realtime-block-editor.6a0cdbe8_1530518657264_0.2794592519615924","host":"s3://npm-registry-packages"}},"0.133.0-vega.cb3cdeee":{"name":"@sanity/presence-store","version":"0.133.0-vega.cb3cdeee","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.133.0-vega.cb3cdeee","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"rexxars@gmail.com"},{"name":"sanity-io","email":"hello@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"f11a3bc35852677271cb1e256d79ae02eb968eb7","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.133.0-vega.cb3cdeee.tgz","fileCount":5,"integrity":"sha512-MkjlstouurvoerrLy5XxYeEOqFp9bCaPnQrTiTv8s5kZNMnQGggoSwNFiusMmOpUv3rqhDb1wuzil4ihWu+EqA==","signatures":[{"sig":"MEUCIBqdGAvXFYAbpXY9CEwARviR2aWszib1nX6NwYueW+l6AiEAs8vaqRaa9Lv6Pou78Onm4sJhB3hGpTh2zAqbIkvTRS4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16248,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbOhaDCRA9TVsSAnZWagAAIGwP/ia1aZr90Z3oJP2zhJQY\nOD4SP48PXsap6mWeSbmNOVUYr6DAksTe4w0XOLjmb1PmBDrxNROoloAbXCs/\nmMtUNVuyBxL5jLv0d2dfCylezxL6/fXxpkSePUFhnJ9dTjZILMDUQ+MFBlgF\ndk1HLtLkC3h5J8DTm11G9u+Jcvkx87IOuJFbluw42jSBm8Y3tazzOPdqTA6K\nNhsP40HQ/U0t4C1kdJi3sJbT4ayIIPOaMw6jdYS9ct2WlJaKRBtTpRXXW9r0\n5HgeLDPkb62FFGqejHpFXvoeBTJwk4rmePBWAG/DgCe7DcBFgYZaQbSV4xlG\nklM0rg/bKcRl0wAC0tJLeWWPIagaltL7iXqsH23o3gf5d0E4ups1DHHjyDXB\ndudHevNm8iDEeJbDD4RTvRBFfWXQmyVra57BT+Vy0OqwbQGvOXAMDwbzMlBL\nF2ypMznrIA6XU0uOLUSGUopsOnr2GtlWrX83lVY1L1KW3vCU3SfHJgNq9Te9\nZCmshPTCos7k3JaYADkd+qTgaiXFgAlYcoZBPBurnjgPv1OGDE9BsCCYfuJh\n3NszRB5ZMLJltW0vxfdgEAPUHMCTY99hJPL+stzRUg0Mk2v4cbvwBBdkMY+d\np3lty+GHf5mfI7bnr57G1wuergypTKWfNgPMdmJeMOb9fCO8OPX9g28UXaDG\nawJ0\r\n=mgOg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"sanity-io","email":"developers@sanity.io"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.1.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.6.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.133.0-vega.cb3cdeee"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.133.0-vega.cb3cdeee_1530533507524_0.8712005966362444","host":"s3://npm-registry-packages"}},"0.133.0-realtime-block-editor.9839d7be":{"name":"@sanity/presence-store","version":"0.133.0-realtime-block-editor.9839d7be","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.133.0-realtime-block-editor.9839d7be","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"23de6c70ad13a4af1b2f29e5ffc75590b477b29a","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.133.0-realtime-block-editor.9839d7be.tgz","fileCount":5,"integrity":"sha512-/FRXnoCRG8/PJliTz9svkmwflUEgzFhT+P5IWCT/SbWbgSrzEt3EiYhLnBtDLUKjUGXIeLvBAqXlLFQY3uFvcw==","signatures":[{"sig":"MEQCIA6f7/+YwmQ0oxjb5gO3IBQifbGaLolKCcDuqhmImEcwAiALEID1rcIs7R/P1qy0rDXiCSCd0k7HR6wf3p1/pvyjPg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16282,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbaW1JCRA9TVsSAnZWagAA0dMQAJYmfsy5y93N0frHuCer\nkW/QPMoeIGA0Lssh548H45M6jB2w7XXBukmLkiC1dMTWfuC1B9L0X9jS+LWP\nc0V8IjTo6LwUkmWqRAC/4E8fEPtvJIMD8YLeIhgUZ/y8y9W7oCk3miL2vTkr\nWiXI1iFBnpTJRRR7l6kp3ywTGhVt4Rhzf0vYOndsBlWd3MTXooC/ExqsKy8F\niy5cptbnoKKydOEHDnNHUyMaOVfIGG5MEFzQd0zMGy40V5NaC6r+woyecXwq\n+Wg14xkgkxPbqhR/DtyKrpw728dvBVzO1dIfT8KrIAdELJaZIYACGM32MOZu\n+3CfApNWBND0H5pKOzZZFGOcIFm8AYO6sN0pAMCduiIOhvKA/bm2vEioj6Vu\npRYWZaAO47E54bV24TNaj0JsNwCtABmcIGwM9+kLg21jVFBhq2mFwllnUPOU\noOo4qiliQ0dJHGBAECcUHYVbKUz2xnnMJnO2bj6TPIhSqEHswz+RcyHTwYzb\nfqlqVbl9uxjBOf0Hq9cB0Dm+BF5avqfN3sJfIXeHA9i+N6F0F9PbiamKC0Lb\n6tVQAxORDg0d9veTNBzf4I2JQXzc0vuAhnPMREdq4xPfQDcGXpcCx6K1WUk6\nTnvDWZ3qDn2BMFG9uWbfVAGxY1KTB3U2aAZYHMwMzRfJVRCRiG0oAS1wTzyE\n2b0F\r\n=GPUf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.1.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.6.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.133.0-realtime-block-editor.9839d7be"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.133.0-realtime-block-editor.9839d7be_1533635903726_0.4403721092613313","host":"s3://npm-registry-packages"}},"0.133.0-alpha.2998219b":{"name":"@sanity/presence-store","version":"0.133.0-alpha.2998219b","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.133.0-alpha.2998219b","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"c47c6241123115da9351112ae512156f0d7a7904","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.133.0-alpha.2998219b.tgz","fileCount":5,"integrity":"sha512-64gXUeGkxkMZ6g6WQM/HF0amNw1r9Ihbgiir2LPM75Kc9Anpex3WvWX5bHSHUYh6/HsEtekMf8ppAeDd5HgPWw==","signatures":[{"sig":"MEQCIE7BjYJXM3Gh3GyoJzGhF7Rxn3ryB0xDR9D0wsSH3WPNAiBndUaJT3AXxOdqmRvZO6oJmr8u26jTzgAaRX6Hrge/rg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16250,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbf81cCRA9TVsSAnZWagAAsN8P/RFNq8CWNet080eD1Ci/\nv6ubcoufKM8rxw26nDhSgcxggQ9AdwwXIv6Ycuw3bW4A8SMS+CKqRvyGaoQs\nqsHQSAZgemhhnRKJaOA6Gqy8ljVj8WzwbwusQ5KvZOi+jMoM7SKCsZelZLX7\n8xMXpMoA85/0vylCvnWHdzvOrUXBCxi/Zfdm0WNXV5MjnnUG77dafkXWAsMg\nAFVQaqPPyLGc0E2wdmkFm1gI9uYueTodfUlBriP5+2qo/8zqxY60oXrVJe9N\n5/JfJ9lajAxnf1MkdalAF4M6nit5uGUoRWlOmnXWshCfln7FYwg/aiUlqpGc\nUOz/Ss7l3WQ8brXumwdrkdMIXMUM9msUO2shcTxgqo39znBtW51uJQ/Yy3U5\ny6Oh6g+SJNYr1dedtXLBAYsiE+GSqMHWNoSSQCKN4jPBboplC58hywHa+nZY\nph8vnvbQr5LMoaAN+NJhJRJ6PWvi5Flng6S9IKc6EtmVB4wRCCNHYS9tOzrt\n4QXBo18/RuqhyBHRn9+Enf+TPCuuYShYUgULQKMHsWJVXDzzPiZ6ZYxFvTcU\n0GiGDZlgdVcjkkIziO8XlCSzSTI12C5HDt6ukSz46YAssC2+Xz2UzS8Dt2Mw\n+X3K3vjLpxtPeU1QdrjEcPZRyH2lZtyXveh7mN6ZyAWL4rue/oFZ37C0tq6l\nT69G\r\n=vWe1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.7.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.133.0-alpha.2998219b"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.133.0-alpha.2998219b_1535102298380_0.738981485955911","host":"s3://npm-registry-packages"}},"0.133.0-alpha.6c26291e":{"name":"@sanity/presence-store","version":"0.133.0-alpha.6c26291e","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.133.0-alpha.6c26291e","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"94c5f8f5791ab0151842cd242ad7922f0a439be8","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.133.0-alpha.6c26291e.tgz","fileCount":5,"integrity":"sha512-zhM0//Qxgi3/NbfrnddsUNy1pIoBNGZYGvlIzQ4gXzBJ0Kqgkq6XvhGpfR9GKDO8bADQoE3eBneTnNSqTE/TYA==","signatures":[{"sig":"MEYCIQDYEDj80XIUbIUAGBlwcO8tWm0OH0QpFihZRXmmc0ZiAQIhAN6CD+h8V3veH1ygA/BA3JcDKNIbKYs5rFowa1+FPfsf","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16250,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbgVEuCRA9TVsSAnZWagAA2PwQAJBHeq6OKg0lPE8jEV0C\neMyZgzvLtFReEYHAQoz4FX6ikpmzMvU27AtX/iIcxMAMqZV4JgRZOLtde6DD\nk6AgRedcGalbHGnzuNWHUQsSt1++hiFPoy/9ru2c+4XVGl0fOHjKRSlrlZci\nDIAGuUygn843AEgTHuJBzrCjcgThTpWaOQi/Q4ha4NnKhZTXpml0Rlh+45ra\nc/4o6CeFuQyu2OIA2dViLlMB4XWb8c8PIWZNR4Ne45upP0bevNF6jfYlGF91\nflMvQpv9nDc55lOch5XUaakIEsXWSyhTj+mbWjFU1Cfb2RQJ7hQ4Ur/y9K21\njhnZKA1nzymv92WyJABPL+Q0mU26gTiZl4kFVh53HkuSTj3SQUgF+ABPWhwD\ncUaM+xuPBKeE0mzT17SAGeBwyd2/8LzWr0gjxsEPrMATLWmflSkm0GKCzTbA\n5lTPrxmVT9Ldc8xfgGn1b5+CZ2FV/zGY5uBuufYzmJT6u71StniAjdLqD8I3\npo8vboxYuhVAYsQt3pbzPtIKG94oYV7WdHzVLwx2PVD12dCxAO6KBzE5+8xF\nBJtiy1eX4qK9KAPH1dwLlbNoNLe/BNjgEeT5kJUOfHAGOFOC/JvVEDx+TB4U\nP4zPnklep/yXZd+UiXW/Ol6fNlsniFlXOFnCHhzMYgX5/Rlium/Ua31GJRRv\nkrT3\r\n=InWe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.2.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.8.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.133.0-alpha.6c26291e"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.133.0-alpha.6c26291e_1535201581849_0.9663748899521905","host":"s3://npm-registry-packages"}},"0.133.0-next.9c72956b":{"name":"@sanity/presence-store","version":"0.133.0-next.9c72956b","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.133.0-next.9c72956b","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"4230db9a16cf6f22cb8287468a625905b7b4b0dc","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.133.0-next.9c72956b.tgz","fileCount":5,"integrity":"sha512-40SBULSNabtfPW+6a+GZp59pNGZY3icH8R+nN/W7j2/4iIR9Bm/3hasxCXFrjvcPEVpBL+04Zo7VOa4dIgx88g==","signatures":[{"sig":"MEQCIBFzIScBdDPOTpYMk0+mE9eqRnhfR1B3eK1YmNUHc6mMAiBo+u4Qfg2HTW0y6e6BE79vGmTPzsajXK+Z3M5bDXy60A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16248,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbiRrTCRA9TVsSAnZWagAALksP/3cVICo1BoD2wOp9BJEq\nA0QFqwZvAr1ERgvIJcirRYHSYy2yLBGayZE8/0Asq/IA4x7sriKfG2HoBpcb\n8npl7oteE8sNxxT/mD8KT2DI6GnPr/hUYREmr8Uuaw+x6vxD7PsvQSiF6oYm\nFjJneSTlYLKf3VNNrfoFmPK0EFYrd4DXXw4gmjjiloWlE0BmzoE+5MYjlHR/\nLGJEIF3EpXcnzdCu/YcrWi2gaXNITP7rmKhbGo1stm2ttf2y+ZvTBAlIAP68\nl4mJAPZBgHUEtknz48a81t+whQafs/XEwFmVlNVnTNQfwQsjDyZyc4J/VV2X\nFOG01dhdZ7RxSBNq4IuKa7FG8iLGUVtlmgAQr8DGvTBUfQ4T8exHvTZF6NZs\ntXwM6wW3Li73bCnDoRFzxVUj2XrfK4whkNvrwNzhGlAT457R6EYc9kZTPidU\nItSL6JC6CI2xqXwg9PzANNMUwNTkGIvc7+cLd1aN829Ih8rIhkJ7dsKc2R1a\n9FEAERoH4wCSCwxSIcT/g0u6fn71Y8Oga7XLX7HAD9sHnbTvEvt36OAnivbE\n2kvnW/rQTI92LSdq+xxBKHYMx6NeLP26Po0lZI+lG2Zqt+gKLkj2qcQWUPc1\nl/6yo3hYUY98ok7cgOAAavVlUPnFckLjEX2aW1EvcEFwMUTn/dL1j7nJfp5k\nZbRX\r\n=sJX5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.6.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.11.4","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.133.0-next.9c72956b"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.133.0-next.9c72956b_1535711954458_0.6537373009708516","host":"s3://npm-registry-packages"}},"0.133.0-next.0119dcd9":{"name":"@sanity/presence-store","version":"0.133.0-next.0119dcd9","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.133.0-next.0119dcd9","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"1a22d9c186759d4912e5550216e3ae30e736fcbb","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.133.0-next.0119dcd9.tgz","fileCount":5,"integrity":"sha512-6wddFErGCEr8vOBUNV9Xbacwu+pTSjhZ+1CktxYMsodScZVrha8y9iHxC5OdFTULtuZsppz5pvSKYtyOK33aWw==","signatures":[{"sig":"MEQCIEDiSwndF4lDwtf07ayrgk7N9LvOn7t6p0FPz4dRH3GqAiBXLlgbrbk2yNa/bLpVO83aVuRIsBch+ifiJTdWivPgJA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16248,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbiSikCRA9TVsSAnZWagAAHdwQAJduHJi1tYRqXNiZEk6x\nGhs5B7hIPKPks2BVXWb7WEj+ljs7bi5eJhpS0vuO0wNWf/ZmzWxP1PfgSwLr\np1DGmmApw/RUrrkuoxk6JwXn5ErGxKrRfEiv3aOW7BFMZZGZ3QoiBS0G8blt\ndse0DLeDjyRbeuWGHsEPPXIXWBqxBKsrofdemdYm7IjQcCDkSIxPhzpFtiOq\nOV93vMWXICJbz+2ZEr3wXcNNk4kTCTWTpIoavEZPYPFdfgG17AeuKnJgS/Qf\nVIkBDwaU2RnZqSYbrovd3fLSNNVejo3qicYbQGRxV6VkaHVf81tOpF5XwxAx\nuptSNMTiW4WxyZj5WVt4I6AtLJ2RnT6riA/JFpRbsR3iaB0sM76LOU0keRoF\nZ2tzP7OF0wY7R/ZvQnWyk8GYCyorooYnBpt/B4VkF1R/zswL6QemkljzxRaw\nvL8E6wnEkj7QmGiFq/ibN+2DdY8c3k0Bj7S8WdJ0C2s1U4v+lGkd89bnqjKm\nRS9vd70fusDqodFh0XZIzSnOTacqWFaylW8qWB8n7oKag7pEhGrQjHlLi6ez\nQ7VanMHqjW3XnKJSOYD0WmnoXwoEMB6R3m5H854DsBt991UAC/lCnSnuP3m2\nRZp/Nvmw0qAAhCmo9Ul7O29C8njq8yiLlGendXmesh5+pXKT5zDecdxnDnYh\n3+Mu\r\n=aG+P\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.6.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.11.4","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.133.0-next.0119dcd9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.133.0-next.0119dcd9_1535715492088_0.5426784557004647","host":"s3://npm-registry-packages"}},"0.133.0-babel-7.c9b85eeb":{"name":"@sanity/presence-store","version":"0.133.0-babel-7.c9b85eeb","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.133.0-babel-7.c9b85eeb","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"52809943e63beca709cd3691ab218aca7ba440c1","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.133.0-babel-7.c9b85eeb.tgz","fileCount":5,"integrity":"sha512-mPUT7Jg7e42lH59k1YIiIS4aepKsZVbr7vWZ8B886edBgwwQQOSTEkIVI+vqSLApt88CgT3XRwPbOxcj/iSb7A==","signatures":[{"sig":"MEUCIQCBCaYBP3KjlSVPg4CjlpL5SAONfCiAUcooHIThu0sfJwIgVFJvC5uUX9dQxFQtgFLerGkX3WbTga97Cgo3tciovGE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16609,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbjkL0CRA9TVsSAnZWagAAbzIP/j0Wtnsh2lbsVIMgXYbF\nVKdnRG13H2ikvsUmGFe8UhfC1PLNOLIFM/8xzepRmwoReMEGQE6hGBRl/dVQ\n17o7L18zOP0HtYPNQpOBhBprB2CZWFsbdKsywCVm6Ad118Lp0rshcsOL9Djg\nxgEuY/mDK6fFfziJI/k/bT0OQjSl4YXn42Wdnoa6W5AHL94IqsYkCP5fpM8D\n1Y7ZhCsHNIEB2KLwL11lHvDBR4Cv589MvIbWX9OGTejceZBlu/WFLbJ6Nh0L\nlQcTd+0aUuNn0JF8LnqvkWn5pDWYlEOrk2RcytfF9Ss5fuwW5BGhkcfkZl/E\n+zDN/RdHgJvjHF7bVPR1kr6zW4aeuOSmBayGkiE6nFQ4j1ai+M7hIgDNBFGU\nPRW8s3lMgKCAxdZf8XRMcK6LHquLL0+COaKKmyLXQsMZ5oq2kYAGHfjlbVtr\nol2vC7+GA4Lt9BlHU1vuMoWN/X3ir6nrDjV/IrYohvZahYxDzxswcpyflweT\nBLXsKPJcIuTyVLiim7I+WsWCOLBxCqHOQQDama34NWx+8p5zF6AjMuI6T42t\n+W7jmq06Lufr75pK8ODCGFsj+mDceAoMjbJMPg6RHu2BS3VolkWF2FAto7GW\n6y8Lg1UDkC5PKDopQubwT491dpGktyEtWMPSy9HWH118PRVX7Jb/JDduwrkY\nCCCZ\r\n=IvTb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.6.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.11.4","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.133.0-babel-7.c9b85eeb"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.133.0-babel-7.c9b85eeb_1536049907631_0.6656627030710278","host":"s3://npm-registry-packages"}},"0.133.0-babel-7.fc481eec":{"name":"@sanity/presence-store","version":"0.133.0-babel-7.fc481eec","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.133.0-babel-7.fc481eec","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"9336160a560c391b05876b87740244d7b6deefb6","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.133.0-babel-7.fc481eec.tgz","fileCount":5,"integrity":"sha512-scmjATPskfZOGhqyA2aUxXd8QNMNRhzgXkn9wSk3uhI8YPAp6e7KRCPuKKYj+TmuphdTNaUHrFcKChiN71ThWg==","signatures":[{"sig":"MEQCIEv5XeoNAmEQKwvnIOM3ZiWgWFIWOvMkoSrpMn7+ZDAbAiAEQcO/s/isE0oE4KCqaZFLOGx3MHJHmUXF8gUc2rClNg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16609,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbjkXZCRA9TVsSAnZWagAAeecP/2+L2MNAS2K7vxbYtb6F\nJNwZKtAmAiWN7iiWbniR2CPGT7hSyZt8GWxKmknL1+5bdJV1O9X9dWfVn+L6\n4XWXf9FKPHB2U8CKK9KZxvRBnd3MyTieFUE1rsO1RAgCpmpdecgW+/Ug9FGc\n6I1flr+PwMUWkSqE4RE33w6dzzCDWY9qb2WUOGIdWegIrCpSVbtMuuVGnqxP\n4Jq80cn/cnUUddufHC9rGc1X2fwPtrHYMWnxOJLuO6+0j8bP+y0RozoNesqL\ng6h2KBrV3oMXqnd/K8wTYJn8xhJZuEku+Kwfo5yY/BITW8Gk+1rsIozPFRwJ\nR+cuehGkNvxyneaaUFdT53GFruI50OZbYOT7WJWxABiRvQzPdofz4meaiOE7\nCxhGNi+7tC53YOa2kDO0Gk9TFqTOd01cZvypQ0moaCFAIOY7djaHLNhEPsMS\nzb5Bi1tTcR/QJDYlvqN2FEhtMEHNrwy9o3abGD+bIVMai+X5+ItVzMA2Zx1C\nFD0nf1ggS/jJJaVXY0/DbEuTiLbsu0UDcYtR03ZNlT1rebGqsAqDJAn/gKCg\nE2+pxzJZhDwhDp2izn49EQd5fShi/RYK516GN9NdQQuCycTx6KJb3v5MZwg3\nQgDnIBbra8nA95kx2NysaSn8rWYGeFYmvAoBNfHIa9Y4PQ2hB6wouJg6Iapf\nSAfg\r\n=Jmvl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.6.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.11.4","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.133.0-babel-7.fc481eec"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.133.0-babel-7.fc481eec_1536050649307_0.8958497463362103","host":"s3://npm-registry-packages"}},"0.133.0-babel-7.06032ac5":{"name":"@sanity/presence-store","version":"0.133.0-babel-7.06032ac5","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.133.0-babel-7.06032ac5","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"e6de543701a30a5560a922344e8271caf0df409c","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.133.0-babel-7.06032ac5.tgz","fileCount":5,"integrity":"sha512-c/72EcTKvvAbvTGMD6c0WGVBZehM4mjAltgXE2nx1ewWg8vb03QG6VMvPWLqqDTw39/QbproXMnvo5DbhJ6veg==","signatures":[{"sig":"MEYCIQChkknB5M8Raxg9GPUdy/fjAoRkqwzQNPyI5OM5QwbHLAIhAO5UoU9ps/Y9jm/ZjnY+q+lA8iXxo4/A12FjQWg7nOkc","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16609,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbjqi7CRA9TVsSAnZWagAAQ48P/3jqDtqf2qnM+efqpKZ3\n7ynmdEmOUKOsvWvJrjpFz594/lJ4VwZgW/Y9HdTk0yiKAKNN840hKJVUASFU\ntpo51JSRokAQrDJ5q8WfSV8AwPWafpteBTBvJKpQ5fL38IE25OiBFmGJsU1E\n6zi/A3CKs/ZvC+pOYLd183zm8wUFTGZEhdcd5pqPlIUyIpV3To23KK9l2Y0k\ntOnH6UuIYWnVEnAxm25geDUIU2Rl9ljRvZwJkOPWgFjJcq478B8i2nuBLxOr\ndK4+jCR6aS1/ySWfg0zjqOh22zxsHWePLrhNvw65nVrOw9vUmOZVaunCWfVR\narJ8i6WLCh0+UyHOQhjuMNyWjZXYZ629Y9sDL7PzTXfig3PKet+3RThpEJ1a\nCLF2NqDHR82cHd1r96tJID6S65GEj3pxxhxifruRHb3VW+D8JlQOhN1x7z8A\nxg7cZ/X3SJSZLyomC5/l2VmZtvGK/xntaBptsRgpjTSWtnxh9EyTRmMFlQhB\nRhT0dzk7U3IgitqV+gnWwr8Lx2lmLbMOy80PbLt6FFm0fUqEzl0taTddqYq5\nAi420vPGOETTawRGx+EJ2VGHbSgZURitGrIP+0VaXZdBp3asTqDk0f6U3WOR\nrBJusuWVKkTlSp2uPLF4mZ9MMuGi8W/jUj8Oak03jzkyfwHPATS/kwXeNNjc\nHBLw\r\n=Xzkr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.6.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.11.4","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.133.0-babel-7.06032ac5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.133.0-babel-7.06032ac5_1536075963107_0.8495985724241408","host":"s3://npm-registry-packages"}},"0.133.0-realtime-block-editor.3566387d":{"name":"@sanity/presence-store","version":"0.133.0-realtime-block-editor.3566387d","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.133.0-realtime-block-editor.3566387d","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"deac850ab338e3609a724458f8cad3a50081effe","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.133.0-realtime-block-editor.3566387d.tgz","fileCount":5,"integrity":"sha512-VgzKrRAtxW2woLxew0BiCcDxlqoyb1oW6UJmIlV6/rwggav10RVMcvsHH7A9nx2H+aYpO6LV7GkifqfAhVPZOA==","signatures":[{"sig":"MEUCIQDBYV+n1SFdFzRJnNxTEpECVES9+PO5pxn1wZ7vfItbvQIgCGKbMZW/vguPwTW4rbwKCGsXsqqRXjTFiSvuPdmCPbY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16637,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbmj+FCRA9TVsSAnZWagAAcLoP/iRjEASQKrD1JS90W4gy\nUyCxvSUybV4d7EvDhXfttqe57vyh+O0k2PkkasBPPDA9n4aXIr8RY4ez//UP\nZPHpsVsU3VAZIX25GWlqKyik3iITUR7cB80rofXxK93gOBCxOIUFdLsadsf2\nO6GAHBPyEjD1idgUBIOts16vE2cZYLB97xOH/f1BOlEUrHBY8c6QgLuPAxz3\noeZZza4sPRrHdNwSELNQO+uwIuUoLh9lqGHszb9FyB1Qh7htM+u+3h796/9n\nKJTqxy8YC8y3/VVjJccRMo7SPyXYuJyF5v+/qJQ2aGC6T3MrLhO0m+vi/jXO\njusim/l2VXUxZ+KfyIpZPyG6ePXA7FtJUkssigqQV8H44j/icoNoVbPfuuxN\nvZnBsjP71iyjsQmV02SxLonP8hTvK9i/OdldDWWzh5Yy+gJZ8sgd1Y3w1X2/\nCgHSEGACWQ8HMkD8VrbHIL+nYZPAO7G+mqUrIyB/EoKDijRxuiCsCj2fW5/h\nSfXPEwaQW2U2+EKalWT3oLbTzikUgP8g4/v9wGPayrK4OkPE336VB/cN04Ha\nMOgvq+3IIRYgbqkenZHlb/k0Lf4Dh537xBC+J/ruW5okIUrLUdGsPp+hSsSW\ntSuQyo7ccBRnC0iPXAsgeeOS33uetZ3PYQ8qm3XYsXKJVUvFQ0nLBeFcRZJI\nTIDU\r\n=zcWV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.5.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.1","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.133.0-realtime-block-editor.3566387d"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.133.0-realtime-block-editor.3566387d_1536835461115_0.9759927178317873","host":"s3://npm-registry-packages"}},"0.133.0-realtime-block-editor.b65ceaaa":{"name":"@sanity/presence-store","version":"0.133.0-realtime-block-editor.b65ceaaa","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.133.0-realtime-block-editor.b65ceaaa","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"1ea52c5e6b5653b51c00142237df5ff77c55ba47","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.133.0-realtime-block-editor.b65ceaaa.tgz","fileCount":5,"integrity":"sha512-NUqbF1Nk1libI1Hppl3H6bpEfb8HvL7/Rtd53QOXtuttRt1iQm4S/S1XBk6kzGYedUH+HIqTZyIKm64X1ejqLw==","signatures":[{"sig":"MEYCIQDQjzZNIlDnfKCbSnkixWhFnsDRQZw2U+QVUHXp8TdqyAIhAM7Znua7hn+BxKLImUbkzApEjbvA+ndbWOHbOzhxeH0q","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16637,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbnMYDCRA9TVsSAnZWagAAcGYP+wXaP+Jlh4o1krniPRA9\noB+LxQvXeYUWqs6P2yJqEUZfvJd9vPWYc/jO1EfUohxSwoN5SLzeoTem0EtB\nY2uaFR1GmjM0iLRSpwL9kdzNfVnMRTeb2jXkQ9IKEggOu9KvfxfczGi+4ZIt\nwCTolF+HDct4yaAJbU+yhGHKkvdnqIlbZG/nj/B0pw9vHaYpp86+KzBIa3a2\nkh7jvFdt/M44KzOIwiyS0f3CiRWasioe4yIQxxPWywxUPSRxIg9EnCZaBqKB\nrfI/J0PJlBzVzngVT17o5ua35wM+a6yEzED6ZgXh4W5kNjUs1LYIiiK4c/HI\nD57nR9t9aN7+v33cUb211JcB2d81LetOARCFEhxfc1lXr6lbhRIbjVCosJsK\nwTstf1c83a2W/JjGFP0nGJ5CLsdnVWld4VtQ6/NQF6w+uQfkTSnaxzCvKyju\naxChbtIm/eXWBmkKwwodhegBdHqA88jlzjEd+S1lGiTX/ciZouC+f71xd2Aw\n9NGjWw1aEelALLUjOBpjKHwhhFTaVfJAtu4Q9BMXMgTgnIn9LUXQ/6pMgwpx\n3IpA5hutPQtqXaOcJboukgbZH4GqMLbwoeHbFPyhGYqmRpYzChzhPxXOt31J\nRZ6toIA6Yv6U11ekXAvY+jE7eEzXX5KwJVWKHdyzLEdOtw6IEYbFYyJl1pj4\nv3oc\r\n=49It\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.5.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.1","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.133.0-realtime-block-editor.b65ceaaa"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.133.0-realtime-block-editor.b65ceaaa_1537000962684_0.32636696146425703","host":"s3://npm-registry-packages"}},"0.133.0-alpha.62006080":{"name":"@sanity/presence-store","version":"0.133.0-alpha.62006080","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.133.0-alpha.62006080","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"1d6dba700076e843ae6a11520c36ed33b03d3343","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.133.0-alpha.62006080.tgz","fileCount":5,"integrity":"sha512-61JIiN5xE3WaWzCl96ajTxAYpW3518z4H+63s35sBDzD3xatcqpuSItf53SHZL+8tNBMseROBw3Gfw6mzuxcbw==","signatures":[{"sig":"MEUCIQDBpvVGCTlEol34cVzGLJ/J130xPJqI0G0rP+aMA/+SoQIgTYFGU03hDd63fg0NOpRLjNltpbzdgI2NFdQgQ+nZNGY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16605,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJboKRXCRA9TVsSAnZWagAAO9AP+weSKJM0H79cLFwc8c8R\nAt6mRnflfg7m74X0lSVGX5lD863z0pDDKBPtm+fiuYh7mDaaK5uCFUtoyDe2\nkRxC4gL/LeuDEwSiOcHWrMZDKJYeOhhgAue597JK5u7DPRRyiYr96/3vS43R\nG6mA0y2CohAplI/yz8+ihO7l588LkIiAhGGmpZwpkUsjxRH+tmmXQzbq5ebW\nXPmAwIWSLRJDTcVOohIbI4nZM/r/Fr38uc8RjkYQ86JRtKc2d+2+nLwEMPGY\nSiuxAI00Id82UMW7WKghXE1qWvrWAEJdnWEZIl28xiqmbX7cVAq611s9gK4C\nlaMKvFaFuX6TkoPNU1Ywv/+jqj39TlVvhgPCqSe4wmaK9Vs+hqp/NLIxe8DG\nbvaG0uKyDjfP+zgYCGdcb4LONPByE8YHS+0DJqlDaOvMGBPkuejwxGHiDW+J\nrkf1geDOYVByJG64VYSjM8xXNrPvrhEi1EwqAPkFuFDhE5TaLwvBgvD+kGp3\nn41BU69aX8YIUU27fV+lFCxfp77jk9XVDiQD53GkpUiv5HYWOlxnjda3OUQ4\n2utN6UUxJCHktGInF/GNm/QpMF3cTaMwfeGtfak7kccAii5KNRMn0NSQ2g+M\nYwtOqbG3M4eYUTe0sIAiIn0Z5/+Y6Hwe11AbFkGq3Nl8BTMqV2MxPujIovj9\nnDPy\r\n=bjtp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.2.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.8.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.133.0-alpha.62006080"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.133.0-alpha.62006080_1537254487149_0.46751213557955906","host":"s3://npm-registry-packages"}},"0.133.0-realtime-block-editor.6916e3ac":{"name":"@sanity/presence-store","version":"0.133.0-realtime-block-editor.6916e3ac","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.133.0-realtime-block-editor.6916e3ac","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"c06d6843ac2d95e2fe36b1245b9e5f51202c03e3","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.133.0-realtime-block-editor.6916e3ac.tgz","fileCount":5,"integrity":"sha512-b6AtjWBBk1jIOp2ofFw4gpYNIuP5zHvuTUymxjZcpBo8nrG9Y/zYCZze5m26aQxVnCmP8Fs1+KVJ7TvNxs5hmA==","signatures":[{"sig":"MEUCIQDHP+YgIOvSjoMec01i/1CeudXyxAWTUR4EkGtAEjeJ8gIgCCAmSXzzYZZEWHnoukzUMVf9J1qapTrnXslbBuPfuWA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16637,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJboLJsCRA9TVsSAnZWagAA4ssQAIzJvLihZe30C6A3J+hv\nBrFqkmiS0kDD9rck0OBiMTrVVbQy/WOWDUbUYJn1cL98FbXjF4/Be2/ozrEP\nILwUIX/ETK4Bvyh9u/s7WouP65HBqueirG1R0EABIvDHptZALK2oOE8M4uUw\nbJnna1EdNK3OmzLL4GAgH5rnDFlBEXscImMoNEBIxyWAAuK5kLX+re8X+qLo\n7dfgRpSDTcE2GiUEtx7zn5crYmLoLL9ijR4lgmidZM5vHZJ1jWhxS2bXpB2X\nDItcti8c45/3UDfyzI/0uEDp9H8bei/eQhgrHtRBFt/hsUb9FDDAzYrNpoJn\n3ah8OfnrZDzTvwvdVDcLYhI17T4xQ6fi/gMF9wWKxaKVUkq11Eb3lRcR2P+J\n+LM0jkQJ8eKGwA3P1Fod4ybfUkm6SqhWvI/HhW4L0FTrpUv0nm6XGVx+pOK6\nqTL+e4Q1mzuU1HKQBGUPWMFy3Hoeu2+j+1wCzj+jMzxn9hhiS/sUawots9Q4\nbgl7QgbZpDksFPHR+9ijkJu3ErmUKgYrQs9Y0eUSdXfVtZXj8Up5VMWq7SrR\nISQNiwq3XoTpyGGsrsqCAOEg2GSDDzLebZ7ebBzknE4gqTSnoO/ZEOn2WPPp\n+aDuX9A9A1WBd1k66XzLmOKBwfjDecoZOdU1uYamsryVnHDClj5QYMBwG/Za\nkpAr\r\n=JiCd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"5.5.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.1","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.133.0-realtime-block-editor.6916e3ac"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.133.0-realtime-block-editor.6916e3ac_1537258092288_0.7937999474218611","host":"s3://npm-registry-packages"}},"0.133.0":{"name":"@sanity/presence-store","version":"0.133.0","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.133.0","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"239494c683df0304c67540ff47d8ceb1fd1ab93d","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.133.0.tgz","fileCount":5,"integrity":"sha512-L3R1E3n82ju72QxauqQgrgAwspgbhJP0DLZQPlvWzGXqWSvlIyuJLmvy7t6REMQqrrP59/YfPdieJQ8cFC2Etg==","signatures":[{"sig":"MEUCIBa5roeuthl9Jitsk5ATHn2AleOWFhQ+86FKwyizDXiEAiEAkLrCiavx9j02F6aGuhNHSX5cgQMpuH2qrMrBWFUQGZ8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16575,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJboMoaCRA9TVsSAnZWagAAUvkQAJOmCc1tfFgE5RQuNWhY\n36bJvGtZ0H4SNqsbf0C06koArf27Bg7LbqK8S3C1tFX6MJe0rWJnBz2DCg8I\nRHpGkZblpz10wi2xFPF0OgZVvXnpg1HmLuIQSRIWSuLK6W4l0LlkoUXdGw6y\nPO9NwKOCZaMl6Zo8XBY5AZfOabBWAHOWEbGizMk5OPOz9CoIBZhLE6R8J2UA\nGvXpZvH0q+ONA+VqX5WDDOqkfreudfLQnkg/jEKMWD3hR7ZmFYhdRPcVr8tf\nuSQoNTUmpHSTrwfXato0y8iEhhQPVHAM+7X3uZQVCsF+d7sQ6Oy1X/kfnPBF\nAPsrdkGyNBDUjSQQqWRU9f2jL3eKeHQ2a/c2Io2ze9VI+Zd643g1BJ4C1sHi\nDbo+wieoJGDnGGQ7DlcXOr1Jpttn9+V/hzYcoqWB6oj8o2dBbRF4/2uzd1FK\nAbY2J5jOd41wPJpEqpvuciK1chEfQpRK2gD8lKjcKXjHiIp0d5iJc0m7Sv6i\numEEgpGuVevB/lSZGY3tzz67sk9Cb02gzu91P1WFgPvEzF7+AbLiZDYLaI6r\n00EjcxM4JFnup02qb3vWIp4Uyac/x6hGOqCKsA6hSn8O3UFsUEv9gVrNissz\n9FxYV6dJqzsLKz2nYOzg1pNeD3GZWYk6llZz9fahG6icwl/FM4lzgleAI4Rl\n1LAZ\r\n=G1XL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.11.4","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.133.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.133.0_1537264154235_0.28588635309211186","host":"s3://npm-registry-packages"}},"0.133.1":{"name":"@sanity/presence-store","version":"0.133.1","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.133.1","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"286ba2bc56c7ac389b8c9e1f9b8111e82b84c9de","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.133.1.tgz","fileCount":5,"integrity":"sha512-fuD65KpyphGXi8AEBCCOvgKNNHZnkCM5YQ8KtffhCtQhkdHj9gdIusTYNLRCOFp/Rt88w94Ur34uFiu/DYp9WA==","signatures":[{"sig":"MEQCIGukIgy/Koh9c4i1JyqiA4byDGoylnTVTrh8QjGxI27QAiALj66r0yIWXMrbbKw8yWn3NFEH28t97R8sWJ3PzcE1DQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16575,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbof5rCRA9TVsSAnZWagAAGKgP/A1/2w8UCQcamUwmFyo8\ny+AbF06KaF6RBYYZpm3ExOf40kHNHzqZ9m2bQ2oVf9YsKXvb1Xnn7NnxgIZA\nfSFJCbs4t79xWzo8GYda/54HcfX1Cq0GYwCY7m1exT5HnIJ+fG4wXsKbc814\ndBmGIyFndZqMAz1pC1K2Vrvz50pul7LvcSO/jmLqMm2TqnLICPOdTDYziK8k\nbAIenIbG/vozpFyrDQ2C7qeO8hnhWVV89RbnJFH4/M/EDYhUBI/d4ltUqTa8\nKyuA9KCtfECF0OEToekADT+Z/n3ys210D3W7slLY2yGjxFvyycJvkiUepWaT\njpHVl+6y0rgX1zcJ2zji6uY7bG5en8brc4u6bYqRMYRNDG+vVOg9XuKLvT0q\nG/nTZd6U14W6tXI+mXpvuR8DOx+8Tk6IFu8hAOhMHJpL5cpyFHh8B2BTBQgC\npeI8YOjED7ty2TIdfnZDWY1F/AqW+jNktHwIH6B5qoQVUMDm2s0rGUcdh10D\nT1wBZwAKyaXrFVOP1CSZPNumPNykuYAdP7wc0xnlAI7YFqvaBhqQ/GSE0ip6\nm+X4vKwKoYmWCTHCVcbxXT1wnpWvgPw89ZvfdExm9k+mBtkZ2z9h1W4m+2c7\naIauhGXDLx3E4NMU9KXfNrpxoc+4gCjJdx3JerA05pyNFuXtXWNzrMPjhReL\nxgSI\r\n=SaXY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.11.4","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.133.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.133.1_1537343082446_0.7565765893550429","host":"s3://npm-registry-packages"}},"0.133.2":{"name":"@sanity/presence-store","version":"0.133.2","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.133.2","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"07a3eb69f5e81e4be9572283407602213714ccc8","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.133.2.tgz","fileCount":5,"integrity":"sha512-51D6Uhn22xpE2Xe8ZnaSUO1/bVOKBzhx9hYvRzwM93PPed0X3WhQUENJyD2HohXKCBnGXPittLrWQ4n75zTysw==","signatures":[{"sig":"MEUCIDiY4Dqj4oKJ5OgJ2H9tq3W6aiWIbTw/2T7kS4FehMHvAiEAzrMVjiCR4kGf+eH0cAtjUWCl09PNN8yRI1YjdpQfZIs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16575,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbo1oQCRA9TVsSAnZWagAAkAEP/08FeqYHVFWOkg6H+9rw\nMcz8tuXyqA1ySNHJqiK1Tx9uw8xnUVwflKKDYy1PfHtooWC9qaamnO/wAFjE\nwcq9uK38yEhLQIvZk/jmFBT0N58VSH3rhJBGi6cri1gDBgnBCRHI6ElRs0xb\n0IlpB6rJrtlrl5ULGz8TOPDLJNtuw2RVLTsT3pcFmjKwgmEc5EPUigBo/38/\nAdFdYfmj4DK3T2rwkPU/6JJeSoTYLS9vE6rwjpgnii2p/sdayrvn3Ex0aQrt\nTUDskd8AR1ZVh/E90Odx/72l3g96lf9xjXRoKsI65kcqHYft/56U4xlpAEYE\nV7y3tQEa60bvwrYi9N/NF62VjrD853Q+Q6Kb/4iPP/0xtoSFToamWR0tR/LP\nJjfvQpDVySdM/H30EJBj6crbWTpS46rgYe93bY3EgyCpXFNA3ktaWS/jq7xK\nIq4elM7mZz0Dv4vDywWD5C+oR2yY04WWvx2oJL28CysI8z6Cq2Q8BAuc4Slq\nhAd0sZ2Hf1r5oltq5fBRtTlP8OeEfqhY0S/GWAKOm8aB2rYeMC/Wwp/qry/Q\nj3QMo5m6sAT0p1zkhM7ZjkG/Oay3HjLBSRU3od5XsFv9VpLWSLzPLLpB25k4\nf8oG8zMbvv3mFwiCWVMXuWGvVFspj65gQcDz25ekixh5rbAGNXhwurYQQb+H\njlIQ\r\n=+fPC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.11.4","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.133.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.133.2_1537432080077_0.6220019796211291","host":"s3://npm-registry-packages"}},"0.134.0-beta.cddc8121":{"name":"@sanity/presence-store","version":"0.134.0-beta.cddc8121","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.134.0-beta.cddc8121","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"675f5d1b9f95c68ba5a2f881d666e150ab4005cf","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.134.0-beta.cddc8121.tgz","fileCount":5,"integrity":"sha512-hpGkK4BAr971PbdYZrblUuSXr/Q2XA2WsjoB/TvvXKuvfiq0Q308SKRRi3cDBMt7VzgBPq8qfV+gmsjRRMACiQ==","signatures":[{"sig":"MEUCIQCASnR++Bz+c5/Qng78ExPiL4HG0axgT2YcEYabg9au/AIgcshW9SfpvZGnejlhimxzR1Q9bEMnzTaezwdwgxolJv8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16603,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbo3jiCRA9TVsSAnZWagAAUeIQAIhEpTE1lQryBwdspeOs\nBTk4l+FaetahFDKVAmqJ5FTYewUAddZnZVuFFbKPDmVwfTVTejI594KOZfD0\naRoy0bNRx7Ku/N7F1ZKlWysWsW9u9zP8s+ld8VIexJfI87wtsNdI20s98TEy\nBtq91yjGVyzcN22i6uOAiHjwOHh7e5LYY6GBiNT8/qc8m+120dPs6/ozlXMr\nOT9RI54kzmxBN7apJEMCWXX6YSm13jJkbdMYgAf18SWxtJTX78+XiqdBwQxT\nheXmsNZp8lHoeSThy95smpJHC8tuuQpr/XL/LNxsqvyz7GFaMQOwz+5mtvVG\nNNhvNWK5LTvZ47A0I7+trDL0rUmAtWcknZBBa25Ec7UVOcdD+nCmrpGB9QKz\n3Xa9DLpnXPNxqrz2ZHBl4PxMoxBzplPAUP8TIEb5hhroysPRAevXevHZcC2Q\nzQ3kyVbS0SjuLsploRm7MPHntHQUoIr8PpFGZG8ddf92TOk+v56FrYL+55IP\nID8uqKRb6hV2JmTCau9R8+UCt/J1AKozjZBtG4run6v+6SLJ8X32N4iYmMvB\n8mEJfv4XZWPANZMhSb5j6z3hnZlKPHUitHUECKS8xMaU6rIkkzIYWP1pr/IW\nEY6gYp+/V5Zjr3ipfFwI68RH/nu42LGucpBvgka1nG6EjWocX3mHlT1k3oGu\nFivK\r\n=eSxt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.11.4","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.134.0-beta.cddc8121"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.134.0-beta.cddc8121_1537439969400_0.6658547910151345","host":"s3://npm-registry-packages"}},"0.134.0-alpha.d19d4c0c":{"name":"@sanity/presence-store","version":"0.134.0-alpha.d19d4c0c","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.134.0-alpha.d19d4c0c","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"3e16f75183b56dabd0c44dcf6196aa6a906384f9","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.134.0-alpha.d19d4c0c.tgz","fileCount":5,"integrity":"sha512-JxpnXCkxURYEZJ1xPuKtDBQUSUlMvZYf98G0GYbl+5KeoDjyLNZu5U8hH6AChuDr+rMBZCVlH7i4+86FdS4ypQ==","signatures":[{"sig":"MEYCIQCOIFbXHcWgWqsLpclF75Ic7p9MMVs4ocTecE72USYu9QIhAP+30u/whIdK1OBThTZ7RJOUSMeyaWeesxnl0bD2ZlCe","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16605,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbpO1hCRA9TVsSAnZWagAACEgQAKM73OaAmwGZynt0DELC\n2aGC9xK1Wsof1ALWIXFyJBi2jTrAc04kvbGk89k9wrmkjj2AcMkjjXQzSsia\nv9sSrHnD7IaX6+PorwBWBAiI/S8MeHSyaEwVUYx1MEY/qxl5/FFRjkgqiv9U\nH4yD3HxgmKhb37/10ESyFWKnxQne+SgN7OZVA+jFx+nMYuHC4JqhzgZEM7AO\ne05y+hkrKL2V+yuSg9Y+4OnxrvP9/pWVmpNkS0aMBXtC/m+da2+SH0Kz/Gb4\ntOVS4frcLky11FRLZuaTn2anRF6UYvhknOJomslaUmwcC4t16dCqP6huQipD\n52wXdVuCBepIPd10XwwlBjhqXPxO1OOoKh7rw6FD273CR9ViSl/r0YWAZTdN\nwOEXmcfCITF9fOy8AAr1SeX0rbrleHcMslBLZSA+YuOLhb4WexCHrygxqz5H\nbqnrgsbTW8JZbVw1VGKmQ7T/OIG1rcGvo9jhMzimxA/HqgOjpCFFS9jkpzaO\nqVzeggcuRtIJkSvneYbyujOroghjWM95g1RWThJf3dWny8a2Jp+HUVJ77xH+\ngmeNwo6WbKFK9tob/oLUzH+t5xYLfXlul74QpOe3aHKExvWutIPsAxhMCWgi\nB8wNkn+fNmJqFSTh40aXkqUO4a8Wk++6QxF9+oTL0/+9Iv4u4kWwuBxdf61T\n4+Rs\r\n=Q7iU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.8.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.134.0-alpha.d19d4c0c"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.134.0-alpha.d19d4c0c_1537535328741_0.9193567123291708","host":"s3://npm-registry-packages"}},"0.134.0":{"name":"@sanity/presence-store","version":"0.134.0","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.134.0","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"f242ead375399e37015a6b628d54805fd448ec89","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.134.0.tgz","fileCount":6,"integrity":"sha512-+K8QWz8+gATFhLommmHWPJzEQhWBFlE+tjpxRP6AWIWaObDKm32glWAMaOwOXwIzlPnPfppzwLU/XnSBDwpe1Q==","signatures":[{"sig":"MEUCIQDjAdTKmLQPdQNDTTDvJGH6gHjCdIzfbsKA7DCNNy7jswIgIH+retSVQd/TaIhRIe79HD3Sksh3CioQ8TMCU6kwukQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17695,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbqzzRCRA9TVsSAnZWagAAT6wP/1FNYctzk5VHRumpYG3b\nsQzmXIs62sSwlEnmUhKbLgQme7yis11wfS+maByrh9hY4ackjIEPkKyBVQ9a\n4RJjcuuUQ+9SSE9eiXHctRDtkeeLggyNABI/+J6ZhyF8OuF3JGBI0Z96NVVm\nEUdp0E/VxSBsuC3WZMmD8dfAsGzKifW9siCNexL5PULbRepVih0ZxH0QyJME\nv4liqX3xwCUA460zmsZ4/oOeDWj7xmtk3XZeZErAyDTbYtF0D2W3dBWYuLJQ\ndaoj6aFuriSU+yPhf13vnmR/lXjmYgzD9nrB96OHbaN5ZDxsALbcd3iQnhiU\nP4ju5hO+/Nw+Vu4HvNjPcAOUoE2NVxgWyUopIWWNSfDvHnEhpH4VkiZfhL4A\nEqSrc8+F+zfVbg8USRzHJBt9aEFqwWgjdEzs41FoMmbS3nEtgPWy8sYfgivf\nfMiMHiC9HT9e4MHvoKUZsrOSiHdBtKMYScZwKlxx5Yux+4qWiKiAewnLzBHV\nYWJhTwNzSHVgftTucXFqSHXfslwjYaelt/c4+YhVylju/IMsI/8NMq0AGfcl\njt6zyT8+Rg9Z8wsoPo/HtWqkEh73GFGdQYXEOOOufnlFBaddlkfFewV5kIGm\n0Dtz6e1kKeoCNOYl3QvO8bJTnwdKOjvEWUlHzuXyXIHbRL+OjM89h+lUf0dK\n3dqN\r\n=ZaXv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.134.0.tgz","gitHead":"6d7d358444909ceeea5fffd2ba0564431f9b514f","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.8.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.134.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.134.0_1537948880151_0.9933295804019895","host":"s3://npm-registry-packages"}},"0.135.0-realtime-block-editor.220":{"name":"@sanity/presence-store","version":"0.135.0-realtime-block-editor.220","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.135.0-realtime-block-editor.220","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"8936c207dfe11a19fc4e6ea681a896ded891d250","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.135.0-realtime-block-editor.220.tgz","fileCount":6,"integrity":"sha512-ztJl8VrSyNPvJ5BJli3bbfUhnAtVgfeXyyysf/NL0t1wLU64APxbOlwv7LYFtvkVxdroPybI4fyoXcCdwzY+/Q==","signatures":[{"sig":"MEUCIDnpbWUqHxR1CqrRz5S6/SjklQA5MOg7KUnhW20/2dUUAiEA8a0T36gWxAr8MAQs5FyTeZwiO17bpfgASIy+18F8zqw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17767,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbq0iaCRA9TVsSAnZWagAAOBIQAIGdtgGLT5jXaG9tOnPG\nplW4h/bNxOWyPFwnydX1evEbLeaNkScSXs9CJLTiPRGpwVHT9Xu6qcQ6KKO+\n0PFV3q/pUWgWI1yNs/lcb5aMBp4mfFaBBt7PV4aK6YoIBR5JwEe3g89k2Q49\nuG9uaOezGEWirwggUYNymct6mS+CSd/NW6b4oao6bRXA3z2dFwOXXybwaiHp\nNuJ2uNPeBdDWJcrB80rPcte9fWXle2Rv2Zb5s3LpcaVoMNuINkpSVtkgug73\nsK34xGOVPN7Afq8xGET9Wnxu6YDPrziAPiFCcn8bYMrtU2V9eJC9hOgffioG\n+ycn7+SpiSPmtcaFO8bozwTMOtJ5WXuL3EPG37LxRHO+pWMIqEo8Oc5WCrjb\nbHRvoPGnTKeM6hT0ogbtW+Hs+SZMLtd/5LBX0AVudVtD1vARESKeVP1krX3J\nFpUPMD7GoKHg79mtMWaa8hZOn33AKpqq1nLwr7AlVWimE1Vw2cA2P2hcoAxZ\noaEPcg/yRGvw5RS8u+bOD3G8wcVAJdxdCUdGqgfdrvRSNbEpbzGkYQ4YMhB+\nHNf9GlIo3yWzZYtEdvrglAVJk6KtJKbQbDB39uGD/3yH6CkPw0bYsWqhmGYE\nwFz0/dULoWGxGwh3maU8Y/nh/i8KU9EC9MO8tdHyy9/jv96p+GTuu7DDVjLb\ng7uB\r\n=edow\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.135.0-realtime-block-editor.220.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"0e999271cd5c055668ca14fc53f3dd84d50de2b5","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.1","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.135.0-realtime-block-editor.220+0e999271c"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.135.0-realtime-block-editor.220_1537951897588_0.4476370432770349","host":"s3://npm-registry-packages"}},"0.135.0-beta.0":{"name":"@sanity/presence-store","version":"0.135.0-beta.0","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.135.0-beta.0","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"dd3be959ee8e0c9754bd5cfd53f9f4003359f2b9","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.135.0-beta.0.tgz","fileCount":6,"integrity":"sha512-pTah0M4fttuXm3bSRRNDKoVh+OTFsMM617lzD9SMawHqlISoKNugxlEE8ubVYUN1UKOA/yy4wAAv5pqOFqa9cg==","signatures":[{"sig":"MEUCIQDz1a3QdV9XrQh3oYuA63BYRO8/G5Gu2YyWPFI9MMYJGgIgGEp2Nd0KwpwihpxbJ0qQ1ku0zRXFrPyB2UtepJiyc5o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbq2nwCRA9TVsSAnZWagAAiqQP/jX6h8eoc1apDEKl8PFH\nzdkDYn+KeMlkATuApKau8GKQGBeKshSZ4Fz9X+XT7ghf0+SmgBlJqannx975\n7Gn4YOXUvQUTnNpIHTt6uY3zzNQ87Ad4yR9Vz0oGCPI60rNBATSwFo1ECO3o\nZmUM55bF86GTBwtOgxzZWu0GTm0cgURZk8OWnbYfeOBEeGUK5dwCjakZ46HN\naNxnIhpNA3xX579j4dRlACHKLiGaqPIRE/NiOSlFIG6UZIk6wDwksgP53tBC\nTKwQGGdEBKBxdd66iod3lfg7cSM4GPpaM7KpngljrRK+Od33t232TM5vUivP\nWDYdRhrZJX8RYCoohaH7qEkamzxfqf0+VlwJhMZdOqgSCLkg3NJ2PMPTR+sK\nC0LWWHRhrdoW7/c7YbRMsErDSvVx9b245VTh+JJNCROVhllmm0+1q/X4fWMz\nt23Hd399A/zBtfVGmCTP1yo6Qm4ONp8MGWNjD9G2YEUiR4iPy3l2G40uDhcH\nptMomMNK5qm/TvhRb54Yx+OkX+NkFKG2pDeTWP2I54xmNks2nXE1eNOSiEZe\n29aDG0JcBZNMj7OmvG6PyVMUu0ETpsMqP/Mh2wsig8/XZ+VZbs34tpYP6E1W\n41+6i4AzHhd4+ycq75df401sRhRTOSFsxRU2tVSfs1fCbWkKoSJfcIXSykOd\ngUBJ\r\n=3FR3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.135.0-beta.0.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"6d7d358444909ceeea5fffd2ba0564431f9b514f","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.1","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.135.0-beta.0+6d7d35844"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.135.0-beta.0_1537960431878_0.17504553508968268","host":"s3://npm-registry-packages"}},"0.135.0-realtime-block-editor.237":{"name":"@sanity/presence-store","version":"0.135.0-realtime-block-editor.237","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.135.0-realtime-block-editor.237","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"655b94ff2e0210fcfca1d7d37c247127cda1df32","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.135.0-realtime-block-editor.237.tgz","fileCount":6,"integrity":"sha512-wEo8V76nWZ2AkDIYlkzFf5LPHUAO+sVY0mTIPigON347GlwP/v41D1VjaLSKEd30KvkMAFsf003ELVg1MvjExg==","signatures":[{"sig":"MEQCIBb2QJEnXdcynXpD4tYIU2WG9lmH9yBYZo8p7RJ598e/AiA1vrnzRbCzwBn2go4WvB+FBEGhAu5Ln6k/tVDEpwsA6w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17767,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbrON8CRA9TVsSAnZWagAA8fwQAIXStt8xMqiNm+NOIwW8\npw/WA5YsDHrILtLuw7MwLY4z9m/+RKtj95j/xrfPh63X7L/X+0cAL9a4wi97\nWO6SVob8sCS+1gY6E8j5WCIcjadALPgftozSVsrbxZZjbKpgK9/54hwFbzKX\nFttu6i5YlOn3x14Pq28bZZ6RZekKU3YYqLkgEbJmfKL305vNQgBJg6wRbJS0\nTt17pI7yMMvZsfX/dRY7mKKgHgH8PeW4L5t31H9z+YedTyr/ig3E9e1WwwOt\nqPJEL2eEjOQUYHAy1JOHOHMmMGLovRPZTLoJ6pc2Sw1CA4FyZ0VDGFcaaQE7\nFdYVbnuPv9ZruSnDVwm8J1hxoWuYI8cpR/0lnABP0xghGTB0oLy8dHR1YjVW\nOUYMBzGDPzaYWN7CSb0mOR7wALrtPyJe4dCFQoGU/3pMR/HN/TOXAKQ8p4O/\nhC05LWYzcQx8KYpc+ePLP9c0kXXwFSGjUmTOYaF1kdgVoksnH2OK/79AyKpL\nVtkLveGPX+hWRwdewmsL6mqe18NMOi+svxVPyGVQBbyLgb4W2X4OA5gLxSY/\nR+bcGtEHz308dNGLi7IQQXfW+i66na+/xsVsjnjdgAfqi/AJD75DoZq3Bup3\njA5AypOqfbdtanf1YX3bWRjX801Q74F9lf2OpbekixEiALI9CFD6vOkl8kOk\neO1k\r\n=TU3z\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.135.0-realtime-block-editor.237.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"10c8eb4c0b76f24821b2774f286f6d859e7cf619","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.1","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.135.0-realtime-block-editor.237+10c8eb4c0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.135.0-realtime-block-editor.237_1538057083755_0.03376653490743253","host":"s3://npm-registry-packages"}},"0.135.0-realtime-block-editor.250":{"name":"@sanity/presence-store","version":"0.135.0-realtime-block-editor.250","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.135.0-realtime-block-editor.250","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"f995a2f09bf59c1e5c72709e0bb2d6c9e8dc530d","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.135.0-realtime-block-editor.250.tgz","fileCount":6,"integrity":"sha512-CKngi6qoEX62GOZsFIpVIJDPMYvZRNdK9gkgLYjp+epAf34iS8lyv5gacvCGkV1/ZlMs6RHsPzyP1EzYq0OO6Q==","signatures":[{"sig":"MEYCIQDucf4EyXPVfOdvFT8PBWsLHrP04jt73wGKo+ZJAcC2fwIhAJYS5U4aHg2MbwFiNg2uGzdNtnTmQ7ZhFzvy4nWVVRwu","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17767,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbr18yCRA9TVsSAnZWagAAYyAP/jYomhOAe8r7yz9sb+G9\n5HFB9JjBhGzpSvXKGWxMeFhqEK/WveqqXmU0Rd38ET4TlhhhOsT1oj1ycboQ\n46A4JfLpInNhlsYp6H+3j20h2R43SdySJaDUVuDCOvzt4VZ7t3LRa3TdM0Rg\n0RGDO4+B4oep3dpY+twcm4M/uoeePJBs2gHy4upm991V+xn/cO4uzVXc+rQM\nD8cxIpDRT4plDVpb3jLxsmxPv/A3WUPt0wmBKHENmvPr5SMnJY0UHUFyjE6s\nflz52qoQjrkZGFbWJO/ouOzjPT2BU5AQoXbkXLZjD0nBxcJqGOJ+LBSmf4z3\nxH1fREyPKL9ElKpMlB4GepeAslkgd4C12UnF8r2fjhh7zeCILrdsP/ginOyg\ncAUbKrEYXDLdjAzeq60x3pQY8JUq7xQ/BlJodo2ICejCl11luoZjTwfF3R2c\njvHULgtmnuvP1rH6Pb0JSLF9fEe79u52/50hGTrABwumzEd9WeCwzjgLgPIn\nQkSILqV70aGqzBuop2P2mgLt6aAgEUUPCD22Oe4eZnPsuLXwLCtNheAw5hSO\n51u4xJmINODlwWCxhFDAuqgJ/KeZcE/PW3OZl5Iu9kJqtBAyD1ZqFlMQyE45\npQnrs28WjrV4moBes3zhzScrLvtk4IbMIwafQhIHrn7E7OPs8HEoBqGVDjvD\nRd8u\r\n=20QX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.135.0-realtime-block-editor.250.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"8b0f6f94b6fd158efd64f3f6db462ed3af4c0135","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.1","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.135.0-realtime-block-editor.250+8b0f6f94b"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.135.0-realtime-block-editor.250_1538219825974_0.5638386668204107","host":"s3://npm-registry-packages"}},"0.135.0-next.1":{"name":"@sanity/presence-store","version":"0.135.0-next.1","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.135.0-next.1","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"99dad24e9434aa5b922b65d21ca3bf301953f761","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.135.0-next.1.tgz","fileCount":6,"integrity":"sha512-IYPBaYEDmsFZF+ZhXKSqdYp6i956Gy7hBNjG9X90XQPdSBHSh6J4lmhlSGJdQg/hyZT2FStO8t/KIDk8UcDTUg==","signatures":[{"sig":"MEUCIQDc5El/SjfRKvoZjfZsUQuD4+ieb7fJKuFvA7MsehGmKwIgRl+iSRxm+mt7mb07f0t0ExehWPRcJVkey5JvOn7mBz8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbtiGHCRA9TVsSAnZWagAA3X0QAJDx/OYjJXOisfQl6NI2\nAvahd6/hWj2xZfOzD1coNkYhKNJvrILLB3mPcvX/a0hfq1JX3cJ504kYyosY\nwsG2/IFoQv6V+96qaxpCC4foaQGPpR2a1pkM3ar19gD2GizL3YccQ9xFXeut\norjXqSUb3VG5yQ7OkLbGk278UJhAK+0NfAYyi8XofghmvGD4pYZs9OzsocIB\noItgKE4vmTZCgsXFo+lxHXrrCGPA+PQdLosj8k09MWmVq+3H2ruMEVSREYVO\nzY1PmOU6N3IG+yK7eVgumV38lhUnT1xd+AbLEDBXWdEw99HQCYV3vPCnR2+w\ney12l40z2sEfNNRAG7Ud4NRhMBv/jAQEfPS3nuJp4oAoMDNyKZp2glhhkeJ1\nBzVmSYtCvkoVHdTCFae3Ws5opC2CXwD0Yfs55toi4tMRPwj0/FoSdwgviKqS\nLDkg1FlhDpQk1csB2l6FNP6dqgqMtq3U9k5/1hRpFr/OQkhgZwCM7KmZnnYU\n33oHREfce1D96ioJAB76b7/NKm4c74S9ghnn9/p+It8XT/21y0IeJWB7j9wX\npUQHDDvCdQec0IdvHYJWvXO94yGM97AneSreGkJlSCmY0xZSj6w3XklRS656\naWrfUo9jpYnqMWuNd8A2ZuBYnVUlBWCyUVV0M/5OnCy/kqoBUcFry5VNiYGA\nu9Lg\r\n=85qD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.135.0-next.1.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"1414615ceb43d8f164e807760d1307f6dd416cfd","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.12.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.135.0-next.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.135.0-next.1_1538662790443_0.8545188703409365","host":"s3://npm-registry-packages"}},"0.135.0-next.2":{"name":"@sanity/presence-store","version":"0.135.0-next.2","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.135.0-next.2","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"7d60e0b2d7db2c3f8661bcbcc9c446b9006849e2","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.135.0-next.2.tgz","fileCount":6,"integrity":"sha512-v+ghAikPm6BuyBoCleK5NsPjkqxdPFt+0IuFeO/3HsNgmhq0D/G0AYbip04Ko2hzWiDgceLYK1hYrkFVpFHmQA==","signatures":[{"sig":"MEUCIQDorq9PMvdCcjkTg/ZZJGOQnE7ysBbF93NuGAMzchvjfQIgSPNowLIMjRss0CDynroUFkYem1jPK54rpC60dyeILHM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbvhWCCRA9TVsSAnZWagAAGSgQAIUibirdcuXFZgWoZRjk\nZZYVxe3IPieCrs62PwHqF6TMWwnF5rNbrd3UtyWiY7IqYgHMBfZ+8c3VXJja\n7rpqilhxGEChDtaSbf971LsDjvJn/jE05CTqB5qQlMjvCJ8+ePDsD8i/ZkqI\n8mo4CQ+JNsbJMtWWiYkq/8Y8Yd6ZIHXki6Xbo4xeYRvh45QCwgK2hBT6ykAT\noaPr94OxVl2528dnFmGSubaPjByRfuQVnSn+tMRmx+N7HP0js6LHHtlyfewp\n6tWoSFXd8iRm20Kp355+beyeDOL3RClkNK3jpzdVYw9uG56IxSJq61vcsQcm\ndzWLxxXMfCqvyB+udHlxMQwzHgZxdtxBdhQqaiR87txF3Q99cL3VEZIY1Pyn\nwJolCWfFfu4YphqtfEDhdmaAScMQlpspn2Xv6bstZ6mrk1PRMXYieUyir+P8\nyr1DGy/j4hLt4wxQqOgnBVp6LllOgxywx8FRt3p6OrdineDrN7pGL/tLtidY\n4EnK6uBaQFiV+2nwMP211fWbJfyGS7lUfAvVh0KqLI81bWo56IiTPdkEinfs\n7ZsEMwKosEn0zFJx78qaf+Zzvu8UeKx+2ZqAuf2XNN/1KKnCCbhpxno9dcaj\n9mbisdxU+yPts6swrN5nv8CSWn4WbbtPQIysY1MCd+OKdz9nlMY6gghwVrRu\n/F93\r\n=GM5P\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.135.0-next.2.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"2b6cd606ac7de42d57da01ebcb09af57f265b82d","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.12.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.135.0-next.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.135.0-next.2_1539184001295_0.8653526923274364","host":"s3://npm-registry-packages"}},"0.135.0":{"name":"@sanity/presence-store","version":"0.135.0","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.135.0","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"0f9a921c6073696a559daff091c1c82e9baa1c61","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.135.0.tgz","fileCount":6,"integrity":"sha512-8wlRs7DNt2FlE6VY5n4k21vymRe4wcLQdjoDIQr7bmrsjR/T+W5ZdBPRI9hClAgKcijMP1BQCRDhLvo9JD8fzQ==","signatures":[{"sig":"MEUCIQDFklR3NG64JpJrd9IRUSj4j2hyMrI47sq++7gqVr56nwIgSUL+Dp1AwHPv74+dRtva2F7flvZT4kj/k2v1GKfdUV0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17695,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbxe9GCRA9TVsSAnZWagAAuj4P/iGL4CWwh9cmP9pZ1DGB\nLhhcKhVkk1TAy1knYUIYGI2R9Woyy4O30Cg5oC/bBpHyska9q6iEgFK10uq8\nfMNf/Ug1Hs1WTkTFoupHvZzLEXzm9r+mEXDg0r19mz/i8k8C7ZsgsovryLHa\nYE6tyiCuMyN1htpcmAswlixTvz1fve4UH4lifHgdi4K3mwLYbNRefAkWCf9J\n6lJ7HPT9h99coZ8N+S1txo+2Mqh8PxCwXnscl27RwsuHLoXuuuT6FLvmnUl3\n/bUvnHAxxgUEbmuqrX7o8DJeZeQ/gSXQdASHTuvFS4lslMAddHayvHjjq5ZS\naeEMteKQk+UrWnjIcKZ0s3uIpaDuozp/0XcIsPHvZecpWrWwirqZ5y5T+XPA\nm5BMnmtrN34OaFdt7G5kiXu3VpCPYhkRYgurxy2hnqK0wZaqj5YYG4/DTXhT\n1IaYmrFn/cHJK8gH8sl3rhyGx5VePKRNhoxr44z+FNZafBrvtmbbg9dsCEk2\nLfaGiDgdp597LDeZ9/VjZWjVMKHI/rtZVe3sKTWzBrwAG+ZjQmB/pyIpt8+F\nmb/zZT0usfUDiws8UrD7FiIfbyP2itahdR41/mlrkMtlDFegFvUZ2wXbDDPS\nVwwW5BozwsPY7W6v4Wkav8sBINOGMkTUTkWFMllTlfSA7hFAXkYd5yTX1g34\nMgLz\r\n=xk9U\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.135.0.tgz","gitHead":"107455ccadca0012a2aa86063f8ab1a2228c9959","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.12.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.135.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.135.0_1539698501606_0.8441114349130519","host":"s3://npm-registry-packages"}},"0.135.3-next.6":{"name":"@sanity/presence-store","version":"0.135.3-next.6","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.135.3-next.6","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"da9e9403a400be35b6ad17fc072962f9d04b4bbf","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.135.3-next.6.tgz","fileCount":6,"integrity":"sha512-4/ZyEFjEhAnkyRm2njsZr3HM2Nl42bx0Rrx2GpXbufSdzpRrrpdiqVSO/wokYK6+sKpj2aELMJ42uL5ebyS3dA==","signatures":[{"sig":"MEUCICoDp6WclIMrGb1juzIReXNnRTxyE6a6PPWYDHxyW8AqAiEA15IXbi+KVIhQedT70HsZQZr5QgCvfhjPY6aWPi63eIU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb0t/FCRA9TVsSAnZWagAA1gIP/3pElwcM9pK4DZwPyLNd\ntWwGq/MN/D0ZiYVykzYJs32BVdRX5TrDcvgFckqI3dgm9+mBQVBcxAziuRvq\nZKFva3vVPi3eDmK6Da7Yt1vRPDFFGopPBXlxeatqyWORdTny9JE36tvXqCdx\nX4qSloH3bUvvifFAVVBm7No9v+qb+uCHf6XXpjhAy+qB2VCVWy8JPzhVy5F9\nwg8gSLFKDQ0BTwxPWJ90Wml8iSH+sG8Y0HRxXqmLv/7RfbXtbjM9jfrEN+Q3\n54z6SV3/lH9FffQZQv9fXQTcgwfAPvWxl6Lq3FyjZXyUyPdtMD1WIgsG2Aiy\nGBdRidEdHDaqdeHZs8MlU27jJkLl2ztr83x8gr1SrBxEBEOXQenvROYtFfUC\nTR5hOpHNxc5UD/YQmuTdDVOGcp65252SVmXIPOQ7w/z79Ueh/mrTT6jgl+LX\nxzEN0KteLCAVvEauOtsSSQDIhxRu6RwFOGFefN5DS1Vr3ya23ko23gtwfBj6\ncj/+3mAekDxXvPFeHXZG01yeC628qNUgW5nLQG1WxkGeT33pSLhyIT5/Ac/s\nbrefIMgn68c6RyH/+nf1ZAdqEL18mPdvFnrvAD7pPmbCLiTds5zurCo+bVHA\nKsGymhSro1O0tlomKd+0vaKkXhIbarhRcr00Yk+JQCCWWl57n5o7Vbrp9HVB\n1eNI\r\n=sEMQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.135.3-next.6.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"006ec07ac91d655a6e7b50d0ea8a4f27bbedc13b","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.12.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.135.3-next.6+006ec07ac"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.135.3-next.6_1540546500221_0.45847596439244565","host":"s3://npm-registry-packages"}},"0.135.6-canary.209":{"name":"@sanity/presence-store","version":"0.135.6-canary.209","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.135.6-canary.209","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"08844ac8086e0a7f782b4de28d58c24c87cc0a89","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.135.6-canary.209.tgz","fileCount":6,"integrity":"sha512-49jGG8eM8v76EsmoeE46BojHpQylL3A17FGCkhSnU8fqqM3em0lrh+AWWRxKnC61Hh6eWxBvFdd7QqbCu/5gWw==","signatures":[{"sig":"MEUCIBART+3NUfjypquGsGlp+B8ZSvSx2+x5lut8TzQBGbyZAiEAi6hjwtTk3/4u+XO8SGRw6f+n/XK7gGkb9svkfpbIxYg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17737,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb4vprCRA9TVsSAnZWagAASz0P/jeWhKzf9xTscNETM5Kq\nN5686PUNAexVhE795p2dyhy2zeQjLUYlVJsYGeDM004JQDKK88+aPsff2c8m\nj5EJMGHX4NNsgi0jr6ORTJ+0Usg/eM325eqR9hV3dfWfXuga7dhudkskPgtg\nE/xHeVFNvXtWLYra018yWX2bttDqw/o7OHkebPdPW4QekvxBdldrx+RbCCiC\nkKzPsuRTZZfKTcv7zQqick8AHVvuBXT8+uAkeXPhZXIhIFGk2y+bl9tol1Hq\nIPzJbGCx5MrYS0eGy9c+67I3trHN2lUdxLI2QiB/5KSNFJ3pZ01hMQITDBdt\nsGAAKde7YCPLLvxKt+b4agKfZ1iGV5pEhN8QvhGAn0tgoCcKL+5ccWB48LOn\nG5CER+DbRB26XCL2lat9IoqME/48lm+93KDJ+EZauFcs44BO6S35YRXwjveU\nUZ1q4g/HisQYk6QW+7JfLAsJO/l50AzTY81OUsSp3ZFpdWhUolHFK7uH5DWd\nWVWsx8nC7WiYYgF49VgerI5unhKKf+jHwZyUxmqlZgf0l1UCtXg82VOhht49\nWdN51zNP3X91ZlqGHranQtDJuxD+izH/+MKQDPJVjsYZoWdKKvaefdPJ5Ein\n13kZ/exknsakvfasCAIr1mJwSADzbSPWAlrzl3qxNvub79FyOfClmMWRdfsg\nhCtr\r\n=jCWt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.135.6-canary.209.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"81a43e9a91d437b330e58e45f5d8abce74d3c80a","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"kristofferj","email":"kristoffer@sanity.io"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.2","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.135.6-canary.209+81a43e9a9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.135.6-canary.209_1541601898805_0.7370806422110181","host":"s3://npm-registry-packages"}},"0.135.6-canary.217":{"name":"@sanity/presence-store","version":"0.135.6-canary.217","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.135.6-canary.217","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@bengler.no"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"31b977de3984732633cac3f5db8e5d82e5ef7c4e","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.135.6-canary.217.tgz","fileCount":6,"integrity":"sha512-0cy1YSBSJN1QksmC50vqDDR6TCbRBJq5JGqxpMiCMa2T7qcGsn38Au/Unh+oiGp3c5MS7GuYQZnsWNAxCcC/TQ==","signatures":[{"sig":"MEQCIHIccK+haA1IlW8Kn4aWLgOcM6Y0WsIwFhf9QXDe93hAAiBTZxxdRR8CfefRMG8rstTyuXNf/v8lALwHlyUX6VW1JQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17737,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb4wUoCRA9TVsSAnZWagAAhD0P/Re15v2QpdpnD944zwlo\n3UjOdpZqmjCvRYd1xypvD6xlk01kfFJkGiA0lnsEjjZ5LBt1epiK4M+NT0zz\n/sxcFAsi+r9PCM0wjnsVBZas/Bw9eJD9ZnS0y7I2fmu5v8G//RxwPyK7utbx\nfOQhoLoYcfR5Kp20d3Mp5HnP+Ae7MqdTmibhSP2uA4Vk38mKK98kVY43aEhL\n2VTGu/gvdDoTEBWtmAwXw/dbxzGJkCp2FQ7xg9FRDkh/zzJLd1D1GRcZu7KS\n7DBaJwguH43hggCZ5YzpAhLBrGq3unEFMKaw9yJmNJKxT1JuqX1blkcsy23J\nOx4U9AY+pD97PUJbZ1CGy6B+xtGz9XGRz5lUTNsDC0KOSbIjI38ll/3rfgHF\n+m3SFItGPRsB+kCTv17EqO/yuEYv6eopFpGwJOR9bvYKFDJk4bqJCPXWQY1E\nRDexKVk5//1jgfOk5WFP1LpMlWZWorTMEkib7YV5divDaCeNYZRBRTHvrnMY\nSWOo/XjlkWn1RxuM9wDDnRTIkCGeLyrEdou824ssvedbriGOXeHT/brojdGP\nA9h4T3MkZyagQKT9NwsklZ+hHphEErway2rigEku9ZlLsNyqsuB/W8HIhaMl\nWU4I364F1Dn2uE/cJSmlGivWH3xR5NPPnSGEqmB0846o6Gy3iZzdh+qsYsf3\nlk+l\r\n=v61Q\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.135.6-canary.217.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"89ef7ef9e4e4e12624250e5144fd294161eed044","scripts":{"test":"NODE_ENV=test tape -r babel-register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"kristofferj","email":"kristoffer@sanity.io"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.2","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.135.6-canary.217+89ef7ef9e"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.135.6-canary.217_1541604647636_0.0019031556342330447","host":"s3://npm-registry-packages"}},"0.135.7-canary.241":{"name":"@sanity/presence-store","version":"0.135.7-canary.241","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.135.7-canary.241","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"1562391acd50111e6d04df508bab90df566581fe","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.135.7-canary.241.tgz","fileCount":7,"integrity":"sha512-k3HN5h56gMVTpFrG1EtcdmDc5e4BkjmJe98HW/RSNFr/msjvX4+NzRe6mI45VprsyQlBj08Y/nZ4uRUgG4Rxaw==","signatures":[{"sig":"MEUCIHM6DRc+wo4do+/9Oz4XvdDDyg+ccAtNe+IiJ1DHtTz/AiEAsf5G0ARbso/TklWjBEIuTRE1HCGjHlRKlYsFEfS+8Qs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17793,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb6VxoCRA9TVsSAnZWagAAYpsP/3Jt6DYCQdFGlnUIu2QB\ntODOHoskusspu/ICMfwtlGjWtg00yTPM7uRsYXKgA2xabnt7b0sOLRgrIu/z\n/Q7ials/y4aV9z+X5rT7wcpDZT25VL8ZrmwsF2AJ/ksVNIwzdHhk+7+2F3PI\n1D6RyJ8Zt7ky87FhSRX1iD9vg58mCTjBOiXSI/dqsNE9xqOgyRBa44GUWR3p\nqw3CKCdN8G3UMF6kcYMPBcncGNV5XQETMUYQFpCC9HK8pr18Mg4eAYyiBHbc\nYUwP6AsovUhJTedb+wcfC+28OsnfhZUxrF+YAdTP9dHJTTQwq5N/BA6pWiSe\nRz2p8+x2YsOQ1taH0ZskiW53xHi7V2Xoh0mqm9Q1GSOUwEIP8r/eR2fWC0su\nvLuPljUsxCM9Fc5YREsRA/l0exIlEk9BGb6xoPsJVfe3BBVO4oix+joFyjMd\nzdWIKlC5CvfcEPTVFvDqY4AvQJ5cLXTO4yDISqync8uslFAGQ+5DYvdTmNUb\n7Rsp4nfA9lnuOwkxExwuUnJpN5o6J0hsgdxco269dAI9vGEpBL3AkD5IQ0ct\n/+t9BtxyxN+wUBRd4m5/BYq9UiOaJqctx4mpqUdF4PjnEVRy42j0553GS/Sm\nFyHoonANa9yZBUW++lN5B4LSyfLsh7xVkOi2lbIS5PvkKPT80yQQi6s7bMdp\nTJkv\r\n=OgL+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.135.7-canary.241.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"c18deba40e003f35ace83d8975ab1f70d6b4843a","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.11.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.135.7-canary.241+c18deba40"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.135.7-canary.241_1542020199518_0.09609147311056243","host":"s3://npm-registry-packages"}},"0.135.7-canary.245":{"name":"@sanity/presence-store","version":"0.135.7-canary.245","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.135.7-canary.245","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"99a5d4f25864bcf05b5ada5699c929181c76d675","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.135.7-canary.245.tgz","fileCount":7,"integrity":"sha512-4YLFXUSb5xWy2ph//dpxFq/N5EJ8MfxvvH6JZcvnlKjMkcGaZJG4u/XD25aMhQIa3hbNzhUt8Q2DyN14uQtPqQ==","signatures":[{"sig":"MEYCIQDgFECGied+fByC5Q0lC1jZzG5fZJopf9ofoCZ5HudCJwIhAJidz7p/s+IEubnkfxSSFv0L2IhxCJbHsggsvM5heqQI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17793,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb6YO1CRA9TVsSAnZWagAABd4P+wTS/wnuYYZhc3YUr++s\nru8B9qHkFag3m1y43Ge12ATgMVOtTLGelYGTNqMJQQQYtPfihuBQGHW7VPBf\nvznHUvZSFX9VuBAKC7qVwzqDxMEBuzuQsTLqxYs6Z/ECFF2Dnv1fSAv2Y5Jt\nYVA37NfT2TvoPStBWCiWzlUplVXmRxLNZfAwdCYpVC0PCG5GpMUvjI4KdtaD\ns8/2K7K7d2Ab26jINbhf/tHLBZx55hqGYFws48cz2KV7aqgQhwiG8v65y5Yx\nVFmezITEqc9poZnxDPyZ0xqo8amHa1r0HsPuoSt1qWenKQ3kwimSEDUNcM7i\na20IqzBEZ+A9zJaNQuv12dQemGE2RCD03Bnq+iPQkVumI87bkek5g1JtXw58\nvg+lXP4ys03RrRULkA6mXVtDlcHyIHhiNdC2ly2fX4xkTOEnq53VA6YhBD5L\n9CYwGXdocTiAW5LjaNKFyp23Qj1+gRuRx5RJgY8Nc+bSLsBe0x32LKJ3suuQ\n11a+5yvyM9L7FkykCTn8LhDotfemvY/wt34bp7pCsJfaMwR6aOeYW0XwtcNu\nbnGWed0GnolpLRnnjLFsu0rhwcbcWlQeHRkUe7W6WPT9XFKBusvSLA8gUGXm\nhAxlIMyVydC/Pk446gp0LT5C1P19xcq7bBDWDPTHYp1XX8ldfink1U1+/kKd\niYhq\r\n=g+Qq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.135.7-canary.245.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"d116e774474d53ac65ea0603005e28da74d71660","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.11.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.135.7-canary.245+d116e7744"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.135.7-canary.245_1542030260971_0.26337297243932634","host":"s3://npm-registry-packages"}},"0.135.7-canary.252":{"name":"@sanity/presence-store","version":"0.135.7-canary.252","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.135.7-canary.252","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"fb24954540bd9d0ddd500253d59a83626c36334e","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.135.7-canary.252.tgz","fileCount":7,"integrity":"sha512-NVMuhWiQvgiLsfzRGy5ZX2JGdgCXJVyRjSqyRf7GO6H5QPK1N+661KSPx7lfWrTz1KKxVaEPXzcw/EwqJfAQ2Q==","signatures":[{"sig":"MEUCIECo+fd3DBQ1AXSJ2jJeEndgLuNRY2eVuCqaxCu41tijAiEAikI9xMyPz7GWAsXvY/OAcKHXj+SCeX/KgR+oAZoC28k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17793,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb7C6nCRA9TVsSAnZWagAAd/4QAIK8Yuw0qJVGJXx17sFm\n0EU1IRlyVfPaG0eAkjDdXsfxNjZSn1JOscZC++ErKncz208wM+0ZwHVcmSJN\nOYmGTWHHi9oCC5VRZcDxrnnlZYzxUk89q+GAUf+dxDVLAQY2PX3FvtLM6Gfr\nZxVQjNUADwoKf7OgB8O5GV9lceMRs91AK7RqoW+Cb72cMHNggQ95oYc4tyTn\npy9Bi5EfFjD631AGOkQCkkuo3g3O82kp0KvbDr5kP5oMt3XfeoLNbiYEn9/0\nhwEPmwkJzcETWsw0DmoGy/wn9A8eYjQmefqJhtWGVsOCPGqmeWdYL0j2nb2K\nX26F5dxJCVj1q7w8Jqp7fsHZmdRzJjHNJU0gmjsMtRI4SJeFwpD5hzzgu7Hp\nVCaCL2d4f3ny5L5BrlIRpChFyiMY8KQg8eOk5Om0Ho54WpwCi6Gml20v8kQ8\nf5WIGrZ4UwhyEYFJ1r3iQjrFCB+mrarEn9MIWsaCD4BIJZK2EhPxBspnUWw4\nTQbn0/hqvRGs8ovFQejOaJUiuFHOOXHVgSjpOlJgqP8QJsbCaK1+9pHldwhY\nbou16zZjgyGiJPZ2KWuPol7EoLDc1FSooY7jpY1Ex4FstYb8OsuFDLqPwu/S\nDVvonE0cvWOhAFw4JoLo9vb4YigsSmz9XYZQDSuLnViOF4n06yeP5q/BqzGb\nUDyy\r\n=tMEE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.135.7-canary.252.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"6941134293c00c7553af903e83fa704481d3dd3e","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.11.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.135.7-canary.252+694113429"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.135.7-canary.252_1542205094375_0.531263630888964","host":"s3://npm-registry-packages"}},"0.135.7-canary.259":{"name":"@sanity/presence-store","version":"0.135.7-canary.259","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.135.7-canary.259","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"9eaf6178094e07f7dc091b7fd3598f3781003a3a","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.135.7-canary.259.tgz","fileCount":7,"integrity":"sha512-VFU/9+ndB7vrO/RKcos69IjiXZEUDGJ0XV3OT05CdcYOGyiwXwLAKnn8n/F9hlMHSVmI4L6VGXyQru5JrRnQAg==","signatures":[{"sig":"MEUCIFDBfq+Rpe3dHIjobwkyE+EhAAvpJ9TD5X3SdU7I6MzGAiEAr0vUfRLZjlYWlD5t5x1Ac40mefqcrLfLuEzhzQpIG/k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17793,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb7E6tCRA9TVsSAnZWagAAVwQP/2bRDC2B3GgUbImDShPT\nyQ1uhsZE2OFSOdlPqoW9r6w3UGbPmgMysn/ZB1B7k0HHEfAD9TEuCYgmwCGG\nVG61n0iAng1sC3IsoKHg6GenMl/sPaANTBvxoyr5MuXnlhGB0aGPIiB7dMN5\nnqqHDvKEDTSvfd0ARIPrC9e/GM87JLV50s7kk7IZjOdkrPlVZboR3J5xSJk2\n85w9tR6WCRqFI2/hpZ224EPX8JXwT6Vx4cEvEuuePwhst70uGO4dUTQRMte8\nENxDLvd1EDhgKaZfA9bDCHOY73E+Nmj19I2rPFPNPT3VRtMBj7Z7kZgzdBit\n9b3YTBesmgbY8AwenWqQF/YJBIfuTO8StELK5W8tYKRZB7wEv7law/9WVast\nOcHvDP3qMZd9yiekfNZn9KoaDQEmqlT1/1gJccPZLLGrCw+jxP3TBf0jJzPT\nTab5A5go5iDtfzMREi5/Owzr7h+ScnT6cVTIiSwUaKsgU2Fthy+HV8RQi3lR\nAvkNoQ+mgAHkMCGiX1VaiJhAQ1OYwier4/zBUgz/kvtb8l7zs4iCFvGZIocm\ndwsmIk7/VXjMm/MX/wBkUkZNnnZKlwDHfR9uVuY+Syk+CDP3izRxwE3buYel\ne0ymPJwfE/cwopZ/5GVNsQERBUKnGOmbCI1eVi0f8nEK1ushYyr9lGiCEU2d\nN0g1\r\n=vTB8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.135.7-canary.259.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"28e543188f09111cc9523c07a2b8e21393601bc9","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.11.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.135.7-canary.259+28e543188"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.135.7-canary.259_1542213292867_0.8497216892685693","host":"s3://npm-registry-packages"}},"0.135.7-canary.262":{"name":"@sanity/presence-store","version":"0.135.7-canary.262","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.135.7-canary.262","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"1691c2183bbe784287852a40963002cc92a7ab12","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.135.7-canary.262.tgz","fileCount":7,"integrity":"sha512-we3xiJqxA5zIAtSs2niiZQofOBn97HoUVwF0VopTOMICOEZUtxz2sBvfWQrsMbVJkvqlKSb692cgDtbLfV0vVg==","signatures":[{"sig":"MEQCIEMYQfgNOfrMUIqTV8qtTyzDrB6xQjwEFJfmrOO8VI++AiAC2JsnkBghNF4fTzGVjsZCGmRFvMUaVpduKEFtyQoxTQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17793,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb7TA9CRA9TVsSAnZWagAA1IkP/2y5RPpM4E6XfbraQXk2\n5gLRiO3no4O3MZsAJ4u2j96kK5VbTRh97pseuuRhvQcvdcWkNt5jCx2WUkP2\nWOy2l7LBv8WG2bP3CRcNfXx7XoRliuGFRrNlBaGbkAf8vwbCIy2loGuexvd2\nMSVbIrviMMaNW6Jc1S9gOSj+kjPhP9MxEdpJhKeyKlWnrk5TyXx12cLatMhe\nu1txKHOfGK4JFog8zir5v3ZxxKXY0A7Jxtxq4OSyXA/Yahk3Nc6xqJ8GGnk+\niVyQlyneNAPxRB240r1bhep2809lfiqXBrTe5ObYCTDVpXdADh8T4orHOhTP\nvwvOjrh4qLDvfeXYcO0zdMAyBjwx5nMRsHTwksuxbjPDA4UbXerH7H+SlM+Y\nLgj0n3RGeuiFRoSek4oGeofRXe6WZUtEjGHb6WNNcXKdw0zoZd/GimuWDo9q\n/FiyxaNLpaPwAb7wr5kNMMAqgMkYRxHJi4qDCROFMqkkigTNxSyw3YXn8WC6\nbsvxOPEzvN68fUt7J9f2lVVvAT43q9FGcrN/Fnm24UHp36q5AmWXQMX5yxiI\ne81plAs9dXd4poAroO9DU5JtJlwsVDT8EcRhb0WvD7SJeKBBiNjO2+2tHh5e\niDtvaiaxhFx3g9mD03r2bFIwLYPxSL0jm2iPsKOPko7+9xEJ9QJ12HvO6knf\ngcEb\r\n=AxxW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.135.7-canary.262.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"15a1421eba50c319c821df3b0e22561576e0cde8","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.9.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.135.7-canary.262+15a1421eb"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.135.7-canary.262_1542271036451_0.13548590552845385","host":"s3://npm-registry-packages"}},"0.135.7-canary.266":{"name":"@sanity/presence-store","version":"0.135.7-canary.266","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.135.7-canary.266","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"36ae467a6488a58f222d19a156ccd9c6a35711b8","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.135.7-canary.266.tgz","fileCount":7,"integrity":"sha512-XikDmlyNfaJv5yll/fDbZe1hw0jQJKhlVYNtFBX011t0Vy1UiFNu69y4bqeFAgJSFBr3ZGKVH2O28wQkxa6luw==","signatures":[{"sig":"MEUCIAiEGwyGfbz2m13fKadznVq7rSFGz2qa24WWMO89reRfAiEAnsPfr5vUVC/Gid2dOA/5DmsZX74LexpQ4aWQxPvEonQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17793,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb7UGlCRA9TVsSAnZWagAAXXUP+wT5Df3zVQImp/grSIBw\nDj7gkuWgmVr817REXM8PPTCsOvqLx3CkXCn4aEgHedox0O52xw+3Q+aaC9fT\nXdxs0FOzCtALa+N6wxibXgnnat/zoSd4iwWAdZ8tT1uHy8a2MnbcjWQXveBn\nbPcWPkY1aPiGHmi6L1wnj6EQJ8WEatHuADr1aKcc24F/c0O1HqwMcWi+vfld\nz3EPYSJxC1cdnN/w1f7EfhhsdFjqjrY5VHR3WerlE68UrWl0xYZgX9ZQzor2\nwVNvHORpdG0IzzZmhj+FUOTlW6T+3W5l7kAk+0zel/6dhvEalzlfIQtN425d\nP0eeTFBu7xq9LTJNmgRwRfP3NRI5vQo6z9yDdG1fTTy7+wrRoTNhG+Rtq4ks\nF5qwTAOSgLdO9zNwgQ/wfUb7dWlocya5IHAH/ydan8nEUCZY1BTEbAnADJeQ\nQK1pEc7eqiRmk06fMohRJfHbZxXtOnNUQkiO96494DSzj80ErfQlV59cBG8m\ncHCab5VQZ/XfVc4vqrD3P1bTYzfBXR6S6UuCLCO05ftOEmKfrv+GQhdbxkvi\nm3ApTSa5qu4fBMWiuAGsUwCMKP3BzhzkKfqFzhwvOKHdOYDvIpAtAIiEpbBL\n3vwitR+rBv6i+atnPiJ4N+PD9ORRbYpC8BZ26RPa9k3eKD7uCpDEEVOkphGr\nJ0GH\r\n=NnIo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.135.7-canary.266.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"ac554ee5344e0d52dc5987f77b2ec78240590ba6","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.9.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.135.7-canary.266+ac554ee53"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.135.7-canary.266_1542275493332_0.8733351852332107","host":"s3://npm-registry-packages"}},"0.135.7-canary.267":{"name":"@sanity/presence-store","version":"0.135.7-canary.267","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.135.7-canary.267","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"02a3c4541ca29003229d0a585538b1889089eb50","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.135.7-canary.267.tgz","fileCount":7,"integrity":"sha512-T/WQb6/wgPTtFy96gJxB3f7i1lu0D+mwfPdLH+5QQ8d3m+ngnWZN7M+50nX22f63/Q4XCrrkZzQ2Uj3DtEW6ew==","signatures":[{"sig":"MEUCIF+HR94JGL1vxJCpKtiCnnPeHXMfcH2DlpezNiOIk67/AiEAzsMQgOi0DPMRTtPX+qs8DwOEyEz5qKaon4uBujo4k8I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17793,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb7UfwCRA9TVsSAnZWagAAT9AQAIdOMTnpX+SWS7hsTRfe\nlskujNh0AUaJqRSOvKQ4fk63KEL452nbKBIBd4xEjed9xuh2TqlmLdwIA/8N\nvtQ8jp88s0p/GNw0oTJM7DI93G0WX4oSTryk+oNP9gSZ4upBQlDC2XzOU+E6\ncSIDjgSIuV0Pj0jUiwAqmRpFwFW7YWHIYoHnZ7qcs8CO5jgFBOwN42ZmACmH\nVh6fy45TrLfpiETfiZuBqV/C3ygTDKddFlkzYHkSJwyMP0UN0c8obI5ju5Oe\nsyavXjM7wdOLg9fMxXafebCY0tKN+MzITOdtSbiDKpGlnCAa+EcLbXO0+4qD\nXrbGaJx00ejWPwvPUo4ve+WLe7CjkiXcVsqNeuwEpQ0NDAd7XPvCORSv5eWq\nBY0L9j3rNqkWJ5sLIlnkpny0AGyy3OINdlmx1TaqDnQCfPmUttll0mx+rSK7\nM+Naa4Oi0ishWgZptFLs8UirzA31073wxU9znOd9oyDCc57nslFOxmAytoV8\n4aceiPeS8ojfDkrZEgyeAFOHVZak4LYE6IY9VlgzH9mOx29a7sZVBoGMXmKo\nVaRSjo5iYoVJ2gUYYOgOwwPKgHL8oyZaSafXU3SxPnFwk/Xj8XE87S92Kht7\nQcoji1idrYA0wChkckakIySVQ2+JkvVFNA2VEqxnIHCEow4+Q4htXJugQYde\nVxpx\r\n=+LcO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.135.7-canary.267.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"026a6eeb188cf543d928fe9bf5c40784e4867667","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.9.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.135.7-canary.267+026a6eeb1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.135.7-canary.267_1542277103677_0.8489584257765845","host":"s3://npm-registry-packages"}},"0.136.0":{"name":"@sanity/presence-store","version":"0.136.0","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.136.0","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"87900b607c11015f8b96501db389c13534314ca1","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.136.0.tgz","fileCount":7,"integrity":"sha512-s3eEO9kOvVrmlf/iA/d/UGvp77SUJOMyAPNMBdoPeBlwfQytzpZtCYAQUnvT7mWMHx51V0QITey5NmWdBV1G9Q==","signatures":[{"sig":"MEQCIAWA0tj1PscWutNsUPOqTh0O4P4ZvQxxkbSZjKwiVzUOAiBJBSacZFFHfeBDrXRX/fNfrVe64KVE1MhqotZs18cIFw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17751,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb7W8NCRA9TVsSAnZWagAAug0P/A32dfxL4f6Nyw7vRR/l\nUhKA4Oe6zXlu4PbHlnQagFjazKN+5s6EO5zoTbV60Sba9qceynhPqXlTUHRi\n7Vz54tO/NhfL20yzyHETIrkaEJGrR99wJecAiE3HDmrddinzajngQh7I3JiN\n+3fYaOqUqPfVLZtCai48x2cW6Mspkd+iE1kRQIJDNXe/XI7A1Jr/jqCn5apE\nQ46d0WR1yoiQPninbrLbtzV4UYDICOR1fquNZN7cP/ghOyexCyE7It/WqExY\noAvqYEOoJ5nIBegxM0D+ugR5YoEIYL/46kGp1fhA6Eyp4ah/lBJDW5kXmfUQ\nFjSuaIig9sStN9bPBr9HnYubKffDG1eCE0lhM+M1hTltETnWFEKRFjaVQjQZ\nN4mLr69UVUuEB2kbmZQ6wPCISR1ZmpRi7bJ1ae7RLkMK2G9VI8fAh3zjtQ2T\nGjfS8v/hkpkxKDbdDdYQSEnrThcpGCW25AQ+q8iC7UMaLqk7UR+GkfyV9pds\nQOl82ZaT29RqQrc3IkxlCHtmhTUTGHbzztHlallHO/wdpUia+qk3LGxxUaEb\n08TRZeGeowegVswBHBfdkwX7XLejNNiz91UyIZm97GasPv5BLLVYj1JAY0w8\nULE+vuQY4ObqCxSrdttlmYJXzz1Sbfz0pKvEIPwHFT40cbwKlUc8E0BlmpdB\nHZLS\r\n=xUmW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.136.0.tgz","gitHead":"772f0a0c084310e48e242fde77484827f14baade","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.11.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.136.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.136.0_1542287116831_0.5513323771344634","host":"s3://npm-registry-packages"}},"0.136.1-canary.5":{"name":"@sanity/presence-store","version":"0.136.1-canary.5","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.136.1-canary.5","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"412ae3b57eaada28963b60ed2e64bb84d7d1f12b","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.136.1-canary.5.tgz","fileCount":7,"integrity":"sha512-8eH161PQkKUs4mB9dCruyllJLPA20IFLKoSGpX0PUtAYmhT1aRMv5qobhkCM5xljHzKY1njylLU1lclVX3GZBA==","signatures":[{"sig":"MEYCIQDN0bhfn9kMXTVHThZwFy5YRmOzjfkRE6UKgFG3wFGwmgIhANXemEE+6BdmYA/UwU+qVXdI03D9eUGG0ybZ1Vj1BZb0","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17789,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb7X2KCRA9TVsSAnZWagAAtOcP/076bQ4Yf4g5WVJwGNgb\nnFe7wXT+Kv/gnhINKg5KhzsQ9hW7VUqCwD+/BMU9YKg8CzSRvxm5UFuTdk3a\nlnsQmpwbLAK7/fMTXjW5YrBzJuRaK3aLEXTDNIPVk0mVrGAptB0M18wTz9DB\nN0IBNFi6bkdQAIcHPVKWdVRW9N6ruHhJ0MVO8yftBSECpuwmrONptqMWUKMg\nP0nrPHZkLwZKSVXimEjpvcuIy7fSpOdVgJqC0cpLtuDZaGW55jqUonnxgdOH\nNrEXpfb9JTu4BtR6+0MBzYVY/1AmptFcOGWJMc652NiVD3ZJd2c9xXMNlGx2\nAzitMhapx4PQ0Q4dLQobHULGP0L5wSbChh8S2aLv8vAN+KNBsQehKumFMmnl\nQM2EU47FUjSJF7qu6OR6bO6J0kEeQ/Ybdfmw/NPVpDbHzarpaoDaaFuI/bBW\nhyjifPwKUdhOmDsgFrzYY8Ph4yH4+iTeBoJlIRb48mNUubeWWrZaLYqFzbdI\nXe1LE9uw81HRBl4qaxHfYykzkqhMBHv35jaQwUe4qhjg1iIEhDR/PtZSszkB\nT1qHrAmiGuLpgRqnufhMU7UQTTo1AoJyWPUAc8yC9RbkcU0qffzI0BN2zG24\n8NPHNKMbSeeCCj3aSInLPVqEx5XMwTjyQD8n0kBPMPERrBf0Xa3u8Lmyuqn+\nKOdZ\r\n=p8WK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.136.1-canary.5.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"8353bbe05e9bc8e93fcb227b90d74dd4eca5bf13","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.9.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.136.1-canary.5+8353bbe05"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.136.1-canary.5_1542290825917_0.5733563821114513","host":"s3://npm-registry-packages"}},"0.137.0-realtime-block-editor.315":{"name":"@sanity/presence-store","version":"0.137.0-realtime-block-editor.315","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.137.0-realtime-block-editor.315","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"e162d67a84b61a13e4ba2fe6e9d71ce26bd927ed","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.137.0-realtime-block-editor.315.tgz","fileCount":7,"integrity":"sha512-LG/ufoZBD94QRicybjeO7gPS7kyomUpiD85OcDqNytYhm4PL4QkN5sF71xrrh4l5knAy5OPNWdvDUePTMYtb7A==","signatures":[{"sig":"MEYCIQDyAP/heV+h7GVAQqL2sbVlGMTlj02P/bn+mrJj1Pg0OAIhALfF7dEjFXAL6pCaBU4PcewtMC2udBYHE96EIoy76V0O","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17823,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb7f98CRA9TVsSAnZWagAAkmAP/0mdI0i5TxqZtiNYHTFw\nhiWR/1SV6LYFBd2qUqUs3zcZZiyuCI4UQUQ9yFzUOcR2JJFerr8RWb4RUtCA\niOCMsm7/xIjjph2p25jVhPNzWZPY9w/t7s4fjzcrU4wBP9c90C8CY/LoxdLk\nrpy0TprZ0nCfDh0EpGH87AjR0slaFts9kcCR2gDok5sTFh7rdVSU9RoTkcGm\nD9yK838KlCXzv8+ORWaW6eUgIpTqD8XI/XPA2qWU1BCDXrDFl6wxIuodPQRO\nxk2UoCrr30grhkchNkezN7VLt8e8JWDOYIxJdfA499pcGrg8ngyXVTucUKqC\nqOpc8iNQDL9/W3sN8/Di8WqRtOw/Xa1fHjpR6GUrBrMzDzZ+38WKoiI8MbaP\nW2k/1PddGl0cQWgLd1KKTDofyQjheiwvWiokkiIA/C0zzx5ZO35rqbFGv4sC\nfgUuMmEpY8ZrJlgkuzqn00/zufe6dTth2B1nNQEMlU2Ik/dyOpboCrSpXrFI\nN4+ma09itgwhQwr1+qRcSb4IhFQ1+GX4F2yABazBxTrSe3C+pFj0aV9UuTRb\nIm126M3WtsLldFA+mq0zT2R8hA8eFLAiuVQ48eA9AJpdDgNh4I6X7pkkBJBv\ntukslK9S57q3C9mALEECrX7BSQ5C/8KxyzBf7ASyGxLm1sctxLlJWGyt9Drl\n5K2x\r\n=jOxX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.137.0-realtime-block-editor.315.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"b0be5879bdea9009883f4ee6a63207a84f1c9eb9","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.12.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.137.0-realtime-block-editor.315+b0be5879b"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.137.0-realtime-block-editor.315_1542324092275_0.21133809878680032","host":"s3://npm-registry-packages"}},"0.137.0-realtime-block-editor.319":{"name":"@sanity/presence-store","version":"0.137.0-realtime-block-editor.319","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.137.0-realtime-block-editor.319","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"925bd6bef9ae1fdd3bbc9f2217a27c4e21f1a69e","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.137.0-realtime-block-editor.319.tgz","fileCount":7,"integrity":"sha512-iLBYNqJl+Wfi7BrfEvTPwHFxeIuYYZeQZSeiIC3ND+7eAyOQGNeRIW/e5BW45vYoFjQoTWYw14IsHZ+E8JwWjg==","signatures":[{"sig":"MEUCIH82MF/b7JoYl+t2L9GmXy4yBLlvgyqyRlVTteUu3QI6AiEApd9q+v04HcNiij/kGC1qjEV5/ohZZTmYWaKWdTAv5cA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17823,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb7rD9CRA9TVsSAnZWagAAXcgP/0dPeC/vvZq/od+/9Ufk\nF6eo6S8jKQsYn69UZMVLDOnic11gEdd825bPtUC+QO3ThkYCR3e2gNNNEpdG\nLNRLOdmKQSttfWdCIyk1gWPo6wXfcBTLhdj7OVU80kzqibIQ4Qb/AzI6UxtZ\n1Ivpnh/R6jkxonVhGfhHzBRicZCaY1pkxXP515rp+t71Pw2aK5RAMzccvUn+\n3Jr/V5ptHBc24BsBxw4o86YC53kLPJi6b+T/a1EPFTCuIFkcBHd5gPliwmKd\n/CR6XJLhywGp3o3i+RelXWf42SVB8XumcE0iYR2fe4WjNqCb1mVTahPhmDJ8\nHDn7XEVJTJcHgxoykeREYDuegENTHVQM9QKL1ZxKotFSpMSG6OG4HW2qSw9U\nxQLNpwpLEwi/TjUbAftF4t9MisCXSYY1TzgXx21L5Wb48KPtbNrpjI539Tc+\nNRYUFKOJTgMZMc1MnQDcV7jrcvts2IEIwOkGsDOe467z8i4clF8MVFq+ael6\n00mYgIRkyUu7BoDy4lGYOnyHEeRhC/T7yYeY97ec/UdEQLu1NpTkWGxLgBiF\nAsStlrP/8ob/iAMBvca2TQR9gVc4OQ3CiI11d7pg1WPoepxfPma0uRDzEdin\nfk+srjKCKrNFUsbSLiQCU+ERIu2Y3ZfjqCEijj4wqDyaKoCJ3x7AKEPt/G9e\nZFyz\r\n=1qcv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.137.0-realtime-block-editor.319.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"221ba2dba50470dc6136adcc546aa7ba00ccbb5b","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.1","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.137.0-realtime-block-editor.319+221ba2dba"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.137.0-realtime-block-editor.319_1542369533297_0.2143171678059792","host":"s3://npm-registry-packages"}},"0.137.0-realtime-block-editor.321":{"name":"@sanity/presence-store","version":"0.137.0-realtime-block-editor.321","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.137.0-realtime-block-editor.321","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"66e3fbe505eae7e7107bda6085b3de41ca7bc2fb","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.137.0-realtime-block-editor.321.tgz","fileCount":7,"integrity":"sha512-VXUhPLh4sGrtPANFwq56wF3H4fphtyN+SvJhnUcANcAH3z1zTTxqDtn8Ebld/h8W0L7kdmp2UBCNH7kbvd9jfg==","signatures":[{"sig":"MEQCIFiBPMTttVkxA1O673/iEHmReeCV0tXzmrNUIz12ZjwzAiBzRDBP82Xy2ndCwZeT4dMiDqHcSKOOZn3Y9kJ89ev2Zg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17823,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb7svkCRA9TVsSAnZWagAAeMEP/0e37Mp8LFx9U2/DEpR0\nQsCVKT/aePWSw9xl77wt+NlcBprDG8QV8D94fynKCMZtx5snuWvdFy8valxR\nBBbovxKxVyf1jLn9fOXwte/4ii593LQkfsnoDkOx5UwIFbPmuUbwiKkDMkxJ\ncGvA7+D4j7465BftfZOJoVJBysRxHSlV/sUND7yIo/FfImjn7ZOM0QmbAhz4\nX96raC1B0f5afP38PPLD0tSgu6GepxQcFX+TUzBHdqRctQXt7Tvfwy/IHvkp\nYhT260sjvWjACiN/cexchE8elVGs+W9IqidoOgCaQcVJTUwtkRTiEzq9lM46\n6hh6UyLwenfOCyYHgVsAg/8JQZXzzGpw6A3MrHcdNEeJyXMZXFQuK+Spa+eO\nEo06tD5BmwfmJftD8JalzSCp6JrIiponu8llyGZFuYVyBTqR+2uq2e4oUiJe\nEjnlKvLtclN+hs/5BNWf+yRDHk1L51+pTZi9MYgHNRXS2wy1JGuWXgR+E4XD\nPhdJz3OhImWLiikV1poFS/X7tU6o6GfexU4LcUB5680LhE87rjxQWoYqJMBz\nzeeerMLoPl2QAJ+jdwuKyag/M9tQTj3jj+GE6nXRtg2AvpNhBJaEXmsswqqa\nNWM38Il0AR7CMOFVr/7UseD02xAVWqvvNmtfMiBmoXPcIsogE437uoZIw9w9\nGb2O\r\n=5ihR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.137.0-realtime-block-editor.321.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"1625412ba41822299ab4461404ba514c632b4373","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.1","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.137.0-realtime-block-editor.321+1625412ba"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.137.0-realtime-block-editor.321_1542376420136_0.8484966346884555","host":"s3://npm-registry-packages"}},"0.137.0-realtime-block-editor.326":{"name":"@sanity/presence-store","version":"0.137.0-realtime-block-editor.326","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.137.0-realtime-block-editor.326","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"01ac44714adcc8b1e81a7cae6f1a708a95e554d9","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.137.0-realtime-block-editor.326.tgz","fileCount":7,"integrity":"sha512-yDgQOCx76X55lEWtTQke4GLCAqIYbHNkreLJrVTgwPXLOTL77HzO1JuvtLzD5KgG2ogI/8pyTgXWpzh4U4p6tg==","signatures":[{"sig":"MEYCIQDh6I1/jHC1MOBt9aOv2xgHy0nc2NXF8Sei30mj3RKMSQIhANaUpBqw/ZlQg0eNh/JBgDvOUPXFzrAy4hwdlAG+INeM","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17823,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb8+BJCRA9TVsSAnZWagAAZssP/333rT7mp+FqYIL3+FGe\nn3XsFpMwaIe9i1JW90pDG8/cSVAKeCIeZZMkd29rvhYzc1VylCPYfciz02w7\nM/DiF8rrAGPgISMWuaY8bAhl/N6VxgFTAAYeMunCnwuStWuyJwfwdSbnxCgr\naYfyIETnKnJcvPVqOXnc/cZPpuBLWmyHnNKi3AdsTnLge8tNkuMYKx2Ez2mD\n6MHUfpvIQUtXSmbVe4leBs8DGoGv4+uyYY7sGSFAY4tfgJuOJ1edukF60I1P\nYOOsqUZfb8xBFfOJIIEo/MKMHNeZmEYI4IkPngV72QN0kot1GHL0fLmsD9fo\nqtJvCT+ArgV8sFRiqegrnlNZmpvq1JlBUQnJG4otXTb/h78k+UnGiuBieAcJ\nETB9c03SjDrGlw7bLlBexi/qrCIqvhKJrnNw8r9Rvro/GbBGJz4AjVf4L2SK\n9sk6JJicvBXwMOrLlMhSk260FXuCAffrw4XgDUyal9s7NoMwesumZDhTvAXf\nh5/q4JisLfO/Qyr0v1xAucnG9P9phB8T7OIMjTO7XPsutgD0TEuNPBlVsFaR\n7u50p+XU0GtS2/5hTwOorKxiddZbLh24VB5juLfBkgjNwQoJJMxUfSQy7mBL\ntU6+F2FoHud0+NSR4LuiASjA7H7u3SVMfvZ+aEaxY+ixIPYTa6gcO7s/eBlf\nLZE2\r\n=V+82\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.137.0-realtime-block-editor.326.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"24ced8697b2ea114ada6359755c5303f6d4a69a2","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.1","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.137.0-realtime-block-editor.326+24ced8697"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.137.0-realtime-block-editor.326_1542709320327_0.08907987300265563","host":"s3://npm-registry-packages"}},"0.137.0-realtime-block-editor.340":{"name":"@sanity/presence-store","version":"0.137.0-realtime-block-editor.340","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.137.0-realtime-block-editor.340","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"e55032d7229e28e55d71e7afa29e96c9a2f15c0f","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.137.0-realtime-block-editor.340.tgz","fileCount":7,"integrity":"sha512-AQCnrRHAU3YUlXcuEYP6hW94udF9n9ynbbjPvUsGbKVAkIivk3fLHwRHBpgInOWE8YEbIP24VxbpmB4dXLYKnw==","signatures":[{"sig":"MEYCIQDJmVzfAMXR0mW3iJJSnrOxQeiSZZ2lEMQj9ogefRKd9gIhALagPsTxPJWzb8tlDW1qmtctSzQrpkhq50BjUEqrUeuW","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17823,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb9V0hCRA9TVsSAnZWagAA9ZQP/iLRC4QVKlxJP2ufcgbI\n6UlBgpgYMaW4RcLLr+6FVEMzRlDhnk0mwcmrcPmn9qMjiuHlwtHOWIByoPdH\nnwioP3b/n2RPQfx5XH6gSSA08cnN3Ajb4zCIIAfLNnq31mrWhAaqsOuh2tt5\n6sBBWo3aQP79ZMmQ+l8PLk4rGoCJLVkeOdQlW7FU7bEw0geWfBwqlJnDW6yL\no5JRyuN8nIZb2mCStVxnCZYSC0neZ0Cgf2WZIImhUxf3AX5lu2NlVdIg88eJ\n7Hf+DpKb3aP4TjoWuq/otZffFTMzrA+zSg/o1kcGdtjet7NhNIjL8GlzPbPV\npNFqEJCzK0qpcbU3L1I4r1S100j0NkiUP8maexjqBLRxssbMjjSwQTIyXbkV\nsc3Ob1Pb+BlIrYaNRbXiWuHn8q38/bDiLOrHWAGQ33UzXgh6Htv/hwSulleB\nj+Bh/eTrkao25laASCCJtEajnkSwLcv32EYvF60Ff2NOkKO2pZeetGwFQmRr\naGB1IeL14s0Eb9vNjOpNedz7yFyIUaJbfwk3y8j+Q9ol5b46CshGv3ehOVm0\nNJi9J52VzBa/5q73zBUu6NhzOjL9BqwlnHTobiRsfgisluYjxPvmEmivYlhD\nOIfXTVOfpEvxjOc5+d7etOtUaJfIAF6teb9j77Wyht7+/4mK6NvV5pWbBoXc\neRgm\r\n=gfde\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.137.0-realtime-block-editor.340.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"d943e3544582f3b71b55850ba1d74c87f7f255f5","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.1","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.137.0-realtime-block-editor.340+d943e3544"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.137.0-realtime-block-editor.340_1542806817153_0.46967230987518205","host":"s3://npm-registry-packages"}},"0.137.0-realtime-block-editor.343":{"name":"@sanity/presence-store","version":"0.137.0-realtime-block-editor.343","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.137.0-realtime-block-editor.343","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"268c14bcc11879bf9b7320202eeea304afbe1f29","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.137.0-realtime-block-editor.343.tgz","fileCount":7,"integrity":"sha512-GNQwiu5ihHVwlntPMtt0hm0Hf8ZOM/aGpTEmYWg0MYbqOT0L5ubxzdjpETR6/x/a0vSKRCvzWZLcWV0qNdcpkQ==","signatures":[{"sig":"MEQCIAamy/zHLWp9MGyusaqFaO1a5M6Hw9tBeh+N/wf6aUpcAiAhnGYBcrgysHcezvj7opy+7wWrjRJdcOCKPvPjmpI24w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17823,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb/RAzCRA9TVsSAnZWagAAB54P/jrNYPpNRuRv67hYo8iW\nOTdaM5jCpZN0kCM0Pbui4JU3Tkjbo72/UzogJ4c/DIHj1IIMwfOXVlLH6s0J\nS/C+azASi+X1ucpjPKfmCuJ5IZyy2vh5wnIhkem5X+GT8rGbHUnKGULWubuN\nATxPBObeG76SVs+bHO8ywuooMCMdHuNqbcUwa9kTg1Bom6yFK37wch81IoYz\nmY9x5IKZ4NY59ovWy8vtVuyqeIwMEjqwvKFQS58hCPqAI520Fqrb+/9L1qMm\nLUg61Uo3/GZWiCSeyMbGrht9IKzXPeqa7T/LfNamJw5gs/TrcJ5ETdsWVRgI\nxsMm7U83Xvl4/fUpLu/DyCgbNVsL/inw+F+q4f/5WivOVCTUMN1o6kZbhtzC\nWNSxho/7hI/d1yqvr+dr1xSRruUhr6VeLwRKApFK1Xb73iXTZG1n34VYuuS4\nmNSXn4V1Fiu1eJAkrOoPj7YpVyhvpi852Vlgmw+XpKuOroxV6v6cR9KAP7Z5\nh2wIi+/UpZuS/0dnUne+wU4vHNTlypTveWVysZbp0or8POpPVRR8otYDYhXl\nkeYdRWqyUYOBX6tlYof52kkyEWI2mGENTrTsJfw3qiIBl34hzsLYFO/SP72V\naVm101Zy9NY77+HdqbATK0Z2p1Mbwdkk4jZfboLbJIPggdMz5zoKtSzdxdKH\nJBnu\r\n=ymW5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.137.0-realtime-block-editor.343.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"a9a67a4504edbe1fcd17d432fe6f51bf8bc55f36","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.1","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.137.0-realtime-block-editor.343+a9a67a450"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.137.0-realtime-block-editor.343_1543311410636_0.8625225879757565","host":"s3://npm-registry-packages"}},"0.136.1-canary.26":{"name":"@sanity/presence-store","version":"0.136.1-canary.26","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.136.1-canary.26","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"005f676aee91f63674f60711bbf7bfe4ac41bb52","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.136.1-canary.26.tgz","fileCount":7,"integrity":"sha512-cAymcBw2vCibYp7FgjV16P1aHB00ne+omVtY2S9EuqqScXcpeXtFJ1FNGEZlM4MkWGOM4CkV/zy9/u6/uo7BIQ==","signatures":[{"sig":"MEUCIDb/fDpVadFkidfaLM/9L5uzhU8fNjABa6A660MJBuXrAiEAhCgjS4lnvcus1uaLuQwM/vjn4gwfFbR/hnZxn/s+Ei0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17791,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb/vURCRA9TVsSAnZWagAAwCwP/30mVl9KUlOkVRWhA8yT\nuHCxK8Fl/3qijfXsHoOmwSIBunJ/suMn4QAyfbVbJtic5kw2wpn0qotRcLjn\nAc0ndX+ZE4OQWxotvsgoPV674GRIhevXEa0X9aDHo9g34BxGC1Ah0s9VQ2Lt\nVOsKJsmxh5WsztHFvNs7bHOA6nVGVY++15qhvOVNdSw1BemjxD7lEVWJyKxn\nKFM4J0wG1aSZQl337t76VbAqTHUg3nMof7AWz2LFIvOqTvmQft7/XqmSPtpu\nypYdcjHPMqv2bO/6g+I0/FbKMSHKqFtJTSXxFfovqOMZ9J/GBWL7R8IE9cW9\nUSyZKyUGxDwMr62Cb/Xybn63LuppVSIa5JDSJF4T7MTPJsX3G6t/t/K8fSTd\nzzsKXr0pxgwDPxVoRT7xbfxXagCq7y2R8fIfYIKrnH4eevFxDH+nYcPHbpaH\nPvRFqYVHru+47R45p4SQJTZmZVOGPuhyH+sqa8BSYua5BXBmSFfncXzF9nWH\nMh9DrSOqODWEvDzuy6X1QvXxpmwsMQbqZclHC7WpL5fl6syCrAIr40Qfs699\nJowhgU8JHqrDkU6HPJFzbFyOI1k6Aq4jPiEdlAtnCPytfgmlyMhTigzsKJj/\n6imxXov6ttNX8/bvKTFHPselvHQsgnTdTQmwPfw5hY56VUhIRv13YnbcOsyp\n2uQe\r\n=+HLw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.136.1-canary.26.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"aaa909167775692fe64289f85d44a180b73e49e1","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.8.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.136.1-canary.26+aaa909167"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.136.1-canary.26_1543435536860_0.8624846687120549","host":"s3://npm-registry-packages"}},"0.136.1-canary.27":{"name":"@sanity/presence-store","version":"0.136.1-canary.27","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.136.1-canary.27","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"40a39d147b78838df7f41bf9bdc2253e4adccad1","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.136.1-canary.27.tgz","fileCount":7,"integrity":"sha512-ZbtXhig8Z/thTAc6TsV3AJ3aURITEBKd+C0mdnh4NxF+uJyTAM1ybbzY1h7KoWdVYWLwq1A6CMEYpzm4r5M8Hw==","signatures":[{"sig":"MEQCIDGzu/RTp+4gj8+Hhj6XxPC2eL/XgKYUaAp/zZZoycEiAiABwjQqXxyImGSToJ1xP7om2fiHLBz3ecy6HL0/9NcBwA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17791,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb/w1OCRA9TVsSAnZWagAA3tAP/1Zw8bIzFp/UNASPqb15\nGdsWrGQWKKa9X+HK0adEvkKGgxBki/DpUEbCHYsZYSN2aO0Yw9EdKqRZQZmT\nyANHww5PYM54VV5PZmIbPdGiAbeQFhCh/Mz3XtcwfXxNQE4MBu1MZ6ErPrI0\nBqkG0l98jbCCx6RH/n+jMSM1do6mUhm84PU8yh8MUYYwVzaRqVnsp+v+Kpc5\njqEAQdMu8H1jwmdyIKoDdeWofcVJr9lEelyUaVhx+oda4VvM1MUUBrtKTXcO\nSAbJ/jFo36Q6Lr0kiDl8ZBfnzxo0BSMKBc/aNxygtTzeIA0eQ/y50V5Yr60q\nBm9pdecGcruXTcf2iiGY9XrL0eOZXWFo3Phg9Z79OlGmPrigi5BEtKvwWdno\n0bSrhuuZEJuKuW3QmHe1mdpG4mgEErOwGH2dY/taqKqLB0GwNp6V+YYRiJNX\ndHRaA5eM+dspMQkruyDTEUjmncTq/1/jEX75kqIMc/qr4tF7i92TxJQXuAHD\nCwocEkU+0Ohu0ztvC/W7/uEYZmO/NEuHMd9J+/lkofI+MeZWwvRDGIJ5/s8J\nm3NuicjLvTnIgVc3UokkYP5civQaA4BEiFJCOE4QDFhvG7CzVYwlbXaPS/JZ\nx/Kx7+mznurhfNg30EWJDmo3ctPLd/JG7uGx8bpu/3cnsESdUZoZqTxswI+c\nRFO4\r\n=nG1q\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.136.1-canary.27.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"3e04fc24acfeddad82ebd09b08e657e7ccb7fd26","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.8.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.136.1-canary.27+3e04fc24a"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.136.1-canary.27_1543441741350_0.2961447628041911","host":"s3://npm-registry-packages"}},"0.136.1-canary.28":{"name":"@sanity/presence-store","version":"0.136.1-canary.28","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.136.1-canary.28","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"d85e9b73c6ca23d73aa1715bf6fbdeed6502d24c","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.136.1-canary.28.tgz","fileCount":7,"integrity":"sha512-8SSWDUREsiccYgBd40J2X0zcgYlgFSqP3YP1Vic/rHMyZCChbl7XHLOnG8h2QxILXdErAjx/PD+4Cm6toNf0/A==","signatures":[{"sig":"MEUCIQDnw1cCx7M+jOF459GJB8q2EvbGg7C4jpPcKMlgilvc6wIgLPTmQ4l8/KTNC2967yxRBDMAJQBkCqxMUyIOfkTGVQE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17791,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb/w9PCRA9TVsSAnZWagAA7XIP/jROQs6Dy8fJCZ4tX/Qb\n6X5enx0yVPuJvko9b6GvQIV/Omnn9TEJ86ygO0FeFw0EkGi9ygclV7UiJxyI\n7554ow+5tSNYbtHLXMRNMxMG+yjbt4xNIwuavGzj+liKr3VDpg/tUo3TQk3m\noUq9vAaOnyDiww8y4kNqRge9CHJV1aVcBDCcSXNLnYwzgROmBmfH+FlXZ9nE\nTohudZoB6p2JwtRy+uhMeQiGXIZa+yHieZR4rs+ZOr/WT4yG647yEAclqCgJ\nXrrVWeUQtcwPLdIfi3E6s/IS2c8giSK9+8EV2jGChGFXvplWyN4VcVrK6bnl\naMnVv+vHntCMdnyBXnmsIRpzJX36QZYvgB4ZQTCOtcxuyy/r6JnjoG/AXD5k\nMeMA+hySO5reydTtq48oCrH1O05c2KwrhCO2TmKr5zOfL2DUD8SaaxMe3G/I\nbQ0fjSInVgzodHEz10DCo8csE9rwcyMez3AlzN7CNVTm1EC07tvHU+4vF6Dk\nuXkOV2SM+Eb414MrDevI7fg4ADtLrHO0JxNSSzBo3bUXdwmQNUNpsxs3STfA\niOdKs8khfWTHN8+uk7V2VgObh+OcjTppe0yLMIXmZLPGInTDbmQ3kR5MvNA4\nNXB0fFlMBMzV1y1RC1AtQEnGeDPB1run+V7PqCaCWwiSx9W/+z1nGo5xHjv/\n/11f\r\n=7nMZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.136.1-canary.28.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"bf16856fc4efca047bd54d7167927dd4b05a21e6","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.8.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.136.1-canary.28+bf16856fc"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.136.1-canary.28_1543442255190_0.4425293955506948","host":"s3://npm-registry-packages"}},"0.136.1-canary.32":{"name":"@sanity/presence-store","version":"0.136.1-canary.32","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.136.1-canary.32","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"a199e664a007be6b41b0c458c993c3749f61ed18","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.136.1-canary.32.tgz","fileCount":7,"integrity":"sha512-wYcvx4Kiza4EySd0vYrZYOv4N8ayp+XiOQOJ9oE1bi0uPZpy0lZphL/BO1IbHWfvdUfL5U6eA7afkbV7iiSsnw==","signatures":[{"sig":"MEUCIQC3+5UxKgaqADMSAj0y9BGuCkUjSSLnOqoDZuOSoCvkJQIgI7u/L17JRGbJ2TEjTTi48BPhyVQlRvz4jgivcRg1I+g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17791,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb/+IqCRA9TVsSAnZWagAANMwQAJCz3Oy0Xd7jdqOrRY/F\ndQ7zeiaLlSQXsDDpN4ioHjSUofk3aElIinUSsekxQ7N5XBvtGiYqpbd15nkt\nG5KMdcPwnS+NSeDAoCHM7bRAeBee/Nc78tXGEWrQIjdmndry3SqXoWZgalqX\nyqIU3/47b0yprunC6qi4Ehaiu7Sggw1nnLWPyP0+ojBO58/MuznE/YPvdsjW\nt26KVdA8E9lB2OOQM5mukVAqXk5PvU53LbubNG4mCgvs4xIIv9XFSQzMXZq6\nF4G1lAf4IJls8IWKLx7AH395jpiV3uL6EcJENUKpghgnCtH4hboaQdmCXvGd\nMZzOo3U8es58jItvGhkG2R8H0b0JNebzDSCi9bczIL23WGz0d7puQvkBj4FL\nqp+vSFq6e8x4ndEz3l5f/ynXHP9Rns0Ti/rpriny7wbUIeGYDZ2IhRstpZvq\nN7SIOuQX3MNg0lz6qayYfTFa9InZidjW5uTECZnJng5cEUp0iziS3wfKSXev\nBtqpT82YFStuWV9SEH4Hk3R3vyXdPegx6OX4Q05SeI5pNO7f/1eXx0hEz/7d\njRc92IvA7YL7ThM81VSnOkJr/AyoP+U2NZTRu/l4AKlR8NUZ5hw56QBOm8LB\nQNTAzbYPPvkTRUgdcTvimkrqIsDEkpO1QVc8IbdzzlH28gEyEWNfTSS9qlIF\nnQhZ\r\n=7tyN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.136.1-canary.32.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"8edeb7394389443e932b93fd22bff69ba1fdd04b","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.8.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.136.1-canary.32+8edeb7394"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.136.1-canary.32_1543496234044_0.45856761719520645","host":"s3://npm-registry-packages"}},"0.137.0-alpha.343":{"name":"@sanity/presence-store","version":"0.137.0-alpha.343","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.137.0-alpha.343","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"2133530126404a50fe42c24ef3b2072b5e2c3d97","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.137.0-alpha.343.tgz","fileCount":7,"integrity":"sha512-L0L0p7HzrPHk8NZ9x7PB7g8EHH3S/KRr1gRCqcU3IfAkLIThWmysyVRn7xVyt4yNbvzWrYWuhvhunIEBo6xxEg==","signatures":[{"sig":"MEQCIBSeQO3xnPVcUTmdOn7/ehDt8r9R8w/SbdVHIj6nGkGgAiBgaOTDDX7REct5xPUxbCCMgpYdYNzMLHEx3vZRZI/YeQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17791,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcAAB3CRA9TVsSAnZWagAA0ToP/0llaCGxE5v4VjFyO+/V\nKefrsf3TasebY7eJ4V1tjtsgyPCvEKlLSF5kOb1ohHx9hHSKrjyxas2+GrwU\nb09fbLjpNsfpXY59NUBIOTCxwbdSzJqkKNPkH4jNFbh9IDVMRkXsbwEWzFU2\nFmDTBJSNIRMjpmf93ZwT8vsN7KIcKNhxpbdYiLmx0dras3teGER2zHjjKcSF\nPmh0vzf0CBrF1ZUSYHpab9DkWsjiMxBsU9vmhrc+jrhySQymkfQlNcwLKhts\nWl8QTqzD9+qBl+FFEYH5oji+CVlXx3XqNXp4BxPH6DXbCdigzgxHWeBTp022\n3YD9ycyYoT2iBjau0k7eBZGs8VEPtlF3gKbL+JwJHyrlu0wg1f+U1u8rGB93\n4U3UvCQimLocXS1RQ0U3XX+uI4v6sohHlh7Sko/rA/n4claanm4+8OGujVvB\nsYsEt/DZDmtzeGHhzfhynvqsTY6VA1BPSM/a9njeAYtIY9O/i7pl/TbjIZxw\ntMOTp75d9TvS8mEzPSJOJK4Goalh84sy9lI/poMb1wCxq1OZZticirIuIoW2\ni0zt/CIb1QxKjfXd73c6NRx37MSlWk9c0GTRhM7zoHqwOSUdw2Y2cnARkn+K\nHKKR7NROxwPHUSS3N54M0IVnYqPvdRiwUAgc1vJMaPyuwpTeHevfiEp+arfu\nxjgA\r\n=vuD/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.137.0-alpha.343.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"ffefdb9bf93b7da2e998a16f1810c5bc36ccaf8c","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.9.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.137.0-alpha.343+ffefdb9bf"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.137.0-alpha.343_1543503990750_0.4819276584334242","host":"s3://npm-registry-packages"}},"0.137.0-realtime-block-editor.344":{"name":"@sanity/presence-store","version":"0.137.0-realtime-block-editor.344","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.137.0-realtime-block-editor.344","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"e43bd5cc066f311c08651cfb1023edd9cc738801","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.137.0-realtime-block-editor.344.tgz","fileCount":7,"integrity":"sha512-kP+Qn28tEIUiRfaHs2Z5duuMTccsK7kWFam8cGF3qXgG3gTpD5s6v1y0JQqPEBuhMaEJECqOUF2YwjatIsVDAg==","signatures":[{"sig":"MEUCIAvl3Imj/S9n8qkyq9s8rYQEEBN3AK4/ETqvhgNqoOFMAiEAzdh9kqR1zBYTVkvHg0+WGcBPy3/rB5NVPvtFgiRHbws=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17823,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcAAXkCRA9TVsSAnZWagAAMOIP/3wCTHdfmghWsr7ozW3j\ncyaUN8zBvxCQVdRHsAY6mB67bwf9HFsO1Em2fSXSQ+tDHCDZSJnXYGA5Mzrg\nsQYYtIWgi5wi0sO09C9prNHq8gybNoPu0myqXkRjpxkEyGtY0kB9M7sLSORh\nC2ss01+2aHgkaawQG1wbzQxn+fE4bgw81BwV1HuZlLTIfYI+t2BqgNG1I7z5\nKwyEGC62fxDvcpW9VqVWcPhBoplfU46+zkMakGSKIc1ZLYdxdlno53DcMTAY\nLeh7JblDXf+3+txt1yy1bP8wzO+x1wZJ0c+UJY+BWL8SVAGCjb7UVLEi4v+m\ny3egEr5zvcC0l+9RzT3RlwPX1LLZGOufP+XM2DcMNXqjQBwrG5U3BULpx82s\neFMVPrZxwCrhmdrYjHGLKkziJfT8p2G2KeaYy29kSzvfuS2NOOqqb6qg7UJL\ndNCk2+UWp7o3bYmYgbQ2TfZTLTjvWkAPStQEyl59w0jjpJRFQ6nlwhUCPpgt\ndhqQuanMmLPwxdgFrZrU7ZTgkLr8Us38whype5XKDghQD9GDljYjVpAakSYc\nuhWYTE4U7VqTcwCQiDRyo0icFBDIZEdcjjMt9WyMNtnr4sLXx/XQDhYadqyO\nxgYBSKHf78+OYT2DVffWF5n4/uCTXdPmZEvpaD6BAJ/oQsBppDiFHg5gVrkB\n3Heu\r\n=y1b+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.137.0-realtime-block-editor.344.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"6229a459ab27f1da04b4b847e4dfad026f433891","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.9.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.137.0-realtime-block-editor.344+6229a459a"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.137.0-realtime-block-editor.344_1543505380072_0.4490739547307365","host":"s3://npm-registry-packages"}},"0.136.3-gql-rtb.359":{"name":"@sanity/presence-store","version":"0.136.3-gql-rtb.359","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.136.3-gql-rtb.359","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"d0d38bea4d1058a257890251ebc1a12c0bd096c0","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.136.3-gql-rtb.359.tgz","fileCount":7,"integrity":"sha512-wGix2u+EE107eA9XrxC6d6DFos7iIZa6ABaBVE99mt23ewmQ7T01Mmpfvl1MacKs/lC56rRtq2YcZZ2d56f4YA==","signatures":[{"sig":"MEYCIQDPC3+N1+007CxrrhoYgQYZL2ach+K1tQR8DqC40+lpNAIhAKbP4phpvuZKZiUi+cH0rSmy46k++NeOpMTfhwUKxf9Q","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcAs/3CRA9TVsSAnZWagAA2RgP/2pjvTpUPgu97tRoXmIs\nJX4Yq6fWlA5ykG3Pq3GBXb7XaDpmh1P3HirPjzGHUCg8IRQFyUxpaCPbSOAt\nai29BcFHKVWX1LO5kcFuEMBTFITQUgc7KTYmGFJjKDKerxOopQUsTplfTJ0B\nS/EV72zuXnM79GPLxIJhbwxZXgue4ao98dAoPakEfyiXRqpifjY58+tIqvxu\nYhzp+U2/XoMmTTZ1gKRwf5uWqduTQYuOWoUxRlQS9b3JyTbcAH1pOp34Tiia\nNGXen2xpJPCrokv2Avafdba9z5hlDw7VCj4LityuELmjO5o4PIOFwyjndK44\nMDV79yhsQjNCBLPemFF5b6QZVqwBUdc9BnvbCi7MpMSEWXzLhdbj7nm7QwX9\nL7baaKhLrL8r261zp/d07M/p+6omVHYxHXNOm0hP9lbay0Rvmg0G4x/hFbm6\n+KI5LWsfilKNetWuQPtu8YbiHg4di4FbgIk4T/qROwz/QB+UFjuveW7yvid5\nSRRc3zDo+nlIFac7DdPFNxSmLhz97B4+xxQn+LMZCYstJ/A7KrFLASnDDvS6\n5NYfBZba5x9qwananzemSdVGyUQ9hVpRWjy+ZfckjiJEw4GYTKpwYta81yoe\nrQjcbhKXlKpzE++dXqua0ucGi9gssgK74oQ/9Ms+FeKi5ekcmfdB0crqX8Nb\n7pQj\r\n=GgbV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.136.3-gql-rtb.359.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"89f1d10d4d2c4819886d93d08336c39cd8e72700","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.9.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.136.3-gql-rtb.359+89f1d10d4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.136.3-gql-rtb.359_1543688182949_0.15579317738881615","host":"s3://npm-registry-packages"}},"0.136.1-canary.33":{"name":"@sanity/presence-store","version":"0.136.1-canary.33","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.136.1-canary.33","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"f70b3238fa867d4defbe270c1a1d31719e062954","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.136.1-canary.33.tgz","fileCount":7,"integrity":"sha512-AjoGcOJLrv3ogNfrBFHhYPSAkpeAUc25UCTuPVGNhGmk4Pow3tQV1wyq5DK+AM7e3J9yMBuFhYiustO/9YFA+Q==","signatures":[{"sig":"MEQCIBz0fe8BrMl3cn3o4fc6m/r/S7TR5Mft7ije9ygizAS9AiB0fz8V9aY6MB71gDM5fbVUbMOpFVi2IlD4C/LG/Sbfsg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17791,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcBTuiCRA9TVsSAnZWagAAgzoP+wb2UYjy2mTXkudGSy94\nJbxgG6qc5CZgd0CXfLNFAt8OFWSrI8BNe+G7tfuid/0JziSMUEw05kGNEJKx\nk1a2GhbALZw1BuUeDImaj9OfsUXgGemawfqIGbz0rKgDHy2mzwtfmZANfJTG\ns7RMiNO6P8HRIGZY9VuUWbeTtGsshkVPL5cSIPBcnPp0OSjNSsz42uk1jMcl\nyTMNuX0/WQWD3bat9aw++C8iB+URJj8ZtB+mLDMJUmwvcy9WGd70eB1aowKB\n5bWd0mmx0171sEHLqz1iwblT5OQbgBBdcUrSJxtaDShCuT57nvJpzuF4YqFi\nlC01pz5ndJd6zo4Xyuu6K7QQggH3EANVyN+uWS6Vx+R3E5N5y+HRSymqg1Pj\n+hGWXNbAKpoDRqNCjxnfM04YK1K5e4hF6Z/x+GJqxJoTasaoMKUO32Na7ZXb\nb5857+OrBLvC+zydiXvy2nX+PXzEM2rUd+NOJc0lGdGTCQhX7A4kG3KiUNsM\nAy658rIfn//DWo63FEIQ61Dphgfdn1/G/ih9EWqvVitGvwOYTU5W6lYfWG3l\nb6542VBz6iNTFoac7ZwR822jENlajHMgX/mfUCal9xlBGXXTd8BrV5VneiPB\n5+W+3jberRtuJZWrc+nzO3wEK2YzGLdIys7iCS7moiyYcUBpPXo9cSf8qkXZ\nCutg\r\n=JnB6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.136.1-canary.33.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"894f9db9be065fec93e1a21e836bee8fea733659","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.8.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.136.1-canary.33+894f9db9b"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.136.1-canary.33_1543846817668_0.3999313705730758","host":"s3://npm-registry-packages"}},"0.136.3-gql-rtb.371":{"name":"@sanity/presence-store","version":"0.136.3-gql-rtb.371","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.136.3-gql-rtb.371","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"8279d24912076d7ea814601d7ab24d5a37601dc7","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.136.3-gql-rtb.371.tgz","fileCount":7,"integrity":"sha512-VJlhwjhk04Pn+Qpzm8sPt+dn65GG6JYkK1uArxGM7HJqLfeGfzjnNSeSkwouUkIWFpkhD2L6OfIZBIgxuCR4Sw==","signatures":[{"sig":"MEUCIQDXp5EMEz4vUpwajNCC4XbzY5ofJji53cVVwAbL7d73hQIgdyu1oISsXfZgLbOGjoCT7oRPY46gFTlnAf468JgekDU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcBbGPCRA9TVsSAnZWagAAnAwP/jzYufQ+JrWo6Dx7Ooc0\nrS7U3rQSXInL3QDVKHuhZ5pSfHsdNZXL41EAR2R3DReIAc6TbEj6YJ0wiaJp\n3ZeeVYTSMTvNvmwcpSIL3Yibssz+8V2tT30X4dXRR1c9PmiSTOOvXBwtRgWD\nPaLgQ4PovPsJohxfhYpaC9xoZUJPjpOh6lF+p10ovO54bu0hzA5iuz9u8w14\nFKl/yGW7vUtXptJ1YF+61Nv6D6kk0gxn52xJE9SLftS8D3Iz6LzxZKWZtjVV\nfZ32dJb1YbPR7F1mdSW8fo6vYmYewvhg/kbHtGBGBrPT9Fyc4MxVNZTmYDRq\n47FCTjpwLGbq4jkd2pV0+xWfZbkEfagUuBKfi8DRbBHhFN7STDg9EJuXmkxQ\nZO7KM7MCwTcZj/tEQnIQgFX5XKzP/aygwlGqtij1/oy4vCD73tPER7E6KO0n\nlemGu9J5c4J28mLWCGSmqPg4eq1FKqdRC8k9tR/TjzFDwkC5eprAnCWw1dyQ\nwtF5HJseteSFsSUgRarDzTE5wWOLzAV9Gf1fCcNKGOWWaOmcpFxpWW/yOXpU\nYn32BzXKsASHuXwFPfPJs0HXyWv1h+pEQkSRsZ3x6Y9kAltqikiJIheHQlPu\nERVcPZhecUlL2HLioid55/+eG4qK2djHAavza8SwYkEr6pOkZUeb9WzVP2pw\nxIEo\r\n=A1aq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.136.3-gql-rtb.371.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"514c0be8d3281799e0922aa2d64a1da21ac85149","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.9.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.136.3-gql-rtb.371+514c0be8d"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.136.3-gql-rtb.371_1543877006473_0.8620779019819809","host":"s3://npm-registry-packages"}},"0.136.3-gql-rtb.372":{"name":"@sanity/presence-store","version":"0.136.3-gql-rtb.372","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.136.3-gql-rtb.372","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"2d861d49e7be55ee996a414753e777351b928c4c","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.136.3-gql-rtb.372.tgz","fileCount":7,"integrity":"sha512-3lIw1VEeEhwtroSiPzfjd/IHqKDeikkyr6pP1+8dChSArwQ8F3fnDadBbAtOSJu6kyaVZLd+sjxkDXqyE6IyNw==","signatures":[{"sig":"MEUCIBUmStV/kkpyxc8e7EUmxfagBgKSZPUoVQgwFbevyfAzAiEA4LqURWZulO7wOG16ACvRXxb/2oMPfELSEGgzRlC/SMc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcBlzwCRA9TVsSAnZWagAAny8P/iNmxvG8nAUmyVDTugxN\n3VXuKYdWzcEuk2vOgS3cpQRj87ZQBX2Ae+rW8rQ3S9E4GAfvzd8sFLKJcq+E\nH/3N2uxA5nDcz7t7A2ScvaIXM14dwRADNQ/M9k2sUaqFUusuPpESjSEl0XQX\nQ7TsUFBzQSLvI2GHh9C+5dJM7JiC4qNYs6jATUshmSTDwQXeqerYmQT21jJO\nAjRhwPuI4caSA+z65AmfVZouV1qjD1t1wPL7w8jdmFnkhVotBuLc2l6RCCDm\nZrwSp3bEPoEiFNWt73BuwFpVSwylh64iLO3sRt6O5kV/tiaIzGBrVP9fJl07\n9KRYAskMA3IaNllqsLuQOJJ/1CD6eNBgx3bnozIZ1a4arHvIm0Yw0TjgQNjj\nOLV0b1xcdywXXmfMK3GOaG781wzA+H6JrbGb4KPbv8y58gYkDXRMlibtfGjx\n75pNHpfpj7h0UPAspwoergRXIgz1KROZE6Yzqr6uxj8cBpcskvx/j18lwPW7\nSmdX6Af7j+pipFRVFvPm/NWPJdZjj5NSPJxEyQ00QXCtsJyk6DHyZYhHVOHd\nvLYUQojmZhOklqHm3rcPSERVGZjS/Zop7+6ILNQH84NbnAwtWfD/iSSEcw2D\niIljMZuTB1LakLpLiiSATGTqKZ5VYz9bAO5VregdPI8RQ1UUv81hbltyqkCu\nhWdb\r\n=kBWw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.136.3-gql-rtb.372.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"c3bd9d4b7b47cdfb67b42607c28e8775ce6efefe","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.9.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.136.3-gql-rtb.372+c3bd9d4b7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.136.3-gql-rtb.372_1543920879583_0.5742336229579967","host":"s3://npm-registry-packages"}},"0.136.3-gql-rtb.375":{"name":"@sanity/presence-store","version":"0.136.3-gql-rtb.375","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.136.3-gql-rtb.375","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"b7f248978caca5c08752d5aa7bda8966b6af7240","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.136.3-gql-rtb.375.tgz","fileCount":7,"integrity":"sha512-Jd+7wEx6jmAoIY1xzkwTtsWhAPzdHjr1DPdqvy40u23JDd5s96ZnOPKMIuxfcVL1pYdvgzdBiz6hph/VgKfpHw==","signatures":[{"sig":"MEUCIQDdrUYcpARmJfnaJLxHDti5c1IOMTzQQFGS9bn7RmShfgIgcuCEPS+eX9cFtwN8lbd9foT1DoByfr2ZNdp7/cGuBgo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcBsyxCRA9TVsSAnZWagAA5MUP/12K6fC0sio3n7CO8Wz8\nPWyV2pYHaATboqze1X+V5WKeKxHXfdgb7hNB6UZSE4bYXXGZaf6hhmG45/A+\nrSqgPXQWz9Ld2XSGYjHeFdaVuEh5o0tFhaKumPIT8lLHkCc2hhExoS61FkZd\na9PhHnmv/Iya+EZCXm6aNBzWmWUF+U0J8YF5tYoznuE+n+34CVUubJ0BvFoR\nXUhhSQzn/clH4J7KJJAzbjsxqcONPHumNoIYEvTtQZN8ldbp1r9q24iPDRN8\nEWUP/m/kCI/8Vt7UDmzQTbUwxfTTcOVhjk20tBFcUuRRBDjrjmMgDXwKm+Qj\nNfPwfvkDlKkvznf1NWW8Pjt23kesQqkVZPjcV/gAsCGWRxAfylyFqys5Za2d\nR8tyE6ce6QsAdNMSERgEU+6fOvYUPShI13os4VWs+nndeR/X/OhVrmJEJE9W\nP3UHhDTBOoWXBDenX4DseZP95aj5mwebeyBcOFWqExNwTScJ2QPjhtSgfpJY\nZXGqTvEbiKMZSVzTU+1tR+elXNHXG+y58I5nHymjXSDaOL2NV1azIVLOQX5o\nVoRlESPEoU62UVRXyvybEyn1vv/kSVDcfey+0phGdUF+mhtOdgmet2ieq61E\nVh8SMEzgoQymFXUB5cxbmAaMAmnLWPSG9vgAWOJuewZz84nsLl0yFMG/4RrG\nu+2l\r\n=TDtb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.136.3-gql-rtb.375.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"34a67f10df625241663119cc5d785089678bab78","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.9.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.136.3-gql-rtb.375+34a67f10d"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.136.3-gql-rtb.375_1543949488705_0.13341356691309914","host":"s3://npm-registry-packages"}},"0.137.0-realtime-block-editor.372":{"name":"@sanity/presence-store","version":"0.137.0-realtime-block-editor.372","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.137.0-realtime-block-editor.372","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"ead7d9458b40bda18f697b9468ae0a7ab5cd10e0","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.137.0-realtime-block-editor.372.tgz","fileCount":7,"integrity":"sha512-0852DPrcdGoHnV8zKcddrG/cSthO7daVq3+4H4rbMLjH+LyNETNw7a6lEeAX9qDzFlBk1o21T0+n8bDL2KJDQQ==","signatures":[{"sig":"MEYCIQCBA2WFoyQayD8creAPETdSGC5s/+S4gTlSLsemob341wIhAL/r1CJAxiZ7wmehaPbVvYYDZnKPE/O1uejd5WAmSXk3","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17823,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcDRwfCRA9TVsSAnZWagAAheoP/jS5ddQuGLYHu6Fh8Sh8\n+eaixb4Ehbf48q9GjdQSahjZ7GZLiz6CaH7mVZJhaBy/vH5Qblx4+gsyS+D/\nazqdj2PFdSvtr9s+prWt52zdT1BZGWqj10H+4brai3V8U0g3GIcbmYw6WhP2\nGaY7Su27XG21REUZzilHQq4lPvx9cl0qYFynuFZn5ZBfrOSVYHSD20X/jCzK\nGzIQ5eSSUI7sm3Dpqs2sAmaGHRdpsUCsdM9H4FoyAg7h8pPLF6qKPM3qNsfi\nm5IR8OU6QET59+1euo+6mNUKVV0ra++RsquJhSPWgTYe0hYoEnJQKkNMNqx2\n9eafyHxPvndjjomnaWCFZZLEDkmS+/HBI47L9yv28CDbBdWFemntP/W3cBHf\nSHnr5FqAopHq/h8WxKebsPalF3Zxdox9GBsntuESes+42g7dYK8tkuBYCc9S\n/J67Xv7lpiuTCd9clJWFoRiOC78WJeJQfM2jl9EjVJ5h6e9vCkrFywBdG2Wh\ndd+SDl4EyJIoeRGvAy29wP+YUt4YgeXRI+xFUBaQcvra6twrYBXIxXM/LPf6\n36Q1hq/r9i7kEx8GTEcekyPMa8hFSsm50NcYV7XpqyPpRH7wMoX5a7dxtSB1\nwl/tzlnem3uqX1OR9AuPT3f2T7c49aeVwcg4T+H+s0vDUJgGQsgdMZs0MWDA\nxh3z\r\n=X049\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.137.0-realtime-block-editor.372.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"3c39227474abdcac3ce092286d73454918c24729","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.12.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.137.0-realtime-block-editor.372+3c3922747"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.137.0-realtime-block-editor.372_1544363038613_0.5962593680304347","host":"s3://npm-registry-packages"}},"0.137.0-realtime-block-editor.373":{"name":"@sanity/presence-store","version":"0.137.0-realtime-block-editor.373","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.137.0-realtime-block-editor.373","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"5e3db683cccc2c914a87868d2124cb9c51dd8461","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.137.0-realtime-block-editor.373.tgz","fileCount":7,"integrity":"sha512-e5X8aB8IHr0MoS4hwXTd8ctWWH8ioqeNCIYpwso/y/qUdzOWgWVad4zPGh6Lwp22HEhK+lias7J/+Nlpakq1BA==","signatures":[{"sig":"MEUCIQD+I6a69Pc2L5YHg2J7aZVruacnkfYK/SkzZ450isRRBwIgDLMZpJ7zU9GHzIIrsy4YTgi//uGqoqA2IuXc398gMlk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17823,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcDS3cCRA9TVsSAnZWagAAiWcP/1e3f7nnzMHsfxd6Lolv\nnqnj8Vkb7/AAhWU3SSDIBxs7hNu75uABXLq6RFCmcC0NtHjU71NWk1WcN9q+\nzUKkB89bXUqB4rPXY8dUc3AynkN7Qqb7O16mFEUzmWuOebgsu/2j5cOgvDlh\nKCwEJSwQ3mRMJCqoo2Ngpq0Q8+u5H9cuqKuoHdlLFF8hVGEo/5efpY2YotNT\nlBMQD0f6at7YIGtNKW3FDLZgWhlsmpr9qKMWyCF3+8PBWDfeLOioFIbgTvqv\n5uJlX1tDXrhPEgv5deDgaJJMotHeW2TvuAlhO0k3p7SmMTrqNrAYz6H8+SyE\nGqmtqY9pGgaYUQsV3Ys8YsmYJC4RafBxPocvpmzL6tt1Kxf4vn4Hk/ygmIW6\nG6erDC1e7vxZMFY2WY5rB7UVbJhpTL4xdoyIU6+tdT3s7S6SrCsHv3IuV4Fk\n+NsnxKZp4K+AKrWgYeS3ahxzLO+78xDPCrjafzsMqDgpDbVjJSxLmo2PLUlE\nXdNayNDxn2+xhVdosKmMq+8Fe53NH91eDBv6c3P9InL6y1KCVlKqWGiWLswW\nGNt0QwKfLqXbVe7ExW18RmNOam3ZDpdQzpI1NNI2CHB4XEcvhSn5qrJ7RBWP\nHrsdIdvITLkXWfGTBoxSDxWDC3SnGHzg5yMnSe0FfegTippU3yfF9oWCROug\nCC4p\r\n=JBmh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.137.0-realtime-block-editor.373.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"c941d09d275763330b5dbeaa7f04b41665616dc9","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.12.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.137.0-realtime-block-editor.373+c941d09d2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.137.0-realtime-block-editor.373_1544367579891_0.42917651580267435","host":"s3://npm-registry-packages"}},"0.137.0-realtime-block-editor.378":{"name":"@sanity/presence-store","version":"0.137.0-realtime-block-editor.378","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.137.0-realtime-block-editor.378","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"82187b37e462b7f2cd63c3a9838d4df8a0f77fe2","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.137.0-realtime-block-editor.378.tgz","fileCount":7,"integrity":"sha512-//SMLmeH62QuI2Fasq8u6SHpHOy+6glr3OjT7kOjI7qI0X8b4vBCJ687hOMj/XCZuBsnvBgzFRlReYl3l8t6qA==","signatures":[{"sig":"MEYCIQCyCKiAOIAj7sL/mqBM/mC2Bes/2keqw56iWlUozmbNsgIhALttm1EeTnDadKSOLIw7idn9dIc7N5N/OBvDfV1FXVgb","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17823,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcDni6CRA9TVsSAnZWagAA22sQAJtU7RemhdPAsbBbTA3t\n21X4JOIWTiav7dsAWmozyXkQ2y57qiMCzGP6ekQKWchTqBtWXmU8zTL//ORL\nq+UIxAEl5xXPYiNWV/ZIakTmKs8EPCgidSz9hRiPuFzHWKGn7Nk0ro/CBMSK\nYgGhqrvMbzdXJhUWpunRRExJ2cBLWhGWwahRp3SMPaAfmgNwrSvLiqAxyh8K\n/iaq6ybrhg+5OawwR1C61WLcZvqNx4xy3NS3mFJxsjUaJpFf9bHfzMvTmCh0\n/czXFxc/HOlIJaTqlzAPJHTE42xtWFoxYr/5vwLe50PukObMGCJtlym2wakA\nLXFKZUYO6r+5YMCVO9SJ9U/ds3+9Urv0A33CyTWsqbr4tA2SG8Uucxe3baVi\nlyLOFkY8YGevzQ4NfjpeZo73sDWOlsvLmTXcshFTq82wf5eQWJZoZJEf/qZk\ndIpliwd9yhS7b+U1q3IMenL2iT1hkLB4Wp2B1mnUlg+Whu8iRqdhObrsh55h\npdGtxaDg4LOrUgHZH+TitRQqJo7HeB/9PcBgd3h00ZYpP4Ga198a+QPR9yMo\nxzNjs/384bo98QvAbUSjEL9xPx9GPiXT0cej/LCM3L3xWyiIWTqCR2iZDugO\nFesHcAm357vwahf7yY3b9m2Yxd5R05iT/3TmFoi3bagPkLKN0p3zB8uCrUi0\nEixZ\r\n=VYKj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.137.0-realtime-block-editor.378.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"4c20715f8b83cfec9218f1c83c3b43a12fda54c8","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.1","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.137.0-realtime-block-editor.378+4c20715f8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.137.0-realtime-block-editor.378_1544452281817_0.14517289908380926","host":"s3://npm-registry-packages"}},"0.137.0-realtime-block-editor.379":{"name":"@sanity/presence-store","version":"0.137.0-realtime-block-editor.379","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.137.0-realtime-block-editor.379","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"96d1a8de57d1a76ad69c28f3423170bfea7bc417","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.137.0-realtime-block-editor.379.tgz","fileCount":7,"integrity":"sha512-MsCeARDYuqEoqcJ7J3XZyWIZUKbuWo02JdB5KOQntoKESJ5dRgeT95DcdNzMuTux7mzKO7SkhLIzZ69HKj5frA==","signatures":[{"sig":"MEUCIQDTDBtjOSrLwa8dMGHraCg2RcEk/qRoY//8CM+mCWh51AIgP8Da4FXLDtT0wAN1T1eKa+1yJIiKubrII0RBS1UwZJ4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17823,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcDn/7CRA9TVsSAnZWagAAukMQAJW4rYRQvYmnqQ1n3SsO\nx97G1z9pkbDh1Wha2d7sExSI52kAg0PT/yK7Loff0wJ1r8yIrvkFS6k4dEiv\nAPDdw1qFsKXVSajukXCFKMBHJAOlzjs44glFMzRyQG/u9+7dlJmffapzz4ZH\n1oVqf1b+d8TMBzd3GliIED0efYSNwmScncDofNpXmRTUduJ9eRl4p59+AEW6\n+SCPKEHYPKfQP+NeauKX3URvUiP14jJLaxBG4ya5bMaviM/hQNT2QpUTxZRP\nyGUQwjn3neaRNVd0KeIReZpXtwpyj6mNs+lcolCplmN+SJmbrQHu3t3ccbuX\n5UaVVKTpCy1pWFgQsRsER8QCfSkCBFwgOo/JaFji2sWDDlkH5X+yllBSu1pH\nPgPxoxbAx6FLs2LRADAQcGLKGKyKgWzio9+4PIZZGwE3tnmMWrRPSD1lk2dp\nNwVYsObM0icdufftZkZPFGbAVyBJSL6T/yO/4ECp+WCvwFH/wAqgmCn+kjf/\nD2vHNZ2q0+vY+kcYh0viJQGlMbDE0Z3fBtuPxQxPAhZRMArTXLFG4jp44pP6\no3yku0dCxI/kFa77ANAzidblR9cVH2Rb+4FW3ISvZbpSDE/juG/zXmJafIgz\neRVZoQpl6q0lbjqqge4Xqev08013XPRJ8IDIW/Yuq5nVk2SxwwzugtciIgoP\nreGk\r\n=gtUz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.137.0-realtime-block-editor.379.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"ffe883e093860839594ed80a1e3f6551f37e1159","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.1","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.137.0-realtime-block-editor.379+ffe883e09"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.137.0-realtime-block-editor.379_1544454138417_0.09251015843389543","host":"s3://npm-registry-packages"}},"0.137.0-realtime-block-editor.380":{"name":"@sanity/presence-store","version":"0.137.0-realtime-block-editor.380","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.137.0-realtime-block-editor.380","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"fae93fddb382e6302854e5ea20d4f7d8de4b5757","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.137.0-realtime-block-editor.380.tgz","fileCount":7,"integrity":"sha512-BHFmGDdccPV2fgCZOjY/+z9Nng29rf14H+Dz9KyOxWsEfGMq2isXJnEQZMxZCNNnbju31KsiVZxZvBS4l3IszA==","signatures":[{"sig":"MEQCIGpy5+zhH9uiGiAWLxgMPG4j5giJDiydGMs11qgr+nxXAiB1iC+hwTkq4LMh24SG+nJw7qtnyPyW4jlhT9Chhet3jw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17823,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcDuoaCRA9TVsSAnZWagAA7DgQAIOIVk/ItOOJ1pYInpSp\n7h1CzYauXq019WzZfEdoEyTMDg142TeG4nRrR2BNE34PpxHIQiQx3NS2gMXJ\nv4DCmSI/dX+cIGWP1ZI7qgSCdB9fTjuKEunz6LieMMI5wB5FryKXhDBpN7JW\nIaoBxqP1Lt4qWps56nUWc2yVBys/oGSSozZu6vULYfnRpTo/2LBEDAS9d1N+\nHZxr08N8io5sx/4tbT6lTtN7oEVUrH3WOCprNu+FH6kFgjHLH6xwx429Q/i7\nuyn/j/9rM1bpKsllyU24dnCXa/FKrn5ni9hcnXfLCnIC93iw4fsAJOSXqJ09\nhQczenJ3DihoXKNTOfi3dkL0TKM/4Uo4njeZBNCp5yQLRtxi45YBCctFOIq1\ny8varLF2EtqyzlwoqrlLKaRTc3IRJcWa6BrElYPO9eJ3vceSFvvWKfUAZeoM\n8Pdub0G2yzxS2Zyz3oIExYgTZlTMRTegfg7JUm1SueKoyMIjhw/GW6ze3jzx\nhFr6BfiSPA3sJCC2hZB/GMu7mQCgy+1K33K7Nv0FabU0MtTb0lZS/kwJW3yx\naZg/YUcchIqK++nFoYI6zIx0071Dm4AaC+fv70T+m0uJ0++EdS26yqzoEJ1G\n315o7d8tMDTAycNepMN4XNAj5Pe/4baNk0Yio3oHqdNzTDwvHI79sxFENXi9\nOLz7\r\n=Xftc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.137.0-realtime-block-editor.380.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"a8e870d31432672cd5a039129b1100b877364797","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.12.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.137.0-realtime-block-editor.380+a8e870d31"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.137.0-realtime-block-editor.380_1544481306260_0.3127084734190777","host":"s3://npm-registry-packages"}},"0.137.0-realtime-block-editor.382":{"name":"@sanity/presence-store","version":"0.137.0-realtime-block-editor.382","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.137.0-realtime-block-editor.382","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"1a9461c188367e3ff20453817c5d06226eca8a29","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.137.0-realtime-block-editor.382.tgz","fileCount":7,"integrity":"sha512-o7itU+Jlem17EcTL51Lkg1Rqsx5iplwJOxwiliXbG2iLC7ZUwdpMhfC08caArBWA3xe474JosW0kSnTS9EqYoQ==","signatures":[{"sig":"MEUCIQDDpVo64k9y8watTTujBaWf/DrJ7byDDwNalFrWNSMDGQIgZguHhuRk7ts/MRLAWCIn5JTinxHztndtxSKCxLbel1A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17823,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcD555CRA9TVsSAnZWagAA5lgP/igLuXh1lyaF6r+JWh6u\n+LVpKTS1OAQ+sf8ofrtXYmD7ThaOmDA/ZJFCGO4cfkpUg+xDFGWEZKw6Y09z\nN6uWYhzvDigr8yy8AgpC0RPQtU05ztRRYFpjji73Wq4OHRuL5arxYjrUblsZ\noriuhfcLMVxM73JBLuxm2hMiJSECAFtOdzXhoQN+iA68YdlT1HzmwUCF3HqW\nO0yiZm+49ELo8XMPaoQm2NSvNReWYwrtM3VI4VWNXY+vabOgWMA2vjYDXklF\nCG9Gpc5PPBUnseJEbYyMW0K1ziXOt/jjIjEusMaC1UVr5W8M0xwbCRVR3fX9\nuZW0bQN+UXvBq4q4q96tRu1JGAaEA+/IdCni3mn6ScfXlns9G9Xq28A/0Mup\nlhfFEq68i0lF0aLslb/SkrGdbvA3A9/KI0XYPBxGjFlDXOe/B3FAxGLH+pvD\nQRtBV14jHjv5MuWEEJFeh4jrgj6IyLQQanfySkBA0zTHNTq8vSZ++BTQbQz/\n5cxklv4KShV2HnX3ySFA3bQ6VkK5h8z07c7uL6OKvI8g8tGnapL2824zZIuh\n5X8uWiLeAdmPEJUVNScOc+fICsrwn7N1ycesR+aKibgfkg7unHvd/ZLHHoVK\nkuWpRHoC4HD6gBmWrq8MMj7lrRtDqVXIzlTHH4yX2JVC4HEwRKV7FKvhbQpq\nmpci\r\n=0FCa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.137.0-realtime-block-editor.382.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"b37ae94c32bf7a3eb5af86b48391a4748dcc7ef9","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.1","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.137.0-realtime-block-editor.382+b37ae94c3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.137.0-realtime-block-editor.382_1544527480309_0.3047047361719999","host":"s3://npm-registry-packages"}},"0.136.3-gql-rtb.417":{"name":"@sanity/presence-store","version":"0.136.3-gql-rtb.417","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.136.3-gql-rtb.417","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"aaf18d0f1cf395e91795ec653deb547c65937abf","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.136.3-gql-rtb.417.tgz","fileCount":7,"integrity":"sha512-AhySXWbPN7YM+3DS87eUcTBRKRoZ3ifSzmCSIpx7KvJ491o3i5ONjvW7E7n+NB2b/6mDXJJsqqz97zlz9s3aIg==","signatures":[{"sig":"MEUCICQbl9y/KbJgkAfFmAjTUmdk+/A+qg8QY4LWyb7eFRX7AiEAlTRrASccq80AjXFDkIhwuHgqr1KGkHzlE/PlsScnAbk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcElpUCRA9TVsSAnZWagAAX7kP/A9BjIYW6Btkf4FIwgW3\nZzenLiyu8qveoJvZEXCgZTNMLwgfpWjLxWEbBctgT08FwJzqxtgodzFCoVfV\nkCVCvhka6WeDegF5irSXmv++eR5k3ssyR8h8fxkR6VGAheLZW51RApzbN8cx\nP9MG8OACyvUnMSVeKz31T73d6Oxc62rWmLSYkqh9Mv+Cg/0D7P5toGWeqWl6\n58LNci/xBfoM6j41Xj0tUo8RYnUVSig1vLizhaOPkIeQh2RFI2v6WKl7HccE\nkGPFuj3fbn2lWX9AX1RKC/ilMtmGh5Qeyb+X29/KEytoFjfz0iPnjbUsfncT\nyzp0RSnumUSqFkWITEl2IqhmqIjPRMXFmtVpDsRfV5wwyLE+HQpkZeFpZPxn\n06QdmeYZuTHti9CHWDe9sJYnY1O1866h1K4WFOjrgh4ozJP9hcmjc3e/ANma\nqzci7q6jzj3x1DOr1s5+FcvuepyLvl5PZkb7BPN5DZtM/xadaqklJBTJegQK\nr9QMK5EO/EYlnx+co/3+2tpGvyQpYYeYoBXopwQtccpULqWmSxXlXjmahCh8\nbd79WOr7RUPOGeC73EFzWHhWRtWaUAL6A+0wA8mS4jIgx8K7TYagiWOKcVdN\n9E0SR5/j5382vyF10VoZcgYrvhXsiQv/2OUIDGBMDv1VlFeNAge8m1ADGE21\niwRj\r\n=gmgl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.136.3-gql-rtb.417.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"3de58369f66312c7856d5db9d97861f4ab97e52f","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.9.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.136.3-gql-rtb.417+3de58369f"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.136.3-gql-rtb.417_1544706644253_0.454050564777581","host":"s3://npm-registry-packages"}},"0.137.0":{"name":"@sanity/presence-store","version":"0.137.0","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.137.0","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"798c7606e8480d311406f350a1004a4f53859331","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.137.0.tgz","fileCount":7,"integrity":"sha512-1tgCUh0hiA+k5ZNsFWHEZlnWZqBc+hAfHo/qOrToW7Lmo0zYJMCHiri3WtipA/xDuIHt4KXfwDUgaeXpI/ndcQ==","signatures":[{"sig":"MEYCIQCovLHX965dZfCkBBfBLOkkSHJjLRs3aELiKbEQeoJ9vwIhAIR/DLK8ct54G2h+Gqp5ANesiOLELd18bfsIn/gZgQ9x","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17751,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcEnM1CRA9TVsSAnZWagAA7UIP/20YRExOJ2bKj596ffQ3\n/OjrMAYLJMkjzG75mz5zMu2qSgMDtgeHlHT7d93dNdYvj0y6bNlQ7l6VFSFQ\nqM1ptypMvSGmZ0ZP0KZ+eQ7yxVU+alww7LoNLkzZg1ns650tFCdH6ofUtqTJ\nGg9AfOfwvnPfoVMBTmvI+nDHINxHIi8eerfHBg7cmttd9T7P0mv3hPhj3M4N\nc9BoL6PJTg9BRYTQyocT0qkTDnaSlalQDm2DDCi4FySx/Pwxew6GSe8v5lG2\nfY4b9V8SNotgYL3lrKt43k2O3cAkXBDTznQjJF/YgLpcH+U8pl7m/qzdl5Xp\ng4lVRvuVqPYYxM4D8jqlUkZneuBTPSEmvJXZl1azDWk7UQfqzwUG0+yIoAlO\nALYgYdAf6CyFx6koCOkb6junnV12jmAvKFA8VwCTd4nqZe8EyqTsAZ6AQ5Ml\nS9qVBK4icGGW0oolje8PVWhrV9Ic5XYgfAyR9spHmUT40Qmc5aACdwngsis4\narJL4AOMlYp9LXyvxZ3QEgCyO2fpoa5f6955MD0/GgRRiiqTN95ZdbaV9S5/\nl4Sr7HdGaBcJao10itPRBN3M/D83Tf0KTgOVDxCwCaPhvKowea/h7Kx30Uzf\nkH7o/sGSmKKQjWqwmDPM0AgQ58dqrf/nDBujWYcTx1w8fhDdEbQV9dQZT1Vl\n4slI\r\n=/Haq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.137.0.tgz","gitHead":"704413f915940c3accfb0441d9aa05fe06d3cd69","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.9.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.137.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.137.0_1544713012852_0.7743349263791255","host":"s3://npm-registry-packages"}},"0.136.1-canary.66":{"name":"@sanity/presence-store","version":"0.136.1-canary.66","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.136.1-canary.66","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"61eadba21853e44597232343f1bd6264f6c82c10","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.136.1-canary.66.tgz","fileCount":7,"integrity":"sha512-Ek1rxAmtgyOxGIK34pg3PDIjR8hrwV9H9HZx7j0aryGg5VBi6/tcIbKN7td4r1M/xhj5ZFkopHxfFDU9A3IXnQ==","signatures":[{"sig":"MEYCIQCTyMQVsawLKclToatBQ/4l7DLxJIQpK9d7nURuizA6fAIhAJPC36ZXsWGoEiYRccPHOcWT9XkRLU99IJJVy5FnVJFW","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17791,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcEnmzCRA9TVsSAnZWagAAIywQAI/pk6gb3HNaNXR4wvKV\n2k1NAhMAqhOGPH+SCLfX7UwhBtbGIsELTDjvrILFwm8OtLSpOcjrTYAMAdL7\nhojaP7vY/KNp078gFnuJp/+58OzZZVXjeNbMUR2+ULSw/Xzeh86QQU6xWQcD\nFaVsVX8dFe8+Qnd+6v8JIr71Bm+rUE2BYszl80w/GuXi44ZiVCZRs1Bwk/ih\nvHj1joOM8PtA6V4QreBRGMiOiVx4aKbRoxFfYxB7px1MfMpcntxtQABMiqEv\neh+8i+0wkTa1mreJdYgYRYSyEAlmRWC+rRFTQetjMG8/QkYOqqclg2qGGQ1z\ngT8GLUCz6HtNNLFd5lzd/e8AiIiWswGcaMxTpItlxKr7mjkJ7T23vhUh1OkY\nQGUbdF/gJs3gbYffJjpn/9/Io98XLefrSqglZZBBGBFg1J+vdH17/Mfrzksi\nhLInmvGE0NpIM7+gOl/uqvscIk2HjkiFq7RmOJvqKrmyj638dovhv3NgOB3Y\nopvxY2HXJNOEThM7+j/JofJySp2dIu9+w90bpYHsBIK9H4It9kyy9pbE6ch8\nN41TkXS3zxfSBxH3GyH2WUjMSCWylKpGpSoK1E+uZs2enKKEoA5SDXk5ZXRL\nDOv9QBws/9OIjT4r95r7fGFYVQ5O8GFi2vZL+7fu3cSTHyeonlUnD+dyQQUc\n9Ihb\r\n=14/Q\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.136.1-canary.66.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"fb891c74e8e12ce2aedb6359efa0802959437179","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.8.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.136.1-canary.66+fb891c74e"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.136.1-canary.66_1544714674804_0.5266684143951288","host":"s3://npm-registry-packages"}},"0.138.0-realtime-block-editor.16":{"name":"@sanity/presence-store","version":"0.138.0-realtime-block-editor.16","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.138.0-realtime-block-editor.16","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"7963d590dd1159b8abc43a6adc5164336a5e4961","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.138.0-realtime-block-editor.16.tgz","fileCount":7,"integrity":"sha512-6O7ddFpzD+sl4nALFYooHufiymdBtw6CXoh9n5mZmiWJHD9ROP87J3qqZy/45zDZ0Sxpu85sde3+xjGkozke3Q==","signatures":[{"sig":"MEYCIQCUntYOyhskjZ07UFuCyyMCpDvk4qijpV3ER5baWhkgvAIhAM7JAKyElFmxNizWh1zqWsvYIvAkuEidk5zb/3hbDRb1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17821,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcEp6VCRA9TVsSAnZWagAAiIcQAJ/pTB2A+AxBMLqbqd/l\nZN5PwTx+wdYIcjvvgGQAE5iWLw7pVVm6xnBw8CF/pYloG1yJdAnJ5putUNhJ\nM29cH8iz1uOuBSkBwaaDWrBAPg5/8h9WHkVE3Mm+2alWEP5t4o6U2bJC7Erc\n25zuxbdRpLmZ6WlUXWtzGWe/xVFZ9FiewWqS4vAl8okVG2G5MB6AUfC5uhhg\nuo+71fA5t10GiIMT0+U2WIIJPjnTh1V9ByZXFNBCKuY+jKV64TVuL5DgbGHm\nCk0cMT7YbZ87dTbkc5aQnKtAxki1yrda3DwGBlQcGPfxGO4Mn5/W/8VGTo+k\nhO0Ebk1DlW08siEhCUNZlDBHg45m5BJzcWs++5jxQ8F31EFr7MLTgGcFtWQe\nqEDmll3+a+jF/GuMJXAiN8I0C7WS7wnpKhrZBDKmBSSJoqpRBDjrNcvd7xe+\nt/LTgbAb7sRndYHidjRwoS57NLY3EablcRY0WHjX5inWAL+mx6M4NsH4Nra0\n0k+uNPUXmm9fqKJTwPxQPDkeR8xI02mAg5quIvhSVhnE0EVTPE2HfN1szVPP\n0WMtV4KUgsrNz7tD5dCheg091GC/xjS63r58wIvnKxrdfaKXSXPla9E1QY9p\ndd1xsR5m5vJuaKGg7otACesP0ChM7TwH6jaZDpCMhxJJrFBZ127ILcsICm2d\nLute\r\n=MRGj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.138.0-realtime-block-editor.16.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"74f4e0846eadbf70b1df0ac94657a46319c8f44d","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.1","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.138.0-realtime-block-editor.16+74f4e0846"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.138.0-realtime-block-editor.16_1544724116558_0.9891850795698514","host":"s3://npm-registry-packages"}},"0.138.0-realtime-block-editor.14":{"name":"@sanity/presence-store","version":"0.138.0-realtime-block-editor.14","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.138.0-realtime-block-editor.14","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"0c7951a2875fd9162b939c20edd46aefbf84a099","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.138.0-realtime-block-editor.14.tgz","fileCount":7,"integrity":"sha512-R1OXKbYXAbjKpaocjf3j5osHn4cOGhMogZ/Fi5Af+UDJpNYhpl11tGjBjw2zvLlvkudkQxrvRafzUuY1I2/osQ==","signatures":[{"sig":"MEUCIQC6tTZrcPCTqjt6UKQ0OMr8MRdKdclGzN1dka6HYPIbjAIgcJed2ATW071pvzCTugEmIG542tHXZ/ZM98K/mlWG52k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17821,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcEqhxCRA9TVsSAnZWagAA6EsP/j4/Yn1q0HlYq/mJJdOr\njV74NOAsC5wti91JdDST3cko8eQU1vzPH74x7Mdkx0wjyHhOGpP0sTs5R9bw\nOEqzRFbVALJXWod3m+T0/Now3aBr+LTGgCkI2TkeUjj9z5p3AlKP9k9k14fY\ndlI1TNjZ/3yxfwbZBAGng46yZeJRHtX9JKYFm9ZMM8KKTvx5PIlaTBW4FD9R\nib8kXpAkIYi/RyV64RenrlsIRnfV6aZZiKxtOsPnVTaj9va3aByNbXiS+eiy\nKGe8xVWMAxun4eND4K3PWqGrIearEeroS20+/Sd3ZF0XXNOXxjqp+gFA6ZIO\n8rrZqCbnZ6/T2S93pZJszSat6bfqm67g+rgW4tttmI/g2AlnyB5JwE8BPNvp\nrbBmK8Zv9QzmXPJH5CgUrJF40p7W4nIYNPMAkSY9gVA3ZLdA8jk6ShjoRBbS\npNzo2Bsj6C9XzL/lPxoDLys/GwKaNNJx13lxuwq8+pfws9pnOeuDRl/p66pQ\nOZacs3QUkgFAc6ottr07E2oue+FNhC/0LeuMbjEvlLMnBNa7GNaizKhEnREw\nhx4HQvVXqYitNYc9sXuJZC3ssEFwYPTndOE4HLu+bc13HBvHmGR1pGM2WFYK\nW4rpdyAyiP2MIlHCv+ZRqt0GN5DqibW6UV2cnVUhex3ZIso7GYGpxeuwn3Tg\nzPSe\r\n=e1qG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.138.0-realtime-block-editor.14.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"36e6b4a044cc88bbe948ae8f3a39bf544856da36","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.9.1","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.138.0-realtime-block-editor.14+36e6b4a04"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.138.0-realtime-block-editor.14_1544726639968_0.023387588148452654","host":"s3://npm-registry-packages"}},"0.138.0-alpha.14":{"name":"@sanity/presence-store","version":"0.138.0-alpha.14","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.138.0-alpha.14","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"1df79cb99edd22816343c92b1ce993b5f935c07e","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.138.0-alpha.14.tgz","fileCount":7,"integrity":"sha512-GgDB+8KyZf8kiaF4VQMR6ienAFpjP5Lu2IFf9UDXCAh6RBe3LDx74np2MrgFGJIvyGtZo+XPjsb2Q6DiC4TxDQ==","signatures":[{"sig":"MEYCIQD8NaZQu2mCr8KcHvFLJO1vbL5x1wneR8PueaGJvk3jrQIhAKKhYoFW58s0U1ZcNFY4TZBztW20H2W4kyPNl+uT0YJ+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17789,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcEsgsCRA9TVsSAnZWagAAIiEP/AnHUSXXSNBWQYURKJor\nPieXnQCeSbpZ1vRivi8CM02VzDJSO2BzQWdcNzdt9/gNntBM555kIjFOZVEe\n0WMzdW0KAvbajAubub9Vo4GEUhr8V0VmBrsCdN43kxqi/Ejvme7UrlgEeKCk\nO91NvQm1WmKEkwAS4RY6x/hoxkyQ+NOZuNwrtQb72M9KYTExi/59V/8vWMZv\nXBsoOJ3o4SslO7gLTo5jcxb8Osu5J9USrRVxek1QfvgL8jzu5PZTA1w4Idwd\nQL9ciBmjizDA6SDLaBbEvjTpjO6LVrx+ICPgaBtVMAByOSzEQYki1RMe6Lhy\nAb4evWrynllXxp5VFNzd/UXF24HaQCVFCT5vDL6QgUtGUZMOKKPTeXZD39s8\nFIjo/o+kvJhhHkQh5UmEua5RuBf27hm4FrDu14hUUudZLf2h0Ld/6UFIEULQ\n6R9IBrmxC0tqiOCwheWzjyjrL7dJ/eAZma2/8H2Jrdk8TOeWh7SbP591TFgi\nw+kn16aevtPBvP0meKOiJ65DqLliPV3nWolYhUu9X3YBToH6AoOr3djXreZg\nLJ8pCCOv55eEN/Tz89foI9jLOObWaC/bUggYNoGaaFV5EgeQAH4D0FEh2QLO\nkibLZoYRk33Fd/2Bz/riWVI3+KEVQRj6tLFNFyCnAwJdsxkIVPd04d9enIbs\n0Dxv\r\n=ZrUd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.138.0-alpha.14.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"4ecc3d264c966728074826b9ffe8fe6456b62e48","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.12.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.138.0-alpha.14+4ecc3d264"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.138.0-alpha.14_1544734763711_0.6045136632561439","host":"s3://npm-registry-packages"}},"0.138.0-alpha.20":{"name":"@sanity/presence-store","version":"0.138.0-alpha.20","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.138.0-alpha.20","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"0f41f958e952963f32ddceb291a6fd2a704859f2","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.138.0-alpha.20.tgz","fileCount":7,"integrity":"sha512-/s/NqFPYwBya3cS+OEHwdtWHoxVjr5pdrNsOvCqf34KP7YN6eJ3nZSC7BZtUHxFRXiaVAw/Ki3n4kserKF6RsQ==","signatures":[{"sig":"MEYCIQDz4e/rS1Hv94IzphdgbvbA0GFI9768IX4SDi08gkew7wIhAOwGaBaR40IDswuMtYHFqruAGRFfB8zRMBVJsau7vCzv","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17789,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcFIErCRA9TVsSAnZWagAA8ukP/A0mGRCzfiLhm08MF7yH\nu6bjzUoxv/O8UnhwJfBpt+WU9yjmmdsdwYPjlIPkGFkSDEmtTt/3qRlS5lE5\nO/V0HAwlzyBdg2A/pP5V1c4W3HQVqxJi98mLA+hw/hK+YuLjE5N51skkxUUg\nLQXbqN9ITv4flD8/Qu/tHIQszZ12xwZpJaEURDJU6fZph7xY4DDw494uJ9q7\niXMjvpilONvUa91DUjQa9RPZ7vMq8mVxep+uKAIqFmGfTRRzNRB+inUFcZY2\nK2D750UPFVRe/p/LKpCdP2izlLESK+/BrLaiFz/9QWEQ9xmmY9eZ5CJ4lp/l\n8uD5QvQzCx6CMXQhTooHhWGtHDOa/bU1qKKJUAapo4zIGi+APqHBDjvti2+I\nFeA6xYgdI8w2oLdMwVJ54m8nQ7ZkwpG8l+PcloSxL8OeuS3djKpPoPkt59WE\n/I9O2NDRZJ8CRdLVHi0koxd//wIDYwltS5rBN/Qila2kqSEuWJPj+iFPQQr1\nADOoukumSpMdnubvJv9zHwp1cc5TETfUQYp0RWuWpcQyYwt1b52fOVaAmv5q\nWJ+e5gV6UNRFo1YvjxNfgbJMOm3GWCAyY/1RSHWwFqDEuxQagxLEP/aG+Ell\ntfzXDEjEh4O1IiDhnwAvIPpODKKQqeDX3WEMtsL/T0PNYud2yZnWd+po5AEB\n7r8l\r\n=KJpL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.138.0-alpha.20.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"eb63d91386007237de2852c08921b4be09f69cd5","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.12.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.138.0-alpha.20+eb63d9138"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.138.0-alpha.20_1544847659216_0.6911839196843739","host":"s3://npm-registry-packages"}},"0.138.0-realtime-block-editor.21":{"name":"@sanity/presence-store","version":"0.138.0-realtime-block-editor.21","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.138.0-realtime-block-editor.21","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"2a0c91ae8ad9230fc8dc31f2e80bf4e425d5a35a","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.138.0-realtime-block-editor.21.tgz","fileCount":7,"integrity":"sha512-UO+VwLhQnb24lyIxyelQEZ3YuPADH7ksdTooEtmPsek3UaLlOwq8x9nkuUj94UB9hhWNoDyzzCCFxsFhMgn0Pw==","signatures":[{"sig":"MEYCIQDgISdqMHDcOFg4+pIEf25wXEsvEVtfxX+qLAeDmnJZgwIhAMGyPrST0l2GdkNkwH9Caa6BG7tMeEat15iIJ5Q9VSKr","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17821,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcF48uCRA9TVsSAnZWagAAUhYP/0dUN/xdlDv8AvUlaTEN\nwliF6MEBBIrth12FSOrIaFHZ3A5XQhb/95dQt2ziRnHV+S7/6wbFAkKZKYtK\nTcSzw1YL9uJh2hZh2NhD35UNR0nXCEm92G75l6zs7Bz4Vo2vVB2MKq5mQo3w\nLFP8MZoq9pVjFgXDossYwi6SgtrKHvLBXAT/duferlA23/hsUnsIrSUKfnSc\nVtejjP0gb+ud0B5GlkRswPYl/H1e7AWNNbrjiTcC5vLGsw8ynclEjZgHAjWi\nJDFnJ8KFyJSmGKUsCiONRUxibm8wO4bMsEyzDqBGxuBsmjvesfxLE++hm2zh\nZ9l8M0ERf0ilh2PgRhjlJYZSogDyTQAY6PX8lRsQL9x409uW9hg2UvY+CcsY\nF9QfRw5mL/q14pqp9dKz4s9C9AEDmOOH2ho26+EMLqJN7L8wTsQhPSeLcP7y\n5hsYF3sAm61Pdi0VTQfyaebhX3y74pgXsveWYdLR1YMbLoqqwDw7kqYzZEbC\nUSQEIfLlq0h/h+nSjjQzUBe7/GDnRCiPRgmgOPvoeGbnwv8h1TASwLZy8GS1\n5zUk973PIJo2mOZIvppRT5Km1mjzj7OyQX8zWC2Sp0GeqPlIfFbHM5Vrnlal\ncfxCxmzYLPzK5KOQRUnm/GiXFERonjJLzsU7GCoUGKf2w8T1cATh81Nv0aKi\nGoFQ\r\n=oQ9q\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.138.0-realtime-block-editor.21.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"790d1af43ef91f5c838103fc64df0df837bfe452","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.12.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.138.0-realtime-block-editor.21+790d1af43"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.138.0-realtime-block-editor.21_1545047853623_0.7669367546108812","host":"s3://npm-registry-packages"}},"0.138.0-realtime-block-editor.24":{"name":"@sanity/presence-store","version":"0.138.0-realtime-block-editor.24","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.138.0-realtime-block-editor.24","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"d2ef6dcb17e58dab341e94a87fb1122e5ab4433e","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.138.0-realtime-block-editor.24.tgz","fileCount":7,"integrity":"sha512-rCtGFOjL4PQEoyNSgNGeoJbIp7C+n8Hemu5udlYzXGHTd4cPSZj+NG3WHTxrCPExYliSjQfraJqobAMyLR2SKA==","signatures":[{"sig":"MEUCIQDyfJG/foGOPuOUhN7qHIFh/azaTWFoyDwE1hfYxVWDewIgZZFSx1vwIuENZ9rMtv37rlkQtm+3Ccyubjx9I24pJ6Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17821,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcF/VGCRA9TVsSAnZWagAA9yEP/igpWBShIvleV8yaZrhx\nYvMLS5/xe/KHVAFMlYVux0cf+gNfb7k22RLp0zl7ZHPIanzI6lH+4sbllE1D\njBHFi6d43rgsTIvrw7HDEBE7Jo66HF5rA5wNEgtLpoRszklm2KsuiO8Kpfxl\nlpagYntcGP3kb4kUHrvcbG918+CrImAMopQoBc6syHjRAEpcTTcqqn/7EWiU\nAfA3nnZaJjQ3A7IH+TuvkVB4XrJNiu72aB6n2DJbwsLezPHfKHNgcBgIZll1\nKexSZq5g5NtHpqqO/Upr1/MZ/KBYFmuzUQVsgqaT0yDZSa0HO1JTRzcqlP6k\nKnqwKGPJPXvRPvxQSkT8mmdIQoa94hszeMyPVMA/UdsHn6QwYTJPw8qiEwvS\ncvFGtjaZ6a8wTTO+zbI2nRWw3eQvdPqABDgGE5EuFBUOyuzoTYnsXFC1bD3a\nYLIWjBE6E9ZHo2Z/k2lXDso77r7wNJifmulKhB8vYM1WcoKf0/8bAR5TgN5m\npF0Rl11wlwxAb5AtpmcEOiY1xs7dFORrOC0Yp7MGA+X7faQFcJR+ntvyp1A1\nnD8Vm/CdhTlv6Km095Joz8hYGvFO2ds5r3/n3Oy4V0sf8kfEZ+3VmVcOYyNq\nwrSnWY98tYYmrNH5Pk2Yyqae3FPxhnamWZQpbY71azREf1S9Qj0WeN3+403Y\nzJRY\r\n=tx2z\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.138.0-realtime-block-editor.24.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"07ffb94199b66d7d21c2e93a17e6ce59ca0d1b9d","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.12.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.138.0-realtime-block-editor.24+07ffb9419"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.138.0-realtime-block-editor.24_1545073990215_0.9945176910394011","host":"s3://npm-registry-packages"}},"0.138.0-realtime-block-editor.25":{"name":"@sanity/presence-store","version":"0.138.0-realtime-block-editor.25","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.138.0-realtime-block-editor.25","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"ba31eb476250e9da7225c754f73ab724371221c6","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.138.0-realtime-block-editor.25.tgz","fileCount":7,"integrity":"sha512-EpJewInoL7wHhyoGmbwBtcvCYoF5zIJykzkXmggWIc+kwYfujnY+JSTnbb3QM/Z6mX/0MMXdJIhyvonBzoyZng==","signatures":[{"sig":"MEUCIQCWis1WOLnb83hReklReQLRSBd86jaMKDGWUtB/I+IwiQIgMIJbRmbzbvKiZ8Ovx6ZFbTLcNY3spS7QxNjZTYH1byw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17821,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcF/9XCRA9TVsSAnZWagAA7pAP/iJvXsgZDpgigrFl3ugB\nRIAve8fe5MtIhDzSu5W55M3k19fI9gvDQQ5LmQAi/XruMC1ndKpPqlgbV77a\nMPffF9ZDl/XvXkZqdccP8hrVluSQfO6EHMQdsQhFwo2EpxSPSv6DM3/k3Vrr\nEwH5kVeE9YL/pcQNaVSDhRGF9EkFzZ2vGkok+jtoUl01XI1qwajz8c2gYnhE\nSxjIY2r/18QM2OOTfUKjjBGnQs7m9UQaf/aDeAZVC4xVhqtaDPycoUreLUEh\nVLjfStiYS/VtUrPmZ2qlJcm5RClm6BekrKx+6N5H+4jI19FbH76fah4RrXEU\naLe95Qjb2+IXtCCCSfkqsO68fCgfLo91u+evHtDUYPCISKNQoSijzy9aMXn2\nZBGPmrEBX+71inHFiiAEdEvfyF+mG1/aNP8TK2yB8QnClDOtHHhASZoUf1NV\ngaNKasg26MDKkRWQvoV4A918vfaQJMJKuf4Jwz41r+uXc6qi7ypY98V3+GJ3\nDOqpWq2MerOfPqP1BzqUntm80kXyIU65Aufg8fKdIGqifpY3PI+QJWq1N4Nv\nbRkwZ2O8k1+mQrCRitJrpu6+Uwwm0anfm9Pox0jAo6uyDAqKBSSGkIJVfdgQ\nd85KshndIdC9LzINOCSiunb0wNIG5cogZ6/UJSi/g66M3wLuZErohQNRXt06\nz+v1\r\n=ujQ9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.138.0-realtime-block-editor.25.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"5e3be4498c4e5023fe5a5c6e7b844e9b90e2424e","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.12.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.138.0-realtime-block-editor.25+5e3be4498"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.138.0-realtime-block-editor.25_1545076567298_0.7816121116116388","host":"s3://npm-registry-packages"}},"0.138.0-realtime-block-editor.22":{"name":"@sanity/presence-store","version":"0.138.0-realtime-block-editor.22","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.138.0-realtime-block-editor.22","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"835ddbdd45be9a911969b206d673347dad5f7c4b","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.138.0-realtime-block-editor.22.tgz","fileCount":7,"integrity":"sha512-ClD+LW29FLZf9CYABEFq4ALApWdF7j/jll48A3sllUiMiXiWdd9Bzw4tg2Qgt3sa+lX1tpYDxuXpSRt7N40BmA==","signatures":[{"sig":"MEUCIGFgWzx2b3oK5S7wAsU8xMKU9nqE/UXf8BhuSILF3H8ZAiEA9Wf8L/Q+BBX/d/t6WAmGqTquLpT1OA/dGWrr1i9xMho=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17821,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcGA3JCRA9TVsSAnZWagAA+HgP/1t9jZwaYPuAQhzBpDlT\nz0zpoyzxAdAM8i4FYJ8nQxWTQGtUwWKuXks4usudlErIwCx1Enn6XEPLJULK\nkuvln+pwIw6xOsdTuaZS2XzNlDW+pNQB4GPtjBXn91FSH3DEvMazaIsS+G7+\n546Jc1ut7A5GOksw5jRdtwJJuwfK3kxUum6v+VUaMnDE+MIrQHKtqPZmMGe4\ndD7ahVb57OPbGSl+XfowGL7EGtLkHvy1E7TXkXtaCzpkrXYziaiCAD6rAl+/\nvyp5Bonv70BllLAmVAGwd5cHXb9iospThO5szjTquNfAcCc/di6O3ij351D2\nMsVarIzwyBfyTip9hyMjhEqiw6Rg0x4vIgcEn6vcHimj3qCbUV3eYBxpyxlt\neS6yefOXAr27G9++EdDx3YNQ0DamUXGwMvIuYjzqKIzjO0TNF4yYGOV8Zkse\nSxSyHPBTqeQkqMdbXxCiPqBRwCnySWEC1Kk83KNRaF9DSDdKSlK3+od27xgZ\nPXRbCknwOGMlRpUA7fQq02mAC07FXw3w3quMrfHs90JXWRhEcPz9dPrlZMgQ\nzSnt6T2dPw3XHzLyMNADRVgfGDUVWiUXUBAuhqoX3ApcDoUIO9Ww53b66ydd\nEkqYx+ANpXTctpAX6MhQVqgisc/AOu0gmT5xk6JLfet0BvL/L9aZW6w0cxw4\nN3ow\r\n=9dhs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.138.0-realtime-block-editor.22.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"d86d9c8cce5ba50a5c302c746d5d0ed73e9f04b4","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.12.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.138.0-realtime-block-editor.22+d86d9c8cc"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.138.0-realtime-block-editor.22_1545080264841_0.6769479760500401","host":"s3://npm-registry-packages"}},"0.138.0-alpha.21":{"name":"@sanity/presence-store","version":"0.138.0-alpha.21","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.138.0-alpha.21","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"b91d01ca9a8fc3dddb2eb9df44b90176c3d45a92","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.138.0-alpha.21.tgz","fileCount":7,"integrity":"sha512-dQ87Obtju+vpG7I5wtYjOQxPV8/gKK/6bDb41ubBAgCaXag9Kbw9FAGIfoNe7ebMUwvvrYCSuLufUQDPuTYgJw==","signatures":[{"sig":"MEQCIHBjT4qgJtiNt+TjLrQMpq+zPV4aPSg3kmLoUkRBkvAAAiBAYzrcxootGZcbr4T118B4OiB6cGe/3xyRgE93BD4CKQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17789,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcGCSsCRA9TVsSAnZWagAAOv4P/20TfV12RCctcnPoT+5S\nlZ6W4PDhMB4NG2KP06ftwZHstOgfC7ipVPIRJhNig9ntG4K3YDaXms1Mwi2T\nh38IWIYnp6pl6nKFS8shBtj/pE9Ogcr2um+7m+WmhNVGC2no4xq6Ly8cOPtd\n02h01MyFjv1BcAZGhT1E+eRDn+twZIgxjI0qUv2WQO9iGgL4LnWUjv/vLjm9\n1Uu0oicLAjoftRr4jQQWQDkYuGtSyQLOD2409joPbbyGbE90iVBENbLaWuRd\n+PC4JHt5AZBYAzmW/GQF0dGPdHFmrb7nDY5nWl62i8x7/+tuymB5tP0Dj6yo\nEUvGO/yYlGx3A8z0/x+EZhFYC79sgfT20xGS3v8/TJ3G7FVBAahTLOJ65i1Z\niYih05Yg63NaGGPRvX89UvD9TX78nhTc+enqfkci25CPVZaq8Wj2isbJYKzg\nYAIBWTwWLg4KvelPtf2qlVBibczPrqQz9DmKaQDmw2YnO76BdpoJsdcRnwQw\nfo/sna92+m4siHDwi4etHIERP691PYxgH19K2V1bbcYzjuEEB2wQ0MdClore\n1n5b+FCwbAK2XzIixcz5vPbRfv89CdvHgjr5jWQKA9TRzRf1IWAYrDr6FfQf\nH/naihawPnNfC9SVynOYQEQTMgE/kSLqymL3ggU7/ZL503XgOcP5voIvfzdg\n2eC6\r\n=1BOX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.138.0-alpha.21.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"3488195618d5da375ef479efed82090bc4bca424","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.12.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.138.0-alpha.21+348819561"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.138.0-alpha.21_1545086124143_0.01994747901969096","host":"s3://npm-registry-packages"}},"0.138.0":{"name":"@sanity/presence-store","version":"0.138.0","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.138.0","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"1f1c67f87d5f9aae4c955ea1f4c396ed2fe16800","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.138.0.tgz","fileCount":7,"integrity":"sha512-JwP4G8Cl7g/7pAn+Bth+BrsxX1qnRfgZK5wYcIi239yIYpFKT063u1DmUc6bHVb25aVihWqiRY1aK4obhWH9Vw==","signatures":[{"sig":"MEQCICg1l45+8+78swro/JCpX8Zo0dJp18OFiUADdT9sEkzLAiBc2PuRQMSZe84+nlgaWFLgvUY1Y2f+mRorT8oliqTeJA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17751,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcGN8oCRA9TVsSAnZWagAAHv4P/iChvlZBtn7bxg09Sxe9\nzWp+48bq6HL25AaJP7ZJaAf/5cph+1ASFP4vjyiG+DY4VOEgmXO8urV1yOln\n5aq7DRsMB8KfpQLq3RqKczdj6AOyJNzgpyxyp7Lyrnl7VTTVkqvdGpHfKEdM\nexIYCHS8oSUqhrkaj+XHu7XWo5LUcztfrWCQvKMErm1O0rrsYP8r77YyNO/D\nwIVNen3ZX1yn6GGPLboBMz6/J4Q+U3dH+EuLPj5euXwN0wTFQocHsXt/i5DU\nWnm04ddmeatKUuUdKjofBRpDLLtuv/rh6aBr9VuOWLc3bmMBpJPWaRdtPiG/\nqgeRUeC4owtEg7i92bJ7VpdbSshzpsJ7sIacbvt07TDG1sSZm6bwqXY2rkMz\noCuai/bQsAEa8uhcp5VAiVh755+1JHs2TvezZWReAmFLfFNcWbsHj6g/S7mM\njOzPm/Bcdb6HE+4TuZC9LKXAiTaiJqMC+NwM83S8tiSFcUr2n1rzJfayKyzl\nTfKY+FUI6msPzVd12EQPRQl/QhWuyWHLj5fssM4chXVRHTvzSXygKwvIyKI8\nyGMUCh9L9H3kd5raK5FY95eohGA+BHWgUU5zY43AlWBmMIE8HUpogLzdhNKF\njwiyyCYtoudYMuIdmPcEAjsM1a5frsVikF42Dz6rdZ6xOjXqoQeoDFNQNN3S\n+C2E\r\n=D+cX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.138.0.tgz","gitHead":"6db7437f631c8052871b97317ae885e9b981dc47","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.12.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.138.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.138.0_1545133864317_0.46139047941121913","host":"s3://npm-registry-packages"}},"0.139.0-rc.0":{"name":"@sanity/presence-store","version":"0.139.0-rc.0","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.139.0-rc.0","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"8122ff74b13ec9be0a02141560d975597cbd5acd","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.139.0-rc.0.tgz","fileCount":7,"integrity":"sha512-sdxTMvnu3hXls7GXOhja7WGCrgAG/i7/DtnYIQuC/iZnos4IVsvC+vE9TvL8Dq0WCdC2V2SSjwC7ZnddbDLB8w==","signatures":[{"sig":"MEQCIBW7TY4doUv3m45fn+A0+vwk6TJDL+36DJJiqB3YsPG1AiBdRuoruRUXvfGRjrkDNFbv5leQSByfh0c/sUTNFs0hxA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17761,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcGO49CRA9TVsSAnZWagAABvYP/AmdeacrgHABK3o04dYv\nFJQEQd9xNogoWKNCC5r0NI9vquHWE5mxWOT9YdGWdOZmtCKfSrnBgOmCwlBV\nGQsLZiA72RkgHMBuAW/6iL2E+0FQ9jNhitYrujFmJoyKAgJaacVBb7FaGmti\nY/gckNaT1zR1gNN9Ap745NLZM/IZGVnaCdIq+sBiW86It2XdXvzKb4JFTKN3\nAJu6lvYHWbqlytOnQVGLHnyVx95Ol+hy85WZC3MZRXiG91sjhmXjY1RDb82c\ny08KT6x4u3OBD2Cr5fCqghetqbYlQ3bgNOaknnpy00wbx6bmfosd70TKh8lw\nS8Nw2frPUBEzhmJYTzluLYLv3u4Xvf+5rBiNEywh/JSr9dHnX/ImsK2ri/m5\nb8nk+IByY+lC9ypUUsm0eRo+r/p9OkfXlmdLWCTdAmCgUy2YPJBobdeD+TmP\nqLIpWOqPV59inSy3iu6UIgb706dbft2lSSff/HPWVRxkcLH8/CaMLz4mdS0s\n47UdSOjl2AtIy3FDD5HdjP67EN+hPJe9DLwhERUsuxDew/55xLfHbvberTBi\nhD8i9PcCwYyouDzt/X0b9SPmnxponYfXmOUqCoqrwOQNXNiRDHNlQznRykCi\nxZttAIUJ8Oqu9x/zCpYsmajbRqc2s6MGm2nV++slDbahe9srUxJFM9Zf4ugi\nbMGA\r\n=4jTn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.139.0-rc.0.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"bf608b9d321e341f90350083ea9557bd9f37c1d6","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.12.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.139.0-rc.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.139.0-rc.0_1545137724358_0.006060830456359856","host":"s3://npm-registry-packages"}},"0.139.0":{"name":"@sanity/presence-store","version":"0.139.0","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.139.0","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"219ccac43a3b68f3af89ae4549b2842687f38046","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.139.0.tgz","fileCount":7,"integrity":"sha512-pV4QyAy1ImAhP1e1xC6df6dQEQWKPEMrwwJ0+4Yfk+Oamz4J5DU+pLRnGbgAZkaribLJRCAwdbjekBG0aO2y+Q==","signatures":[{"sig":"MEUCIQC1LV8Wlwxkt3LRuOo3IJceitpjrX1C42VWCRTZb9dhGQIgEfWz8kqj3YTaK6L/cJzaA88ADRg4eLiD+t3yVbH+134=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17751,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcGlp9CRA9TVsSAnZWagAAAVcP/jd6JPNLvDVlCECS4LfP\niYgbkriFrT4V1zYDC2Pn6XcQX+btLS2JYOrjlTnJzYQTMNN40B6icrR/yGTx\nam1dxfVa+UVqFX8MWxjFGxOT7oxoQL8Tatuz6GT7nGjSweyrXy6vHiQAGXsF\nY+I650UwZJJYkPvR0/BD5vGBX5IUv0PaNb+TRcgTPb3L+wYtstGf8kUnxyrJ\njYbPAaE6532nsH2tHrtQfFZIvxu5DYj4CoVd8bC3ibDgC3uxa7UqzCYDQ2NX\nnS+d9MLqIkpel1/wxIzB1h44ny0QnES8bQvKHyhh1Ht4xJ99YiQvrqiOcMza\nmgdMXJCWlbd2YbPQF7D04CK92JAryEPw0S03A5AvV8hUBiBY5A86hjgezRv8\nV2IOj6DelcZHsVZMNCxF0DSD/ndZbCQhQ8pQi7Wp9ARxMcuW21mEeMm3uS46\n7IRziG3NqT8vn6U9uZCJ3BQ29I0mxpClNpf15Utdjt40rwpgrBWWdrwm7BMA\nhScrByD9rfOMzlyz1B95OW9jpz1BzQ8Y+iY5UiN+KU77hFsOWntwkVZ5apxo\n9lisfW1o4XvtZ6wDC/Ec/7Vj7tUAwJBkQIGVv/Jm3qNU3ijouUN48DhD9ZxL\n0pXnPh37aHIkHAFpcB/BOKmTv3EA70pfEA7hON/YCSbGdNrObwyAb3kOLoxg\neisC\r\n=HepU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.139.0.tgz","gitHead":"ca3c1fa068adfe1bb01b99c005e69a9e5ba1bb80","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.12.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.139.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.139.0_1545230973349_0.33437302061355134","host":"s3://npm-registry-packages"}},"0.140.0-alpha.1":{"name":"@sanity/presence-store","version":"0.140.0-alpha.1","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.140.0-alpha.1","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"d1cab98061cb040e3b671b4bed6b448cdd274a6e","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.140.0-alpha.1.tgz","fileCount":7,"integrity":"sha512-WJeoTFSJOqxDvQSMgzMleZIIv0ehMzvzBXqibjX86u7rsHxsbuB8AHUiI9GGGA3cr7HgYv+Kzn8ZATR6P2nWug==","signatures":[{"sig":"MEUCIQCghlG349w47KfaEBUWRfug09aaxbyMKTG68UkdnWtn/QIgfervpl0Lci8sbgpNkENwtp61VN+QX21cR0WlV7TD+zE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17787,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcGrBlCRA9TVsSAnZWagAAI1QP+wU4PftogXXlkgTuwskl\nJ/lg4wcCl5Q0LrXL/H2yIYIZZYHSKvTuL0UXD0efIdFLi/UCE3IY2C/yQXhX\nZ975Vh4GBa5qAvRvxQXqX1SVyDDiHLvFcncuZ0QZdE8BYfZX7rA1hxE0en68\nzBedufv8Ov1WK7NYpSrLstASPAUX1JZZAyOBSDsQVKYu/SgB8HjeRyP1VIWb\n4fGjN0aflSkmwxiD+ARCD2z9MC8S6SrqA1Y4b1KAoppON2gOm0NQbhMFWo08\nBlPyskRU64g1gmoddtb0Dg4QKvCkKFKm6iDLZpfdVPZsECfaekIEjp8xL/6w\nj6+bohgb+85HVLo5SESOVbhM/WZeoe+fEC1EOawDkVeu6kGMa5CCJOpqEfB4\nzg4aAEn0sujpqznRFGsSYZPAu5jTJZv5msKdHmK886wE3CSikBKL33Q+n2KV\n9eRBu61a9jHjMK0KRFhX++9+/w9bwzSEGCKgcGWpZ5MRrqmtOKRTDwa0NBPp\nbN+nSu9JZpXp36q7TKDLhFXscjFIVZiS8AJrx1tZqAlAxFaCQc8lW02NGDgu\njsl1VQ66RdfqyPJhnmctKzIW3cSZgxAfH8KWzUduX12F/SIL09QeidwBsMiM\n2qDz2b1r6LwkDW3FZYO5h54n+tlhYRDBWvmaHNPvq6xrg6Wu9qiskiq1fvaP\nFQPS\r\n=KNLY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.140.0-alpha.1.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"39719d06ed035d4b485dad8b10d2a4884e1fa5ce","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.12.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.140.0-alpha.1+39719d06e"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.140.0-alpha.1_1545252964443_0.8166475085103917","host":"s3://npm-registry-packages"}},"0.140.0-alpha.3":{"name":"@sanity/presence-store","version":"0.140.0-alpha.3","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.140.0-alpha.3","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"05a9fc62a1c842d1e47c28d9be6274e9c8abae43","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.140.0-alpha.3.tgz","fileCount":7,"integrity":"sha512-fq/RabOvbfZ/1oXlVuOzWfiUtqDCr3M8UIIZus5KbLQEJ1SCv52IpjOSBtf5/aKoezTnPrfcQ/1dIE3p38ToQQ==","signatures":[{"sig":"MEUCIGAvfJXBsWjobzg3fRxX51OcMxyoMO4OekbPaJIJ/LDJAiEA5HSzPsAF6hgJBoEuK+4R7I0Dvc/5Zfbco6j/1/ceqx8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17787,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcGummCRA9TVsSAnZWagAAw/EQAJJtrwOT1Zbhvre/i2Nd\ndBeP3MSh31bBb6OPCmhlj+Eef7LIgHJtMvDol+Wdbsy/rdfpd5v6CFoLC8RY\nNN4B09ogMcEukdGs2+ncEtrTdaeiLxapNu9gPPNKtqqGm8nYHcSbXr0LwDxF\n3bCK7jrUjyfxAqJy2aUCN38jhmViqXP2MFEt2Ew2LYbQh66IlSIZoOsQGR8q\nt49KJDVOgp/zJ/UNlEQVwQgJlGtnPbwB81vfHg+1JUTJ6e4n2m4QywtelhPu\nfAz0TbqreD0P7Jxj7GYjly85S2UOtCyNYNurSC0GJV+Er/HXDAPdadLbEsNa\nqBnTt0QmSj7JhPanlYeIU62bPhNy9XSPGcblCVyUgz8rJD1QkuF8IPgol6Df\ns3JAWEeQ/bf7otzY08K6zIKDa+KNU1y1X3MvSUbQSYZyj4kU59Vc4Yvq34do\n3x5hcRBIidJdwUbEtD3QB0oWyVTGTqM41OKt7N+hX+t7Kf6UAIQiQdbwGTGs\neZ4eJsruCiI0XgtKD/b98XPmQp/rUUd+FNVySkho1012g5PrDe3GCZQwPB8M\nxa79ejFRLPjMO5IoNlUmXi846vrjqhHWwYYrg5f8QtTMDiOZnjQdL+x+HHB1\nR+cEeonIW5Tt4VfpQcYz4g03+AjXnH8PlcdCml8mmvzMS7DpgSTfX2bDwL5w\nWiR1\r\n=TUeU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.140.0-alpha.3.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"bde38ee7a7a7b40fd294998c2d5539605ee63522","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.12.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.140.0-alpha.3+bde38ee7a"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.140.0-alpha.3_1545267621770_0.975948734075688","host":"s3://npm-registry-packages"}},"0.140.0-alpha.4":{"name":"@sanity/presence-store","version":"0.140.0-alpha.4","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.140.0-alpha.4","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"80704c3551982ddd9c09089a42a353f1f994e235","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.140.0-alpha.4.tgz","fileCount":7,"integrity":"sha512-AVSAr6QpLlMtXPJf+gqbdwl1V1nhLy1hpcI4NpEo16yPhdfy1kK1I4OF7ddB3ALBlvn9oT2dlQPATEKerHW//Q==","signatures":[{"sig":"MEUCIATtzrJKmUSyWDdv3qhsF5I5z0/AyXqjPVNMzAd7lZwLAiEAo/TdQBeHk/25UIoVK7gbS7mKPM3iJQ+BE4AvAX4H/uo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17787,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcGwAQCRA9TVsSAnZWagAAfNwP/ApleNMLTdNFU6hEARsS\nKVuEvM+sows7Wx2xgLOEHta9e6kCdmDndtR2eHEou7/+j7b8gS3I2dSUC5Fs\nMMocMmDyYb11JalJdvWOAxL268UALzj5S69fwPvt1X+2iLcSreaAS2VIukGd\ncinpdVCg4j2cFIHYl8CjWc8G/PNP3SFG4alGsvd2CGCxflxNyrKzjuQzdf2n\nuG5Hi1SRkXJd3zpSRW7sX64otHVxM33pRPOFu3Q3LEzJs6myDeyh5nOa2jED\nF97vGMrhUa7R4V8XBiwB/9tJmm2ZiWwl2U/pNhGEtrLDGWherQFvdXp0GNuL\nGbjsOKPK/mV62Dy3s07bSPl38KkPiJ4OaZXsmztf7vlp3AD00kfUqL7dUmZo\nf7viTL5jct3xdiGdM1elhfK0HToZBVmNbtVsFnhuluxRY9zLxAK/Fph5haqD\nIaiimX2s4iLh09GJVUuyK7afmUPcCqZqZLWKwClzL2iANSO/ARmxs7BkiuPf\nkhwLbBiSY7XtqIeytrFQlLz5s1tvSLna9ilNcPhEz2t5InnLs8/dG1F5VCsu\nZd9FPrOG/V1hzmUAxz113uFvmqojlL2xrotoRyg1nZ/VlQ6mUH76NRtCeHoZ\nWImD2zfpkCgkpG4GI5DyGqnc2ggQY5AjAVSg9zgdOgzyewc0dEL9pgKSzWQk\nExZ+\r\n=zvcp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.140.0-alpha.4.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"34291763c1c941ec86e642be5a130ebe5c408434","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.12.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.140.0-alpha.4+34291763c"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.140.0-alpha.4_1545273359904_0.25937129298721273","host":"s3://npm-registry-packages"}},"0.139.3-canary.0":{"name":"@sanity/presence-store","version":"0.139.3-canary.0","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.139.3-canary.0","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"751669d46e2b3b8bec85630d7c8e57ec1b1187a6","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.139.3-canary.0.tgz","fileCount":7,"integrity":"sha512-f3P7SH5bp7P+LMjfjvDAQBUC9utKsID0e26iLizn/tqmTahYZyhLiQvydPdZVq3ZSFt/qAc2Wg98TDWq/l5qTg==","signatures":[{"sig":"MEUCIEGoSEaQioVIXWEJoGA40nSPOzLi4JI69VbHIDptQ9m/AiEAl5iqfKd77fqHX4Dp4UIW06/wP+wxaZHCr9GAcvlaPvg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17789,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcIrG/CRA9TVsSAnZWagAACOUP/jzErNmSLfREgeNYFlcW\nY7a5GW0S8x+oZpFy3y28Z/f4FUgGvMaaxxvDglOJcPs68pgde/BiF5VRbQVu\niPsoTKnu/JL20WbS9yAheR1d5qhyyVyoDxeP8QB6orP4aDoFWLf/HRuTLySk\npxxtyzPQGwxIMHRmx//GzNMrWLjt0WLaYQ6qZ3Z+Nqn13Ou3AlZFugtnClTs\nkCp2Afn4l3pOswWyREHT6s6cLX2xAB1FX3dHJWLNS7lSG6g3T6r9A55kGGIM\nutIzMX3tiusAs5ag+42pOYMryO6D5JoQSdUA+4O+eTkRGQP3S63EWFBb17Kr\nHPeRhSRXlLTDmIAuq+Uf2kk4YCU91g/1Ekj4JeLi9HnllnbcAT5Up8Ws8lc5\nlF6TynmzCAkdZkICPJM/w87pVPS/u7nayCwm7aAkC+hMkj0Mu9LjIFyBM4Qs\nlGL87/nojs8tsgKJJXVHZ7F32txIN8+/U/9v/56Xsvodsq57w5f70kq5UHEa\nUp4f6w/wFIMuTetnldMm+x3ejCKKazsXy7pt9SdIuKLbcwVfa/ER+B9Xy9ls\nMZDudES6YvhO7gAn8llzpWdIaml11GTAaojIqkkW7P50YzpElBppwHpEdkhB\n34t6u7DObq/hJtYv5wbhJjrsM0EufhJ9J0+d7N4fp9zrtZXeKT7nl8QJq+3n\nR2dZ\r\n=rMHm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.139.3-canary.0.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"da4ffcb6f86812862262b95eb362953ebf38ba2a","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.8.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.139.3-canary.0+da4ffcb6f"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.139.3-canary.0_1545777599325_0.26334360107529453","host":"s3://npm-registry-packages"}},"0.139.3-parrot.0":{"name":"@sanity/presence-store","version":"0.139.3-parrot.0","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.139.3-parrot.0","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"bd43f9452aae0f07f84f1f82fecad8f3896bff47","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.139.3-parrot.0.tgz","fileCount":8,"integrity":"sha512-31Ff1qd/GWio3aQA1WRZemKiOVUC4OVYrHzY3RcSVSDkjdMqM1+iNHq2Om/WCfd3jiDtrODzUEuFBnE+NWduDQ==","signatures":[{"sig":"MEUCIFFyTrw6a9XcpiQhoijRwBJwajpizW90USEyuLJ+VnHoAiEAqat0cWXtIlr7BJhTfiNfioQSTpaGCTuY7FaXU8XkzOo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":23148,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcIrkJCRA9TVsSAnZWagAAIPAP/jCrKPh+nIcE1663ZSQ8\nwKDXWET6/rba2tWxtHGmfP657twwhCsUz/3tbo285kQ8h7n31IAMGxfSh67e\nBbPhYVLOybssmfXgJTtnm0PPhcGwTT/a+k7GBltiYKaYFUJJJ6Rz7Me7Ygo/\nRVJvotzJIfSjQPI9Mvpo6ntSiLchFIU2q4R2sLTv0Chb8eemeA5g5Z4mHRJO\nABFMlEv65z45xgUwckYrWjv7PNYgLxC80QNk/Ik1OE/PfmGj4/3ljg81EHN+\nmtSLqnQ+heEZ0hL/Bz2ah6YuzibnzyI3bH1CaE0qTspxcATI0Al1MIyVtaLl\nor0LIdMPDVUju45Q4OP9YGrN4eHkY06Nb34NpPf+qTLkdrhb73NI4kVNhGkE\naSWIEH0wA8AREvT3sglYqXWXAPBCQUCpEFIpBgAd2xMPI/3AEEm6iyX52LbP\nmLTrwb3F2QcdejkZgv9BS8iSlfhAPkM6r+lCMJnS/u46TpCV/y7GP2Q16abY\n/O1d+XHeHXLPwZDmpTNUqYsMAaLEXRjfuLtktrmqZ2kahI6xq2XTrCG8b3vj\nKv2dYMgjG0n0hyr/B21nPDMWhsWYRK1864tS6ZPbJCS9w0jANG8rW6JyKs0S\n5RW+wtqxWC4ROD/51KlKPdQ5L9WNB8VXoUMW+HUASax4/oV90Ulr0P4cjnkO\n38Ps\r\n=fT7Z\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.139.3-parrot.0.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"aee2f0fb8ef4e5bcd091890fbd7a8208da5cda75","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.4.1","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.8.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.139.3-parrot.0+aee2f0fb8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.139.3-parrot.0_1545779464226_0.37027074942465554","host":"s3://npm-registry-packages"}},"0.140.0":{"name":"@sanity/presence-store","version":"0.140.0","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.140.0","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"774b1bdc6670eecc3e09368f4774145b80d744a9","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.140.0.tgz","fileCount":7,"integrity":"sha512-Hl53ZtiqR79YZfnmkHzNf3VpUYRefMys+LcdCyR/Lu16iWVPd1RyA3yoEEzvB66CiPlQt20TAqzOXLuXuKka8Q==","signatures":[{"sig":"MEUCID14Qq45BTTqAIKmwagW1lGx9T63WA5xaMyL4VAXoHzZAiEAlPRay7ey1nlXbU0u4465HqaG9/9czvyUsgH9UkRaEeA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17751,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcP2B/CRA9TVsSAnZWagAA/2cP/15BA+6Gqdg+ArPVkBae\nUJGue/EsobXvDnyH2tsFx8EidrY5878eSsQj9FNrsWoqF5xzHA+49mQWM65V\nZp5Cob6Dv9Xy/OepvsMkF/4d7vNQoGEeSZfGnHW9VslmQeUJVm0pPKlovw/y\nGIIDti7iBLxhtZco2NykLZRL7ovw4TQdVXJOowztKkAy+770vyIeiBpKrJAf\nv4OiIeydVuQ90DR/B1SWjuZCOGYiuPNlDX9V6vaAsljEflBsibahX2hb/+MT\nVYUzCUd5AWbm7OxrOR4gjDe8LIJQwBhTfEbh+neBhCSa3FDsThlABIvHpZhr\nbaq/ZhHnfGzBc9uOmwqHtOyC/fkqrnLYbDYNoTt5ztvvNBduCgLAsE/+mxNo\n61WJRzlqysWn4mORWyI1AXhECr5kic1rHnnZLhq2iD09+rRgXWNoFm+phfuh\nDRQe9hxygsx66CoRXArm9Tuxz6ldSuJDW8Uk/UqIQvSEP6+nt1DNI/Q6amxq\nVo6NczyJmUlWHKOACcPoo0u7ND3c+yMBl4S772YO4p/zAZGPKJyUh2BnshUZ\n9WXFZfWbaDhWc7KT1px07xP9SyoY1y9+2xzY0MgfNi2C0DbpktnShB2bzoB+\nBEbNIv+UcvnCaL8XFy69YNZYEdiY8SOkQe89F4IK8h29SwLT6+nELqjUDZVk\nGkS2\r\n=NgQF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.140.0.tgz","gitHead":"230394c89b3d2adf36a922fe9dc189bb955122ce","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.5.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.9.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.140.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.140.0_1547657342458_0.30717628392464413","host":"s3://npm-registry-packages"}},"0.141.0-alpha.12":{"name":"@sanity/presence-store","version":"0.141.0-alpha.12","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":"Sanity.io <hello@sanity.io>","license":"MIT","_id":"@sanity/presence-store@0.141.0-alpha.12","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"1f1f388de679c572d2a446c886adbfd4723b7068","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.141.0-alpha.12.tgz","fileCount":7,"integrity":"sha512-/sEETIbY4G8CRzbEOV6ZbmedkvQE7HTpashuJ6vicqVk+5HCjTSSB/41k11rtzoN/P3W3Nbju9owY8lv0G5FaA==","signatures":[{"sig":"MEUCIQDWLDErAps9etJ/lClK1SmDrxz6pQRiVB7oCoZ18vk8WwIgXjr5FnphRUnRHYmRV/zwL9w14rBASgrPwuBD6z4l+3A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17771,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcc/OsCRA9TVsSAnZWagAAxq8P/1BoebwGn+v1K1VgH1bP\nOmhv4tzTqSCr+wBUzMOBNxhZIR2cAiUdLodBJZty4SCkRldgIBYR4DoLeJk4\nspIqRo52C7vlPEuBmm9XRffWtNaQGQu5sLpySO0f2zyMGDNnXikyG237/hIm\nBPlakSHOBBzTdi7qbVawkt05f2EESG/SZjf2FkzdM/ROBK+lvHFnjpeMN8gP\nJg9wBbRldm+0+FDyq82h9+vpZBbvZXpYglbeIZvkIYYCheD2YptivnAf9JcU\nFRgv4xRXip82Bd4QYQ/hJAZ2V4+T7snqGZVKBgNNPS5U8E36w/eIpjegIAEL\njxS55FuHUsclZphSyX4L9n7jIvGVN5/tMHEP9PiqE4NZEGnEK2oX9SvsOdjP\ng6L4z9M0jvJJ6juIeksphD10Eoe0HgLxvvmHs5VVMLhCjL5w/bOniGToMiwv\nrlBxoAFcRQjii/r2elSLuEiKg8YljnmbPudpDL/to38wMVXy8zvqBH5AB6If\n6r/iZOVYERPpPhdHATpB7JQfJvd+0JJlp9WYbpc3n+oFMV6zowxy1xV8iyWM\nFK7FfkvysQVlniJ/+m3xppK9rWo52lr1lQO2WBi0xXhWL4QViw5lHyIEmXuR\nejzaUoFPRxrsTMLged7oF6STP1Vf+Eb4fzMW8zbvLsJKckQRJwJ7eMqnZOXS\nh/zZ\r\n=Y+Aj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","gitHead":"42f8f1f0a39fa9191a1cdda485e726d261fca877","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.8.0/node@v11.6.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"11.6.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.141.0-alpha.12+42f8f1f0a"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.141.0-alpha.12_1551102891691_0.9060281852065675","host":"s3://npm-registry-packages"}},"0.140.10-alpha.80":{"name":"@sanity/presence-store","version":"0.140.10-alpha.80","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.140.10-alpha.80","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"0952cf55d2854c2142c042ec3fd1279b516bdb45","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.140.10-alpha.80.tgz","fileCount":8,"integrity":"sha512-x/jJI+xsxmsi+/oroGrW2xsXkMd5h/KP6iC/azYBAby+fbs1Ia4Eg4uKUCx9qFE/MZNHl5WFTU1ok3ofBjWFXg==","signatures":[{"sig":"MEUCIAwMsqj+ins2EGp9HPg4Je0zMkn+WxUMyjuANOukOxGsAiEAg2N9aw5S4YIDgc9eU5GNJby+/FE9kTjVYNh3ErbgTls=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19615,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJch47ICRA9TVsSAnZWagAA/1EP/jfOOjkD/HrllkiE6KJ1\nOyfCZ6d/gCCWKRpD86Qf0lRlZWPDOVqvnOvPC7/KlVuJZW92Hq3hxtlPDbZ2\nMvSzVZx3RGXXFhcLsZjUq7nbydtZ0yyFsvMYAcEPuYWnBdyyUgNnv/DCbcOO\nrB7aHcDH7nRTqEZ0vn99ChoDihTlzuj1kacLnhZMOr3s9MfxK3QQVpNw27Hm\nNhS3fvepDJiAt17WQfNaQzEK7I0O+WOTrW7ObNhibbh3YgtsgkvjpQML1DH4\nIMDigGVc3C1GGN9N//BLzrYe580T5/uZbdR/Oei78f0Wk+6YlJYRg7PdAzxc\nv5Co0KI3LcD6pS6AYgm6qmQrEqxSm3R35Uj2HxGcEMM80HVkO/nbZc8kGxzB\n/yFG/x3UglJ8cKTB3SvfWPbQcgL9+Hol3dn84gMIgvGSyjbwKLfmyVt/NIZ/\ngYbe1LrrfI2PoQi0hElcTr9uv5KarwDyeIC5PgcxAxLlfSVAxYh9nEOPer3L\nUx7RcFwkqdRMdAMefKTHL2nSy6c5OK7Igxjs8ujGw/Qxd0Lopb6GlyQ0f/sS\nlH96CVWM1DDJmMu5YCTwCbmUadFAhYND1jGTi4Sw/ygesxFtmJzEQmRpNqIr\nolJZLj466fgTfV3I62KRbfGmaO/G1gjjL9xWX2vpvut7p64B33BKtrc9UjCl\nmR4/\r\n=lxk2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.140.10-alpha.80.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"e21f54fb123e5f9ef60a946a469300b336b03289","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"thomax","email":"thomas@sanity.io"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.9.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.13.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.140.10-alpha.80+e21f54fb1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.140.10-alpha.80_1552387783981_0.6365580449277803","host":"s3://npm-registry-packages"}},"0.140.10-canary.82":{"name":"@sanity/presence-store","version":"0.140.10-canary.82","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.140.10-canary.82","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"1ea3ed032059df130b4a31780193d3ed8c5ddaa3","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.140.10-canary.82.tgz","fileCount":8,"integrity":"sha512-af/WtzTVZondJLQH4Mtsl7J2fdGK3s15mq0Q7d7y7g+tdLdOiIibezyJPL6nnOrKBrcGnirnwVY6u+r7vl9duA==","signatures":[{"sig":"MEYCIQDXnVYSRxbD+n2aP4CqibtvWVvuxsdYClJTTLQDgPoGOQIhAPZxXQgvZfMujcqhCE67MmCyB30TjOjP/hFut0b0bHXq","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19617,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJch6dNCRA9TVsSAnZWagAA6f8P/i9KOutqSN7X1NQKugZd\nsFoAkGmZV1Zvg2AOBknwmab0oj6zBSzphvOynyNHiE5Mzbyk/ZD0mKL2yKr/\nTZnVSiaPYbB//8dmsUCmzvklKTxI0yJcjtnvmYTucBNDpSLDulHJ0E21y6X5\nXKZElGUYF8Gu2Iks2I+YTkzFjSbNf1ROb4dB9IekiLr0PgcfUTLZKS1FB/IG\nUmslqrfx9CCVzEOjx0uBaZgk6WLhNpkL6L5cUXKcCY6VW/cNIlCOwoRfVQFa\nX9i0n8y2ZjzpxBXX3z+LEc0tB+hs5sWUXTYvtSB2x9ewNj04MsSigEeJmDhp\n0/2xxnFB7DBgmDm7UJ8BVAAJh0id6zCS4tE68Y6ZF+E7eWkqgxos+zdUirZY\nyhESLb+CgZCGTFPE9cZC1ymiVo276xmRBspDaCfuNTpDMbcs4WprkJobS0OO\nbIwzfc8bkDubqSR+WYHYTeEZVL4p09NWO+y66XIQKTSC+w+Oo1Ot/WhHtlD8\nN6TFYTFwFG4wPXS+33mLLYm6LAw+1IjAiofVv6fS3Skoyp4GHREDRd5g3AQg\nOnRq2RyfjI5+FzYoRsVLQ0jA3Yu3LzBl2NWx8PT8ISNhLMGM7v0wllhNvvk5\nTD1qDk6E2RTXD/HBrsct/eyjyPlYV/tory3G+t0RfCc7w2F+zxTU9FccCSyF\n/gXm\r\n=hXwZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.140.10-canary.82.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"45a9a3080ee8b7fde78e7b12f697472ce76e5339","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"thomax","email":"thomas@sanity.io"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.9.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.13.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.140.10-canary.82+45a9a3080"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.140.10-canary.82_1552394060463_0.1260351858574038","host":"s3://npm-registry-packages"}},"0.140.10-canary.85":{"name":"@sanity/presence-store","version":"0.140.10-canary.85","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.140.10-canary.85","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"85cab59d58a94db2aa2b18877ea6b3a5aa962edd","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.140.10-canary.85.tgz","fileCount":8,"integrity":"sha512-AyrcGbxlpQ99Pg/XIxSXVLuqvkvzsgjmSdki/CJ1i2CR1qgnSayHy44cQAmf2RktvSXQIZAap2y1josmTDuOag==","signatures":[{"sig":"MEUCIQCnEKNCnX4CzGe1sBccW7+Bxkjb8cfhNys2Nv5NhDHb5AIgXH+/4XpDavAvwnybQOZ4P2PRenmNV1UsUOW86t3RQdY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19617,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJch9sGCRA9TVsSAnZWagAAyA8P/R75APCReTqIS1ZOhOq6\nSII3RQMV3SVAnKbkVy3AFJ9TfXgXtMjUGts81TRxqUpQH1ghsVFtDuWVOQnO\nhRgmaEUzTSbgNV5xL6Hak+9pVyNcSEk7A5ShcLJT2NonK2MhgVQ6l+jmlYxB\n8v/A11Ffcir9EqaD1jbmxpBSW2BaMut0MfVWRU3DfcbK9Sdn0RK8VfZSL3GG\no8ieiZkWMey2QAwBdR1Yz5sHffues6Gi2Y8EOotdNogN7X79nJ54Gt8QUsk/\nkaDzCp1VFrne84z2KjOqY3f868OMBHolL4hY+UrqY4wDkQGFL6cIjdvdW8Qd\nD92+P3uqz1Trn7hi1iZQyZ45fhJiLlHWl8H8FmLHgseron9OFNJQDWtQI4R3\nZvyOU3WEdemUtbeWRJq24dNYOx0lOue1dpoZOWCiSWs9qzdfKYwG5cfnhKvM\nWq9t16xID9rVIwKYXSO0Q3BI9Zw2dYRIeXtwMTae2oxXwL+rU8MVkfhtnbUP\nB9lVzIlUp+4cNu+XU3/HtSDIl+P9wENW5L59hGOlALere+VhUhlAZFtI/eFG\nwITUTReXtMTVZNtScTo97Aec6wYWmXnDnx6rDb1S9sGbZDhE06et5iaPMa4w\n9aYLUqXhNmsPfMLAUY1SSjmkiBARUHrv5OIw4Omu5dqRZ+nnaNy45j8IZRvb\nTVpS\r\n=3gob\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","_from":"file:sanity-presence-store-0.140.10-canary.85.tgz","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"f7563c66e75cd82d06c62210a677e96f614ed69a","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"thomax","email":"thomas@sanity.io"},"_resolved":"","_integrity":"","repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"6.9.0","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.13.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.140.10-canary.85+f7563c66e"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.140.10-canary.85_1552407301816_0.2944072027909208","host":"s3://npm-registry-packages"}},"0.140.16":{"name":"@sanity/presence-store","version":"0.140.16","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.140.16","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"97d907ab64c35551e6a022f8a87cb826a816ee26","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.140.16.tgz","fileCount":7,"integrity":"sha512-DZB0O1Y/0gIM2+z/0FFWUC/0KObrOUKbPy8gnYFedTjFWBZeHN3yQg0u6QqIztDeW3iv0OI5l/Mr9dlB+4hvpA==","signatures":[{"sig":"MEQCIA+lKM1Cx34ddITqgJSNPuqg7X7KTSnFOAA1vTBFTkWFAiAwK9Qd+2wqy766s5oIC/KdKu0adqa0aIaEHBlBHDR2Yw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17734,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcwu3nCRA9TVsSAnZWagAA76gQAI5VSqdhJLPjL6w68Xks\nMfYdNI5yBHooggK8k1WMt/9rsuHCEvpxwAFtJT0n/Bcrj9NhyJxUywluW7AB\nGU0BLJrFd/4eeqHaUD4EycvGCMeBpnb4HbS4zKN7qLmLyivkM4T60rg880gc\neJa9BzsKPVwYe84+KJy2El2T+ceJW6iRhzoqa1vl5siBcJAwNPklEURvINvd\nbDkVgKUnduoyk9kPy9KNPEm4ZQ3n99o4nEob3cDUzAoV4qQhNm/eeJlk8LOw\n8WwgPDfOcvDzo6bwBcROfLrt//JXhOiGcJD035oO6t1Cm+rtKaOnwMSV9is5\neOeWy82tYZLw/o3TR30rSX1XNu5HxPXSdnbgkSRC6XPh9tMgWk4nXEmmzcAq\nMJA/dqMi5eUMSOGqrj3YE+hOIfaxEvr6TWrfs2A3SrIZ17bH6GC1nqGnfEEk\nFQ52lY9AY/RPrCyyP3g7ul+Y6eUet8thFfo6UeOByp7+eDqP/q+PrbcjtZOd\nMGcMXuf6THZEOGx6RPsL4RjJfVYFzYEqMXGRscq2cvmsyNo6PVsdg55dk5Al\njhKYZ3GICmx/NM15r+3VXrLWiJiFJNKvFnGAg+0OZ1M8kG6us0TKt1rJu7wJ\n/LUMZIlHQW4syKApS8aaZ2l/+vfrOhnYhUvlBjx/EhcvUAgW3NFD+hpkug9a\nSHj2\r\n=NRib\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","gitHead":"0eb46e8bc7d3c7cbef4a7e9152808cc2d18545c4","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.13.1/node@v8.12.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"8.12.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.140.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.140.16_1556278758766_0.8618967119887468","host":"s3://npm-registry-packages"}},"0.141.1":{"name":"@sanity/presence-store","version":"0.141.1","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.141.1","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"986b590ee0d293bcaf62bf0bbe657e587079425c","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.141.1.tgz","fileCount":7,"integrity":"sha512-n7BgRk16AQHzzjM5bY3rejAw3fbv9RGZjAjZBIsf1QD/PDZG9xhA2VaMuLhF+WMDTDQKjy8Ye16ywXEI26/11g==","signatures":[{"sig":"MEQCIG0oEyLsRI8/PYUo42ePRY3ycoaqPC9CimiUCn3cGwhWAiA9eTKnR5ZH/uM9i6OUdxvgvotm1q5ZWnyOSBSuBcUC/Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17733,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdElIECRA9TVsSAnZWagAA0wYP/RGZAJbfJSuVUen/pSsJ\nMbkVhKJCypRkdYpPZo6w9x9sJjKLShywCWDT82CpUMrpotUfONqvEMFLq3Ec\nRGy3SD/a6nZnalmjxCz0UUImNyp5UWS82mVIrZ0lqg/bxpPOW8Rbb0FlzckG\nSfMFDQJ43qYy4cCZN8BjK6fU5uhNq8M1vdBpTx5ybW5wXgwG3jaHEvAp/JtN\nyMrxRg/w0P+72pQNuthllbuV1E2AZ/KtTTMODRMl+YnmdHBrZ4b3Q77dCEyg\nnK3IbZgA54H37OKkawzoQUBsTNasBVwHWDv9ha7DU5I1Ps7MKjtTf9ZBlcRl\nswixf31O3fdd4mS+bwu3iLyGjPre7yNbw2tbPRG5tHREnjvet5zEMbPs5oi/\n5WXR8YOQGuaWmFK5AfGShMH/q9+rT1Zi6ipquvaNU4rLIF+/TonMGe/psckY\nO+GMdrrLfQ1xyMFe4jgVEpiIT8NlXhHhFDxVkotaOwyW42Y+f6irDT8xib88\nA5RrXj68WwFv/wBhfg1xdveIsgPu9yvTkPO+GpgivVZgrMcvFmIdUgYUjKsB\n9ujYdt1d+pH9wYWOcrQ7nC6Gq5tP91KzGRREnjfPfztFo0uBTvpq1eD1uDZx\nzjMGxrt5OWUV1k53wx0KPpni+ZAoi0mLlqS7PTZHDP3XfpeN9+NFBLX8ZsUy\noS/d\r\n=XPS1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","gitHead":"6d3e7f464b863ef17d61b82a715beffc560c62c7","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.13.1/node@v10.15.3+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.15.3","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.141.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.141.1_1561481731486_0.12753807459484068","host":"s3://npm-registry-packages"}},"0.141.3":{"name":"@sanity/presence-store","version":"0.141.3","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.141.3","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"3df160268d35498d3bdaf69211c1129ca80b369e","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.141.3.tgz","fileCount":7,"integrity":"sha512-5gsr9atwZm5fVPt5UgB3Lue5y6fv6+IJEe0J2gGqtrgSGZ6ZgaBSsEFT43+6/55PJOBeMUTuHM3w5Mhgg3OlBw==","signatures":[{"sig":"MEQCIGhaJ6i+HbIposYQ/BEl9E6wvNEAJKpGvCbnaGuGLAQ1AiAlMN5bsCjomkN1fmdekdMkuQslxwvUDlzuePvA4zSymA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17746,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdFfM+CRA9TVsSAnZWagAAV7UP/AvDDTAJhrgsPJ66fKwx\nMce0YBSX5tFSztqHgNY/C6MFIUtO2vfWHGSlwDz1R0Se0e7fv3zV+xhY9jpi\n5aD/YnLz8d5Oig3+nkZcaLVKxMBZuZLL+t+dco6VpB58K44tQqX91lfidMyy\n9Si8ypw5HPta33iwOljw35uzz9JDhIgZv4wI7RJGHNS0YK6LNaYP11xyey5g\nno/M78VXdDKxPtqRNxQg968qxd+igSyp67zTA/qxA6cSwkDZvpbnifP/+P2/\nSyIN7qnN1khLduciZ9LUZH6kq16bylDSV0UmpuDn54ttJ12KMvxRRPJFrTRK\nSfEsHC82ZLNC3/v7VEVRGhnkOK8JlgsT1UIzLp29w2Eiwr4GPVW/hmSobu+3\nTTOsQ7mG5SeAYDpDPwkGeRLeezrwrowYCNSHBTtFWYNw52jxu+u7dAq9FvEd\nb9WLZlnM4Tc6y3T8i2uE5f96Mqex2P+0NUzPmVuY0RJ97OIc+xIxC1t7X8Fs\nWASQfN9ZKhw9KWbcyJjEkICz2uCIM5PrI5B+jfuI0vy/UV1S0PczVH4GHt3J\nXT/djb1tQct47R05P4++ehDIapmasyU8SMBpKaDhi0yAuzVcroIdnGtxq05V\n10nfYBAt5piOefSYhnNG/KxTdras4ILHgoFY1RgVO6CXhXV67FxEdnDxEg1I\n9Pm2\r\n=lgo/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","gitHead":"456128180dd8cfd4d3a2cb7594d0cda5bca5f241","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"thomax","email":"thomas@sanity.io"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.15.0/node@v10.13.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.13.0","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.141.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.141.3_1561719613866_0.5209305619002231","host":"s3://npm-registry-packages"}},"0.141.4":{"name":"@sanity/presence-store","version":"0.141.4","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.141.4","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"9e634c1543595f8089a9509dd479c44875ea90cf","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.141.4.tgz","fileCount":7,"integrity":"sha512-1js047N0RcbszIFj/k/ENtih+Mbajzud5F3bnXOIo7hkPZ2DFLIkKrUYNsXa7DRJK/NI3r6n+tOctj4yZjDPGQ==","signatures":[{"sig":"MEQCIBRQDbta612/Ezdhbu5GmxaaAwINi0qfw07ulRNxAO98AiAD3u1rdfmlCZRV3fC51gvXlvWhM4+KeSPlLBn0PmaCqA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17746,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdFgatCRA9TVsSAnZWagAALAUP/0AY6nCPwmLNUrsVsLqN\n/qB8VBBaiq4/WQ9ZAlTxg/WQxvKnHv9g9myFlClik9igLTI1lnlnkGRauT3/\nbdpd1GZtsw66ep5LbYVPyV4Wkrsr7Be+iYAwuttcbx4IJP/A0hqgjCTKoXg7\n2G15hb6PbUheg3qRReoXf9w4DlCRHuV2/myxe9yztYVGuT9oOJKRy+yXFWk9\n+ms68sb7qMt+keIyQsiaAeHo+GKR3JuIgffwAJ1TPV+2IAN/R27JhjQeVzYL\n1Qx2VarAuuDRxdKruvgM+ROu+23Npb/80LyvfvS9qffyG7Dd/6IEv/FCDyPI\nzndMOczkGKcgMB5tTUcI6RdT1eERvWw43ZcMNxpsYoSRfk2ZNN/UhU+d4sif\nq0uxru73IOG6wOr3Aoi7XM7Fd0Tgz+/A/RsIr1aCCCpp9gFqwVIPDjz0b0ST\n9MRmnqOLsVt1wpPLWwKEDlhlIx748IGVFG4bdBcXlumQ9DrsEk3+mGoX024d\nKtxs/JoZZ+gKeIFUf9/7Vu9NmF2B83ATunyKCEPIlvixoeyGsoEOoVbnpXkL\nBF/GFUbtpyXKeqqwuiKy16ZmE9eZj7QONZLqKD/qBiLVh1NwSW2mXBTHzuYB\n0RWMQIdLAPkxJFX0sJpJQrcgkNFJ6y8e8qatBrPyFmpGyiMvduseup6ju43G\nq6om\r\n=0M9a\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","gitHead":"806253abcd228c58f548b47684c7af5b06085c72","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.15.0/node@v10.15.3+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.15.3","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.141.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.141.4_1561724588521_0.09984633358457895","host":"s3://npm-registry-packages"}},"0.141.5":{"name":"@sanity/presence-store","version":"0.141.5","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.141.5","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"2d8fcfb6f89ea213977acc84248124163dfd5f18","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.141.5.tgz","fileCount":7,"integrity":"sha512-1KuARvEgiLKsT9iA1ukIiB3xACEOIYDZxIQ9Ws+QvgS1HJeLCXCbw+ZkpDIt0b/g1kUnLxXvCo0M8m5C0/74Gw==","signatures":[{"sig":"MEUCIFWj9ijKLEn3V0M0TPUKn1fIa+yUlmmrti0tCVj2CY2TAiEA9bbjLj0LVPwSz5gwhFdxPshO/JkxYQoVL3blC12K0b4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17746,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdFh1KCRA9TVsSAnZWagAAYAoP/0TZ6QrrhN0hVZxohfqy\nB1Y2Xbx+K2ukveO9LeBbNpjDqWsDPw0raKjXX+4TL2zPWdhHlMJ9e7IvTplO\nZsj3re+3o+C3GyFNfpR5ZQTQTL5dKNDhsyTRNb+kK1Pm5Axb73wpmg4nR0RR\nsT7DAoqZK/uC1RXbBFd/DxMT1jPdG5fBp0u+gMuuFkVs8ui1rJ0/UPBs1VMY\nMTtZqBFGAEVRR1Oh0HDqjIrF1HdEU5Kh3FMReNcUsjfQ0vd9rM4mZY+U2SuR\nhg5DrwtzECcSq11ameGIb5pfGMnyIXaMuK6IUHoNir5Wtyv1Q0Iw+zVo/q+B\nC5/FQMuWhQzB7vll095vbg8gv9ndFtN86nzQxvTMbqoSJPGJZrBiAEla3NRl\nFdt70zq7Ut4SGq99V3eMEJRkwVFwmXlal1iZpzhADUeMrf3K+YIBn9C4Tg6X\nbBNCtNaQ3pkVN7MutAFMbRiuOCEcSUcRt+c3dx1TdEsKrc/JvwzxLnOLPCz3\nVKhtGcGfTPQksPXtB6lmEoG4eAKHkMN0M/RkcwzQeT3VBbLsOkbLuZCRUhP4\nd7cQJzWXLjavnDeaD/06PH2Kl0KWK+COiiv1n+LnrrsrI01EBwt4ldmsalXD\nuj3xgG2vPM1lhORvWCxhiq0UJsUs+QKu3DcMiZEZmUcv0/BaIjetJjYL5TRg\n57kK\r\n=qIqM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","gitHead":"ef3c8c2549aeab830c68e26390ba006d2547823d","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.15.0/node@v10.15.3+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.15.3","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.141.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.141.5_1561730378241_0.9434839311458627","host":"s3://npm-registry-packages"}},"0.141.7-next.18":{"name":"@sanity/presence-store","version":"0.141.7-next.18","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.141.7-next.18","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"4f9ebe1917a7c0866af24b4f12d759bc3bc0da41","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.141.7-next.18.tgz","fileCount":7,"integrity":"sha512-T+8I8t/ATRi/4g3hLbiemBXoddn20dtkUDzsRJYSWUmS5HZs/6pJ8lI12TrsulVXloCn7ZNgFUoMNe+XGgPQjA==","signatures":[{"sig":"MEQCIH2A53aOoNlYxyzm+BN/YSeXTsH/O7sZXPqA02s19PGOAiBJ3AM9fS96L6aS7JnHYbu/l/5ZUsT8tWmGBCJCn7xhRQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18162,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdUnWiCRA9TVsSAnZWagAAaE8P/jGo7A1ShWRu/q6vKEpu\nPo/4ytt93mvcmYP1vBT4n9kAGqUcDCCMePgGBK+6sxN4ItHHPYHc5kxp+Qx0\nsHWeQB97tVtsf5sAOKrbmMeVybKIDejgcefUoSj7I/CMBp7pEj1a5fupxzkF\n2ewqlr9SNl9p8nD62ijYEd0pXe5UD+06tw9dP+v1eVgobc8xJYSqH/efG7XJ\nKAng43DiMOQQSq6bRn6l3cza2h9Q6fQERCSOPbLsqoP1CIyD7hbd+jtZ8YDB\nmJFHLV68N2iDx7Tf8YABQWszXYDGR/9a/BmhaR/+9/7yZtUDlvsDL1Pdn6dK\nppu9A30y2vIAEqkuYMhh9++ZojwygK32S/ErfxPqX2O/RqaHnyLSThrE/bDg\nFjQbi+pJCUr2XNBw0pxQhIdXaIZZHMnyTsa6wiuEfaf0awodode3NOKqUYjI\nHAzudHLtIbo7Emo3CQgd3uUsL0pYqfOPW/3+XRMrGQqGfxVTn/o8BIieo+or\nMOy3+dQ6MoBfpMLzotZmLw8y7Q4UmRm2/3SeAXyjAJH/yOZLiGvHlkbTPRsG\n9JW3yHP3JJlyKR4ogXHXgnkhzo008Ozp3QjLalV7xRJYd5WDBJwhzaffuYQ3\n8Acg9kc9Y5IeQD//EZibw5pwOOO+dTta9wXkvi09I4helBzB2SAm2ab0MPuO\ng9LD\r\n=11+J\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"add49d7e462c999befdcfe5f9679975d4ddeb5cc","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.13.1/node@v10.15.3+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.15.3","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.141.7-next.18+add49d7e4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.141.7-next.18_1565685152956_0.888433787219324","host":"s3://npm-registry-packages"}},"0.141.7-next.19":{"name":"@sanity/presence-store","version":"0.141.7-next.19","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.141.7-next.19","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"5c0a15663eccf2ff80268c31ed13ed9afc06c3f5","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.141.7-next.19.tgz","fileCount":7,"integrity":"sha512-EtuHyijn3pQfq1GH7LRGgAmAVEs0NTLb8p+TGaVIj/i07murkxegia+B0/PoT17qSrLEjeZmU7OTzrmf+r27Yg==","signatures":[{"sig":"MEUCIFJmeeEHNqia2E8AmnZrH39F3lU1zDS5nZkmKoxxnr9DAiEA7ZBRrut0cdC+yPGuXvKOhPBLUCwdabeyLY5UJDcmmoE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18162,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdUnyoCRA9TVsSAnZWagAAWYUP/3r7rGL7CBpfwZvJBpf+\niy/jiIjemsgp4TxLmnbAodviv1Bnj+M362Ih0YM3i0W/6djGUqAoPvBywpIQ\n59kpgmhzsv6ZMlzltbTMRaNPaUmBtn+rei+i7c60hUotOqo1/fE3V4CvK0FB\n0SU3jllIY6BpG8Uto0HP1nOGdOjoUyKHp1zmQeZez9d7XQJW2xek7sIfkUYe\nmVEpNdMZAlFVXeVc9aaH1HzJ774aPR4HrLS2frVyAZzmO5stPwdVoAr1URDE\nIIpojkd62Ey61orn7tvNzrY2nkDOWecTijKCXcwMe84GRl5MXnl/8lKuNgFO\nZeSK3O507U0EM7LmVvZLqosEhus7Clu1UQHqRcs88bCgIa1sV0CDaYyKogpc\n5FJsqtdfJ4kxHE32rh2YJHsF7VY601+11TRohfy3eYMX9cQQ9Q2qeb+YGcLU\nMEIT85WCMrVUNpuHf1A9m+QZSiZKUxaAuA3HlJRM2B9Nczg9I40oVzaCkaVv\nROnIF17Sl5N6i8UiZVquqiUnC1/RIao0ODwhyxE2HL+u7+CwnZOw21ZiBOjP\nHbOUUzxxXZBOyJIOu3LQGd68kfBHNdhA4KjRjPWCoxSVzU0D7KikJHo4G2dY\n7YITTOd99Jrjy5Hth1kPDJNuKq/LJDVJVA3TP6eKkfy1gHi4qkVfoncLOFhs\njHqB\r\n=j//N\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"63f0b66e779f1d97f86aa9cc1a5f090d2f1e283d","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.13.1/node@v10.15.3+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.15.3","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.141.7-next.19+63f0b66e7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.141.7-next.19_1565686951754_0.09866800091037309","host":"s3://npm-registry-packages"}},"0.141.7-next.20":{"name":"@sanity/presence-store","version":"0.141.7-next.20","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.141.7-next.20","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"0cb490ef5bf9bd69a0aefa89e8f913d83b80e701","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.141.7-next.20.tgz","fileCount":7,"integrity":"sha512-zwKl8LtV/ILO17ntnwFD2IICAC4lEYXNaMLg3OXvkbDCjEEjRuy8t2yvztdkCUFFd9ve1ApUdK2M+4DETKOcAg==","signatures":[{"sig":"MEQCIFJccuKAQfzOLUSE1LunOzZH/rSyMSruhwbII9Ua+XJvAiBehCDvUSNl5qV/Cz8YqMOw4YPR0b43xKxJO2ZzcoxbWA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18162,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdUofUCRA9TVsSAnZWagAABuQP/1vEdMkKdxTS4TmNd4KH\nUlpPQ15z02YHB986ZQdsilvZcPlczp++/wMzvThs1v9QyWtrDhEp84Qs+Lwi\ndmEseaRwd7Rflj4niiqX3DkwpDqQ2fknLMeHYAHmPoyQYxJXAPwgyExEt9ZU\n46WO35mJpJlWJoulXkXo5mLRiFT5NPaOKR4qk5R4oS3gM0dX1agvhLH936p+\nDg/nn8NHcmugAjJXsYsS7vbUVf6zQkhNgdxbk0R/+qo6uXNq4QKabkdpL3et\n15h8LEpWMAYY8trTAazA3tyOpCo5pZ3qSuyh/iOUd5g9E/JkDvWTXtaaFGOM\n9Y/mNBElBG5hX/8O+uppPE05PRGQJmpiEaek5sZrtIIf+J/koeWUwwkZB7O1\nv3jziVhs0qEeHl8hXxfZTY0xA57IiJu52519lXv8ZpZlnNwe2URBW0F4u+2l\n2AEHut1bU53RZ1pkFbzEPMVBbC4cAOB3T06ss5pO4RvcjBJsgbMQMHOgrTeL\nmgAoHRZelEAv5vwdK38rKMuMVj6Hl7/hahjRrXwGcVcFwMAjcwGUmHYR7zh1\nnY7bcw8QPqKaFs9WZdSPnD3qiarGq13kMokaHbkQf70P5DRiIwbmTNYztlGz\nYyuTdkBHjhXmKDyf6xruESWnNtwrBPO2M9e1i1N9a4AxKKK7DrgwqjIoNCZT\nL9ZX\r\n=L5fB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"1b533a42e8d08b9634dde5e7f9a66721a9abeabf","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.13.1/node@v10.15.3+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.15.3","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.141.7-next.20+1b533a42e"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.141.7-next.20_1565689811689_0.5466195011506163","host":"s3://npm-registry-packages"}},"0.142.0":{"name":"@sanity/presence-store","version":"0.142.0","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.142.0","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"a9de5b0e30a21d062f71f9766871da8890775bf3","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.142.0.tgz","fileCount":7,"integrity":"sha512-ZU5/VXliazF5+0PGJQj+UtpEyARMv3UMbI49qoP/6N2g8w5IPnQKnHdqalYkWIP9dN9IDXPEqdtzi/q6ef/E0g==","signatures":[{"sig":"MEQCID3E2RV/drAQebE6QZBM4VCmvIhtrTZ/jaSUXFC2HL9WAiBz3LgPathTtM8Hi05x7MFB1lhbmrKxJHkoPBqqwY3GUg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18126,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdUsjbCRA9TVsSAnZWagAAk9gP/RMTM+yqDu+tcvv68D5N\nN0Q2z3Rr+hdTV8NxPAOyRi2fc2RV7iQOmExDYlG1S9ARKbY9HdO8T5ypXpy5\nU9t6qG9SUcgsCgC3AmSo+Z/5v48r2b5V/xOYcyQKNloRLVr4jqupChvdeTHU\nRDlg3WUoh6miUPwSX+jmgFxfJthHZjFX6LE8PB4NtHonMQ5qdrAwqOMT/67D\nt/Ag5D0fcy/TWtlqVjcAr8AC0rx6QpQ70suVV8ENrncwQJNf/zDmbQaYttd9\nfqCVQusGcS5eQm2YcIJ22zG+jpQSi5ZTpyGUXtQ24dKzGXwVB7JUSTyQDdPy\npY84riMgeXoECGvjNxqFOFV1ZenYHynR9/nD7MAJwNbNp+V32WvcISd75kNO\n1P3ZdQET05NCqlN926drMxPEB5pA7Oa67mVG0Is3wS+vKmvZ5P/FyDGgOSj4\n4dUo7r1wrPFoZTRhlzxmFCM6gH4gdVzhuMwPtugKIFJY6zaGnO5k6UWYaNfX\nu+gR7ChO6OK416Nxx8TJ0ij+G7YxPm87AVE3QN4tstcwzghIUqJSP3kIxl/r\nVTwRz00GKez1/0qoXr/aGeHRFIrp42VPsaAU2cSwJ8gRSAOpEwlBd3kyt3ZV\n2zi0pkMvPpwxQvWpnVGWDhDaI5+JRqU4snmCHOjFgkzSwDsuzbVmvx2Nwb3M\nS05v\r\n=EYPU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","gitHead":"686443035551964ae4035b9128d575a9f1e43585","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.13.1/node@v10.15.3+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.15.3","dependencies":{"rxjs":"^6.1.0","deep-equal":"^1.0.1","@sanity/uuid":"0.142.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.142.0_1565706458891_0.8997953386248476","host":"s3://npm-registry-packages"}},"0.142.6":{"name":"@sanity/presence-store","version":"0.142.6","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.142.6","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"b313571272731c145fdc2c6ecbe7d7e87c82a02f","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.142.6.tgz","fileCount":7,"integrity":"sha512-jQWhzgUz5bbA9I0sXrjDWMUIZEoVmMl7xSCBTTiMdEEM1zumiZimdaYdJAHoQfjRVOqwKV0XtnFxPi71G7RhFg==","signatures":[{"sig":"MEYCIQCFyfXfgRojoLUr5Nc8+94YoRUiyPoeQFxSgzVQxaijhQIhAINGTZKvhxlhHhTK11D8UtbCGT68BqDaZ0GThBAy3Ggj","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18126,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdkjEiCRA9TVsSAnZWagAAavkP/RDHt1YOYBAbbijOaZFC\nHfNtkOxRI+1b8TktsmlqyxZqEY0a6bX/UTiPgtc19ftxaSNRDIxcikEqKaHC\nZwDj2RXXUPyiNKWJkXjJD2T+t0Sip470bKfFKycS76YFs2KH18+43uxtPoIj\nLwjiLx3IsMfZyydcwu9nbW/rH3PgoLukCXZyqiQsNOXWiHAAa/sb154+YLlm\nFGdPcIQoJUp7fFCxYwJcLbWsOUrwY/bv/rLSD5uGLzBi6tidBrRKg8653PGH\ntuiPgbkP0tHmnHCtsf78zS3g2XqZXkcQganjbZ20n6tvVwOWhf2Mqf7EBqYE\nMoDoVYAz5Z7273oegPgqVUaRhuXuhHcf98o2lT/jpIbXUL9/g5ywtpjMstfe\nWdvjgngXd0CDGbSryXosDGDv/RUt93f07zp77pFdVnllN9BuQysNt0+jq0Vc\nCXItKPhYz/dGSETdMhRpdeVrpxf98WC18QAIx85nLh0P+SqSAnt7UBeX+024\n2zybYTNqBnvhEalaDteAlbxoAjaE9fqITDbJQyQ/SRVMZUY1+0AWhtc/EjAy\n/cb67g45n2gGPr2oq6fanl9sM/r8pYw/2F8ggU3fu5gzwtOD5qfiJF0YFx3p\nsBNb+pc6OmhDE2XodoZGrUUOqAM2JR123Myap+KiwXTUfyyyPTTKDV/+eFQH\n7o71\r\n=Cbk1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","gitHead":"eb4898a9f7116801dda95686dc856e7b4575f7b2","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v12.11.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.11.0","dependencies":{"rxjs":"^6.5.2","deep-equal":"^1.0.1","@sanity/uuid":"0.142.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.142.6_1569861919572_0.455385003227907","host":"s3://npm-registry-packages"}},"0.142.8-initial-value-templates.41":{"name":"@sanity/presence-store","version":"0.142.8-initial-value-templates.41","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.142.8-initial-value-templates.41","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"98f3119fbb9c51eb2ea4161bc83e1ac9c82823a9","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.142.8-initial-value-templates.41.tgz","fileCount":7,"integrity":"sha512-1gFMMibEXCbiNt6xycNvFeCHbNZ/oTqKWzi7ZKcRcfBgTUpM+zDOCdBT+RGExqt3TueAHYDfVFOnLwprl5m9pQ==","signatures":[{"sig":"MEQCIEykoQU3JKCKltVPoGI99CzPtaReEWagUm4/GvhEoBxOAiAd2+WYnPph87kM474RbdTeQBC7Lf/bR4uIvWpCOvD02g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18200,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdnSHdCRA9TVsSAnZWagAA/S0P/14pACJ0wjM2Cu0UQku0\nc2ry/OhMGq/V13E0Cxkt/gJrsgp4th59jPpLeTMOtdn0Pv4vTqkjfegyfLvs\n5PHBXOke6EmqU3R7N5Yd/EdQZVuvExdr9wQjSY3A/Ccqpzg+W9ghlz/hpt71\njDWY+qk6c9snxqNuayXrKJEXRN2nozTWJEQHkpcUC0oFQIoOIBWgbcpHLUM/\nAt+vvYfpBI6zYy288jo+6P4Ejf+Y1f2flZtRu7hf8u5JwTadx/18g6xW29SW\nxSfmfCLBjG4+CismdJti5OmURc5uSSkVY0/okJrl6od3tXRgVilr4hRKx4jH\n2UGjazgSHZ9Ab1M9zbW0YRjq2kSWT2mxRqAtet65HVFY4O5UpuY784Tr3AG4\nQrLBKQhf0QrFQhNwWClmFz1zn+XCN/ilbexQprp5Qcxi0JncJ2XSDMzbEnoc\nZ2nvgaHQgnvvmbBZ5HXSaKQ+xbCMNiN2PYSFD3hnz4j77Owo1OitzjD9BKmy\nYroB4qU9x8uybXI3fKsBBGMX6bE4IXDOcpSctViRtDvjEBlKRn2cEH/sY/8w\nCHnnGdqapTTs/VzTufp3uI3ZmyWDAte8Mo+km3pVbicUmysVRDjlWHN670Xc\nxZYExb1zDxjLqnquyK0m+Ceilo4x69IHLOXwhlHOGtqTSY1H0vguGvmH5KvC\nSWRC\r\n=npxB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"fa6502987feae26051a3a314a0c668ad22754272","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v10.15.3+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.15.3","dependencies":{"rxjs":"^6.5.2","deep-equal":"^1.0.1","@sanity/uuid":"0.142.8-initial-value-templates.41+fa6502987"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.142.8-initial-value-templates.41_1570578908929_0.16021304230464328","host":"s3://npm-registry-packages"}},"0.142.8-initial-value-templates.45":{"name":"@sanity/presence-store","version":"0.142.8-initial-value-templates.45","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.142.8-initial-value-templates.45","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"eab95ae89180baf125c1264c63fa2b8035134569","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.142.8-initial-value-templates.45.tgz","fileCount":7,"integrity":"sha512-nc4NiVUR1FGGIDpQgFUhgeiVIIUnf79ynlYu9rRHT7kCcAWkU9eHP5Z9GASXazKpxW26Z7her1aG68WzHIqAWQ==","signatures":[{"sig":"MEUCIHpypnw/RBOSuLOENxllX4ZhtWm5PICroVuqlfmIn5UJAiEAm1p/vpdt1RW7AJKMLTUqcHcddBMJJtw9gUDd5eG4F1E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18200,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdn8qDCRA9TVsSAnZWagAAGXQP/3khm0/0K9+KFRM/Elgd\nIhJQa3dH5n+Us1qolep/fekKz7WDPFBBrvn/kyZtNTdkykECq1AbMCqValF+\nqhBNfBDa9cJppY4NaYCjERO4C+EY0df+pA5d+BfQg9q41YkwCIXx7X2xlpVX\nivKxjTsWesIeDiaQPTGM+9Jyy36YmAn+aZHJfw9GXaMSydB+/eEaT9TdVryN\nA2VFKKIb72bxiFqjHAQ0fESrgcSUj9UCIPzhGbqyYTeL/xPLSaT5Uc7V68rH\nYxHhtVq4D1kX7fsQ3gqdspFEOwj623xDAPJSfH2B+K3RmaVGkekQyr9UKSbo\nAhkJ10KaJXvbPjNWjbUiO8SuUuVYCM082ZbQVNnoq+hZoeacvo/IAD1HFUs5\nlMV7rdbT8KQdcoo5fE7S1/pSZSkGCAgAT/jqB2J9VMFvVTBDjbD6hwp6hlRR\nk7eWGUJ2DCgmk1jIle96bgLvL6P3vx0JoMfBQYGUYwmvFWrmKvGQv+uQcZK6\nuOfpZket/51X+MOT2+6SjFtpmz1kQi5Rt6W6Sri8iYvt33CvI4wT8AWkLZVY\nPAIiCiUXeEIfDyWJeyAJFhQEpSz88xlnIEWx9Tzh+HJGiqXBQ+7p3ntZPWYO\nYzjR5JIROohyGFiF3erw8+6S9q/T61J7RHLBOig8YYX+epw5X8rKt48mcTWe\nlI8K\r\n=AxX6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"690faa572e18f06a70c3e222b562793f83b94002","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v10.15.3+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.15.3","dependencies":{"rxjs":"^6.5.2","deep-equal":"^1.0.1","@sanity/uuid":"0.142.8-initial-value-templates.45+690faa572"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.142.8-initial-value-templates.45_1570753155231_0.5406723455167248","host":"s3://npm-registry-packages"}},"0.142.8-initial-value-templates.55":{"name":"@sanity/presence-store","version":"0.142.8-initial-value-templates.55","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.142.8-initial-value-templates.55","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"034058211b8cb1a843ce95e9beb81f0008545ff5","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.142.8-initial-value-templates.55.tgz","fileCount":7,"integrity":"sha512-RR/qqqgNNdmAQ7oHChE25svXN1bFWlDU254wJOP53///KjZ3uAdYuMbwZOZMiT+nnWGUKmYsIcP0eRmFyXmT8Q==","signatures":[{"sig":"MEUCIQCtqdkxBc2QaFB1BAyzseEi1CcFGRVYC3FHOAIjoWhRVwIgHibkrCVdiok0J37sFq7TYoBwNulha5U0Nxt7bBKasvI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18200,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdpjqKCRA9TVsSAnZWagAA6sEP/jAD9yxYY9sOyP6v9/RT\noaw4ge4bsstfyQhnoQsSEDqTm4HYLRJxY0FRoZu1kVP2Jv9DV0tkWIaybPJi\nV8QU/D35EnQvpcWsCHOQU0/qtdiCFPPP6lS36vASiiG1unVwI7l3wIY4ijkg\nPzWy7CTIg9iZ5BlI38ZySMmCdHkrPWZyF3Y0wBL26o7heI7DjIXNGpm6g99X\n6Au9BRvM4rJy2OcniIUXQwTmLIzFevWbsRuDWJFGkAV4zvsqeDQZf6VtcnGj\nZf+JdtMTrZR9xJi62KC8W+EtJvkDNgbykw8Zpb1Si2W4HUjyPXcnwiJmIhIT\n2KMbmcy8Lm2XE+TVZbjV7wirjLHx3uG3ES2S6sX98MEzX05ROIDzTSwY11Pz\nqchiQoNHkC6Kl/Wbfty0ya0GA+dSt8qQ21ZC3eyLkjrXX8X12PZNSodk+lXv\ne6PrunzIB1rGuvTCq84akNvzRGdfbwjIyTURKeKE0vsAzMbitYLn5alyy3bv\nlYXp+uSvV0N7kbzxP8pZbNeGuhKSJucYDgUpwT8HMYOdelV3URXnXvLhw6Ic\nPeymLngR5m1TNpzpneYRFf0uggxozf/JDRI6cgRgRm+ifUX5uA8tAvSmFMSO\nsesQbAAeOLF/tv2KA7xyLQuBMBC+Ye24TKQ24neq2sYNfR/bM8mrzTo/dX+z\nEvGG\r\n=8og6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"b936995d0a560915cfe1506118e299d87a52c7d1","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v10.15.3+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.15.3","dependencies":{"rxjs":"^6.5.2","deep-equal":"^1.0.1","@sanity/uuid":"0.142.8-initial-value-templates.55+b936995d0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.142.8-initial-value-templates.55_1571175049629_0.9865015382750149","host":"s3://npm-registry-packages"}},"0.142.8-initial-value-templates.59":{"name":"@sanity/presence-store","version":"0.142.8-initial-value-templates.59","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.142.8-initial-value-templates.59","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"76d7db90b5323db2147d8037b3e01709c353e3c2","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.142.8-initial-value-templates.59.tgz","fileCount":7,"integrity":"sha512-gxnRvpWeGUp+0wH2HP7/MvQPmoIBxFMtz3xZ69AcCBqL6NkQHN90nm8NwB+JFlC+BhHjSjlvPw5ePbiOpCF77A==","signatures":[{"sig":"MEYCIQCokdt7l9vMtqUrxNuq2/PFkk/P4ZAkg36DvXLC00Rz7QIhAO8CYNZiXK/7qzb9x+bIdCqbMfVJ9UPhjpXH8GqT4zlg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18200,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdplb0CRA9TVsSAnZWagAA9SkQAJOv8knstNI92ZhASM3T\ngf/dB0hVy6/GlxKmFXJ4dcPJJ4UGc4YZg5YAOzioLhkhc4zU6PynV4ly2Y0v\nyHL3OlenDbCV/6onE2V6gsJUiTlOR/xQZTgQYXnLELiXDz+WVA9udcBVK+rE\nVou4XBIX+FRlx40QverzQmcEBRtia8IOO7ZO//9v60559NMHqSPZ4aV008pp\nQraOXSudBbk2WKdtNekhQyyVyS64oPw8Kvuz4f4WNm9zvD0JlBaSCu34Up+W\n7E48gkncZ/0fO8u0bs9mynzVhtzgzHPKHblV5viNrbw+PzACy9j+hc/cirDn\n02OMPWnB+NVBEMp7vKAC2+DwCnJqTwJsMXVSNRjzUdwBEJKfWepETs5tyARP\nbqr7fPOEMN7p3ZKLzAjb6k0y7rqws5xE6J/9X9Ir89GFCInS3/67MbQ9drpa\nYWGDoT8qXnWKetldW85tsYf9qHqW2vIK/vzjm96FECBprsgV4Ie9+FWtNxcu\nyACAyQ/zRElbXEkLHACVDCLXw+yqHC12yaXQoKhrt5NhmfVm41yDiDSJqLQD\nH7jenz1wQVZFNs4SjO4Jdf8MLIZ+c2kCegYITLabuAXemMuyo1lLOln544xW\nTI8Il0Q/Gu3kmyfunUgXe+UcTVuS3t3drbzx7H7WjsrDGqAxOa7L+4fejwRN\ne2iW\r\n=Skxe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"044ad2798722752c0b090f5491f6fd094891074d","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v10.15.3+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.15.3","dependencies":{"rxjs":"^6.5.2","deep-equal":"^1.0.1","@sanity/uuid":"0.142.8-initial-value-templates.59+044ad2798"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.142.8-initial-value-templates.59_1571182323584_0.9217714741484002","host":"s3://npm-registry-packages"}},"0.142.8-initial-value-templates.64":{"name":"@sanity/presence-store","version":"0.142.8-initial-value-templates.64","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.142.8-initial-value-templates.64","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"16f658ccc6b07c80997493df8626913f218540f0","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.142.8-initial-value-templates.64.tgz","fileCount":7,"integrity":"sha512-u/k9/0Cukhy64hx4fPpvm61Egm8pFopix+wfhkO+N6w7SMa1wdqgBYttPbAkwkrwIbKsC/WVLhCHomszUkmS1Q==","signatures":[{"sig":"MEYCIQCJGbGxEV7yOln6hslpX95gbmEauFS/ZJtrKJvjroBBmgIhAIrHu0oA4/9gW7dhpSsmd2KV9HkducRAXrMTDGtY0JV7","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18200,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdqe/wCRA9TVsSAnZWagAAKL4P/jawmE0ckFey7pEdr649\nCbuOJrt3lo4sNztFhPfbvo43dhlxDI25Dyh0Zakmvp70LyO3qYbYl8OxpHMg\n0DD5kEJGt/VgoFGmaqHPlf5MTV0xU6+knBLt/B28ui5Sbm6byXwYdjqXn2Mh\nB+ZOrhhQWaO4EgyZcK5KkXnHS7vKR0hkLutYoV2qGStGETMKuuQxJdOInDL8\nQuWpOab4U9VGtX5gzfBUnNOr3qIleTWOFe99FH691THWubfShQ7WLFNa8Vjv\n9Y0zCXVKqc1+zskt+DJH+FH0cdw/FjMOhqIMqpA+aVzW7Vh20LoKMkps42ye\nRLpFIof2sZUsGLyYVoPQ+eXs6cZ9rfwAbKVO7GVVjnhi6JwRD4nWVFaHVU1g\nZlTej9T66utPR9WpFHI/mYBxeNy/5IgEvC0Ca3vQ0VXKW13CDlpvyPnN0l47\n6/pF1AhydhHwSDtBxPYl8IEkwVkW05ulT0C56ykKZ8hUjz2k87yPRG36kuuC\nUzY2KKsdVHI2vZqZbOJKV2BrVq5FWz9AO1xLXGiMoswowMde42ZTPxLddamb\n2S0AxKXhfga9cu78okeI+itnQDwQj2fnikHEgkCggcGst4FPN/F/p3udRAB9\nhO/wYsJ1YbbxnBNggA77jb4yf3pIu2lmCKw804XGZrr2+VV+plgIJbOKZ1DG\nDhi5\r\n=IOak\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"5787b877b775b071d5ea05579f5dd3a5950b32c3","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v10.15.3+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.15.3","dependencies":{"rxjs":"^6.5.2","deep-equal":"^1.0.1","@sanity/uuid":"0.142.8-initial-value-templates.64+5787b877b"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.142.8-initial-value-templates.64_1571418095668_0.6108107455984166","host":"s3://npm-registry-packages"}},"0.142.9-initial-value-templates.60":{"name":"@sanity/presence-store","version":"0.142.9-initial-value-templates.60","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.142.9-initial-value-templates.60","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"d519aa5733c986db982e2ec90a260865c0edaafe","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.142.9-initial-value-templates.60.tgz","fileCount":7,"integrity":"sha512-T5tywTp/O8vY5LUwzxMWcL9Wfe9mWfRjeSVxwubA3nuwNjoVvFOFELzGJV0PVnerNnwWfvA5WrE131++lg+IYw==","signatures":[{"sig":"MEUCIQCuCAL29KF/QlKg5TcG3lF1KnZMoz4mQI+4KlC4daHtCQIgZWGN0BYJrdpTPejbeG3Au/089V+HPA2VdxJJMNZtX2I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18200,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdqfGmCRA9TVsSAnZWagAAXu8P/j69MWdScglsTmSp89VX\n26RZkX024D+LjQ1tn7Q5cj2aB9dXIEsrHMQEZ8u7Kj7E9Q9KQZJtfc6H5Hpl\nEM3ltxZV0WJAvGwAatQh2K2r5+hpmhW6fzi/EX5MIaeDmU49XYMwpiLEcBTZ\nnL07Xlfej5bCUCXL2ZHGw1wvBIDPm1gDzWkQMme2jkm0vGaoUD4zg5eXaLCW\nL4/YFobqOZCw0kW3+t8d9WDqsYA+kd8yTyTGGU+Vbg4QDDPBB6VeFJ/KZTe7\nZVmwflWZNgseumdny7I+4k+dvgoVqpLPCR8hJklLz44kwhQ0XTqQRUtzquGt\nDmgNJdAo0xcWaCEYvpCbJ+0zNJ9QasG9QCTKDsD1aW7s4eJrpS5nHUKdQUA9\n9l7CvvzB9S4hLLJKiOssdxtIIjaM63eNZklzZQ7fe8De6Vn95bImC2c/ObaA\nrioNwoUxuzSQwiJBBWvPlAiINNQ6whWcWyLvVlgKFsCviDXPVIjDZ/M7WIfg\nQJPF4Et257Qiu7q4nddhQXkR1XAc+CqXwq90Mi3S3d+cFWSJAcCF9IKrruJt\natTJ85sRAK0en91eF0+LfQboHg+WXtswMqmk+AOF4BqTtV+l0vIva6/f0ZbO\nbAlkS0ki4l0wAqPDH765rYfJUUSiLxvHEXcKcMum9db99up9/8fQKdCgnNg6\n5agt\r\n=Scrs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"b8453ecc44e78c79e7fdc85cd49f12e79b449110","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v10.15.3+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.15.3","dependencies":{"rxjs":"^6.5.2","deep-equal":"^1.0.1","@sanity/uuid":"0.142.9-initial-value-templates.60+b8453ecc4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.142.9-initial-value-templates.60_1571418534057_0.7438191112689967","host":"s3://npm-registry-packages"}},"0.143.0-initial-value-templates.72":{"name":"@sanity/presence-store","version":"0.143.0-initial-value-templates.72","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.143.0-initial-value-templates.72","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"113551bee747d41e972542ac84006208b752e75d","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.143.0-initial-value-templates.72.tgz","fileCount":7,"integrity":"sha512-gJkBF26bFZGw1kHrDyhSCRC6R+o2SVBvdYIyugIgUxcZS5tuE/JnDwpKDnXfBw5bSwa47SFivV7Qn3wHIvRBuQ==","signatures":[{"sig":"MEQCIHdZlyR+jzrd1X94rRWvhMEHqkkk9M+lWkB7ZMYPj4BZAiA8wZ2LeNU+TTXaHy80ENxtgj0ajow7IcZo5Fz7zV3c/g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18163,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdrfgYCRA9TVsSAnZWagAAHk4QAI346MTenBW3XyILtmEG\nTqEnjEJV8M0eciTrReOpt6+whA40+nxVgBfqFogV3zNsQTBTmQQMJQ73rt1q\niHzON2k8DNNZ0celr24yccfwBJHbW+DXnT4Wxnjex2m4TENQnrHPb52r8r0B\nbwodXpRsIOiBCsxEaLitX8LbG8uhbKtTzr1R4h30DCKAOXDgJXvx3AHv3VJS\naD+uX3Wb+dhIL3Sh9gcItq91sh0QlI/T1sEogsPJdOVEJCm3bvRJqKW6Q9s/\n5rXZRE3ECBFz9jSNgPb6c7IteWbqO00y800281LrV1/Tu60+Ri3VcTlADhql\nrkHT5erhsfXWLel2s7hNZzYenTxcvBMvcRX4iWUZsNAA3kpYYRrVho+O9JoL\n++tWEoAKSsJNdib30Bt2QGtM2nvzRsXiqwf8FMs49WaNzaB238SS7K+7NGFG\nFaoIqwovw3usi9XlKI2zctRGq8U8o5Knkp3B/9LtJ2f55BWsk/8DF1AzwFbN\nxxUY4UJ8eR3y0YNwSHVR+ZyEfbiEvQ3JvD59E0i+8ZmW/p8PMpd2iU6W4qdR\nzGXIwuslx0myheDnyO5b9jNsaqspkm961R2bw6DXFLir/to+Q00N5U9i3TAk\ncFpvqW3AExIgLftfw0PE4byBfuXIWLamOeWkvhATSG+dMbmTFOPTAMy5Bv5F\nNNUn\r\n=TApZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"0efbae88dd7811f44febf89e5f9d65ef6f35c9ab","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v10.15.3+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.15.3","dependencies":{"rxjs":"^6.5.2","deep-equal":"^1.0.1","@sanity/uuid":"0.142.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.143.0-initial-value-templates.72_1571682328200_0.8681440078824334","host":"s3://npm-registry-packages"}},"0.143.0-initial-value-templates.73":{"name":"@sanity/presence-store","version":"0.143.0-initial-value-templates.73","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.143.0-initial-value-templates.73","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"e87b746fe006efa515f8f390a889f2b08c4fb119","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.143.0-initial-value-templates.73.tgz","fileCount":7,"integrity":"sha512-s1KYLWH8ZQThRJsTfsR4mluLO4xG7MudHCKhRWicEyVCazOPE6E6IOv43ZB1e/vc58QJHnia/mp/0rzFv0OujA==","signatures":[{"sig":"MEUCIFoz9+/dUkss6Ox+majLleAI40Ub0RYnw4LPkmxm5lOuAiEA1YTQeOPOOnjI0wN6vXm5ochPPYnnmwCBQZgKfIPZp3k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18200,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdri3JCRA9TVsSAnZWagAA2yAP/1anpEnXXZqn4pHMhSbO\n8Su9kesV4qHTyGyES8ekntM9qwyPI90Fz3+VgtjEq2qQEB35j45IU/sxTQ/0\nbB5zl3vElJtcMiG1gbTw4dJR18/lCKrwDmQWqc3JYpEul1QvumC33NLAg+RT\nY0i2NIKgxx/R0X8YkVJWr8BPo1tTjdD29TCcPNjvJ0PWpYfJQku/UZeNZ/SZ\nA1Jp9zUjSl0Zhvumsf4IsR/VHsZatv8gF2GFYZMEr0YW39L3/ewVyANRXcdJ\nkAm0IF674IWSmOLOwa/T6Qe693JBPPrW6Kw7s922bmuAPSrmFFJA/yMfmi1G\nlJQBl8s2ToJWucvFXj4YJi/qtfu1ljwIKhNxAn8V0+Eb+3HnUPBVQkyWMk6q\nfTRheetHVMrxdmzkJe1SPy9HdeVdZhrmDvJNW6Xg+WUm1txRI6Lh0czn6ljp\n5GcliJJdRlZJUX7AsAhGYf6IoMSWWtRHSI2dyb8B6Zb/yRgEVS5/nsX7eZ8m\nkmx/iKDrJMPjHdbH8neQaFAR+3l2sqEUpee6V4g4hK/Gst5FZtKywDdiOTvo\ngHWRoSAhkY9YtdWld1e+f4O/O7QigsapwD+ihZZAQTjR4ctrlrWJUCppzM5S\nRPLP7mwmRBh49V+o6vDZ+pdZKha2tRDrUf6dfhz6W1kDsTVaFQwxnuo7MK1C\nVXzy\r\n=G4QF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"55f74bd5e1538af058a56e2d7a4ec77c6bd69087","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v10.15.3+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.15.3","dependencies":{"rxjs":"^6.5.2","deep-equal":"^1.0.1","@sanity/uuid":"0.143.0-initial-value-templates.73+55f74bd5e"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.143.0-initial-value-templates.73_1571696072470_0.7400357370778199","host":"s3://npm-registry-packages"}},"0.143.0-initial-value-templates.55":{"name":"@sanity/presence-store","version":"0.143.0-initial-value-templates.55","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.143.0-initial-value-templates.55","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"d3e1b51543122fb513bc83b18e8f5f85d13a08a2","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.143.0-initial-value-templates.55.tgz","fileCount":7,"integrity":"sha512-f4FOlBEJNH/9O3MBEUClGFmgaW/jZHUsclRTbgnOAUM4XNO/Z8DwCHCWguRm7LB5BbF0ghOBoKW4Bs7A26X1yw==","signatures":[{"sig":"MEQCIFt0cagemCRaZhwXLCVQB7jRns/wJ7CvG9VXP/m76f3pAiACIkjQkv5iMpZZgZNa7hwDKTyC0OYXp6YDqYfilo2vfg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18200,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdsd7SCRA9TVsSAnZWagAAbnwP/1jLV3/IvQAGT7rknonp\nChBTg7FPWWcPDMJMEKl+kRrwGo756JKVw+uGAEV+zKYRSqyBcGJcS4ZAxf3E\nsC9uXf1QIfT9NJQqnuy5OSwGAajmAnZ8qvw+1pVtNQHTvrUVtJ7LSaDGRErf\nQZddIemd7qe4U5nO8XM5QaNsrremc5a48RkWH6qODmY0Yhell07n+ZvjQ/hR\nb2zJkI1DPDVpULiOuaNOF1EvR3grKtekslxLPIOl2kzivGnfZJpWax8ia1fd\nJrJmYFpP9EFSV6YGAbInND3WtTqZNjqggeBi8YIco7Unbn1g/BG7ka/XsIQn\nH5YkJSjB8Fou6PXYhlX6LX18jq8dfCwgQzlc7uucbH/tvrJzs7WUzxZsIJvs\nZ+uofAqcUVMImnMwOwvIMxjnmQ+aJvbQhcPmmjlpI5ObT5n7r9twMUH3tckE\nze0mryd5sGLhWqTm0RNQsuDmtMZaugPXqqoJ3gB/7JMynmaZsBoaLa1AX0z1\nbQxLqtZPeQg6AyNmXfWa6l4JmPDqWI6skL/ysK9GApxFnifuKugMCBx5EUXe\n24G0EFpXzKSvm6iECsX4UPJ9kobaGzHWgf51guWM8tQK46fnXtIHVs6wKJT5\nuX+oBgUeufWwQkBcc8sjX9ut79FKdLOjJGgK9WLAn70SCm+gMDsmgehTz1LL\ncawk\r\n=kvXz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"fd4fbc5291719cbc5b90f6be40166c5ee4cd6bdf","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v10.15.3+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.15.3","dependencies":{"rxjs":"^6.5.2","deep-equal":"^1.0.1","@sanity/uuid":"0.143.0-initial-value-templates.55+fd4fbc529"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.143.0-initial-value-templates.55_1571938002426_0.6404025215117359","host":"s3://npm-registry-packages"}},"0.144.0":{"name":"@sanity/presence-store","version":"0.144.0","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.144.0","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"a4a77c948c5f2083fa05b64acf20897ae909f647","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.144.0.tgz","fileCount":7,"integrity":"sha512-DHlhOSLNgFKr9qwcbmBTK3kTGjt1mngh1RUGAo1rpIvEt1oQAVYhjKrrFLPH7EQPlpk7YYNgSJ9brkRkPy2DvA==","signatures":[{"sig":"MEQCIGrvHyi1PprWHSguUnLhTL+rk4/joAa2qViGCZJMvc8gAiAKa92cOwOBadc0N+AHMJ87PGxMBdggiXVSHzcE901OKQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18126,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdsgeJCRA9TVsSAnZWagAArFwP/Rz3hMJRFy9+NJduiUVy\nHTKOGaoHHrjztEF0gFLhyR88dVr6b0rYjvGb0B6IcybpacFBOTzk/yShY+Md\n8dLdi22nmu6rkyEzSBNJRENimcWEf+dY/SNvnXzxISReHkL6FxC3dconWBoU\n1trdQcbDvr/Jb1apXG1uv6bWbjk7LJSuo+xvxNmTHF1T4wG173llWELw2J+x\nhkBfRt3+V/lg625tXAnWysLb02XkvmzDuLizgekI7SSGBcNKpQtSO5FOQnA2\nUqKaevdZxgj1Ywbf2L0F2VD1UHC7MaPs0ixW+hnnisb6fE1BEMrxIiQDCywA\nmWZHVNX5MpK3obyC8+TKT9OGfJIga2D/FoeYZzCpHC+JsDcTQ5KrD0/OfSDj\nsLFbOw8vIb8O8FDOQEEauz3U3TYYxknSSfdn8+f81liD4QjWrkUG++tFsPOn\n/gbe4IiLjF3L3q6xEtzag4rznHEEE/VlYYTxxb+4byCpBzGZawzSQWF3Ys6A\nKagOmqPu7Iv4kqCE55eYRhUZr8x4PAwBBJ4/WA3noL1fOzhu/bhB1Lhs9A33\nRNVxwEhAOJZ5zuIfHYiauYFRrfxcXZBLnxeF17gJGLNtZTyCHBmu4jGYg+AO\nPvOgZKiTpDcXjnMsW9tICcJEirP98hnS4r5u6Uz5SLIh+LH8Dh6zENHwqr+t\nO68y\r\n=fCJH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","gitHead":"e21d0ce014668b322fa4249d1d5e4b64f56b89bc","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v10.15.3+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.15.3","dependencies":{"rxjs":"^6.5.2","deep-equal":"^1.0.1","@sanity/uuid":"0.144.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.144.0_1571948424414_0.5566084560047053","host":"s3://npm-registry-packages"}},"0.144.3-cheesy-bites.80":{"name":"@sanity/presence-store","version":"0.144.3-cheesy-bites.80","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.144.3-cheesy-bites.80","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"2f4692a098786fd6e32d5aef5adcee635aa70af2","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.144.3-cheesy-bites.80.tgz","fileCount":7,"integrity":"sha512-Nb6Vclk0bvKPnp1Ln0/o1F5LN3WDq3F3FNOSWOzCMVZ/aFa/RUpIEYl66RWvG7uP6Ora4xl6uYONbEwPOGJEcg==","signatures":[{"sig":"MEUCIQDxbAJge6U+REyFyz2FvJdIr2mhBTDnME+NXX7MeU0zPwIgNiUlMeTz60a2o/lXa+q4eQhtGpR+09F6TfIpN3I479E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18178,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdyqIMCRA9TVsSAnZWagAAYTQP/2sCJmDW95tSA9ZldhCZ\nadlGKUoxUqjYdUizWrzgmCEj/oMidh5xUetJ+SCUyZu63uRHiqTXUSv+XVuJ\njMYoCoOiSnb7jyandndRILUZXUjLds/cIlqz1ZhHhVeAL8/um3jAqlbeO7Uf\naYr6B0+7vF7LfafW6vvYhawZauFUHzYSA+FXY2UzjVHFPatq6Ymzc2EeeB7p\nh0AymSS5DcmycoJuyjTcVo6W1GjbgIebT9E2gmy62sMRtfcgyrNXY/Dk6Ujk\nLbrMTolVP8FOTDbU/ygN0xiYoJL1QDr8VojwjxMedZdGzvo/YdX4ZeVNTH7i\nUqYylxZKx7y0xNWaTfwj/oDLq/jR/c7W/3ySsRfxDhCOUwQtqVRrIKW/AzF1\nADTwhHhvdGnUqi/XbmHAnMiXeA8FSIcWv/B/GZC/BSFD00bMltNK5yqZ0PYP\nGAOwxsSqXuyG5lTlaMC9A4INFhyqpn8iTeP+mr6q33dlFjrgXfS16dFwPvr1\nXKcoTpB7BdaLGNIUfntblOYCEsXNA6005VMHXKOr+buB2xXaruROCX92dMJv\nvK8ZlBcZdG/v4y4rVrTv7pRRhaBU0PAr5k8xIoQmOkvlZYIzMdUS7H0dosB+\nckwM2hTaIfKPciXCsGvZVTw7P61lBmXbkKkQ0d6oJ7S3wuBtVRuSnbuDanr+\nJHRs\r\n=beGI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"95e61fc4ef3f9e84629724819910ef27e69599bd","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v12.11.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.11.0","dependencies":{"rxjs":"^6.5.2","deep-equal":"^1.0.1","@sanity/uuid":"0.144.3-cheesy-bites.80+95e61fc4e"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.144.3-cheesy-bites.80_1573560843562_0.13539382454100712","host":"s3://npm-registry-packages"}},"0.145.0-alpha.32":{"name":"@sanity/presence-store","version":"0.145.0-alpha.32","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.145.0-alpha.32","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"5b7d0ea50e424939cdf63d30df161f76eba148a5","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.145.0-alpha.32.tgz","fileCount":7,"integrity":"sha512-DFt0V9VXYfEfFC/z/tORHzl9XTsR9mvAUuQjuqzBB/oLHeblsl8gqtPoRBwmknsE7nIZdRLflmr+qWigQh4gDQ==","signatures":[{"sig":"MEQCIH9GrgvT7/yf85LOfceizzDoLgkPA1HDQVDgnyCSI1d3AiBePGUNQiitJP8oDoN4uMucFscfnFhluDJ0JLBuaQEaPw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18164,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdysCVCRA9TVsSAnZWagAAyaQP/iMJj0H2uJtvkHmmmUTN\nK3L5zEkgd2fKd8S60pcNSjee95+Dn07V/srHUcg3DxY49HlY5sO5Y5GG6uJd\niOMLeEKtzsR03pFay5tk1Hu72LDmvaVcBWHFm6cU0WeMb0Me7X0r25L+caMM\nuN/uBhq/5k6joeVPduzjsDqWctPl/6SRKogE3dXVXpaXHpNO4fr6rJ3hhATc\nPPCPjTlmbzODCHA51K9BgdznN+QuHRsranmun/hsc3NPtTPaivKhtZXXMPSV\nXD4MDh1S7iwLhq6QhsJ/5UJDGZkftWedTnCN+ykeqK1Jzr3a35/3CuyxaxjI\nSccGE9iEc4m4RtTbzlASSxtqDe/VrUJU7Ik2B9L8zwpcN9GRrHjmzLj4nKwf\nejvy9KpcZ3pgjs796YNiwb2jnK4HIw/nTJLG7poFdtotlFzQduq0oN7mupOA\nKUJBXQmJGvq/aYruopXjKMv6mz0JqXnm8VhjJ7eh9d4fyfJt1eqZmz6xPEu+\nzTFghBal5H3MWuOKhJg5fEnjB5neUV9v97Ye852XPUwpczXxPtGXeLh3l594\nRia5KBw8BB7WNgOe+uWXFeEQcZMSiStn2qoXEk2qizRoT2or9tQcJnt2zhIN\naRU0Qmk6Zl3QiY/0Q/i6LjpxnbnLOIULnu387/Xlhd4MbkHNXR7T5tOFNtOd\nBzrV\r\n=kJ9w\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"fee347379ed7f286906fb633e24140f4ea71f733","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v11.6.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"11.6.0","dependencies":{"rxjs":"^6.5.2","deep-equal":"^1.0.1","@sanity/uuid":"0.145.0-alpha.32+fee347379"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.145.0-alpha.32_1573568660948_0.9540238330315691","host":"s3://npm-registry-packages"}},"0.144.3-cheesy-bites.84":{"name":"@sanity/presence-store","version":"0.144.3-cheesy-bites.84","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.144.3-cheesy-bites.84","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"dfd330b164658580cda0877097ba4c89bafd6f93","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.144.3-cheesy-bites.84.tgz","fileCount":7,"integrity":"sha512-5Og3pjGcqPQUuaIRLO5kdEC34orBHQgfKAZz8BDIZoa4iNnu7RKjuzfXBgTHi9DsRCRPmvNpAk2kFsovqK9KKA==","signatures":[{"sig":"MEUCIAWHcDyu80+Sb4iyGRaQX3whjkTGVLnWVb9+UnKW/iqwAiEAlfHURHFD9F/SS8O91OUGqmTd1AioqzCVuiJhseY4bOI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18178,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdyskMCRA9TVsSAnZWagAAR38P/jGb47DWWW1zVkGxZUKx\nVxj8WN4hmBYgAug6F287ra0aGDt7C4ev9auE0q5FT5PFpc8JvN7eSVjUvq9a\nZ8fHG4XVsSyLeBAYOuul7uk09oEpcWZghGx+r5eyUvuv0rxpLxPsyITytz9D\nLxYHDcMtThbwAAg6YsSAJRDrZBl+b+8tPd2dyUciRYEsq2d5OzEovXAz2Nc4\neMnDJqCBfOXIjriGfrn/JlPV9W1RzeFQQQ3nfmfxdkuQ9Js6r51dFNpvqo/5\nKMW/AErgsHWWWGBFXg5WXb3JK49OveHRAEw3rtkLBgUXe43mhMR8iryUR1dx\nSXWhupFGJS+o5Hr0RmMR8f2H8zNuRrqOZZpyFR54yO5AREjaCtKqEOXdKmKX\n2dHjBYVc1tT1jmPeo7jvdQOqYeyf/ldiuofiUypCIDOVJGIyfj/nyFf8C1Ew\nMTw3tFGWI+xgGBBSjHYG4WONg08BzHr+ZdLNluQ5gQhTOdNmqrYsbFRYUBG4\n6CC5hQZBd0gAclXzqo6kHkEM6yLivvuoxCqbEWxUrgtjLGxY23VIz6OKAPXZ\nBaevjZaZ0cNkp9qHK483IQjv6wvCVWU8bUMDOcUVTlskp7yMyj/neuLsIDnf\n3X51QJZrI1YkhAA1yVZzf8GgDC5Orsq1E0H9LiDja7r45yDWn+b0NT5rz5pY\nndaZ\r\n=iWjy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"931d1275935d00882a7cf928d5cc70b6a8baaeae","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v12.10.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.10.0","dependencies":{"rxjs":"^6.5.2","deep-equal":"^1.0.1","@sanity/uuid":"0.144.3-cheesy-bites.84+931d12759"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.144.3-cheesy-bites.84_1573570828247_0.32086341655642125","host":"s3://npm-registry-packages"}},"0.144.3-cheesy-bites.94":{"name":"@sanity/presence-store","version":"0.144.3-cheesy-bites.94","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.144.3-cheesy-bites.94","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"718e7c23ac78a01fcc56f17e27f0386a86b07e06","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.144.3-cheesy-bites.94.tgz","fileCount":7,"integrity":"sha512-l5yLFubcz5+TpGr7y3qpCw0XQKaBWYhTNeozJpIhd5YXMH45EmKnsRRSd1biMy1sVdCvnQgG3iKZGt0JWnS7XQ==","signatures":[{"sig":"MEYCIQDLFmYdEjZpfmYEOQ/ILoIygGdCzQNKvqEm3ZlhSmzKnAIhAJ2tDTySBq7PWfv3T9mEufe3SeigxRKVphBtaqzBWiHp","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18178,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdzFsHCRA9TVsSAnZWagAAoj0P/0DymX6bKY4IIzPTev/X\nkISfIGEHi+eaTJApKP07/NXYGK13Nw8iMC59OUugD4E09GkAMAb25hX0HWrq\nC2I/zeS4EKy6O+aHsZ6tbP2TTkQ/VfSJgncshKtYmHXMEc21tjoLk8OZFimX\nyqSMHfto6TyywX6gQlVaZ0knL7UVjUvLutqONzPzNsDscvg5joQHYi7kvXyB\n2Nb92Y5IhqZflNJX8JBm/2BZSgafCTvNdocXq+BwXetbpV6IJOEeMHfWre7j\nGgOn/MjLPp+uPELgRGssjJNq7VNOaFxF/W08lsm3iDOwtE4FYzsGL0SQuH3K\nZIWrZExpFKoYApySSb4dGEgeRsC92kGuclBZKWoR9UeAjBJq0g/Z3tfE4zTm\n3dsmflpSOLT+uDD2na027nTdxwr+veW92myocaPi+JiJmh7iGN7fu5nAxDXI\nuTcBV4lzt/eMF1frwMWCbdk2W40kVZ6oHfmj3p1pYAA86shrHU8GO4u4RRGm\nQPCeslA3BoFaP0l8dVVjKPvL0PYss43iK1zodnDalT9BecBHUW41/D+mx3J0\nqPUp9qzJmpPg5oDSZHeOkAnA90SEbbxg3YnoZADGNgTGA4e3d77yCdqE2HTV\nc7U1WaFDNYimBmipUmS4QvgxqkUvtbRk4piEoO56HJjepijI+j9Q1/0BDDBh\nrJbk\r\n=i5Vb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"84ddd58fab2b8b80710421b8ff7586046f0a6f59","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.18.1/node@v10.15.3+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.15.3","dependencies":{"rxjs":"^6.5.2","deep-equal":"^1.0.1","@sanity/uuid":"0.144.3-cheesy-bites.94+84ddd58fa"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.144.3-cheesy-bites.94_1573673734872_0.5363837895496124","host":"s3://npm-registry-packages"}},"0.144.3-cheesy-bites.106":{"name":"@sanity/presence-store","version":"0.144.3-cheesy-bites.106","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.144.3-cheesy-bites.106","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"5658808965e9debfbb09810799334807467d2989","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.144.3-cheesy-bites.106.tgz","fileCount":7,"integrity":"sha512-+hXno8c1dOXdRBwtKIKb+lpLAxTlmpMygl5nK3BXyAOYOkM0Ah29oZHTgSyHGpWkq7j0E6giIyoKAplta4dBuw==","signatures":[{"sig":"MEUCIQCeV6qczGrPFO3I9IWw8IJnnRZIh6Wt0RHB3ITpN9Hq0wIgaMfd0b3b9LtkpPEXVK9Y1CUac8O1Q5aLzPIWJRLo+pY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18180,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdzKNXCRA9TVsSAnZWagAAh+8P/R1UwmBhV+D3N3AXZN0h\nCIp0r9jNQ7RSBuU3SxaH8DCUVmvqFp3oaX6SrK1Sp3xVkonAOucUCrC2ss/d\nFOaeEuFcwODoa41NmtHiAVyyZ0pf9WztXJYZJCMvXMfu+pcFgN52Yh8WctP0\nLfmOmjuG+sTMaOIB79Bw82nPn2vk1pUPyfhzSlgrCC3eMVI8aXYtEs+c9oti\n0LK2B/eyrV6XLUDJzvvLVItHG6LNn+cgQXZkZAE7BZ3t0WFdgf7u0wCE+U8J\nda85mu4qLliUeYrjCSgqx9/DzNaumHV8+IGwtw7WB9cHD6P2HlefJq0srkw3\nUVTt30n1e6gJIfXoPoHZr3wIxKiaZbUu1it+5LdWbWFwGLKUqqhjhRd6/X4Y\nDW+AIAh2UugvzF0x+8QrCz0Qab18E3zzoizzdQPWt16WsEQ36/GgHC1ndovx\nbcPMROYfumw5vRwlvKNWusrJZbNumoBwIw0mqR8lME3AOX8vx/opT0keZTUk\nX3TJ7yLkqHm2/UpPLVmTMvbtqcbzhPSY8E6vHgvdjHUCrS+o5U96CCw+F+VZ\nPPuMn5fyrgVXnBYBOuCVGnrxQu7Y4nWHfwPcC+0SAbO1AFpdnqgzDR70XmG2\nN5A1nzifgdkReGTq9Gqrw/Aqr0HpUnFY3+Yjq1v+KhU+S37V/g9sp+sklYtP\n0R0v\r\n=vOH6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"4cac1b37999809521ba1b91a9b1d8194ba08102c","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.18.1/node@v10.15.3+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.15.3","dependencies":{"rxjs":"^6.5.2","deep-equal":"^1.0.1","@sanity/uuid":"0.144.3-cheesy-bites.106+4cac1b379"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.144.3-cheesy-bites.106_1573692247331_0.7017923108272401","host":"s3://npm-registry-packages"}},"0.144.3-cheesy-bites.110":{"name":"@sanity/presence-store","version":"0.144.3-cheesy-bites.110","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.144.3-cheesy-bites.110","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"78e00d05771d74ab6b4604caa6ce9ad19739973b","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.144.3-cheesy-bites.110.tgz","fileCount":7,"integrity":"sha512-t05KwQkAPXBpz0MAu2Aph/UfWK8O2WjQ28y3C7QQIvXhpujRNlWCv99DmhdZCjqPdwL+Ki17PLEL9dzW8iAgDQ==","signatures":[{"sig":"MEQCIEr7Av7YbJvpZA/yg2B9dP5orpVEybG7k87GZQyy9MBVAiBhSVeAegW8GEXoG7WdrBr2608MVFVBI2DqfezDKUqIHg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18180,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdzUUSCRA9TVsSAnZWagAAJLsQAKKKMBEaVThrNRcM2/vB\n8WUzIDt6C17nsvvXlOH1beH2IcY6P0ZIOOALxkfrU6/1sdBLmCwIngpQ4goK\nhDAh5lErng5L4F/XOrxMuJt2EK+RDrszR/sxapUpgFHI3LgLt2OZPt7eA24/\noEDg3SD5sxNli5LlG31LjLH8RDdVP8od8WuIXTpPeb3M/QW8TtKgu7A2LNZh\niZLZTx+j+1v0QdWntCzocZEl0MqLvSB7NpJMVT6GtbctN2XASV8IyQ3iyb6y\nyrRWdMTW+q8RzH8DZZFuUufotZLSIAauyN4gv74R36jdW+bZtijix4qzxCZQ\nT+E8FJVQ7l4b1+OepfoFsgVFTf1imuoUNpePKxo4eD9T12szxTQkTXcLFfp5\nFoKvrxfSf0IftAArE7g/cCGi4NogqP0h/A6XnzBCORdqsDwyDO7pBTcNGhmP\ncyjF9tZ0QbnAFDrxG0lqTXP/vPrZ6E+Qrix3jXiBVoZTYjdYonghhcPERvKa\n169A3FG+NxTIXajcwKDqCuLgtj3oaQz5Gds9ISPskuArnrVKMRdANQVwtHL8\nXy3DSaVgELq+eS9NJ3UQIQsm867NWPxjQ/qmLU6yo1Otdj4nhPYiW/LuVC7Q\nsL97fY5IsMzWkJWGo6C1LPAukxJHuHENmJxKwWdVAOOJchw+Wm6N6k/bh/Lx\n8Wjv\r\n=sPZo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"3f4da53384f49148a8e3602194e004aa4af291a7","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v10.17.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.17.0","dependencies":{"rxjs":"^6.5.2","deep-equal":"^1.0.1","@sanity/uuid":"0.144.3-cheesy-bites.110+3f4da5338"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.144.3-cheesy-bites.110_1573733650265_0.45993801425384184","host":"s3://npm-registry-packages"}},"0.144.4-cheesy-bites.132":{"name":"@sanity/presence-store","version":"0.144.4-cheesy-bites.132","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.144.4-cheesy-bites.132","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"49257cbf99d22a68dff4ae2dc3f0bf25b728d74e","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.144.4-cheesy-bites.132.tgz","fileCount":7,"integrity":"sha512-+bSPiaLBBV7D1YTmVMZ93wzxzhfe5a17fK9msI6acIKijjsGPdeK0cHCRK/tkZtBKy/SXQxIqtHEDETVL8i/RQ==","signatures":[{"sig":"MEUCIQDXopZcDW2iLxqN1jLn5VQviadFVpGmhWwJFV3Ys5RzqAIgL6p86uHFMQeTFdrGHcFT8bnGxOhYTQHvqsTfyE3A9z0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18180,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0EedCRA9TVsSAnZWagAAzTIQAJIupC912tezWLauiZbD\ntLlnAdELXpm/5cIifieyjAJ/n+zF7QmTltJ4WSZda07KinWM/Kh7RSopqR6g\nj/GxYVvEOmeI7pPNKVtx/xPKpcGICw6tIPSzcfVoMQyaZia9EvxKaV54+Bmb\noV2ZhmVeEkapK24H8Kfj/0U68HossWb3ftgCmW+d5ylbsPCiP5gobRcMvSOB\nte6p7UMce673Hl0UazEWPiWlumkB288kytYr73gft0sXDZ4ga8ZE/2kZF+Bw\nL3ITPTlj/eIqUyZWrwSpfcJahNNFLGFP5LAYAOjAh83oBzt2RIsrRFBEeT8m\nr8AQm7pTv/GGGYl8Z3TtWGW+DFSQWhOEXU9H+IABaQ6O7mgFkW+jzPFEwLRp\nY9WlxjIz9pLXyaMTNYbh3RQ1zBOxkyv3wvhHz0OniKvPEj/fQKr2SQ2H0ZMP\n+OC+QKwfKBUQWUPoANf2AchRW64b0dsAhh8pnJpNAiW9eSvk/Fi5dxP4RVse\n/6OLRWXR0mcNhQJlMCZHRsQ+vPqih2qJDrO7tLpicRl6pgh8S5dmxTY0YTiU\n+UFKzl48xlcRtrZDK+lq+yQjprrphTmUmXo1nMrpFtLYVSxKE4cP2Hy05I7b\nYsuEfIU/CCZzVSHhKQQPHW0gxGJclvNIomC7pY13S5lkko8M9Vj3cWVXKkw0\n1bXD\r\n=/qd4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"c6b84a5fd7eb3239ae5042dfe997f37e471b23bc","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.18.1/node@v10.15.3+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.15.3","dependencies":{"rxjs":"^6.5.2","deep-equal":"^1.0.1","@sanity/uuid":"0.144.4-cheesy-bites.132+c6b84a5fd"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.144.4-cheesy-bites.132_1573930908948_0.2689464388862237","host":"s3://npm-registry-packages"}},"0.144.4-cheesy-bites.121":{"name":"@sanity/presence-store","version":"0.144.4-cheesy-bites.121","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.144.4-cheesy-bites.121","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"62cd5cfba7ba05e34e12bbd477f5d2bb9d8a1cb6","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.144.4-cheesy-bites.121.tgz","fileCount":7,"integrity":"sha512-FyoG0QM+pTr4KxVNncHpxDhNJLUvAkmZ7SMSONiwSxVlw3OwaelxaZaFnJ6OhqB/TtG3/IQi1tNlyLk9ttY9+A==","signatures":[{"sig":"MEUCIQCr1YaBSK3xzyNhRpqlahCguFVRjmQ4pn+jp58D458YQwIgcOvFAZrL0XNkJD3myooT1flIhBDWNrf+yZG84zpc8/4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18180,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0x7KCRA9TVsSAnZWagAA9r8P/1X5ff1DibJSX3l3AkXl\nGVjHPdlFjlYGGUgFzKchey32BuM1CeaPS7ZsyM5gU0w/2fdzW+/OgAUPZ+2B\nMJ1KyKnD5Sveg2KliOy9XLG2dF2I6Dtz7IZqeF1B1CTBDfREKoyKQruPZ4aH\no/WlzDslzXX7h2BbaPb5THPubZO7poOXHicvHe2fSZJ4r7tRTsLOJmaWeoNd\nXLf086/c8wHWf2myzfyuOukxiiIa2QJzOINnvgEGlQCBqw9gL1IG+dpmhDWS\nub6+JvwRC1pMNLRawuxrkuZ9a5fO2OKQhhv1ESz51oUZ+2KngzX+a3UTUGU3\nalww6z5jeh/rgwUCuCBfSLnILhLjKziQuRgLcSiIzyD6Kq3fMoxBGqGzL5z/\nC2d/BY+uQEPTMqtJz6Gj0Q239FMhxVNmKNhzUWnbkhF2hztJvEP6tJ0YydrL\nSEo6rN4IjQvR+FFBmwoey5F/1TWN3qAd1kmP8nDV8HkZMv0pQwUmfjNb7Wxo\nQynTE5p1PiLZKMmUbZMq/2CDuxnRo34zYeVMOKUk+GF5I5upXlaw7B2HHPKC\n6NrZCQ1h9X0LPgtN2iwlt5rhTJAgpO1a+Qav/rOOmDnMYV1mTcGTf+KBmrVh\nYXRfSyuWQBF1bU1V9RSDHaBJKq0TMBdGcbevnqXA2V1yZsRYG+0wXfP8y46T\nWv3W\r\n=jkOq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"949bed1f766aa460bc72a53a66176420b2d4b4d0","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.18.1/node@v10.15.3+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.15.3","dependencies":{"rxjs":"^6.5.2","deep-equal":"^1.0.1","@sanity/uuid":"0.144.4-cheesy-bites.121+949bed1f7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.144.4-cheesy-bites.121_1574117066441_0.22801373048235352","host":"s3://npm-registry-packages"}},"0.145.0":{"name":"@sanity/presence-store","version":"0.145.0","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.145.0","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"6b22f2ccfaa4b37ffe56a76b0852db1015f8f0da","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.145.0.tgz","fileCount":7,"integrity":"sha512-UpGd078poGO2wW9PvPGFNn3DvjPyiYQaHfksovjBk2DelNPpiCokGhwT4DGGVpMRKSIW2SkPufSuPL28dyFi9A==","signatures":[{"sig":"MEUCIG5Z5EhYQiqCYDjWNYb8ckAu8S8LD3Yr61s0UtkGfcasAiEA9Hfq5ixDDMqqzlBjZn1rS9m/iaXxgOw7HXgzqmvjutA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18126,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd1GjcCRA9TVsSAnZWagAALcEP/1xzz/ikphzG5K/k5f85\nsKuCbgWGAn8BhiJWdSBPjgWzkZM2I79q5dlF2Nyh0KJtdVfOcW8nQ6UTJG/t\nBJO3ClPGnEd27GpufKcxmVA7vSB2OnRh2FkXxmOiqkCG6NUTlzoIsfM0j6bD\nJQdsQoTeY3aIsxOjINDgfw0PUE+XjFYbr6NVf7/YLt18WCldaw1sxeF3AT88\n6QkWeuWHzzsJEUm8Of3XzBpgPhQBW3MpKOsDSEqVohnnOYBtHJDsXboH81XP\nYbMkZqoGz5RwbIRHPSHjUErV7s36C3yKeDk8Hhizg2fK/8MWW93BvNALq92y\nI6WTScZce05xkUqc6LQDPi2+tF2tXIjeWF0cl9xfa0qKAB+vrM4XF0M6KNb0\nXDJNzSbnJVaHCP128xIRl+V7EiG+m73gq7t+iTiS/sN7WZwgTnuqIqtCX10c\nbXR3X+YUbcZy/4W/lUudy31P00nNm3LmvmtvoJO1G+9XCsOg+BxhpaasswcH\nttTaOnamwc8Dl55tDTHHW1eS9dP0yJRbC6E+YP6r9Sk7uGYdyW8PAKGiC75n\naFJWCw/I6RH5Y/IUzdvCkuOMoySmhp+5efrlympJahCkdgKMS25O0fEOJ+Vx\n2KxMdvCbcfAlXrh5Bq2hvTauMEMRrFrc2StJKI/W8cXGKDaiDUDDPaupgQvQ\nmB2S\r\n=9DKg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","gitHead":"81f10836a980ac6dc8d4921f587f4f432380b981","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.18.1/node@v10.15.3+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.15.3","dependencies":{"rxjs":"^6.5.2","deep-equal":"^1.0.1","@sanity/uuid":"0.145.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.145.0_1574201564055_0.15333512960868334","host":"s3://npm-registry-packages"}},"0.146.0-alpha.1":{"name":"@sanity/presence-store","version":"0.146.0-alpha.1","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.146.0-alpha.1","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"e19593227225b961a027c3b7b39c84769f15e1c6","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.146.0-alpha.1.tgz","fileCount":7,"integrity":"sha512-/w576lI6bZJt25bOqa1jFsHSUcw6461BRDU023PmSxrcHvq0YTpLIDQ5l5f1VjSPCs9apONGpQIjqQI/TrgPpw==","signatures":[{"sig":"MEQCIGlw3MiSAk8fgF/gg/QLJAeeTA1KwDucsQ30nRy/uio6AiBPh/L7yONgFYh0YSCg1knLDWT7ky9N9Tius0670FKiCw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18162,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd1IQsCRA9TVsSAnZWagAAldEP/jT+LGYtpj6/1DPoshjk\nCfrRJfQ9NTOUK+7LO1mJHal2lH50zaZuJax2yylZSzueVMtk1+jQUn/N9MS7\nYAMGIRZdUJWgPYCSYNBTYJP6pGfTPw3zYaNf5YrqNr6PT2hyT8rNBBaOfA15\nJ0KjEl7dfuYMaqbhelSBaX6FbA78M4tyTCsYrUPgJxc/JTlG1ymInf+KEHOT\nNsVIHuAHJp3IWATW9oBYamE19ycgJQ60QhKc0+fDAqQUJ1bp9JzIS3fzB5BA\nMIqr9WUyWgK6PHLShR8wlmVJ7GgAMJiGeDryIEtEGKNPUxlJUaDzwXY3ITpz\ndp7MW1jYyhCmvmSfhOnb04fTQZsgopNgbzqq6xg7gGYsnAkDkcyXuvWZFRF/\n+jxmjIM2AGiSIEUOUhUIsD/lG6Qk9/H9eyTkBy2GUJu82VT6wLV4G92uVOlH\nzVTKuYDTfGsSxalZHVGGlJHcGQpHehYFNMkVRiKN0IuyzMeG2C1XQRjR0xGx\nOFe3NANz0hoJS3MiKzD/xSHMy8RazZLyDvyfJwKqOW9V/o8Q4MVlIODOKmdy\nGHCdX8eShHCO/zfyRX0M4Jqng76HVMGicXt5nTPJpXSOTxndX7EIyH6BoqEn\ne4nukuWKMlmNCyouEv6Tf/DcZzMUs4mfHX2LQTLXGsKnvr1+hy5q9rW1AYsz\n7jr3\r\n=w2vG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"f2d2a93780d047c5653be74a8a87840b1b1cc8fe","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.18.3/node@v13.0.1+x64 (linux)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"13.0.1","dependencies":{"rxjs":"^6.5.2","deep-equal":"^1.0.1","@sanity/uuid":"0.146.0-alpha.1+f2d2a9378"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.146.0-alpha.1_1574208556293_0.4377063421965528","host":"s3://npm-registry-packages"}},"0.146.0-alpha.2":{"name":"@sanity/presence-store","version":"0.146.0-alpha.2","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.146.0-alpha.2","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"04699c097c6e75d72d60cc0002608927d79715d9","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.146.0-alpha.2.tgz","fileCount":7,"integrity":"sha512-M80FksA90PR5Ww7s7esx8z8iTIvkYrX/5UuR8/GofZfsWce1AmZg45NPENFDelhjIRqg9UTDUsYJzUh0unTbfg==","signatures":[{"sig":"MEQCICKJI2HL4/XbOezXTH1lLMbQgAcOjJDnBPEH6Iaw9UPXAiAn821hjsO9RGR+4eH4sioYjcxNKiiNL5n9G5kHvGSVfQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18162,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd1orACRA9TVsSAnZWagAA6rEQAJ9njY5SXHWK95jjqLu5\nXj+oiH8lZoYPnDNVWTbXTbZGz0q5wvc/sMTwSthnhQC+Cv8AFBYQHMAFuL9T\n3JRmy8HqYW6751UOqYs9ZEsSYMtve9bIWAGDyrCbRgKo6vW1XsppHVfXNz22\nIlN2zIs/u2sCovw322pNH+tpvs9nuA5WtlRHQuSuumWRAaQv/wVLurUl8Y8i\nQ7WB9MeX37/+o92ugtTBbTyBl6IvVQdD2WZAAKt6ef0TchkvYVHv0mVZtZJY\nFV2olxsuntPbEufU0kI/U4Fda5G0v3uPjwIrnhi2HkRj8tvZs59facBDMtpB\nu2xyeKB81QB+TR2TkgmHHPztp7ai7N2EbQ8v76mI1uXkQNvS3AcKpOF71bVr\niIoYLLC9s+auAQ87dif2dYNAw8Bm0KaZFvQConCsbxAtXqKmJXPk/qWrohZI\nSxbU/d1rKpJzHnVJaIPzatG0mNYmSraXwVX3TwrQpDEDZrV0yx2tBKvCWV0f\nCM50MtgT6T2wJoPduen6VJdqT+Xy7lVX+qY2NIBIFJOpUydNfsU4jIhuJH+K\nNeePxSwWcjIelp6ontuVue4Nx2fqcWMKHBUrue3kJR6PLn3NRxnL+KRnrGKl\nasyNlqmONb7hOv7/dE3zyD2PLpfNEO9eABjCrO/sm1ANT78J0JJUEev/8/+a\ndiic\r\n=BitA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"2b410269c1a47b638643e0beb35c2116e077b7b6","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v11.6.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"11.6.0","dependencies":{"rxjs":"^6.5.2","deep-equal":"^1.0.1","@sanity/uuid":"0.146.0-alpha.2+2b410269c"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.146.0-alpha.2_1574341311836_0.009993223331195233","host":"s3://npm-registry-packages"}},"0.146.0":{"name":"@sanity/presence-store","version":"0.146.0","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.146.0","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"756a2a0204a5cc64fd89cd55c58699b96a5e3c17","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.146.0.tgz","fileCount":7,"integrity":"sha512-rtnaDPgiadQsyoNdCvT+SPi3spgqIcNif9kkov9k3FU6uHZB0k92+pbHdzBJxA8BEBVDJW4vCcMT9zFYeOeOwg==","signatures":[{"sig":"MEUCIHxOA8RITbRo9+3Fq+QhfErt4Cu9guRnRqJ1pV7X7b2aAiEAqw+4+Stybqjp0Qhacz2slUh64rS2WKhY8Yv+6slC6Y8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18126,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd3Uv7CRA9TVsSAnZWagAAt4EP/RT1HPBHf7D+eweLz3bP\nzfexs6zxJLVrzcCe50P/eeOYl9FLiME8a48QNW0Lo9HX1nY3HdVatw7JZvx1\nL3Na1Ci2pBa57lgCtYmOh5aAZZ4HZrQt4xq40VGgRHle8w8LVFO+RRfhRewr\npXwMB6X3GgJnDYWHSH5Nl66DlPioB6HyVDjFlqV80jjZLEAkZQMVibegTbf6\ney+gAQe9RmPegPttz/GX1Sm4bGMKJ2Oo1yYr94MKUrPpP11zeUEj4/1asUxz\nn9qZlC5zHvtnGY+jsqD51RA2g9Zxs+WgWdGMK/DASJYN09sQfoKxBKu/jePO\nw9H15Keq1ORAfVzUc9lBqJ04/RfnMq2NZmApZnzFqK6WfiXJACDr9bl/Rk/Z\n3SGdZj1kz389vaD2OS/ZT3uMPkXDtXISemeV6i6CmgKPbizQAh+RI2B6DqCN\nmdwjUWgj4J1mrZPO2Rr/KGiHSTSqgv1/daSxmWSkx1ym9QamHDuk6qCDkKDF\n2C+nTnndarVY/oDogomzfYg4TH0A3+0G4ehzxOag5UpGoLYny/MPQlhJkSV3\nhAm3kDuDPEZetUwr99p+abRZNlh7YfbO/J8iRIJZz5YURw9Dj8UozryF5zRi\n19Qyr2pEHUg/up3D43D1HurqZR3yC9rTi9iW9OzZxtkMEh5efSBHf7xoIFLL\n81gS\r\n=jlZP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","gitHead":"da2e5ca20bbb14d2b6d94bf9f781069b0c4b326f","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v11.6.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"11.6.0","dependencies":{"rxjs":"^6.5.2","deep-equal":"^1.0.1","@sanity/uuid":"0.146.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.146.0_1574783995193_0.3219959640435186","host":"s3://npm-registry-packages"}},"0.147.0-alpha.0":{"name":"@sanity/presence-store","version":"0.147.0-alpha.0","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.147.0-alpha.0","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"c68c91372da70b48f8be244da250731cfae5707f","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.147.0-alpha.0.tgz","fileCount":7,"integrity":"sha512-G+9IYRlNz/JvaLeopPa0vbTWkVdxubkNZLgiM6Q/QbOck6sAN+QuC6ouh2nL7y4NOcavoQN6HQxq+1gAIkqQ1A==","signatures":[{"sig":"MEUCIQCKa7zgDgJ4I8TkLUcAsfGdIhhVATWwwi/TeL3lJYZTaQIgHXg7fAhncgzKuV+WijhTcDH5q1oHkWfdOwau6KhM84c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18162,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd3adeCRA9TVsSAnZWagAABk4P/iDjZ/b1KvJcaP4ub7d2\n0K07M/wUbIuUy7PtOMPYN/0TtQyl2+2almUBNRt8LRByts7aVpGV2m9DZwMu\nQTjZkbJU3oMrrSZLUz1EVQLJpdaEBetLkDhcGnCWNB8v71AIFSOOG4C20Up7\nntURBa/V9xvOofzAUMzgQTPHKA6Osyx3eIhz5fkIxJYvex9so9xWy/lUF/RT\nsZ7TQO1Oxwg+kVjn42HDGrjEp81M19SAVrl7cG0xT4K98vQ3C8bx6eQyDhlY\nDPyeM6QZFfyFJPK76Ee0QjZLyNZ0BvP1eOj4dGrMjDY83nbk+J2odffvtPJ1\ndT9IyTJhphk1Rdwx70TCCsJP8N5AxiWWZqLC7ShnYClObWyaxQHvkBSgSwjL\nT/I+uyDTu6tmuVTzvGXWBP6YlKj92QtTKmdUDlM2MVNJM1LY4IerMGPjHIMU\nnme/v/ypMTB188N28yVuEjesyunSCng+xIgvTdwh3yV2YwXJu4f5zg0QQoNW\nYivXsiDdlp5k/bFFDBt8e1+hN8HzRMOxds4zN6O6nRnB9pMpYgbqLjBwcRAU\nZUa7Qf6RCaGvDZwpR0A9WtppIN7In+8RI98AbLL1Q+bJlT1UWvZcQGzcMc/U\n1yIOqT1TwZEzcC2RVI26OeA+G6ZmCrciQD/eP63XbLanG7jSrGvQEK3/jpHY\nTERd\r\n=dibG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"a66af377b2c0fafe0d5908f622e2ad723d06a1e2","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v11.6.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"11.6.0","dependencies":{"rxjs":"^6.5.2","deep-equal":"^1.0.1","@sanity/uuid":"0.147.0-alpha.0+a66af377b"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.147.0-alpha.0_1574807389924_0.715814762399767","host":"s3://npm-registry-packages"}},"0.147.0-alpha.1":{"name":"@sanity/presence-store","version":"0.147.0-alpha.1","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.147.0-alpha.1","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"63b4f6ceab4a1a8c390a38583533bf552a4268a5","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.147.0-alpha.1.tgz","fileCount":7,"integrity":"sha512-uqzm9ReyuonkSLulribHebHraQb6E29nmtoWIOhZwst6eup+kQ2CKH86gjw6pIuUZ2kowfQcY1YWKOlcb5TY2Q==","signatures":[{"sig":"MEQCIAeiQH08XRV9zAQlxiqPbnmM0DLap/RfVMl64C3iSmHcAiBUnkA+gQiYPA36JTQtOLdlg5vz/grZzGmYexYokIE6ew==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18162,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd3buOCRA9TVsSAnZWagAApsEP/RTwijpbELv+YSbDzzmq\npYkfc/GEaajKPCZ/DXOeuY5y0avOhW4f8RLrgnkSDYGwDknviB5owvIzm/A3\nhP6KO578BrekicwFDrvaMvueSnhR8AQowOsbVOio4w6fEJCuB5RWy5kJvPjK\nvE3cp2LksxJdb50kXBV2nMZyMzhj+O8Zut3haJJYAll3F5TRy+eOHsPN+ePk\nTf9TC/qTBx0MPbY0R6RmPBdcaQQgoTUv4eo2zBJXtCkVw5z2lvbA7s1nBZ6F\nD7Qosn8jJ1uH+OWQqW9+jm5oS++lsIKateNDIMKnJ66pzHkJARP+y1mHwi0S\nFNUDQzb3DKGooUpRpBAhc4Bz0Km7vkJ0eDhviun1EPxqbxTb8ZSwoTrZQaE6\nExgSsWet9CY6/HD96Q89r3+ciJ56jERDiBBX+9sHs4E7CzPvo1KU35ajifh2\nIdk7LdT2nTwee7F4t4AdRL4EXdEqIPS+puhsuVcy3SDxwj1FoRz2O2N8P51D\nMYuRX1hvD4D3IHI2QJkOd70yCHlznF/Z4aASh2PtQqxJ/R4C3BmcGyL1y50l\nR7maudtUViupxGpypiOsoPxGlElKxLJqscj728qqAwj6Q1APQfMQCZ6AqSDl\nq4nPzgat+52AHgPVMC+PmwGfoL9ES0CT2VNJYtUKXmwfuT1IIjxXrm3zxrci\nGwOR\r\n=PQgU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"cea87536cb463418aa6f0ee98d8772edf6e11cd2","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v11.6.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"11.6.0","dependencies":{"rxjs":"^6.5.2","deep-equal":"^1.0.1","@sanity/uuid":"0.147.0-alpha.1+cea87536c"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.147.0-alpha.1_1574812558064_0.6244594836201922","host":"s3://npm-registry-packages"}},"0.147.0-alpha.2":{"name":"@sanity/presence-store","version":"0.147.0-alpha.2","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.147.0-alpha.2","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"5e5be0a0bef973a92fea1cbef5304b65e20607b0","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.147.0-alpha.2.tgz","fileCount":7,"integrity":"sha512-rKARJ5h7YM8lmSZH6IoI2DCcagFIVORJMZFaWNsk8zce2uMUDaBuo0pQlNz8TxRicgnxmViU7vMEkm6L1iEPFA==","signatures":[{"sig":"MEQCIBCIEuJYO+WzdYjP9mxEyboqAbQgUrCN0ZbXI6IcpfZhAiAPNf1AViq1EAs97dxbo8oJBIhPr5lqnH6HcWIPsENIAQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18162,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd3cHUCRA9TVsSAnZWagAApR8QAJvZor1TZPup5S0o4WiE\nZSsnYl/qBH6uye27FTdBqFHvSBaGKs0l1Z54gSLws3/DpgtQgHgple1K6oI9\nTMSvpmthzreJJyr/q1gkVgiYRchEHP+oF3Z/Yek/Hq1Nld5RrSMTIT/bSS8e\nIsThI+Dwoys6yKUTN5fPiO8yy1wzb1ZJtKbhZKR1bvdNrtZ1NAbrdksS0vBx\nqgN2lbfjXzE2PxNrEMnYzPrKe/GCuvmebl+bDz+Mp4RMDFJCa6a1TiUgDVhx\nqalt0JrRVxKcyxekgpyZ3eFZ2vYOGIsCu21OwC9kUgP/qEH2r6ANcGq3flhh\nP/oeaIasV14WDAxJiZ5NAgdgzlxKiMx+vnSov8yelq4X3JEViHpdXiBZX/cd\noeHV8k4u6AclIQ1LBuCmmhSgj2NEPMRP0P9TDdqt4cdHiXP6hSoU5V0lK0u1\n22OcAu0F0jvPas29ZNnCYgPm8xDYm1Dhjqr1ik02fnP9ttxhl7qTLQYlVs3c\nM/lM+3nF2Qk27m3XAaEkxUxmLBttOeRSPWw6gvbXk0EzjN9RpeqAOLYyDlRU\nMyCNv58GP9T0CsWtciouzwrlYX3wdSytbtIQdDuwakGXSP46LLqsuKRsKqtB\n5gPd+4Vp3yFH6rIqbuFEn6l4JK6aCDncXy/p4notXpL+uMcoA0u+IgRlsZ7b\nfLe1\r\n=Zv12\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"2aac8d46598566705cc681ec0a03ac617ab67f9e","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v11.6.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"11.6.0","dependencies":{"rxjs":"^6.5.2","deep-equal":"^1.0.1","@sanity/uuid":"0.147.0-alpha.2+2aac8d465"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.147.0-alpha.2_1574814164010_0.6268192760166811","host":"s3://npm-registry-packages"}},"0.147.0-block-tools-white-space-fix.2":{"name":"@sanity/presence-store","version":"0.147.0-block-tools-white-space-fix.2","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.147.0-block-tools-white-space-fix.2","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"36ce3e8547b4024dc663d5e9a7ab60a383871a36","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.147.0-block-tools-white-space-fix.2.tgz","fileCount":7,"integrity":"sha512-OAg0Z91548voWnCjKcOOMGKclB/YXXlelPsxiTvGkOB840Yc0A/I1fl3XRyXOufDyT+eck8kClVNK3lTjtwcKw==","signatures":[{"sig":"MEYCIQDhd1iDEeZntC5opvKNW8RTAAZYboxbICSViBcPPsq/tAIhANeW7sk+eyUlyCu+cjAuEZB6iPzljQjWOyNSPtj/k77+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18206,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd3rH/CRA9TVsSAnZWagAApFYP/jfToxS+EJNIMLcPa0cN\nu1kQ8Tpr1jzPYvP/2e8UL1GHNVYdyrqc+77E6fR9AuGtnIIpdmt/irQ9q+Kt\n1/fElzekPogX6AjWttLJkywDm5brqi94CI6w93tpoOl0Xxfq8K6oWUdAaWd0\n6f65yCcQGdT89LPq+yTZujl1xPqkSQvWZF/MdmuJbPxIXJZo35YHIDoYy5IJ\n6DksXQT8Bjt/OnjFh9Q+cG8UD3AiKyYYowUH6fzB11jQl5LL3YTQhLKn+aRH\njPfTPA+5HTNUMW1YquWIt7cXNhQhaSmbdELkQ1PqO3BmOxBcXcMosKZMK2Pe\nl7EaJAZ4U7UXj4sYJ//urh1kVcA/7EGFgMZQNuuB0eu8wJEkqG2xiZlyvtAq\neJri3WXPYeHsY+/yoEw7h+aizq+0XW213XxMdbfmtG1txm+nMC/Wh0xr3YvI\ns8j+pB5dnEAOGqIaX5l2u9QLpA/i3wxR7556mTzM1bZHtBaa67z9MJMjbW1B\n1hBMw93o5e6pWGdS/NXdnkpiFQn8xwFxOgL2/Q6Jmg7rF9WsktbYAulrAprA\nLunkgSiY16goL0LEsWCYQCzta2daHCBaBLxJtjX3FQk+eRmCEOs/mgxI52hI\nb6TGF0dnY39i0YmvZLZkah2VDRJTLM1pDIuIj/vPhMrE8z20ELFQVgxSvMsm\n/TyT\r\n=nLOS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"bca43188a0baefe07d5ab0a7ef73be89dbaabef1","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v11.6.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"11.6.0","dependencies":{"rxjs":"^6.5.2","deep-equal":"^1.0.1","@sanity/uuid":"0.147.0-block-tools-white-space-fix.2+bca43188a"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.6.2"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.147.0-block-tools-white-space-fix.2_1574875646100_0.03880568464287992","host":"s3://npm-registry-packages"}},"0.146.4-hints-mode.156":{"name":"@sanity/presence-store","version":"0.146.4-hints-mode.156","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.146.4-hints-mode.156","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"8268353ac3d5164c9068adea28a1a5da36c3fe6c","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.146.4-hints-mode.156.tgz","fileCount":7,"integrity":"sha512-DzkuNqcxKIDSLyxjPuhnbsC938jdRyP8UWG6e0Y3aBF7Nh5XUs85vnAYiLC2C31kvh3EbL4OsyaSB91gmQlHdA==","signatures":[{"sig":"MEUCIB4gp4OdJEzwsw6gLla1YrC4eeowQyuLtk8ssKGmhw9XAiEA0al61eJbY4xe2MrHvGav8yKavoryrrVlXDfvo/Geijs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18192,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd7luDCRA9TVsSAnZWagAA2BsP/iC20aKM5qEaPbw0O8sq\nwT5eYcuAiYSTToqk1QixUSDgwVzR+T0JY7UJHdOhZVpmH0m6Mj2ZiMt1+SHj\nvlyDNQ9m59ue4irr7xbeYIRNXssatFKVAf4m6MYCVcdYRWnmZ+Ta230EJwXT\nbb85V5L5QVu0cqG8CC4KVyBAYWDZdfK51g1qZB/Po4E67CfYGT0k3CzHX2Rd\nSbrx9zYQSM3tOoFQqgb29/uaiZ2DTLa+EPhk7MmPBhNxVO91Oo7D/DisMfih\n1nqV4BU8UgDrMpjr4M9KafUqnWH9HV48WtuWdyCzv+Q8AoUjjPFTGPYzKJce\nrwpARYdxTpFHSQDQ5UMnm6Kfc+LZIBn4U74ceg7wzq3nan4+GQKAIWrBBalr\nmiDi3lp0jvwIY5pZNvg4Wgd8GmrMWEAptdTinSvwY/hBLynCJZCNB4Jj/L2T\niGSElkl/4ePjs46LMjdu91DaGN8Bw/NRnuYGFwEb2FRmumscbHSGPghNz4RG\nvZEV4FRLBW+wSZq2Ix3CfAsL0dWznwObUhvC0shT/4aWtLmJ64608Qe/e0JL\nEpH49WtToA98CNhtyKldE7yPQTofrFoVRNkWKyNRmfgbD/z+O1cY4niCtbMK\nzs63YmhROApAuCPGuiyNwwMAnOuyOAewsOT2zUaEZA2Ct4YIApgXKtq/t14O\nvnnA\r\n=E1Z8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"7f661b7310c52a48af0a6e2f9ef195fa9b8fc43d","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"thomax","email":"thomas@sanity.io"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.19.0/node@v12.13.1+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.13.1","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"0.146.4-hints-mode.156+7f661b731"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.146.4-hints-mode.156_1575902083247_0.5283568997509613","host":"s3://npm-registry-packages"}},"0.147.0-handle-access-control-errors.38":{"name":"@sanity/presence-store","version":"0.147.0-handle-access-control-errors.38","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.147.0-handle-access-control-errors.38","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"f76bec249bfd8e104988c0cc2993d2be282715d8","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.147.0-handle-access-control-errors.38.tgz","fileCount":7,"integrity":"sha512-XPQi7sf0IU+zecvqCGexF8VDlYHWL7kR3PK6xwuwjcfshsSOLkBl9UiMDwstpUJ7BiwnOMKaUKEu5sTCVHF3JA==","signatures":[{"sig":"MEQCICwck3tf52zSXXvsIASq0zl/EQYceml8LGD2WZwNlxjWAiB5mgtNKFAh93eR+SBy02KZvqqIeAEVIPgK4Vae/UOz7w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18226,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd7oqOCRA9TVsSAnZWagAAnQ0QAIW4/WQadDxwkWHY6SyN\nbYA/w+Ki58UAPHwWdnyRbbPhsJadwCqgwTniQ2+a3NZmZeRU6/PdEsIUlo07\nvKFp/yh/SepbiHYafK7uBrBSySnp92nafYPFMngAuOammGLqruSj3jTD9M8I\nK8y0lFBNLS8Cepj+fv2stnk3KJPBKv1Ci+licVSm7OgYZgOGudBZhpUhBumf\nFWyYEL+WmwhPQx8dcfww252p7BuBhQm5v9acvSuMk+AuMRsWhguZajIi1XqO\n0PsQH780Zj20POZYxT4ffOVG5aWVp5dZIqnOTX0N5AhS84yjiBi9U0hzb5qD\nPz0nx9WvnU6nYQgtGWmFlU3uP3duwUX0S1CqBTn55mEwjQjSDV30AV/UF3Zt\nG2m+hbg6Gk8SC61zGYHBDF9XO2b4L+7pYvQLcJgk52/cRmV67Knk/zsbCpAf\nYHgnvtQVy5Qsi5HPjrFNBi+JXwWRu1RcsZV9RHKkzyDvQy8NdPAu3I76XT7P\nqyuff7bHXJCGqPk9Z8CAAPfWE9c5/XeuIyCZSWO0iAZr6oQmeIaZ+8FmjpO1\nUi7spCou9IRyrJ8o6yxE/H1d0sXmiT9rDSL+gR3Sx+gMv6hI+2zvfoldpc5D\nQv3hMnT0o69rh0VzwOGGzkbWPITE4HlVjnIFDsrOyqdUJUSJxwDmbhIJ2N+w\nfqw4\r\n=TxM3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"0d6b33c6c3b15c5d69e4e9cc32ad842c0809d9e3","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v11.6.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"11.6.0","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"0.147.0-handle-access-control-errors.38+0d6b33c6c"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.147.0-handle-access-control-errors.38_1575914126110_0.7052839076300752","host":"s3://npm-registry-packages"}},"0.147.0":{"name":"@sanity/presence-store","version":"0.147.0","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.147.0","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"af5473e96cd922d816f600e36e6be329390c7b43","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.147.0.tgz","fileCount":7,"integrity":"sha512-Ve/bsbNRzC30lfSO6eSfN9b3I2eBpaE89mbkTmwGKEEiPKUfgvHzwnbNPLQQ0yWAENeEDQdOjgPDuJQ1aUnH5A==","signatures":[{"sig":"MEUCIQC4PPtPTdrL1GgRjEc0sxaXnfudCHgUzLjvP6qqmcT1+AIgGEcTrY3wHFL0GIrEJpeiekwJ83S3J65YE+laTt/a9go=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18142,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd7owNCRA9TVsSAnZWagAAD1YP/1SyTaXaHZ4mX6Mi18LA\n86lgvwkIoSKz4oxHgY3IO25SiNoKmT2PB9l/GqlhNGF6G5JqNyVHR49BkIWx\nXczcPtELmLdiUfQv4ZawXemk5yM6VyAtDkNywd5Kscx2oLFVnE31KX5QfSoH\nc86odD3a7J+5MS9WeijbmBq4QTCl20ujr27ZeZNFAzlT7FYh9bfg+WkqBAXe\n+tvqZvTer2Iay8BTlVga7iHfXRlhdSFRYl8hUn+krhizEuTM5L3pfPwg637b\npGn5WL+/AHaj1cly2kISv+10ytKZO2tFJDMMs1GmKmicGN/8tWvRHf7+iFU9\np1PvByUPuvFxah27YdwQqiYY98fajSsKqgDBiXG+dpwEJVGOvPEdbGdzSQ2d\nK//CbQ0bCsTDkMmKc5IfUaHqlXZBPb+ZBXhzYxsrl5zryvMkSY6JCsxDKMOU\nBIyIBHG0IngTsjqnqVhaacrFySWeKCQw8wJkorBk0b8eGj+Vl5bJxhYMJWA6\nVfE7mc3OZMNVZx44acqkc4/66Bntc4tVvntalDk0hHBQoSpwr6QdyU6O56H0\n47wIwBvXp4cqMjJwH8Pt2osKJDoB/FOA3ap7HVtUAwL1mZenCXI1lk+wF4P3\nXgybmOKh8fF/xAqk8KrZZKAe+ohYLCkn6353q0f4LYbEKkl/T+FCP0fxWKIL\nMrg0\r\n=A+uk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","gitHead":"43eae31e487a60b7e1b3b9c324dde4f6610867bf","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v10.15.3+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.15.3","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"0.147.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.147.0_1575914509370_0.3280394302566343","host":"s3://npm-registry-packages"}},"0.147.7-document-actions.50":{"name":"@sanity/presence-store","version":"0.147.7-document-actions.50","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.147.7-document-actions.50","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"99f448a0565a2749ad0e3a8b49762fa924ba54db","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.147.7-document-actions.50.tgz","fileCount":7,"integrity":"sha512-DWCY4pfzaJiDN2ttXahA2k15cXg1IN7tcXrBGn1WM1iiGfR7M40gnTSJi5DnPZK7JD2lwZdARafEGtCdnBd2Mw==","signatures":[{"sig":"MEYCIQD0NBoG8tayLNyBfbrUPllRwodZSC2MWXIU3wwNzfmJbAIhAJGNcEeFE8xDjT5SKNIxys/ECKojMr9CDOLVgaylsKoT","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18202,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd/KA0CRA9TVsSAnZWagAAU10P/jrCsRlDFnDSuwP+xY7r\n+ujG2avuOxmH7xzsdxl1qNiP3O8XDDFIq9gcrtcTzL5uiBRyGye7XwMt4AF3\nN7grCHFkzt7hIJRODl0eHNXDFI+BJ5C1Twk8wmF0XNOqPzZrPRgmc6qACPCk\nDx+yO5wy2u/c5myl9ewU5IaL/rd/kkRQvirim93Cm5f3FUHvB4SgLG3DqVma\nyK4ISWqKShy05FKdfoySStfw8yLUSJMPIKAahZUhHE3unmn2b33EaL3KUXY+\nJ/SEkmXvuHjaZShq6iMz/sze8BU1KhgqcHdFe+gz4z5tsSF/VTwl0+cQPECU\n9dhVxLS0xJObWHfPkFZBZRnYqWr6gUClaXDXgN8epothqXLPBHCUItcEP325\nF+w80Zg30mp+bkjuF5Zcsm0eCT1ZEHk1pwLlMGsWKT00Fk9aLcn0Nw2U2tSN\n+6kZi0U2Ncfia5NF2t9dkUsjYVwq+lQted1BeFQP7LLCwmF19HikpcSJR/MX\njyqwrKNAqPYu3oF0LxxtRv1Z54UPKU3nSVpuX2ICwfEO+O4fPqdHZw1YNC/y\nqnaVFprEkQFnKCkOGTEhKaWkL50cy/k3MbdX/uq61dXCUE4JP3JyHqn4tt+e\npxeSC3CV67XVJs5bSsuFJXAzqCVkOW45p3PLFTRE1YfB6RNvf6uacl+LU3oh\nkXY9\r\n=1GzB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"1f8a76dec68cca6d632788dc33bb5de0aef7de21","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v12.13.1+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.13.1","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"0.147.7-document-actions.50+1f8a76dec"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.147.7-document-actions.50_1576837172076_0.8062066977881712","host":"s3://npm-registry-packages"}},"0.147.7-document-actions.51":{"name":"@sanity/presence-store","version":"0.147.7-document-actions.51","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.147.7-document-actions.51","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"7cbab057a6bc97031038868c95589a73aea70ac7","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.147.7-document-actions.51.tgz","fileCount":7,"integrity":"sha512-1PQRGIPOmxOQO+xkMwF1/Nl326G21aypxuBlCfdGwVDyeWseA6pQHS5if2djeEZW+T4OAUNzuVN1G1Z/7VeoiA==","signatures":[{"sig":"MEQCIAqtYlXRpfotikEXTZp8nV/DmZEhpNm4mCNnXe/5530cAiAbG7coOtagUpQWPA3l85pZRnOQnSi+PqYGUpjvJFdN2A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18202,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd/KF/CRA9TVsSAnZWagAAM5cP/iLege3iFw8EYGdCYyYp\nHvPRREwEUaK9Al5agr11x/IXNYmW+GAwfX4ZiVJeMxVKRwLq8f48tmLMZqAb\nzdNxY+zTyIt53GdtkCPN3m3XA0uJqAIYW0EHcCM5tKQ8jAFg1UwYWbF2ybyy\nhBeVnbXuXHtxGXbMzvC1HBANob0o5YAf9ixlehhBibEca63uMBUnsk2F298D\nhBLcyYdM1I3dKj1VNyZwHRRXX2HMHzxRTZjfw71icmmdzBGJk0nSNBSwGEC7\nKUvzIVL43iqTn6XpJgqF/UCeBgaoJvpHhHqwEZDikJpMU6PjCGfa6GoiZZJo\ntIftpcnabYtVDtqhV7FqtPu+I5ZRikxxJGuHThhIdq9MrNBaU55HKAQ485Iz\nuzhlNISQbmmiFaE0x6qM98IfGbj4zNFA+2s51MeV82Kai7vwGKuWDsZx8QGy\noFi10/WtIcs0jxclWPrWsGuNyyjp1FuIOGz3POjn5JJjF2fQn9ytjxcs7Z5A\nswLkIQLHN0vVlW2ehdQ6MIGj8k8/hwcUOFMAZOIzDRmcgbF31CiIWUR2lX0j\n+Xff3TQfohQygkfB92rZ3EZj/hkDifC+PVZyQNb6Rw6mNjO/RE9ATsg4fPrT\noQ4ZjeRRe3xRo3qf5BG6d4yFi2X8fFBAkXk51AVvDXBd4ebHJSxBStRMcB5U\nKpIg\r\n=k3zQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"5c8a4da0fda6bf0eb2f0360eda3086b6bda8e3f2","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v12.13.1+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.13.1","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"0.147.7-document-actions.51+5c8a4da0f"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.147.7-document-actions.51_1576837503566_0.6265579511229775","host":"s3://npm-registry-packages"}},"0.147.7-document-actions.52":{"name":"@sanity/presence-store","version":"0.147.7-document-actions.52","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.147.7-document-actions.52","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"e952d0b60bc406bbd7032d92434833dff7dab674","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.147.7-document-actions.52.tgz","fileCount":7,"integrity":"sha512-fAahncpB5d3YLAABMaiiUjKoAY7XteRSut4gNsHNJEfZB4hT5EVtBFADA1HGtVLSys/XGJuL/VnHbLnGL5Oa+Q==","signatures":[{"sig":"MEQCIGsVV4h7Mc4LU8qA5xJyb6XrRIXky1ZkQoyBeuMrrMFQAiAp239pakR3KeaeC/RUjnJsnO+Iy+IqHH6LmtIJ+glJfg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18202,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd/KL+CRA9TVsSAnZWagAA0NQP/2bKi+SfjuVJg7VieN9s\nwPK6HaXIltYIvcZrGR38B6Mcc4nbPitfBA35/0936Qpu9ibG0CAf6kxehDgu\ndF0w8OyZUonAn6J/gGDy+RNBtY3XVdIHqSDTZHZqrdAlZwgTYty5CGMrtYWM\nopPZuz+OSD1B6g/8ppeo/gN4RGSxFeTA+eJqCFqMQ1P2uKqdlXb2AR/xTjUj\nKgmEB9abPqYoDdZ4q1DKbEfwJoOLcCfx/1SbfqVoGc69/NhF+qJVYIlJZ+Rs\nFaX5bDa5d9RqcAcVixfBtLtnd3K2HBfRhPPZl6ryzNn+Hv6nBSdq8aN4H0Cb\naBCUANb2YEg36EcXXvjKb9Kpq9WWsmed1B9iBOme10Rd+uFPicqkxJpLyGIu\nmsgkDcweW/YZLuWU5XMBGXcdONo2mUALVfPUKl6fHnsZ9FIhwNq1r1IranuE\nkD9UoEDRCEYMHfNSNZLiXyNUGiqUcbCayH/6mbfENqgHSpQrX6Y8HpUahHqh\nkNyc/5kzpbnJj6fc1iQbss+EsI2rEO66XMwdhZBWuG1dUHDYx63BLQWq6ysp\nS7P8CnJvKH4rkNThjRpIahFpTDYb2rARkRfq3dm6jk8Yvl8sfepatfQO3zhQ\nFHoLedwU7SZseULmcjGNjJin47DKLJM9XZxOMMR5o04soKnQAzbI22Q4KHbO\neL6h\r\n=Hu75\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"1cf7cfd1c2c774c56b8afc87b4ca46ea7c6ed322","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v12.13.1+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.13.1","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"0.147.7-document-actions.52+1cf7cfd1c"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.147.7-document-actions.52_1576837885754_0.5164934364829874","host":"s3://npm-registry-packages"}},"0.147.7-document-actions.59":{"name":"@sanity/presence-store","version":"0.147.7-document-actions.59","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.147.7-document-actions.59","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"8859452268240367e6293aaeccea28e9ed508ea8","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.147.7-document-actions.59.tgz","fileCount":7,"integrity":"sha512-s4BlWBaqdq04BmcQuum+HxE/CfaMc7JwZBoKQ+WKpmjoDUqOa9hzboZJtYGLREni0z+Y4ygwEiXqhFVj+jofsA==","signatures":[{"sig":"MEUCIFNZEuHCO6Wjio1U+BhKPLnGJDDd8qAmnNvaH49NTa19AiEAhRn2RIvd3pNNtmWozpia9Abp2/U73yMw5PytUufk4PU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18202,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd/MstCRA9TVsSAnZWagAAY9EQAI7/gy/8Mp7s96Idz8T+\n5fz0nSXjsHXEpXcDzwzLvKypNyxpwdcAJPy9bk302m6/oqitmdXpAk1NtgIl\n0KyxEDIZQUr/E0qTk31N64+T+ZjJKMbYCqMbccTLBbsenqtYKCcLK2cQg8wb\ncn1jycdFZe9nXcUU9b8+uTaZuomYIc0D34Ch1NdrQ6pj/ZfkiGZpkKOt5Gnd\neJslx9Pwg5Gs8pmtdV4CBicRyFQYLh45UHwiS/oo/N9DF/xZGUxJXfAxAbR2\naP+kldQX6TM+qx2HbYKxXSP7XipRu59G9Xde5CNrVdv/3XuIN95s04H1Peu1\ntGiSTUHsJn4CZUhfdinmc+4zfJI5DUZxOZ05+9RQ8rzNQW5JyFe2V003YctY\nhOE6dUL7hfGPIGXA2XcD56dD3VdKp2pdiPoPcIbkqunbZfMd4LxIf8uzqGXG\nlfmUuFFkt/v4Gb5FEKVrC+3b2UIsuiGvk+vf/6zhNPft1VgPyJnHpW9IBAAf\nQIMNx436VdpHZFYNNevG2GOZbAjjBESV/v/5uWz7FwYI0yetPdxEaPp5oids\njf3kJidZ3d3wITUq6/W0Ed8NRez1xM5Mw650DVlrmp2SmyTGAy3GKQH6Ypt8\n+MnlOK9DtqWAsb+V71O27t2TC6pP/O5JYtr7EWKcWNx1ttjTfiUxSisl4YKR\n8o5p\r\n=StBg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"b03d1a6647d4d8974b71501b07952b3c032aa8df","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v12.13.1+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.13.1","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"0.147.7-document-actions.59+b03d1a664"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.147.7-document-actions.59_1576848173132_0.7240652001344308","host":"s3://npm-registry-packages"}},"0.147.8-document-actions.59":{"name":"@sanity/presence-store","version":"0.147.8-document-actions.59","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.147.8-document-actions.59","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"5cf4d649f3a0c5fa3e8e7c12f34fd923bc1fe300","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.147.8-document-actions.59.tgz","fileCount":7,"integrity":"sha512-4iXsyqGyqXPuddBv5v//gLoF/BQye4K0kMgPDkNPT3cv2QUw5gUAakCKqvofbyasAGnGAz0UCvCvQ+g4sw0vqA==","signatures":[{"sig":"MEYCIQCP2DxsM7VA+Bi0YJE4YWiD2fy/ymkGVAO14jiMcfaqWgIhAIwYXr68XSxmh9QUtLpS6Xr94ek/p4kRx9CYI3/AhQGJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18202,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd/My8CRA9TVsSAnZWagAAuJ0P/24rVQazKyJz6CtZ9LPE\nz2wvqocxFba8NXosBkU8Uay2B8qr9NVwJDXJfi2oyAwxnuQOrwI7C/Y1bhY4\nJPzwAVuGFIJf4uy5A9pZZhNCD8P1Wp5iHzCU66rXMVx4fOb7tiO3EIRrSsuW\n4fo9Vkp+89MFdA8ioSXfG9VIqprlupPySjcdXyLq+pSEazqWcpbyMKJY7RU0\ncJdw9YL4wFqyvDIPthpEezSAMehreGUVAER7CBPUtxVnHERxhLWkjnacMGNE\nhygeWblhbc7B9Sy1+auira7YcdgFEbmigcqGU9oAS3n+iezGhJ5IqOkk2OVE\nYNrP5ZnRffVPdmPU9oFUItZb4ayWmypJMPZRtCb5Rstv5dWV3WJLJEI/LiJf\nw5U7OedJXqs7IxwUJUep1cAiE/K6j3cRtJv5j0lC3CQqgmvSytcusjZemyRx\nUkDq6dbLWjTfkd04yDqW9mXtYQ/41YhZd2dGOjAc1fyLlODflT+NDy3T/Csc\nY0HkRQL51oB2kYgmxIYHYZStFFkbedtoqKGYxlXwJbEvf+JTlO0ZFtwCNhV7\nQPCq7GRL1R/oJp3rgTddqPZUYWH8UC8WO3BuqujnzlHMF9AvK7X73RMvP9Uq\noveFwKSN8HCtFKnX3EIriy7RYf5xfdV0J+8PP9e8rOeo5hvdxoc+groK3+8n\nldQ6\r\n=s7NR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"415299f785b87096cdfe8b0c8219fbd10a22bba8","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v12.13.1+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.13.1","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"0.147.8-document-actions.59+415299f78"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.147.8-document-actions.59_1576848572384_0.12569522837342495","host":"s3://npm-registry-packages"}},"0.147.8-document-actions.86":{"name":"@sanity/presence-store","version":"0.147.8-document-actions.86","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.147.8-document-actions.86","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"7be6c6766e0a4229da8cc196fe517526ff1219ac","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.147.8-document-actions.86.tgz","fileCount":7,"integrity":"sha512-4qko86guSixrWs2YiCmtYU/T1rrDP8S2arE7drc5XtY3CLsud4DSX8TSR5j3VIzjdChp5jrzQ4IyQlRe6gsD9w==","signatures":[{"sig":"MEUCIDiFy1kjkyV+45jERP9hUzuu09HHVkVHxFvM5LEdW+K0AiEA6L/06gglCBO+FN5wJIftPQt8UJt+n57ZupHvleiDW9Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18202,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeHYf6CRA9TVsSAnZWagAALToP/iWQL5sAbA1m6hs0zbsb\nqMsEmzJQ/v18MpCoque9B25b6ZdLIpZFpycm/PjSpdv0ONeXqqXV0D412kfl\nigw2qzewwVrK7WDmM83yIzB4isxHOg5zhb4k2vmkrfKKtlYj4te4OjjaGScs\nUCdBjP8WMvHc/NpuFjHxw3GdTRI6j5zUok5mQ1o+HU942/f/q4U60hs+4EWb\nrXAKCkVbFnJUrmCU7b7gRQRY/TrO5JhyqjYL10AEfMgvcx9d/O7j445J/Kc2\nZ32dUBFI11V6txTamqN+wplFgno1HO7poI5ELF27Xp1ngyTJF6AVxt5S/1Kn\nPjwDkNYx2oBYpApcEd9WcAJ/h3mGiEcGp7og+YjKNC4cpfKt2uBeSc8jtEoX\nPLtdfAxGs6Ks+C4j7q5Kcx6JGNOfQCmo9/APqVah5ej83uV1kwK+7mzlaaaB\nBrmhYWYhn14GKhqRfGgpfG8c1khyjP1O+9zEtscXcZK6bj/Xc8Sle2rsIVH6\nEYI4VP775UV1eR4PmzHu4VTLLfRafGqLn2kAFTUqVqUyeGiAYoqw2tWXQuL9\nyqQkWEfKj8JaUwufa66Z6oWQsGawKAfVxueOcATjqL+JN7FabXHdjOA+bLgs\nJUEUC0CtFOubn2WcexskGGyPBah50zNX+4IDkX08kjsx0KLkA6W5UgmEx4oq\noBqh\r\n=DVmc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"49b2e2a5d18c65ef15e1fb5703fd4c908518a6b6","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v12.13.1+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.13.1","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"0.147.8-document-actions.86+49b2e2a5d"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.147.8-document-actions.86_1578993657866_0.5144094359655877","host":"s3://npm-registry-packages"}},"0.147.8-canary.18":{"name":"@sanity/presence-store","version":"0.147.8-canary.18","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.147.8-canary.18","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"6ddc94889918ce9a691cd3d174b073e4d46ff50e","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.147.8-canary.18.tgz","fileCount":7,"integrity":"sha512-ocg6LFc6XSEfc8eqBCnWIKkmNiwcxONG4C8+xDLrCBTZyffAo5r+rx7Lsnkp3hQ8fJicWcsMH71ELrA+TdCh4g==","signatures":[{"sig":"MEUCIQCmlCbbVyvJZ5nxxC1Z7rO0V0wwzdUCwhbOzy9EJxpWMQIgQoRwwjIlweM7VrthG7u6/Lf+E9G3IU/t4rH7sJaMvmA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18182,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeHhdNCRA9TVsSAnZWagAAF+sQAIqesJrJQkEdFyRd45Tj\nysaIfzcWmXqDmPmpTXmfqHaSbDNXSUCdvwCcu95t0tWtj78YmYPhVbReWIgd\nNkshrcDMMT+cq7/glUwMqcPQ+YNlwGNPdLP2sb8rjhOzrIoVO8BP8p6IWqy9\n0weFD+PX1MQjknI2wcB1GuZew/qdrwf0ul5rwZ4IMjfncuhvKLvx5+ue1d7q\nHdzuoLi+1Y5Z5sBjmDdw5M/itFAnnB31WOdkw5H2MkWs/8PVLIzrNm9pKkj6\nDq8+StPWiE2el56tSHJFoG3Dz8JF2Op7QysqVsQc34hFbegE7+exyxDsuaGr\nwZYne0TilUjZSkxOWhlMi6164bAhCrwWvu4zUSIR9ZU7FZ4/0fAcb8bYG9fZ\nVfeuadbMEG+BvqQdyiBXZ1votGSPKba6UJJwWdlIsYFwh6U2P/feeL+WgZeS\n2I1jyy6J6GMbCLsIycPXrRIc6620qN5peJxo3kmsR7kJJ9X8m1lw1uOGIxih\nQkgL5CcD/7EQFFmf69brzz36Xl6ODvVIZuJ8DvS9+NZ+EV+VJpZOXRsf6xkH\nA2dFaOdoIEr3Ygvq32OWM/+bmP2UNNKbJWAVt9L/grkcSU0Fd1I5xDlE5rVz\n0acDyPgPb0M474Vfjv/WDE9iCVRwA/rNPOzySm9fyXb5OUXWYt8WvLZW96wq\nRPcF\r\n=xuYx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"4ca842597ae516e6888484db13acb29ba1fafc33","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"jemmima","email":"jemmimaknight@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.20.2/node@v12.14.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.14.0","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"0.147.8-canary.18+4ca842597"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.147.8-canary.18_1579030349325_0.9590358571516995","host":"s3://npm-registry-packages"}},"0.147.10-document-actions.84":{"name":"@sanity/presence-store","version":"0.147.10-document-actions.84","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.147.10-document-actions.84","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"0deefa3bab1cce4e414dccc33ed57f90963f7e61","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.147.10-document-actions.84.tgz","fileCount":7,"integrity":"sha512-CGp701D3VVH3YMijC2Vs3TEqNllsjtJJd2lbNVXxSZh2PkR9mw1flvTBRHBXb8aUo5m9qR8ttbuD6MPQBb+nkA==","signatures":[{"sig":"MEUCIQC88mhTJ/pExJBbvj5kU1oLFbJAQjD2FM9KTpORunKMwwIgQYL+F547FAQlYuguw5zZP7/g97fOgNidO9xdALwDZMw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18204,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeHypiCRA9TVsSAnZWagAAVOEP+QE8EN3i46Ata4GIS83Z\nM9sT45451YXvdk4qIJFQ/EhpYh2cCPJOID4f7GExI22fKWqqtewBFr9Cwj4p\n1BHWJ03GJOiNhHxbVLIhC53hzD48sJZYNY5YX5MEq4LRGc/pC2Bj5ElEfahl\nxhKKfSKMmcS1SWYfn6fQbm2P7pO0+gOo5rkJMuxfwUOeMm+5bV1+EIDaamCC\n/Vr24HpQDA7GkFQknlcFvvbJvedN374rw37QqIIicZBQm5VZ1en1D571Jnx0\nBpHOZjOP/IPueeHvXgrRCYtALMSpNZNv23Dw/FHAP78bgPDOIW2e2je5YrRI\nShAo+innSlsbVJDxVtcOGtZE2neh/295+8+uvpy5l1sYeLPwVvUFxmRGTzm9\nxf/T8S1mZkrJKRk6gEn8V6Qc3ek4BO9Os+Gm1YutlsBs83jfZh417JtdJfdQ\nRhUWNufarcUZW5cdcx5MVGcfuRhRRsUT4OwA9eV2c+zDk+2qsax0StsKvQPD\n+FGM/TdliXxCybVf82LI8aBlO70e1QDtTh0rHykj/kYiIJRQqql8s7SqKdOy\nnlNtALxaWP5nVlJc542wMLZmJvQ4XP/V4OUE2vtxKzOrzbbXPnzv0R5TEvvK\no1mZF8SI8SqDMe22HFR7a1KBsv5FsExfSxD3YCcFE3tsj5G1+PuU9UpLfRSu\n/SlD\r\n=s2mz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"9f45f60db32cb66dbb88d6a92d9fbc56e7415715","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v12.13.1+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.13.1","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"0.147.10-document-actions.84+9f45f60db"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.147.10-document-actions.84_1579100770418_0.629113423450778","host":"s3://npm-registry-packages"}},"0.147.10-ts-client.1":{"name":"@sanity/presence-store","version":"0.147.10-ts-client.1","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.147.10-ts-client.1","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"d22e6f37efcb80ce718bdee5eb46dc3163d41caf","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.147.10-ts-client.1.tgz","fileCount":7,"integrity":"sha512-9v5d5rnFL4jyzOoRdLO8w9UHT6X+Q/QPbej4AAo61fDywlJ+SirNrsPlzBQF5JY8zy0vpoAKH0rqE81TIKQRJg==","signatures":[{"sig":"MEQCIEVJjwGbukRn1jkmzwR/G4l6cfm8x6GZxLzDU8chyz1xAiBkHqZE3SdivuO7NvXdgY3TgerGtRbJIKzblNIucBD6mg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18188,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeH479CRA9TVsSAnZWagAAQzQP/Rm0RxG5RWf7QrYqyRt0\nGDJaptYdh8MRtAlEQJx5qrDZ8EWY53xjDc3rxkVAe9akfXRXg4WRxm8cvd9L\nQ/tzfNb7iWJRV6+iiCGVLl151Xs+4a560pKeZYIBMsJeNQNhS0Z7z/DUZyP2\nedmpDNMzxMxVmT8B5Pkxlb4c3phndviz2BtZd+UCftj9qR+4cGPvi4KMburS\nu2qta2bh4GMZBryomOiAR7XPYklgTixjIWUmj0Ih68NG269pHoEGM8KSk6xl\noZsMZj+Ji+opQY9uLeljPaQNHaqb1hQmhWgMylsF+BYn+oPtg+aYYMfi5i65\naBxgBDA8n2l8/9oMGxha0wj0BENqrSAuZ9yZw+nHxjq3tUx/MmUGi+Za5RLu\nbGh9NWNnISSa5Ey1h9kL4Uw/j0xr+0Fi9NEo1GYQh/AtQeqDwPeK5ZXBaZc1\nPbPzgC9z7pFOwlAoxCRnPeaWLg4B5bBreNexpoRz/4pO9q6lwYS4DCUZ6bdu\nOqn+RkK2NjCDqtgaErqDJ/MM/D9Eh4KM5NHXuaeRKzg416jNDFdkk/A1lvmk\n4HjWF1NYJZJ8AtuR6ZlLPk47IXyTSjaukq3q7TYQpnUYokIh5XIjdtP6hO/4\n95BjEhFEf9QA4uyS1+2TbQvbYa6Ly1f93MAPxCSa5aXbSor0O/KTeyDPycvf\n+h1X\r\n=Ya/l\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"5473a24ff3431de02eed65e8b70e3487fb03e2da","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v10.15.3+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.15.3","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"0.147.10-ts-client.1+5473a24ff"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.147.10-ts-client.1_1579126524856_0.023950821625153162","host":"s3://npm-registry-packages"}},"0.147.10-document-actions.97":{"name":"@sanity/presence-store","version":"0.147.10-document-actions.97","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.147.10-document-actions.97","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"4369c60daabffd6218c30eeb0e54df6851694bcd","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.147.10-document-actions.97.tgz","fileCount":7,"integrity":"sha512-oO10027v+Aofy2VuwAniSc9aAMncQO4hjCjiOuQyfjriINdZTFvqnFwRs07Sq1dI1UHUMiRFPuKaXAWDrcikEw==","signatures":[{"sig":"MEYCIQDQVbXZ61BVHdw6nKvImJdqukYiCR2rWk4cVRZ5FlwdiwIhAOPSapw7nwe/J/wxZSlVmSa5umKr2PpJ2a345lWGpIx5","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18204,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeKwnuCRA9TVsSAnZWagAAAnoP/Aw1Oi3wc/eqiW6bNc4D\ng6F4nTofg8UUNIJnfz/fppmbgAJZuyzXUF9ivYIm9PpjF4g7oAlJtmHIQXBO\ncTAdi3LDNWKsmhvU3IEmoAzeUNeK1UqmPTrQOnqmzOYs0SiALeYUaGrXl6eP\n+gcUwAUJovVIMOsUw52U4wVleA3tQpWWwiifGdnCkA4PkYFEBV56dg/xA6ZC\nai45znqC7MX0MHSXS++pRR1wvmMi8wPQ64iG+0fwYOnBQLmG5SlPa6fBn6Rh\nijoYuzQBa2M3Et0V5iD3SDMjVSlOpXx8JA3uLkGDhhjsdnP55FdSsEx5Vn9a\nkIxxEcoDxBpnwGMKQoeqKSazZ1BKtKRMZChjhkUwZ2A021bjUPz7CZQ6Pgz+\nczJuwsUU175M+VF339l16OT7LGoB5hu2Lb9FsSnu3UU4zbfQalU2dNq+fHKw\n+GAwf+8vTyTa4tyOIOlYS/lNcZrtYFZx98rbqdAsZpip5OgCj2v59kWYeKgo\n/KXjGof/i1z244G2LiJ5Q/dEy/lMnguuY9DSiMH1qH1CFJVCOQNzIu2/bt+J\nI3c2eYsQugYgaoyru/XYxNSPxQ7naYJH/8RXOwpynKelQCpvKPla64yw7QrS\nSaVGqj4GndIL4v+JizHM7aJFB++I6JkgJBPKHlXc+BMEor1CpxbOm4WHtL5e\nv7pJ\r\n=j3Fi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"70b578cd7a1ba58e29c68ff8e081bb58b80bc757","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v12.13.1+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.13.1","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"0.147.10-document-actions.97+70b578cd7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.147.10-document-actions.97_1579878894372_0.8597043147439987","host":"s3://npm-registry-packages"}},"0.147.10-document-actions.30":{"name":"@sanity/presence-store","version":"0.147.10-document-actions.30","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.147.10-document-actions.30","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"3c0b551de39ef2a17b66dd09aedf34fcf6e20779","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.147.10-document-actions.30.tgz","fileCount":7,"integrity":"sha512-0dILss9DO/5vKB2AePPnrDfeJIkLqmPUsxPF2IAF51ADKjL0N2P+5bv9LnTmbvrICWVpg3/j3pW+/JRm8zMwGw==","signatures":[{"sig":"MEQCICBtuIXl0QPo8LYidc2jP/o2ln+ATxcxA0CxUEXHsttiAiBwXhvzORzX7a8lN1RzQnExsOnRw+m+ds03spzQ0oHomA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18214,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeMw5+CRA9TVsSAnZWagAAnUYQAKK3vBZBsFU9L3K12DNR\nn52ocll3mDiBMgz6XiVpNaUTqmXCwk5jzAZSbpbcwayy0bfAj1im2pwZ0hDP\nI1hkWghdSGXEzOUGfZ9KSb3FZa3e6YLqlDcocsnyFOB9SRAeGw4aU0tCCmxW\n14Xs3gpBobF0Z+9Ql+cIO8W5ke3ZS07xEDVTvxLZTdwupYGbI/Jhk+ajH54S\noCzbcbi1DJigEP9pC9BLs/oti/JyJFsljPVdhodGTIHtCr3587wJa6Ar+B9H\nRerp3o32VaidmJjpEoKoZ1CpPx5INjPvq7dL84LIAEvnS2XfX9/dMMKkA+Bo\nPGFGPrsHG4Z6J7z8iYgZwYTk/ihaGfagYw4gOdiltWRiacL4hQl9b/cNtfrE\nsnmGJGWu7VAPqQKZVL9FvTHBDzljIjNOb7QRPNTjVyFeClIZXGyYr943FENq\n71uKFnXT4Du5ULJE0Dcb3gERVsPNkPC5XVmJUcMHCaQ8ZkRDMt9GIApDl9wp\nT3PKK6AEu18nr8+TW6jZAn/RGHYQdsMXhSGEtQ20nG+kG3DQ2014K9aX9boZ\nGvGd9sGIl8SjPRufWoAXD97VX2SdzFmsDSf/Yf43ZSzJWB32hxcdyG+Hf2jD\nXP6F1rqkx18nLoivkwjO5t+rLI2IurQaEjuHL0w3QRqcduJkPNOTKAsAZGaB\ngDbi\r\n=78EZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"b85c695eae445bb5b1374bff0a1855c3100c5da2","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v12.13.1+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.13.1","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"0.147.10-document-actions.30+b85c695ea"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.147.10-document-actions.30_1580404350545_0.8528967110767849","host":"s3://npm-registry-packages"}},"0.147.10-document-actions.31":{"name":"@sanity/presence-store","version":"0.147.10-document-actions.31","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.147.10-document-actions.31","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"d823f6447e1e9df17ffef6287e16c03859ed16c0","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.147.10-document-actions.31.tgz","fileCount":7,"integrity":"sha512-ps0ef13YTFZUBLpIjCimAh9AX+f8prqI01FljX7DA3bkifKo75EJ8Yvn8i7LMLRDTdKIgwCNKswjOukdfuCDQg==","signatures":[{"sig":"MEUCIQDsFgB5A8S8ccAsv/NzLwsm5rimmr8y7kv4ekFSJJiRJgIgXObrLx6Zwal3VDl5kqaPpbPqciJPw8XLuAysLhcSweo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18214,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeM/K4CRA9TVsSAnZWagAAnBYP/A050lCoarCaczA+8Erx\nw2GE82nnQH6eJqQSCvqs/Hoz/61M2V0SUZq9Di/97xgmdLQqdVF7Oh1OWBIG\nqy+Dsf3LMOGtXMuxXY/bM/ooGx5UU26+Fv83C5uzpjhV+ZrW++3w8k247t54\nnNSwfM3lw+RvSzTh3ditORnVvMTTFvM2eTh6ZVYOOgenjbK2TfFWURzFg424\nbhcaj8Mqi6JnJEooNpwYifmVITJh1Hyqo3LZYE1VrU5uA17sSi7/tdMJo1rk\nUPAW9b1tXpi5YhWGAiojZaVByqoh1TQmCxp+1epygEHP8Lg+KN3deara6e0d\nWezidbTTLxBV3QdLcbdg7s45aIhS1NfoZHUnxzbDrH3R52yRN1nNf9GVH5GO\neq4HqznAyozNO1G+sdiSyWzRz3U2ajsgVD+y+34MIBt57jAc7niQ9kvLoU8Q\nZqY6Sv0czXLvXs1zllkj13t5EVabhRvzzTaeMbx1iggjP6sjxt+ijsJo8C1o\niVwdKf/YWpivt4QzWr8XgHgEb4PTAJmj8LqZ7Bs5LJPcsfMBbMPk3TYMebrv\nSx58e8imsm/e/vkEWkv6hTSZHiOhpi1NeJxN6vtAwwZm1NUGbg4CoqxcM+PH\nXEWdgcQIrLGO/NSAcrClxX51/wbzsB7LK2FWjPIX7FUnajxPtwLlAlENfdGo\ntKN8\r\n=r/uy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"2e6c538e6a9334b5f83fe324b24f47ad20697a6b","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v12.13.1+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.13.1","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"0.147.10-document-actions.31+2e6c538e6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.147.10-document-actions.31_1580462775746_0.7640101976603804","host":"s3://npm-registry-packages"}},"0.147.10-document-actions.34":{"name":"@sanity/presence-store","version":"0.147.10-document-actions.34","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.147.10-document-actions.34","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"b83597892a1d99a6c923575cbe2ed90cea258890","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.147.10-document-actions.34.tgz","fileCount":7,"integrity":"sha512-P2NII92fUukgnAZ+ijC3wIVLPZh32nzibCkLH//HWdfopmawsqJJjygTMDqQKiQMcfDoW6F34AcS1Zdq1QT0Og==","signatures":[{"sig":"MEQCIH1QEwXyIoPUOm7O6BqovZkdECCDuhB8lRbB5DrZTOzYAiBepDb06JB1ZZiurAKUy2S/1mB9X+BmTu7K65NnHPhG6Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18214,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeOS41CRA9TVsSAnZWagAANLgQAJ2etvu7/thKOqipV9PI\n0ENb3LU9FJcZj0wRVbhW65hz5EQrp8+VG8vJy2DbMOnYbfPI9BCB5K+ZeqIu\ndtyxBzts9eQ+4xh7SpsQIFNuAdFk2cvl2UMCDLxHvg6Sj5dU7tXvqWt7whPo\nZR20y+gZOKHcRduoANRou9tJlMYS1vugh33tNZdXdyOrCL+yWx0vu7NXJLGc\nA/x5vF2c7NgyrXzRM6nMz9jri4wPFhE2S67rBFjw0EEdIIGVg3KJVIN76hzK\nx0P7hc3dGWeY6puNYG+Zql8ns1N/vqCrpQ77mqcrNjTwKGkRXOEpZw+dR/BH\n5W11UKTlcuROYUSzw29RqeN9djzX7KltVtH0X/XRd+PEWQomEa63wE1NYFqJ\nNjusPsu43USmM1Eaw4XWBdSbYtqWft0ijHFesA+0s83eOSdgO+U6+OvLanwm\nKIZEsYPq8o+eRAQku7GGqnscubJF8IIlgl5oikNs/ObU6w5J6s/QpVGDabe6\nlQbpq4hwOr7BXGF++4ORMpYTOLxtmH/0fW+dq2pyBvlaH+HcSYT/cKHdYohP\npEH+jgJ+OPybEK7zHN9jHSf2ycM3+EtqJ4ufC/5W9ZLWstE53Jc4GpC239BP\nRLeXKxsEdnwD7qg3QrgeA98NWRl2fs2uHMUVqEH+MQ0/lX72Chp2uHnGro4A\nUjn0\r\n=Xm5K\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"0e021c5c826938bc15268f360d6e127678649469","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v12.13.1+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.13.1","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"0.147.10-document-actions.34+0e021c5c8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.147.10-document-actions.34_1580805685236_0.9864924736917131","host":"s3://npm-registry-packages"}},"0.147.10-document-actions.37":{"name":"@sanity/presence-store","version":"0.147.10-document-actions.37","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.147.10-document-actions.37","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"df8a7c95ef379d1590da9ea1ca87775515dbeafb","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.147.10-document-actions.37.tgz","fileCount":7,"integrity":"sha512-ymQqThJOT1ydbt0kshoE51jICdg/QnZSFkDi1a0bY7AUT2lMV+BoXqplQGFQPMy8799GRd0IiFk1w0C48duj4Q==","signatures":[{"sig":"MEUCIQCoOPG6GOE7NapJysssRz83aIChyhX1iYadi+TZmgMG3gIgMT8yRMCFHpGr490B5wNn2dnpvi/IBonY/2E1eWcTNCU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18214,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeOUYxCRA9TVsSAnZWagAABhcQAJ4woGUqHLu15JbKIkii\nB29k97d8iGAxI5q1ZZ6qbXAVZyvtCPLFaSxF83D6swj4LKGGHrHmJlvxEakz\nwK2GLzHhwTc1H201Lt7O4gAPSelPep4yKY0VSvV2NM4+Js5HpVLOS34dNTbT\nSpERiYQPGbISz5FsmEl3RKIsx9PEkM8A2ZE7vPB1OP3QnDMnahJELwfTGYNK\nSSYyWGhyWWPAftkRmB5xvX97btVM2TLKUN1JSfekMpI1NC8IjzLQ1SDTVyRt\nS6BJZ+VCVlBoUeECj8yCIRslAKgErN32W82KNQv5jJbUHc315TeJgxk/ItCa\nXH+1Oa8lQgzDvUXwMIP2XKRxD1MOMLowcJSwKyG961abxhSQCGsHcMTX40+h\nBz/CyGV/ja5UUKv0gm8+usbPj893xqlzLNDrfQ0BuRekKE+vceoSOwMElJTQ\nGh8aX9CzylSUrzxFlD//8SswvA2TnP6IV5KHd+8Q7pVlajYaq/V81x0fUDq4\nJZ/6qZkTuWZOtzVbWaGvH3oonMPdGMK9QxATHXMrUOrzfniN9Ur6F4adYf0i\nm1Y9Jwd4Wgi2VkytJFqd3Z9pS4TszkVBdRVgeFbJOjRG7aR7gDWwHl3zGug6\nTx3HT3CcQ48NGY3TdiHNFx4rqpMaWz/Iv2WxMW/RyGwfyBuKfcIol6sBxRVP\n4ApS\r\n=iSB4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"488a1ac44543810992a83d537e9912a4e78b4496","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v12.13.1+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.13.1","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"0.147.10-document-actions.37+488a1ac44"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.147.10-document-actions.37_1580811818408_0.4081917125598482","host":"s3://npm-registry-packages"}},"0.147.10-next.23":{"name":"@sanity/presence-store","version":"0.147.10-next.23","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@0.147.10-next.23","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"2f6b1142b6beeaf7ff4ddc01aad653986888f66e","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-0.147.10-next.23.tgz","fileCount":7,"integrity":"sha512-nHaqEvi9EJ6IfplcPoFo/kE8txxajn2bbAlc6RhM1nZ51PlreR/1cnfnykU2ymI9aLbQygLWKDvjdJAgo5r4nA==","signatures":[{"sig":"MEUCIGbYnbvURoNqJpfrlqbR9gyviZZIFE1BPE6o0A5tnL3aAiEApvxmuHGcOJBMUPotatTWy8Uh7MuxeKxBDndCt7oxIzE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18190,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQpbTCRA9TVsSAnZWagAAKkQQAJin/Q/fVAUj9Sfuhiz6\nY36o2nORR81itD+hyBC7+qYVpj2qGnX82KKhdFPrRCQE/YdOtbV5obrj1emd\nmBuUYO/ZUO0I2FXtGInBywhReARbHtA0WsFn6sdQoV01lfMUsACCOED2zbbK\n+vbzsTpxiqLFGRx9HkBvFgJ2WvI+gLJj8LOG/keMOd8DIcfObk5a6oP67ZKe\nLtQzjh4VEGMxz1pTTD9Zp2iY1rEWBY2QhhUh/BMY62kwdplAK5vkKapEO2A+\noYzX4uQLcCW/NvYfHV15asu+mj6ucTfahrkH5C04CdPp9htMwz9zBR7JSb3s\nGkO9LyEA4PyKbko8nHx0+ojeHBKd+Xe/MUMWKS4Qtbfgype1mr3Ax9DLUNpO\nU5P56NU/aFef0hZvi/8vNUVo8ve/ZTYVlnfagnOtDY7NQGRXAwBA+FT56HSp\nwRblizytgtWQFJYAIdNONLGvnvzl2DaPC0z8SsCxQIhws4I4mxT1AzJXLcoM\nvX/RHx+ISEvYNEuC7qey2TCl3iOW0X437O662dQqVn1ts1AjtteRc9VOBNy1\n65vpRFtvvJQvqtytDfJe0L2wepNVDT/x8jtwed//ERjIfky7Gzeyc3bvqW3i\nPvp384uNnl5Rf2K41S1hQqbksYNPxcl6zHpempg87YeXl8dp5XiHl3pL0Eas\nGEqI\r\n=2jpM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"6e5162b11fe856858190fcb9723d132f81c68a89","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.20.2/node@v12.13.1+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.13.1","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"0.147.10-next.23+6e5162b11"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_0.147.10-next.23_1581422290733_0.0627118514489533","host":"s3://npm-registry-packages"}},"1.148.0":{"name":"@sanity/presence-store","version":"1.148.0","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.148.0","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"kristofferj","email":"kristoffer@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"6252c70103d7e907119ba4e7964d0cb8fca20778","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.148.0.tgz","fileCount":7,"integrity":"sha512-eCU4Kdk2QAIveFHVZx+/44v7a1jLzBd9vIHnbKI6Wi+O/6g+RzpgGOArcx1IbyD8kD4U6kkpjUplxZuYeJpLIg==","signatures":[{"sig":"MEUCIQC4opjX6377GxD+FiqL0zEiczZknBD/xkSWT/eNZ9kUpQIgE1VCV26Hi4QKUrmk+5UxDXeltvwQxvhUpJJq/F/R3C4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18152,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQ9Q/CRA9TVsSAnZWagAAassP/i16qMaGh1uAtAmgxVn/\nFuqrfMPxdhNP4ZItaLjLo0qxhfq7GDiNS9DGnFGQrd/VoyVUgeLxllfecEXS\nnSV8S+Zd7VrBB1Z01JXhrte2U36tiibmi99DuRH7KXxYxUfFUIszn78iXPxZ\nPvYp/aeOsZKpYeumuGBFeKzKdF8lDVel7hiXySO+YEBRj7TW5CtKA90XxB1q\n9cDWrygv4KyJuVp1tS8qd1JS7T+I+d5bOrCOLgmE2PW+NTO5wt10oQ+/ofS7\nJJbAEJXjzqhPR8J3VP0WL6pSbhSN8xBt0d5MAHVeIDBeLfoPgUI3qvhG2WTZ\ndDZb0qASc4mURWW6BFdIvT2jYJuqV+HX+yM+SGkIpcqHsKKrmJCd8iFXBgbT\nf1RRnYrLZzau9ODA85PjLfsCGYae/LLD7IXeHaDYuoI1wcn+UdDFe5Czgw5p\nEcWx47D2KLajWc88pLlQeyvqCACVIdcPmS9SwZXv/WY/bv357U5trNL7avs9\n+ocMUSq0n1cYi6cHBrbPRrCXekwq7YKEGl1Pa6p97bANcS5Msoybs+rbs19A\nQyMXlBRMRAVmGNGk4jW53yNcdOlaKJGXOU0/xzUZqmW1j6cIOFAfwAxck7BP\nCtHOPo65CZBhX/X3VjtbYyO6/IttWzPD8PXllhpqjzOd5oPBDalUo5FnegtR\nyGhU\r\n=eLbJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","gitHead":"617d253856d6c713c578f2e2b765b23e117403ed","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v10.15.3+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"10.15.3","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.148.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.148.0_1581503551361_0.3888807806191694","host":"s3://npm-registry-packages"}},"1.148.1":{"name":"@sanity/presence-store","version":"1.148.1","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.148.1","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"d5ad084214b5af5009606713e156f903ae62e1cb","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.148.1.tgz","fileCount":7,"integrity":"sha512-sFq7hDUew3eIOekiFjeWip3yAnBBE/KuUzpgm51y+c0Ki0UoSMNfPQBIhHm/RnZlgawPGQgB4+fkyNbSD+18Iw==","signatures":[{"sig":"MEYCIQDNdsmXjEhZe9f6HVX8hEtrmi8UtdT5G5P6sd/YN46gSgIhAPo396LcJClusPHjcMDTwzwCsZyacUMNfnc41IFYXLoD","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18152,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeRJnrCRA9TVsSAnZWagAATJkP/0Ypw1Kx34d8/j/u74js\nev2Gx+j+OynQhAL5D6b6t6G3/OkHI9VBKeiH6NgLFt+COQEtMMThK+/60Nut\nXsZj6CMuCQgvFU3EqEOGar0pz76lxHX56hrnDrQQij8qxYI8kdSAWuXsrevY\nPA1fK1BI+3xI5n7IJQqWRKvF5Y8zjJFwrYGrZCMtCiIJdyozSAYkcsI2ihi9\n/NxdVLQRMKrTq1U/3yFtEBTy5enYs5xwHDq0gstRXEg/krlYyMH9733SzZNL\n03Tmd0OP2OXSdE62ZqLJKlrpUKhmyvTt7j3IFv7SKj5QE3J8tN2vb/LdOnNK\n4efTxwggOCKqpCOfQ86NdIFZkQOAQs2sZwOwTMIXlDrQrdq3ssSgUu14YIdm\nM3OOQcaHaRBhu4lj+tZvdXBLafmNzmjF29akNfZzI76HV2X1Zlp/hwTJt4/F\nxDWVRbyRFaYkVrUpbe5tP2Za8QJ+7fPd6u83ODs20u2quDq3zcwpW0jZFt+x\nS5SQPRDEVfG6kz/3DJtojdOwcEeXwnbNagSb61VjEt9YzHCia/rqxOtMyZM+\nZvUqhW92Z4BS44nL8glxP134tJMwIAV/JiLB4J8mOib+CysJjKdNa9oSfPim\n4cJDDDZuhvPRVRINdtEBok9iL5zIIMqxCwpjQgSD38x/tKxezn7++uRBGZtk\nlw7A\r\n=hgcm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","gitHead":"e7c98e01633ae8639f251fc125156c94a8ae13c6","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.20.2/node@v12.16.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.16.0","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.148.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.148.1_1581554155543_0.6094383717280503","host":"s3://npm-registry-packages"}},"1.148.3-document-actions.16":{"name":"@sanity/presence-store","version":"1.148.3-document-actions.16","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.148.3-document-actions.16","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"d7e1da8143303d9752771508548b85029b21473b","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.148.3-document-actions.16.tgz","fileCount":7,"integrity":"sha512-wIQw9CzVCUmnp88DZzKRgS1hYKSGaj4bRAFG4jMBvtf9qktLTLzyC3Hn6zOD19TPBnEQLBwPPg5LUTZxPS5i5g==","signatures":[{"sig":"MEUCIQCB020IOeWd+pIJmPSfyOUefdM0rk0OwWi9NmwbXKHEVwIgYwnOCGDj1RUEBUMunoQP82G+iYcGQRhqodOyDArwu7g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18212,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeRr8vCRA9TVsSAnZWagAAWpIQAJ6P0J9gbEaLfU23fxlE\n6BkD2dMa2g2IhMFEi+rqAdQvd4y3Dqv+bGO3iBJzMoDvneGSUd6M2K6syyEE\nvSqMZ4PV0S4JMNOt3kAloHVGZTCHOMDKhIqJi8ftdaYXHrZ39XF84QIcUm5B\nmUBsekT6KL6aFwKD2yc3LhWPgq+3+PEbnTuY4XBgcakHQihKbBNovSiBOdev\n5Bx++ggV4n3qHiUJR4IRfDSSSSJbzuVYAl213CdaWhotLac7C9a6hE0THhR3\njWYZUD9j3fJKYObFa9sh61HP68IpId1LdHEB/gJTsmBK39afXb8ouel3fsEB\ng0XLBrinp0bi89yik2HHDZhXhtSHZbqhKEg7292jkL9bRpHpRgNYx8/1BXzq\nASvnGo79c97Tguamd8eQVEW7jOI5my5x1BrpJmb0fDl2qqRAqv/wiiYQN1A2\nqh9JmjphK5PjBs3JuTT90Q5IDk9QmmS+L8EbVUeFICUzk4i0YDOMmNb7PGZH\nWUsfh3FWZwA6Eu31HyhzHYeCxa53YDQoiwX1PZ4kSh449Tw1Eqm9oD9PO1Li\nYhA7hzFSWB2L1mbZYVw/zrqyMOsY6y6BN0eTPOU84bGLyu9s92SG9eWC500J\nf9MPIzNziumBwlQaSQnHrWntyrIK548HhlXeqR0F12ZgWDQWzMN2n1uWZg9G\nTrNB\r\n=pSgw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"198015617b97dd357e6aba0b839b6fec890559ed","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.20.2/node@v12.16.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.16.0","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.148.3-document-actions.16+198015617"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.148.3-document-actions.16_1581694766984_0.6020451683858141","host":"s3://npm-registry-packages"}},"1.148.3-document-actions.26":{"name":"@sanity/presence-store","version":"1.148.3-document-actions.26","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.148.3-document-actions.26","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"e99ae5dafd76d6edfd95f704aac124ac3f660ba3","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.148.3-document-actions.26.tgz","fileCount":7,"integrity":"sha512-axxh+TJMIofHQO7OYjqhr/wnfVZnowNRJTZLm+GaGvsJ3p9njloj/GWgSKr0feHvqmh8GXk8lNZ/Hj3+yaR24g==","signatures":[{"sig":"MEUCIQDdrPDNcOf96Zmy2MmaZ60hB3DXJLio60jO80NaHQZdiQIgFFO+aISuRfbqvkO8D/WBnNRUGzMpPPWavx0Bau53eHw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18212,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeSmF+CRA9TVsSAnZWagAAqpUP/R7khnrhMJll4UMBJbsi\nW/fZk1SrmufGSSVIDyoYlropKnr5y8+XrMEzwXqdSTUnKHRt0u/ty+x6M3Ag\nBUS5/IqDnYZKoOy5RkUqP8gtGqJeIPKGTWcma1fFo86tfJejMY7iV+0UMcYo\n81YTjPxjX8gSlUXYRdbBVEHW+K+LaH5MNAYy2s1ekIAeyd3xLhdetFsEdggV\nZHXlBngZsIRO+wVuyJ4+bTdfoWNM7kGSmxjjnf6xHBeaTHstlewQsY0CnhG4\nxZEget+/SaZftDqFcaTFi8BhUtjN1EMYPWhbaxK/IgERqOdH+0V8LCzY5a9x\nm65HPlkRsnjHqVKdsyxOAHK6kZhESIe2KfYgJa44nRQmc0/YJMM85TeAtKkJ\nfbiAfQEofih44MB53SWCYSRdYsCPmeYOsXsS8lVSwIZXUMCij1T9TnsihE83\nNytJPb0v4fqO2qG+hBdbgxzeRa1nOz1/7SI/xW7DmQomqkc3lgO+Y+2CN4qO\nDVNSl3qi+AaupAdTUSfMqIclnkJhJ+Jadbnc6GeXeHbpkRlWtqwgwb6WotGg\nez/VebYp2wYtz8wq28QwOKltWQUxJsLrn34JiKrwuVOcI9DpyKUXQdNGKY5e\nw6fYa4jK8RUW5ggxst9YIXTJoIlOAHOkNvjZg4VnWUii7aSccOP1vkyXDeHE\nWbC7\r\n=Bt0s\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"4308803be59c002ec9db4631a6b76115ef70ddf2","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.20.2/node@v12.16.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.16.0","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.148.3-document-actions.26+4308803be"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.148.3-document-actions.26_1581932925780_0.05110124566743557","host":"s3://npm-registry-packages"}},"1.148.5-document-actions.23":{"name":"@sanity/presence-store","version":"1.148.5-document-actions.23","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.148.5-document-actions.23","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"3deaf356dcb269ce12e68c108ee0bedd9f745319","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.148.5-document-actions.23.tgz","fileCount":7,"integrity":"sha512-nTM+r+q48cApsNZngILTGwKq0DyYI4qzB/IgSFicQ+bjeISF5J/wDpnWgbz3vypnGx35+KC6lJwqBPklXVURDw==","signatures":[{"sig":"MEQCIDopemQI0ohry5CBTkh9l7lqsbkFUuUV2Us8Jia7DHGlAiA+Q0DOd3vWOQ2zgjz1+qY4zDZNBSv7kLbTwVeEBDlsYQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18212,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeS+kbCRA9TVsSAnZWagAADjEP/06el6XlcU74l3RdsfSR\n9S0iPGTtVW+3pqOid9PehfYElUT4hOLmmLTNXDcGq2rZhI2l+gqsGTbOUubx\nRS4hnqdkmjfa9QRWtggLfCS/5YMYMlE+7PRotOI+nac/QHoKuPSdZ7iiqC+0\njbcJ/wuH3hllf0EQ6VEGmjYIetWJqYuKvkHksAi5Is/Y8WkIUWceIcVd2ENW\nogoXqR1EHV+dWy3EUUZxj/D40CTr5p3I/9S822X9ihnyE3M6zrFmp8OndzLW\nb8HyX4JtRJ1yWku4GF99cVoFkoVrkEk6+p6m1XQqVDVUENbhZi6U0xgdC8pL\n9h3Ndv3IYBroVRO2vgE0Y6yqd0Z4ulmewOcY3o54DVmdfZ7j+Z0Sc4gbu4hf\nogKA317siZUUApu4z8ZGgbC0qGukaxcXwQDllgkaDQjhOUMwrRHtn2C1xX9f\noOkL1te5PtfVaus89PR1IYaN39N0ZFgx36yu3rk5helM/QWANHXSL7PggBZC\njQQkT6f6W6TkXJ2XYUWzxxGxxi3mj3YiRWNo/AbgNWtFe8jCD1v2d3yRH2D0\n/yy/8reBwd6EGWCnd64A/M2A6G2yC06kzL/w1MQif6TlNzgcTixjEQX+a7V5\nntGIHso0kYzhCi2T8a+6CDyr3MLPq9RUtJ/M5Q/MMchr9/k0fLGAQqDemb3R\n4rtY\r\n=zEzJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"27abd940c7dd0ed9f9561ccbceb969c0b8562d94","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.20.2/node@v12.16.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.16.0","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.148.5-document-actions.23+27abd940c"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.148.5-document-actions.23_1582033178494_0.32650301499072776","host":"s3://npm-registry-packages"}},"1.149.0":{"name":"@sanity/presence-store","version":"1.149.0","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.149.0","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"d2d792dc2e8ba013abc4437b0726cd4d8a8dbe4d","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.149.0.tgz","fileCount":7,"integrity":"sha512-QQBMtpfqGwcdqrCJ672+4ra05UcsBxlbEShJ9ar8WhWs/sQaRKbivPVuA5cPXbEt7SlUqrhgaOYojQijB648TA==","signatures":[{"sig":"MEUCIQCcPDQFHjAbPNJTGhAun+UP3JNsjAMWtHKDUaH+444CagIgPPJEBngVSI2u/g2aDuD8WYHnaXsqI/8zLXcLR2hMSPs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18152,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeV+CHCRA9TVsSAnZWagAAkWcQAIRxvCOuiGjUMMxa+brI\npdTRqH9Fv1+JGuxng3OV2aNG9MdchmR+QCLugwpsjZV5ARCRgiBWz0aOoezM\n89H57FEkiTUEhsZLFsdbOa+66K1y5XIPt+s1VypXEBI/SK3lZLRulD4aAQqS\npYGjH6LLKe5OPCjfuh0oww7ndC42nSmgaoRj+N1Dv8INtX5iXKghXXUnIJCx\nXWAiTZpTmY3GIxRqJkzdkYh/IbBpaUsapFTcrR0GQu4pqwuuw4LirBlPbKUV\nVeV5a6cf5DLcJyVcWPkUuQU+4xvRRg2dwEQI3BsVTNaG8UMzSyazIX7rL9dE\nnmgJbvgumpzNZYBmK6LjTmTxWX7WMAdJrn30hMQlKArNSwwk7D3wH+ASwnPp\nAS9AYElv4oNX5Aa6Zz/Sq8AoioMmYa8fH+8H+Io52wGtdIb1wpmCJILqsmi3\nh+b1fMUw+ydO8BjrLxvxjuw2rbhIfpKeztzImGMphG7UQTgcO5b9KlsgIwd6\nD/Mhk+ROimD5NeK8Lcc/VS8lZbdpL3Go961DLewBRs4AKDkC80j2MPzrXwIo\nZNpi4kQIbl/9sVXBD7Fx5mnTxeo35gBsdHW7qT3ps70LrYcX6e8Lsti0WfEk\n7w/sU9GqQupJ5sEHgymvQ1bbsJs4pe1DBP3/0BGmNZjccN8duqOacPqT72dB\nFKj+\r\n=Qk2s\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","gitHead":"a8e0a50ffb60756d5057788d95aaee012e8a00e6","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"saasen","email":"stensaasanders@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.20.2/node@v12.13.1+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.13.1","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.149.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.149.0_1582817414635_0.6644156302447604","host":"s3://npm-registry-packages"}},"1.149.16-canary.35":{"name":"@sanity/presence-store","version":"1.149.16-canary.35","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.149.16-canary.35","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"b3facf90246473fa7b83214bd725aa64f83ab471","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.149.16-canary.35.tgz","fileCount":7,"integrity":"sha512-z5oa4cCmosIyN+eGBp/ZvPrmaMAbBe1SdMqnKvgImlCEi1KN22KkHQCUjkuEAYADmaIg45/CYYVfLOUK/lIvgA==","signatures":[{"sig":"MEQCIE0Zcq4EJrTOzANKsUvnXEpUnBbiA1CCDSrYHHurdiBxAiBt5qWixi/qSWviPu7P03cvLDXgnfycySNIrKl81i9ZOQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18194,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevrm1CRA9TVsSAnZWagAAgkwP/0RoxQnGxdfCGJRTLnry\n8o5IcdIwEnLgdXolMXKFwOOq7N/ZgfFFPAY6lV6J/Bp6ZHisQ0YI8nJ/HQj5\nrHmEDTZumFLB47M47G6Ov3oPxeGEzrjneUf8cNsbUZ3lY76p9fW/HrqI4KT7\nGFJw0f56yfuhYVElVzCcWCpnEjYdgcSy+YwD5YMY2kR2BAO5QpTdBwIyozCA\nq8jTwv1FnHunEEA43LoetvbuDOtcBbzHPGVx0lq6G5NwmG5kNyVX/K1ZwHYV\nCvFAhrFaU7hobR3J4TIbh93v0lgbVd/N2r0T2HgS5o3pcSCCO0EccJPSIfoS\n3LYQjEONHJ9+2y7d0xHW3+c9aAMoF/DD2TNACpG3fFqbJI0vCcNCHOYHRfn+\n5NZN+jlmoAhLOzgV+bgJTSVlAzfuqxs17NLqaiHmg34yH9ZPpLlnVm90BoG4\nz6u1J2NRf06dmYSW+rriVfuyUGyXIJtfrd6j15kRXXK9u48IUT9mdlCTG0d9\n8OHxhij5kaV6egEm+DR373ngn0JXLw6PU0F8sO5wQdhVTE7GKZwm7hih5Ltb\nxncxJVVCd3yLC+NDhJC5X5239lLCv/WfWPFeny1eFaOWB+JtId6P09zdrqYy\nNSoUfqp1GimEsnvZLXZvBmzxJ+hxKxL/BK52upQ/rhckrJkKF/frn+g3WH1R\n/L0X\r\n=HWKq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"ee9a1b4e44c8199a3febed70c50495e387bc863c","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.20.2/node@v12.16.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.16.0","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.149.16-canary.35+ee9a1b4e4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.149.16-canary.35_1589557684627_0.02821975782493924","host":"s3://npm-registry-packages"}},"1.149.16-canary.136":{"name":"@sanity/presence-store","version":"1.149.16-canary.136","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.149.16-canary.136","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"0b1465b7a0d0d88b695fdbc08ced0468e4425c7e","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.149.16-canary.136.tgz","fileCount":7,"integrity":"sha512-so3DN17ZwpGDXJAIc/iE9vc2kdPgo/veO9GqjVFZjknyAGDqWvHsCITnM0BxjbPPiymnQTW9sYc1zhTyhVnmBg==","signatures":[{"sig":"MEUCICCFUrPTX90OwQMB9M3T6FneDYTL2rOwrH0MBSax4lerAiEA0xZ8OAQhIi7quQVpt1WZQSXGWAi3b88DG203QUp5H/M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18196,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexCOHCRA9TVsSAnZWagAAbmgP/1hYmLXV72FT0gi8JcyC\n+XC1GsFDFBr5BVt3CMHc0R4dhxVvpnfkRtvCHWfZS7YhbibOVcAX9MPLJ+mB\nvuu9X6HbyF9i/Z8H9QBUH/rR7DsUbBKlzDR7cTAKKHzX6jIQ2djM5IEK2YYx\n+VqRPPvk2pMywKi1CxcEbtzNAoNmeW5XRdShyMdHrf4o0YPVMlteL9PpJSpL\n80ZYwhPg53pqnDxxKiM7GGFE9hYuTbCfuXhfZwyGK+JZz27OAH87j1AHsfhw\nbHaorGtVcKGtj6dPNh5VsMTSJaCjbM5iQMZpToQXRNNVOX+ZoQF759DUsQZ3\nZd8pG4COWEQAywh4EynJZzH7SWsHEYXPYMa1hrbujHInzlQIKCBXXZ3qizVU\nQ7po2RS4No/U/yTILBZGD+8nOuBijMm+7FvBH6JbA4LYyRwTtPf7KpEK3Uva\nkqx7nwumfbMZs1oSliQFO/anQwpYjZv0/jvDV2hmhw/KrWnQJkfP3Of8ixx2\nhHg9EHOkFhpN1h/Vja4fhfMmmmZ8tCdDV5RQI8fvqEyQukre/SgCiSF1gFl+\nK4IgkUGZvjXU9Xn9gs5epmoi8T9Stqo/XkU46p1cPsxkO/H8mhIfKkloRkV3\nDsWnGHDvAXhGFaadurGDHDnC0jMEFr0TItuwUMF/2UY+u5kiMvK1J8GU2T71\nDASA\r\n=HM+3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"ead1aeb583cae566ea012d86ce65cecbc228e35b","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.21.0/node@v12.16.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.16.0","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.149.16-canary.136+ead1aeb58"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.149.16-canary.136_1589912454643_0.6763851912689876","host":"s3://npm-registry-packages"}},"1.149.16-canary.201":{"name":"@sanity/presence-store","version":"1.149.16-canary.201","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.149.16-canary.201","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"87d68291810bd3ae8b8f88394ce5f036536563de","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.149.16-canary.201.tgz","fileCount":7,"integrity":"sha512-ZJoSUAxLaP8TveDtlfLM4GGQmJyWm0S1uIKyF0zvYwsgiiGCOSYKwJ/uMOESzQH6x3KaZ3d5nTK8BFd39rWa+Q==","signatures":[{"sig":"MEUCIQDl+oi35X4w8hF5a7ngvrKiMrnqpQk+MSYQSS6XbYO4UQIgbIhIHIsZIqc9M/H3Sroyxs/x6hzvnaYcVJCDM1YWw+I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18196,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexWd9CRA9TVsSAnZWagAAo4sQAJ7Q0hdeO8xdD2/BjuB7\nx6YyrJT0Ha+NDOubEFedAkLKzVyka7zCBcuv7QVc66MPqsRKAS/xmaTgXJOl\ntX+XrZ0pzp2OrbSKdYuLjh9BeXDS4q0S9D/TeU3rK6yP0SAx4GhqBb1yDEvK\nKNUy5OTcxYV/6B6vLWzzfpg2TN6rObLTdxyJYRePhPJFthBIIRUjHDQzagXT\n4kMWRiB28J4GUVzMmAHDTYlZUVdxm6vMN741RtcDhKHVXfXF+cxuEoWv9UU+\n7t0tCkJoUKlwWd1Rjrgi9qRRZCwovKJC/H5+vBeSQvKPqTsFV1LQBpe46Ye0\n8A+qAaBQKdcmHnflSV5XjGRZUGcXyE3PoZNwOItPw/DDZ0AqM/XaUpQIzo6w\nSD1ycJQ9jhyK7BNvDjZLOtnaH5lYS2Ns4bPOGvYXgjKZFg8Wt+PEC18obRF8\ntbe1sydnizSLuDijTfbv/HX7Ls6RolqFJG421kfawpehdE6BKMmpoKxFZ7eC\nWP+lwbp676gaoYINJ2TpFQl5iqHst7wJhpXuUhMpJWMbbvSCPfY0Zpe6AuUX\nB1cnlBYr6usgo9DTZqfEgK4if/RDkkWrUhzrXva2zasGJPw6NjyTH1pQCtXo\ngi6i93vfzNhXWF2TiI0Sn20bSjp323HPKZMMDlDIIuIYyEgNE+++2H8hK8uY\nv/Mi\r\n=UQmn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"e5d7f561ca4c3b5c7c68d7c33111ad414b81f013","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.21.0/node@v12.16.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.16.0","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.149.16-canary.201+e5d7f561c"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.149.16-canary.201_1589995389101_0.8240715476687335","host":"s3://npm-registry-packages"}},"1.149.16-canary.202":{"name":"@sanity/presence-store","version":"1.149.16-canary.202","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.149.16-canary.202","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"0b168a59ef483f9ca19c901766b318f13ca49c24","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.149.16-canary.202.tgz","fileCount":7,"integrity":"sha512-W87dKDNC3yKFoC88Yz7B6Qu0+MCT/CYw0glqTcqQTfl1ofgjTMvKVhBDCqOEwzJdr7Qb5PloW+bWOLHnKnhK4Q==","signatures":[{"sig":"MEUCIQCcc1Dq+IVsgRysklcesqhlbLFV5ZT2ve9yGpQuGVt1gQIgdOBY7oPsB9eoqd+WjIsIhmg3olGg3V/cVASfZma+f7I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18196,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexX5OCRA9TVsSAnZWagAAG6MP/2Ia0v2h1ZiRZnSg8Xl1\ndgUkvIjdDVwT/4x3vwq8EhFXkJKvzq5zMLcRu2+8wiY4u6he9DMEs7rWwGHP\nDJKDvnpQxbwQ7TKdXCLE74snB6MI/YVwLYnEF2qJ7JMuFep43tO9t2wm/s34\nUzs+XC8cbJNKlApNtfkl5O0LXomJxsidhmS7GP6asmRgDBXklUrdnsGf4Bs2\nwDDStOcJzWUbrU2AkQ12BtMduDyWRhFFSAs+t4G9Nor8eS/A0YtnwX6Q62mC\nUIvazZLe1vtSL6FZEA6brNkrEQpTO9WZ8i0rDfVGHFa9LJc+Wsx5B5hMoDdF\nmljgkFBiQcrF51CobYCV/y+vWMEmGJ67exeZqZfDReLy+oFfkqeTmA6NcKMq\nNClIUkJ4hkj2MPIFOzTTEa+4+9LXyHiNkCFsYOj7DkLNugfH4dt28XQjTbuW\n/UhRfio1xoVuALsjP0dog0EiCntfsfcuwm0U0ryjDtxNjZ0eL8QrW1Qhuzx+\nrO05U/rHlTWFF+fFmLOILAz7bpmd4g5VOOwoOapS3CRuhzSMcfOuUHDj2NwA\n0LcrniVSbd+EKyIaYqxUbtczjlfTqJUobkens5NaSL+S3DJnFQ4GR3bvlCCj\nhELP1HSFvSh8+djEHhNrcxrFMWcHM7IVIgqxdDbCqWKAhUAQ+GgfhgLShRGd\n/9+a\r\n=Fsqm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"f143236233ed17094e0ab0047bedd9a120fba166","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.21.0/node@v12.16.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.16.0","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.149.16-canary.202+f14323623"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.149.16-canary.202_1590001230314_0.9034990462270875","host":"s3://npm-registry-packages"}},"1.149.16-canary.223":{"name":"@sanity/presence-store","version":"1.149.16-canary.223","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.149.16-canary.223","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"808bb143e01d2d120982ccbc237ca7b86ab2b640","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.149.16-canary.223.tgz","fileCount":7,"integrity":"sha512-mMFkSIn1rGrJwLSkZCJTgvahNst/5Y+owjEgoMF8ecT2TQwEHI0EJl6/QJOOT0MhV3jccICQ6fmf3leWsAdO8w==","signatures":[{"sig":"MEUCIHwkouOgnxsMMT8MfMHd3olSzF8AqFCtnQ74uBCkSOmvAiEAlL33eIIATltWF1Gf5alQn3pCkLHMUkr8uI1t2w/tNn4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18196,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJey9wVCRA9TVsSAnZWagAAU4IP/A0GTCKa84N1e2b4Do/P\nk1xSLLfTc+9cSCzw0goWN+6NXtOGG8+4WmTi0DgqLmaI0MiBVlQT2rMNVlqM\nJucbdWd26Vd5/KZp1170QKp49DIfHgu4JlO0ez/FHAIEoOT7H4LfU2hbxg99\nCI5CmJp6t2GLhiQXauqGdhp7a2VaoVq6kMVm/5hEYvr2CHUBTwDaJ2JlSOeI\nBsddqH/KQZvTXXjT93LQadcnQyRQ7yyoGNNfItvk7HIHvcjrRfhJGO1qkfQe\nGWbW7pw1642n69Ps2jdk1pAtgoxU0jHO65xQ04u/w4NY2YBBp7S4zaSm4U5F\nv+ophYj/NWjdY92DxwUEOx8ER/G02zkc7r+rgavfeS7iNhG5uvRapJm4gyeL\nHe2AxNjLGgEaD4E1Mov26e2OT4GQHrpqTJO6zgEWCAADzsGpuGcRs3BGkxsg\nkRUFGIZHyrLG055/6oxh/9/Z/04a8gf1Wz8XRafII4he2KBGAETRhx7P5j0T\nJlrr8OQ5+Hzq2Yq0RFjah1Bs0AewwmIseg4dMOIsx36cph96OYQEew6iJMVn\nKWMXNnwBBrGOgAyFcNuJhUwCCX5Nc58iC9xVtr+H1e62+Jw4lr7+dx7zz+zP\nVXfkedA76KdIUAUH57Yu1uz9XNognaaB9uS6ZK0SpX+pAn6UZC41mI+8XDwB\nHEhT\r\n=gK1k\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"0ed14d4e44178d5e0d41cec8b4075aa54d27029c","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.21.0/node@v12.16.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.16.0","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.149.16-canary.223+0ed14d4e4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.149.16-canary.223_1590418453196_0.6431140208552504","host":"s3://npm-registry-packages"}},"1.149.16-canary.250":{"name":"@sanity/presence-store","version":"1.149.16-canary.250","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.149.16-canary.250","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"d6f1f7999f0ea481d40096729fcfba8e6e12e146","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.149.16-canary.250.tgz","fileCount":7,"integrity":"sha512-7G5AsAn1n8/rc1gq/nQj+cDB/bEdzgYVvBPYgBKtri0ONzTm52beWbuE6sXx2mBqJSN7YfIypCXJ9bDDsNwmBg==","signatures":[{"sig":"MEYCIQDxX+t1ri/hpIdOuhz3rIr3EoMofYTtlHNaHVjdOORA/QIhAKPlnDzZ7pqlvNWcOuiXDQXWV9EOglUdUlu27uA0qXDj","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18196,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezlFJCRA9TVsSAnZWagAAm8AQAJjHkRyKOOrspgldJPOM\nGi/JYgqrOaCcUcA7eGO6F99CTUK3zbRWxYNDRzxaC/evITBH7o8aocEySPaL\nMmGNzfB77/tkePEfDQ+2GnrpSkShV80QdbOCwlq3lGwrxhquPh/zlwSPwABb\nGPhohmP7FhUmIRcp57GPBeLRiL+MscszaXOboSVBR37is01t4vlDphTDzi4B\nERV2mUnYnNdMW/JOK4zfbG6PRpMvxiLWIK4md2s8Mlx4OcsbmoezsfM+4kaH\nqlAqnGrqNssrTzxrCjHNI58MRKbUO7fhKC71kL02m7wcZoAvFucAyF6aX3kt\nYNgaWXz2nLbBEyJs6x4uqi2e9y1Mj+T9wX4O1AofS9lcr4BC7o8yFZj4vGxA\nD5rxIiCrKfcFitpMJaekIug1uVehrn2RnjudpcTgjtCuvnVpZepsJ48z9PGV\ntmwWKjR6DDCtNZyGd4FHSq3YYCvXNOBurvn2FZOzeWz2QjheHupLdw0fR9Ul\nfzi/tcEeFG6mSbRsEY1cca0RqiErXEv6iapVotEM0dGbLef4Mgwgd300paKa\nKb5QAUovWThIDihbPnAPhrV9HISTi1CrFNVT8EJHE3epdmxI1TpVB8ypCkHj\nUF1V9y2ZV8H3y6g3r9jTyVFn2oG+Ebi4m0wqRkEXFuwPpGM6J0rIQZbQOjyF\nI2ki\r\n=g6ID\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"6d25d4c6493f59faf966a7d64b3225962decc1a2","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.21.0/node@v12.16.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.16.0","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.149.16-canary.250+6d25d4c64"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.149.16-canary.250_1590579528816_0.7814235577561879","host":"s3://npm-registry-packages"}},"1.149.16":{"name":"@sanity/presence-store","version":"1.149.16","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.149.16","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"7ca937576f8f22577397aa63343291d4b7e99176","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.149.16.tgz","fileCount":7,"integrity":"sha512-ct+iej/s9rIvWv1O9Bs1j0l3YUjOBekbCUrSntmGbw6NOy99fIJPL9n51h3aq3ExWuslY8CvyMdy00fe2BQl1Q==","signatures":[{"sig":"MEUCIAKazhWjNMDt2HPQbECckEAX6bd2Cu2LXmbXM0VekN9qAiEAskE//EIr0OFh53ZuKtO6BSxaNxvAw6cDR/yGSZDdJ08=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18186,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe33RyCRA9TVsSAnZWagAAin0P/AnqUfth9A9Ir11vT6ld\nzqxMK0BK8K18SAZNt+w/odLaVyD2OkijPEIg4IIuqOey9AC4Ds1MTRzI1/vN\njIOh5fmT6P3d6Zmjk5FMYj/O2RAA9qqH0P63wGhpolFso/dsofndNTXOPEk4\nlGFXOKDACtNUqHuj7qLQns/Gd5JIbrt8IGqUmngEh9hFgbRRWidOJQ/mvf58\n9PPEr4Nl663hDuPBvUJitwEUtD1pgxtmmXc+HivMomyhYWygZSVWdrhH3iZh\nRt3ffZa0RA8YHoZ8L80xfiu4uRIe8VxbuphAeciKdyw7FuETJGEIZWzppWWO\npjQUWmf1fT0lUdJJMGOC7//lsp+4m2prRQn4vOQHJye2gtqh+Ro2AcY/cSjp\nrU++AkllEFxAbcpbHn1LPCOfWDT7yNvxZWkGanecdlsQnGMKWqM9nIwGFWNT\nrUjGfR/tuheGnsweZA72jlyuqrHtuu1puJJw541tueRDLAW0b5SpgwSjbUZf\nDbXzTNiwDvX+JikIYPX/z1t4B9U/S85MuvdYOeaHscYiAOOyokdk0rHRLGit\nICVHGfX2gYEFoHgwotj0WW6KLVWFNiRou0mXNincH6Iiqqbq+vAK/oyFdfda\nmODOUSmEUXxR4P3S2VvF5SN1KfgQXXfc6412kOKR8E8dabvh8JFE8tbeboIP\nDvu2\r\n=HQZd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","gitHead":"c0be9786e60c22e6fda8f2ad4cfcaae51890813a","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"saasen","email":"stensaasanders@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v12.13.1+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.13.1","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.149.16"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.149.16_1591702642365_0.6357819176124113","host":"s3://npm-registry-packages"}},"1.149.16-canary.379":{"name":"@sanity/presence-store","version":"1.149.16-canary.379","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.149.16-canary.379","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"f4e1a04d54dbd77308686f5d8b68a1c004f1c1fe","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.149.16-canary.379.tgz","fileCount":7,"integrity":"sha512-MiRZK08K6fbjHXbQPe4PtvYtR1aSLo7SC/7xvuTJ5WCyY5CGCkF1ABfq8j40b9JVuHK9Ln6ues3W9cHW5Lg8Rw==","signatures":[{"sig":"MEQCIGwY6qDJJc/8+vnPp4AVS4ZGHw3s+8Tr5ttw69QIFbc9AiB3108bjCz76sKeLvDcP4az3d3qNdlhfvDWsDiBTSXZMQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18228,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe35wICRA9TVsSAnZWagAAEMAP/iLAjU3j0hf3eSUqY+O7\nk7i6+tNVbPYMlcbqcLRor9nWJ71NS2/05CADjhVRXrygVcnBvB0f7PEXaubL\nZbOD3tkTRXWK6Op45qNAFHIJdkWz/IOnT/8MVQwlg/Fl5uknX96szZQjRx17\nts1B1rp9xdu7FIZ/MOZSnzfpoTut3piw78RRBTjBoEdghK4g7G3AeBDLSstx\nuHWYXdBQMdnOR91SMsW+zqZgqjw6nL6FFRIgrGZ4EqW/g9oF9gUpgCaW1VqY\nttfWCPIfuTnKqkZM+6fsXYvEP6GQo1h/fFB++huBHYaV+TyN8kAnSNUDZkBs\nQ5gfKEu9z+4mzFIh6AZ+4V1ZvaPLGLSqTw391xAoC/4X77OdgDMUNQdzJ1/D\nro8DkqUgji0czu2PyDXuqOtY828f9qDmF6nWNdXGXV2YCnMgJ0q6jdbwvX2v\n+TViXcR4IDjc8aa19YQUOd7kWE7Ja6D76fdL/0TdpaCyrJeJ/74+hjBOzmHp\nFAjl4TODks3vN7XqYyIzsYIUqbnQn19vL9PDlARjzKBBLm32S36xpSod6bZv\nvDOYTtdLW2en+BqhNShxFMkj75mar+VAxGFX+azzW9RujcxTMhms8yBl1T/m\nQbskBViFH1wCw5eNdjzGJo0OUUZYcCeHv8zMF9K2Cc0aMFnDNx0vxdYiw/Fh\nHO11\r\n=FTKT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"1c0830bff5ce62909b7ed1fc12e83912a32d7489","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.0/node@v12.17.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.17.0","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.149.16-canary.379+1c0830bff"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.149.16-canary.379_1591712776124_0.20627821003758928","host":"s3://npm-registry-packages"}},"1.149.16-canary.412":{"name":"@sanity/presence-store","version":"1.149.16-canary.412","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.149.16-canary.412","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"4c3753c26ab62c41bbf94ff10ebe9b5e287b05af","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.149.16-canary.412.tgz","fileCount":7,"integrity":"sha512-jSm4nwd/rPjUl9tCyS+RLjK3IGWrPGV5sM3PtkDOfmt0DiqdpNGQ00gDM2i08t2k6Ip0DYhn054AJgX8bvgVUw==","signatures":[{"sig":"MEQCIBLCJBsv9lgPXF+KE3qinpeKzOdGtj1iuPFEhSG/dsOWAiAi+6nfoiLLUXj/40eD3BHPufu4bMHiXpWx0EqyQJaQPw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18228,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4gwiCRA9TVsSAnZWagAA7mIP/A5PRY6JMCerLM1Gh2jx\niU9CY8lskKH1JI0BSmpOEacKEMql5cCmnmvg7KJ3hhY2gBg/L/1LNS3jncrJ\nhbMEh0WtvYy1m+VnlMFSwEqc7r95zVT/o24i5i1MAOpDSFiN174IKTjG/U+U\nVgfyuDnpRGURExifVG6DFXzUNyLJp2GmGhw6lH6n5wuBWNAuFeGhlozSsetZ\n8Cnb6saRTrBz6mJqD/hLJzzCW7tZtmZK5zPSZPVWOOXOad2MbYGjiUs6tHLp\nM00Q+wcOof9E1KyP15DbDnk9M1duCBngn3HtKLThIyU19+ejeM8g0LHs4U6S\nhnC5fty1pdcmhN3l0pevXkWYUfHMfhwWEZ5vY6rqA3QZIlJvm+DmrM08E6+m\nhtWxHJuWpAWekQLOL9AqVu5CfAEfeDLeHbzxk0DKOO3Bddxw7Tl0wCfooH2p\nE6F1dmRLryGHgsRbydE/foru/rxoVJgehAyWkjEShpDxE2Qb8zJy/APqkb5M\nJ2G00CwEyE88aV/QL5DUjF6pcKNUoNBiQnIk8Tf1SUvbu8GquHCo+3R3iuz9\nA4jYQzSX/jqgRQOYzwiPL/5xBLu8rjyxPbAq9DAgEOOBgVbKhfT/G64qFZm/\nD+oyHuW+VvlA/JtQgx/KUxaAy+6dC35NmsChTbejGFY6i8yT32YU4d5/d1ir\nw+ws\r\n=kiRK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"ecdb4aafd491bfe4eb82998a4428458cbf59874e","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.0/node@v12.16.3+x64 (linux)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.16.3","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.149.16-canary.412+ecdb4aafd"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.149.16-canary.412_1591872538577_0.9715011939602722","host":"s3://npm-registry-packages"}},"1.149.16-canary.437":{"name":"@sanity/presence-store","version":"1.149.16-canary.437","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.149.16-canary.437","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"344a8f56f2a8a18aa9b1d02bc974f7dd9ccdc54c","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.149.16-canary.437.tgz","fileCount":7,"integrity":"sha512-0RkJbxwpLVUFeDTn3ljbYZYEtl9BxeFC+KRclqaP2CWk+0Xbz65ixpPkFV0f6a2hiooyyLQxtPuZYGv92/souw==","signatures":[{"sig":"MEUCIQDibAv6ad9TpspXvx4cRFQQWOuZ+qDmk0i9vU690r/ALgIgNvSTnBIy58xOUHmKDlxFVftv5bGo8hGF2GoARTHxfOU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18228,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6gLmCRA9TVsSAnZWagAA6IIP/0OPyATnhzQYZ3HX3fen\nN0kz4jPH3HhKD2GDP0kOFEO9al3xZ3pGAN+lBI1+3oWnQ1CcQ9a3TIOs3tyK\n6aWkMAS/5IbmvaI4mEvpnwAWJBdbVkg9pKrKKinAb5qDDYU9GvIbV3qR6XXV\nKFcFPP5mSxuHGloHgF1FUcdPWZboIKXp1+Bqdg2STVEsn1mqAOh6fC3V/Wow\nlT8KxRVx1wP5GGSM/Luo9u05EdvDT1OFnTspY275PH2+KVE/wpyMS1ngVvMt\n7PfixyZL+9mbNIF/AyFJHLKSfDyNCgj9fzKzOicyovhOoeivuWtM8WdNQ0Ep\nv3jAODUqVsGSeDHu5FvOhm8BkwX031cjgrHRUq4mMnLrf0P1fPm+Nx8QAyHF\nEZmUDl41p+6DyW6d/3pl8EzXPUc6Vv4S6/m9gXxrHBNGjj6AlYPgWkENKTNT\n+711Dlr1tY2peOGkillZOb2OiaY59/R4x8unkDRMZruRk22hsA33hpJHzhO7\nlwwQaUk41NE/npsKgyZTTCK9nfjImzowLSCjIkXjslGtaY4ReZgTWxxq/9uL\nROYiJTBvS6Bjqk+Vxmek8ImLAB9aFDNI5Ue0Bcd5KLdYPO9Aaidvp2uuN4s0\nX7i9Dx+lL4Xn0Bey+WHFScnA4f0UzBEP1xYtRbghp5kZZOmbK7Q9uN61PJ00\nklsL\r\n=bCeP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"52d325f300b67d9323ae91ae9967eb5dcdba9b5d","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.0/node@v12.16.3+x64 (linux)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.16.3","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.149.16-canary.437+52d325f30"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.149.16-canary.437_1592394469825_0.9758981764476786","host":"s3://npm-registry-packages"}},"1.149.16-canary.438":{"name":"@sanity/presence-store","version":"1.149.16-canary.438","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.149.16-canary.438","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"95a4a1240df48e6428bd4c692e73a487173e6211","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.149.16-canary.438.tgz","fileCount":7,"integrity":"sha512-qUB+fECpZMhlx51sKX4J7YCZ0RTw1KzZsadM5ybl+sixP8pzUaxLwoHDAwSw5KugR3y9uvq+oodv4tVbDUzGNQ==","signatures":[{"sig":"MEUCIQDpYWXjh8U3n3ZOgkTkztFFmXJ0fdv7iic2QIARmR2v9gIgESoE6QvFkNPtPoqDpCCErXxCNopItwVi0VOi7wuwthg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18228,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6gQiCRA9TVsSAnZWagAARvcP/RLW8oWWqB3TXNCjrIH0\nhbhwsjv7aNzhpOnUv2xHHwbvIn4mOOjgxvhwBc0VJO/HHGwuCGktx9r46ZpY\nYBUV8e8KafxbdFXQ6ermwZVZUYO5r8TrGA2aOA7pr7o7spXGAFE/u5hqpONN\nSj+l075VnlvXa16lMtvSjumqOQmkSbKNb884qRji95hclxGK/jmobDpUTF20\naahZNvO0diV1QHtdQl/Kv1d19JAx0pr8dZQMQMNGHd+M+8XFEs21K1EpuGYI\nPj2ZVOw1GgiT76Ngt4VEjLUKjZv0SdUfwqqwee4kZk436oND9C5PElw5ZJFh\ni6BtFAYtSvMa9QdoLmviiJd5Rq+eSSqqwKA36aZkl1UwXlCzIFm6w56I+RId\nQcx1gs9LVCo2xoh3R6VkXTTyKgOj3zAUJgcucKfONVxGkNXNEHtou0t8w0m0\nH8Ncbw0LB3vUcARSphDtnWCpSdZrs1PrfHl7fhiCS8aqOLVoJJEX6RGAWlzu\ndcLCna0RUgfoevGmTd4qjcbQxTYINDi+Mb/UiZae9mwfaaxm43HuLMOx23nY\nPa3KcR7HbOcp7piYbNPvrckXRplqGo3TXtjRtLM46HJu+j3Pl8TnrLPYvUMN\nwC9qTweJDqeepgYEUpDlFhES3RCa6/0JOCxDWfQv2l3epX4gkTYx/G9zjjJJ\nXqH7\r\n=dl2b\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"d35376ef6be37da79c04ce921a6cb010a7777c0c","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.0/node@v12.16.3+x64 (linux)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.16.3","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.149.16-canary.438+d35376ef6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.149.16-canary.438_1592394786468_0.5484764589149647","host":"s3://npm-registry-packages"}},"1.149.16-canary.440":{"name":"@sanity/presence-store","version":"1.149.16-canary.440","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.149.16-canary.440","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"8bd9cf5fc2d89bebc4bf3b6ac88ae5427a623cd7","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.149.16-canary.440.tgz","fileCount":7,"integrity":"sha512-riFZbkC/W1gDfiZArE6uf8lgg4roT0pJ+3XrzI1FXZorlLqyoDfBbfOgielxXFN41ZnovdqUf80FOKEzb8YxnQ==","signatures":[{"sig":"MEYCIQC+03oYInNay9kEaOz6ejNCoYwC/fxKRKD4kcIZ4bIHqgIhAPZnv9oKH7ZjsjvnHyvIqRJxsVdV4K+ADrZ0rlMYsjG/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18228,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6i36CRA9TVsSAnZWagAAWLoP/1II1D+WX6wxLPzgD1Jr\nHfgmRhqlaI3J1mkDY/W6WF9C6l/GYMsISvEGJi6qToWm+lAba/yPBQN5wK5o\nxKQJxPcHGBHUMnoPIW9dNopfYv3KUYpOAMCCr9BieF41nnhXwVP803EsQ6RZ\n+iIXn/iLNuxj2vlt/Gb3XUXqdBn+g6sMIkE+tDnKR2Af8PW4UKq/vnyL1Pku\np1hRd15DjclQuWEZbF/dxnO7rFbPoBC3d4z0A2geMIIiAXMEI6+O6DeU/3s0\n4Gubk8BHw33JBsSoFIORoeeww+oZ/CG1KLePJRB84yPNH8vtbzl196dL5BRW\nWso1LS4Y5yROF2snKhIDDVwA/0nDVZw8dsRNymX3pNUpT5vo/Guna2zdsOTB\nFYmuCQpH57c6jfsV7OdibSLpTD02z2b0EPDqQzmceHzYqYMfJ3stcBP3SBdk\nnALqm/y8bLRM4znk0WtosW1CJb6cYl6fL/8ZVJ2FlDSNddwNdaXhF9LCk9Bn\nIwa8rqWfwt1U/tbOH5ezevdExx4qE9ojyB7hvuRVNWK9/RpZV6GmXEoZvUVW\n/srRPr1zC79NAfi1Bg6ec028tr4uCH4giB8aY0tHNZZe/0s4TU/3toKazubi\n5v9vpfKLumsrc8nrvAgpJcXYtlXtuaKN2/4yBahzm927/9fXSDkknrpp2nfZ\nu6MV\r\n=OplS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"5ba6ea9375f8dbc6817bd0dbc39c6780e8c63279","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.0/node@v12.16.3+x64 (linux)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.16.3","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.149.16-canary.440+5ba6ea937"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.149.16-canary.440_1592405498011_0.6521106011474893","host":"s3://npm-registry-packages"}},"1.149.18-canary.415":{"name":"@sanity/presence-store","version":"1.149.18-canary.415","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.149.18-canary.415","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"2cf9584a220a16bff6fb8c456e26fa7d23d1e97c","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.149.18-canary.415.tgz","fileCount":7,"integrity":"sha512-7H805ULv05g4g417Sckf5bEv9Hute4uFdC6N9k0yoeRf2EH0gdUFp3iRNbuC7ke8mmTG5MuRi5NfxB/FoyY5Tw==","signatures":[{"sig":"MEUCICQKOLrc++UMfarS/jJVx/QwGHUbKoAh7gYKz2b6/DdfAiEA0QNW3P24J2miY/p7x1QNEQs69+u9RIG+1usR1/sRspY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18228,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+yMCCRA9TVsSAnZWagAA/hkP/1m3HIXZEmSeZGSWLiCI\nHZEkvd+JUTLQwwKG0/Q9ODayS/m4d7R17B1lndNJwbg7J67OpsUbAMOzU0PY\nYBGb0zfcHf2KcgsOosRw7jiA/A79vLGnY71KMp2cae/3UQFR1qp3T+LlVQNG\nNeL90OIac+vkZED9f6cvyXO7zZ9tH9FsSGe3KFb4/JlGmTred/hkSvPZGE0i\nbVV1r5q+oPo6UVo/eKtlo9gBc18o3UQ79uoTEbujldJ4u3ssOpAcUjGNQvn/\nrloA3CmT1ntDuy0kPNBZeihR2Ka4wUgyYRHk9RJOv/GAA7j71E+nsH4tF1S/\nKGww6i+Qv9P95JnTQu92TAu2RieDwTvPAyLqK6TWb7BI01KRz0tCVbRH9euL\nZufY8JgI/a+7Dvj+tn3NBMUMRrVrXRqePGcKeslk7oNC91YHcDsAKmilGwaG\nhe2O84q2iGst4zKV4zkFXimcWJDocx0mBKUD1+OViOXXmoXvZlUwAcF/PEZ4\nC+hMtKk8OsCGsh1ibnc38Aa15je9BYoDFX/1mmOs9yVeVVDsMgyXKMEtrEmy\nzgW6XnTqSoSiquisbmNU2P/rAENnlBXe4L352KPKH/Cqz5nIwibFQvSpimXZ\nl7VyPZwuSnzBDiE0bIiWHW0hobcfStnHEcHZYKd7PbaI+bdq5DTep4olNVsP\n8tOd\r\n=/17z\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"d0ea5d40eea5416bd557d8f21f7df69a0fc88373","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v12.16.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.16.0","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.149.18-canary.415+d0ea5d40e"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.149.18-canary.415_1593516801685_0.7987082912706893","host":"s3://npm-registry-packages"}},"1.149.18-canary.419":{"name":"@sanity/presence-store","version":"1.149.18-canary.419","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.149.18-canary.419","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"9223e6f90a310c77b85fd1db357d4b44aabd4598","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.149.18-canary.419.tgz","fileCount":7,"integrity":"sha512-sALtWHRdL7pvMknDZhUcNig2BO3fOBkhKz2ltRJUTiA55K3uOw3fQgw/KtO6IPq6OX5Y9YETOUthGsVTeVsRrw==","signatures":[{"sig":"MEQCIC0nuV448BEZJ69yzzgGXkEpf4NmmOygQAaSpR+8FY45AiBntExnAxiqOYv/f94NQhj0MZnsVysaCpDQ6uFonO3PSg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18228,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/HDdCRA9TVsSAnZWagAApqwP/RHkCwdK9Q1uT090s8xZ\nLhe/MMRduM+92514kTU8NWDdiFJ1FyGuY2qph5nV98poVjck+aXG68rsxYq1\nwWSpMkwPkvbTRUpftdEnoJu96eVwhxFNkDoz1snvIA3r6Q/wJkdu0GqEibrC\nqO03Q2L2MlD40NEfI2+PqndqaPCy2n42hTmDFsWQN3jUmY0zdri9xBoFX0SS\nAh/fVEQYexyYVGoxhoQescHBBf8Y5wi1V3UwO5xfvTFntfF1maXTCwkSvltA\nMCr8GC+16e9wyHzfdozR5pPJHREPLJDRvVTiCUG59kPato2OLvHF09pGkLZc\nozRONfwmhZXhLc2mC1I2iHmBasml1Kw/eSYpvSX8GDqFpH3cnQXcx7C2oA7t\nv9DPDs+NqeSvp8wO0Q7kuRTszEiqCpybXoc+CVeE2xFMoxTzSqpUObnxLZee\nzYeZB+nAhaCoiSWCHf2igLft/YGFkUoLSIM1Dl6M1D/87xLdT+/8dtXO+umK\nMnh5SvHFJP0kkctjWIpNLHgCdtuQ6qpgSWF1GqmA/MTc7x3MARi0JCQ9YuIK\nKmq0hLq9nyCkMmE4rml/DuvfVfKnEn1btomJ4mJD5eYQmmaTdl62NXf2QWdW\nlvlFyBeHe2GgA76bOi9Cftsc6cNk835n2yzTXzE8IW8rWlXUSYGMKDftmgrO\nvbq5\r\n=JrxY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"de633d23a107af6d6419e5bde9b81327f32c8724","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.0/node@v12.16.3+x64 (linux)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.16.3","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.149.18-canary.419+de633d23a"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.149.18-canary.419_1593602268921_0.203562554809946","host":"s3://npm-registry-packages"}},"1.149.18-canary.421":{"name":"@sanity/presence-store","version":"1.149.18-canary.421","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.149.18-canary.421","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"2bab962f84aa438c6b83da8746b33bd8eeaf7fe0","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.149.18-canary.421.tgz","fileCount":7,"integrity":"sha512-kpcH7Jn3gOrCl/DswJAtfsRqlpuw7koP+LgANs0Bf/g5z6uVmodfmiNxn7lLw5UZvS8a4cobmUdpbf7mG/y3fA==","signatures":[{"sig":"MEUCIQDUxdzi29YaK3UZjhPlJWyhtXU508StSjkUNvRNgC4HcQIgUovw+AX3FLl2j8FSqoWWNsbCnOjpqyK4ODVQ46erz1M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18228,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/I8WCRA9TVsSAnZWagAAuTcP+weVMZLc4crJKzHIang7\naC0ofe2godIzXTIOBOREgrMdvnIkaxCninyJOR55VKtiF1ME0etd6ITNIp/G\nC6PMmkiLEh5kUIPliV9PpTAgwzRTSFgfnDCSP6yAn/P1lUlRWE5FdhddNMD9\n3MwQGFHwwbNOFssEFvVB8FMl14/3RHs+KofuaIt5tdgCxTnO0WDD0ipbfyrg\n2HIi3bXWJ6mRao+V2VoBqmUqlUkMYJPYK4/PcajeBfVB+E062MQZ5bGBV4Yz\nNiIe+9dGxAp2Vzt3JM5J/3oIZUkTTqpWzJ9BJ3ZQU8BJXTLhTkw0Llow3RhU\nvzYM8859xF22TghjwRq+keTCkTVz2LiNhgAVV9i/OTJobcH/HsitvYHrychs\nXL6/Gf7U/a08BdKxZvq7jnNSbE2JnqXZa2U1irV0iynhQnPku9pWO6yynJ0V\n4Hewp7gCLW7FLtZSretovhDnoct7N+VEoXTv98Qc8uNVs+bJ5OjMHh3wYwke\nahLIERLKVwRoclAMGr04sCFtuNM31ZvQ1i1jLZe7ZSMQWCUJ2hc8gbkLqWW+\nXZcrVdAKasqKNcmbwxeKAAaO+T+j+HrtY1wl/uc6pqii4qbDuqq5L8wWhJFk\nipOaxA2oUSE/m16i7LkwtKRK2+5xGtwiSlrM7WCCp3JkzZo9ZmG5Ys06KsTE\nCVmr\r\n=xwK2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"4ca8600ac2071bddc60e5931e3a19f3412864819","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v12.16.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.16.0","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.149.18-canary.421+4ca8600ac"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.149.18-canary.421_1593610006031_0.060506198499205244","host":"s3://npm-registry-packages"}},"1.149.18-canary.422":{"name":"@sanity/presence-store","version":"1.149.18-canary.422","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.149.18-canary.422","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"ac62369f904f522e2c6825c1cb5ad35f0f502cc5","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.149.18-canary.422.tgz","fileCount":7,"integrity":"sha512-9XYoCSrCJG1I1NfZudeo5HbI8RswyURIBWSLFURBCGl066PouX8SRLOYl+eznx2NPWMjPr0Qyr4v1kMkQD85Ig==","signatures":[{"sig":"MEUCIQCYgolPwjr3j/5ReM60EuYTN4djzFV3fQWoEZy9RN0swQIgdtQZyrkBF15XCkzN66vqLurlNvs1NKcmddSNldsPJTM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18228,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/Jc5CRA9TVsSAnZWagAA4b8P/1dVVivIXMGfT+dSRgr7\nJIYNdxZsoMBrlxUTLymeHH1fcpWAeKDdj+zqBsvq5UojGDpYdRsVPvhtjhc9\nRYproz98QeFsfUe9dy3tkFy/V1855Pk8MFgVZZFBN9mJQhNhkesynoNqk5XT\nNpLk5l8a64Tl+rYw5gCUSPV3778TBApmzNO57fgvnZzZamMfoBF88tCQ4Afl\nZrDQ3eerNIMIl/+0Ea3Cc1wak+FdIuB+oLNedWNfQv7DQcvu3C85P/KCp+gb\nMeAzma8cT+/RrM5gSUqz2TAl4d2TqI2oxtTCNNxaxZZe2rE2F8CDQnyCtqVS\n4hduTmX51FFT80Jnz7UGjeKxjsoWgrbSc9vEIvMMRK3eIKbgIIYWrylJ+MU0\nEVLIYZum9ngO/4IJH2TXt4RCDNysfnZfndu/ZkU7SW5WCjCNCfhQ2yIMoZeM\n+Qhy0p2vQ/WVag2G3IbOC7DGWxgFi51fdFGGgIJ46gmKwEVdAv9/sbeKZLgJ\n6o62LF0/XXx5PygFQ48nJw4DOLrDTo1P/v9MOv1915Ee6XG3w3xlNDiOiGIN\nzFCA0Q2kW6Ik3da33VA6zRvV51nlByN7HtfRoZcIckEJeg7/jRztObx0j6qf\nBfAcBeYuB/va/Y7CnoWK+5SPNDd2YlQZ1Tm/sG8Q96zqH19ciTpfQLWusYYg\nFn31\r\n=Nz+S\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"17ce28168e654e6b30c2473707a3b687f8d4f3ec","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v12.16.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.16.0","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.149.18-canary.422+17ce28168"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.149.18-canary.422_1593612089362_0.2776515909887767","host":"s3://npm-registry-packages"}},"1.149.18-canary.423":{"name":"@sanity/presence-store","version":"1.149.18-canary.423","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.149.18-canary.423","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"fbb5d139726a44c960a378915f52cf2a7d08ba3b","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.149.18-canary.423.tgz","fileCount":7,"integrity":"sha512-NnxRFT+BkKZw1Rx4xmxYCy79xUGcIEFElRpDwclypUbfmWqwMlNp5IE2teLCxThRcPt0KLKRcPPGV516IEEqqA==","signatures":[{"sig":"MEUCIC8x60qxYZXu86MqUCiIby+QuQMPsG7N3nGlNfLrFrKjAiEAvUlIGpsBl9YezqP/VqDpm4oEso/1Bj1ZVjOQu6rNFms=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18228,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/KiRCRA9TVsSAnZWagAAzcIP/j5UWmFOTaoJzJ9Ah49f\ncrmuBhE4VaDd7oc6pai4PhW8EDJyKwy/JMLcHHDxZsu72ey8rWxSkHhGDBIH\nl1s68fdSInBAQe1dF9BBjhXpDdM0NsG5z8xAkytZclxrMdQD8gomQ3E0Ytvs\nYKhGg9siwf3KNM7iwkNrU1AYL2ien2gG5FkxIAVHRr1n0B2VhHwmOF8ceOXY\nwQdMSPbcCF2Wq1KC1tPTul7ssDVWtee1ksjsEJJqukF6hspFSMfCAnqIDNJB\nDN+NYq7B9wiF2c+qN+eQZP5O0ytTs3ZsDJEXgV5nnuV9y6efr1v3p6uIABH1\njG8lArw8PzUuN+/ChmwP3Z50XZ+uQSDAY/zH/u/+ZGW7lfWG8egrqnsTXHz1\nFjQJ+bwYDYMC6XpJC1G5hgGX/CiUcI5UMhh2ITbI4mV7caCip9MUO8jd6hrk\n1EwBsiAMo7SXDXuDOTLQEjKHsVXj5fKWv4nhFIlwVh8p5ZyQ5EkO85rw1cWq\nQTpfq0GGAgNbCDqySKLxr4JhIb2fBfPYYZRogIeOV3HWBgWlil+3RyBj7Rus\nm28UkDIhompfgiGM4/GJtO3zQvrrixYiHalt/9rogLobhDK2Tsd2tpAYKOjs\nTIrODW//QwgZ/0ZYTKXdLLBCm9yLK624mVOlpVKKF3CFv0h5JqOBTNpf9/+v\nyGky\r\n=DNNT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"2e1ea873325a78bcf7d042100406dabd13124464","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v12.16.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.16.0","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.149.18-canary.423+2e1ea8733"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.149.18-canary.423_1593616528732_0.8852678343583111","host":"s3://npm-registry-packages"}},"1.149.18-canary.445":{"name":"@sanity/presence-store","version":"1.149.18-canary.445","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.149.18-canary.445","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"2ba1f182b38181ac4de29c047b7723ac21eebe03","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.149.18-canary.445.tgz","fileCount":7,"integrity":"sha512-eUSdTfTTefR5CeEfzt66qE4D2sZCOxnu8pdP/HfqWILY63fUyaA66a6D8o97fx3D+jU9DGjxGlCIibJk7w4EAw==","signatures":[{"sig":"MEQCIGpxA7/ALDQZ7tmoYc+irxRCX56rB64+R3Ncu1W9HO6UAiBP4pnRg6BdHlAlmdQWkZXzx6NfEbuzw2V/BEyuwc7tRA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18228,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfLUkjCRA9TVsSAnZWagAAmrkQAIiLUPh41TPbfRMdttOR\nUP/OxwjIdetpzjJOdPgAM+DGfHAAXSf5SkJWn2dsbqx+mkHNlb1UphR76q7/\nmxwZO7blWqpQ5Nwm276elTCrSdnn+WuoQ02F/5t7ovYQV87C3tO6xWH8s64s\n4S54BXbPhMqYt5L+eyxQM/IVRWcz8uqwkUYrTlIZayNOZyQFnlu+Q5Ccs95+\n2oaHh2qXynSdyEgaKTcRnxFeLHqxoI7Uqeg6774NtQ+cY42OzecsBpY0eGYD\nR9JjMz0hatoPKX6gXwNo6xHMqN59u+65eGN9zGhJ47xQegJ6kZZliXln61jR\nsRa23AvOdyzmyQaNZWojdzfu/uvVCcbR2OWAOItowfWRC/JIcBj+wAaeEIZ9\nHAivRFTRGXeIFHrC7Gdj+jQqR8icwLbdEHp3T5nFyDu5ppm8W8srJfKH5u3I\n9YG/R5jCBR6Q5/HTDupU1y1qiDHbBbaLvdZ9VuyitXk/IOuZ7CcdorBZnBtX\nXTZTByB9/zfST0fPFZusSqtlkFkcmtRDQJYDTEKet2/xQAP/KTTSTgxlPMC9\n511epq+h6ZUJKPLiKlRMLAPOpSxOiw0OCrqE8G8Uad/b0Cov3IF6EtOlwGLi\nv82O/hYifKkujMkHM047q+TEEsvVqbrlsfSULIVtstuACoU8OgpZJFLf80B/\n7rFc\r\n=nQMf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"22c42b0aa1819b03e22680598150928b00fc2814","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v12.18.3+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.18.3","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.149.18-canary.445+22c42b0aa"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.149.18-canary.445_1596803362568_0.1493617460969654","host":"s3://npm-registry-packages"}},"1.149.20-canary.460":{"name":"@sanity/presence-store","version":"1.149.20-canary.460","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.149.20-canary.460","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"2ea8e6db4c6e09333219bbe65b34f73cc6e6eabd","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.149.20-canary.460.tgz","fileCount":7,"integrity":"sha512-vfgBK8zKf1VXXaBXqTRpmDfZXK4wgOQjE1cS7g2T+WCtv6+UyWSRruHKY0reZY/FPN5ICi+g0IS8mPWp7v7fsQ==","signatures":[{"sig":"MEQCIDR/jtz8VIUv5hb7pXR0ClW6ke+rbYsuNsh4hXnu98dAAiAEHs3O7hmrto0tIHF8lTW2K6YvePrusoNdTUfVR+xnuA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18228,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNvR3CRA9TVsSAnZWagAAfUkP/i4CQcP3LI6P15R7GlsE\nPY+AXGZGx2EBR54HiQfTDlJBauQcRd3hD0WFQeXvmrStDXukeUskrSlgok+0\nU8yk76xv9yPQM5qJgmcgx5CSDLISl3aSBRC9rDi1CmUG+/L0aCKhGY4UD2D0\n9ul1C6+dzOIOmLy5EYJTB9bUOYCDnf2L3Kbns62YYaN7g4qghteaPki0u1ot\nVrXo2wWw8JZFmGKo4ThDatY9R76ccbX9gNnQTKQXALNH7sLndXQlHdgxBpwg\nUtvWrKnVkt0WhqFbd+u1V39+NGBpwjVmwGZ2zGTDX7/X9FkKoPPwYzBFpJIS\n0PipSRHBa4kmSP5q5AMi9JqOXShiu3ygsft1+w9PkcJpReM8zuIg/ySAr92T\nGIj5lJbMxy0cP/2h/kTy8ggIV0rD3CJFL5dqoEYO9w0BPRFfNGPxtZcH5w6Y\nWm0PR3POYSUwp1N7Tcj4mnl1y0wgefZwWPIqVc0gv6TG/HMrnPlx+9VHKioF\nYOFfEvfaaampRIfHPTDmiOnIkaVLG8J+p+F9BED98dT+1r8F6E1gm8eAcKRg\nP1KmUFNyDnsrajmSHmv+344rYJWsZ1x2m7Ukjf6uvz443WGdPB1r0YuxwRq1\nZksUMd8CpH90c65Etu/xa/QT0507jWwdc0OUQknSXaPDKAdXdhwIjoo2MBC+\nq3rH\r\n=eKCl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"d0557229676ca160325a6ba0d2b66194a3351c73","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.17.0","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.149.20-canary.460+d05572296"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.149.20-canary.460_1597437046891_0.8869911560419221","host":"s3://npm-registry-packages"}},"1.149.20-canary.461":{"name":"@sanity/presence-store","version":"1.149.20-canary.461","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.149.20-canary.461","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"c054dde70feb213fe130bca019b5ab4b2b98173a","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.149.20-canary.461.tgz","fileCount":7,"integrity":"sha512-9QOvHojkwMIe8Xo2lgGuVQRq8OlXC5x1i5cnQf/jrwpOjXDmW5eYyZ99StRHIOlCZ4tSMHMHoPEs7WwuxEDcmA==","signatures":[{"sig":"MEUCIQD+MamX73rqQQCAY40eRokixbpvzeBHgfJ5625MPEDU5AIgQIV9/32Sjv21Miy1V0nGxNNn87h5EfuJ7mzEMF6SKC0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18228,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOkaTCRA9TVsSAnZWagAAbuUP/0tlWzY34fxt/qOrKufd\nKa8N4drSNcTh3x0gmrk6NJfGHAhRZb1/MLeBNkgfz5EVCsLfNbziDBK0D7yb\nu1jO/wfA3DiD21qi7f2Pe2j16nvlZfNkJ7z6vEmWfuS/fNIXDJDiYduf0aC6\nJYMRnM1ouGR0RjpWQKivMeRHYR9J61Qb6xSwnud4u7kKuKz2IhP4d/pnPgl0\nyMJjZO7/DTDLVovov0ccnScgGPzU+CHSwcDS/0muY5cfM/AlBC1PTytqUZHN\ntXYi2dE3zdG9u0+7Eq+PYLwV4egToJNyGBRDcnX0SXgbWNvcUL0k1awYmKE8\nNDXB8Cn/c8TzpE0NB4IkVYLICXOKobWG3JUs6h9DVyGEOCHJ29gUCm4yVHpT\n0xGo19t928CwMAul/fW3AjriGlMMiDqgwaXkP2gDRSzuTYp8T7tPKZp549PA\naGnO++IXUIER+6n2eg+qo1Wd5VIlU1PijtX9/RWx79YzizDsjUu5eev2HKgF\nMrK/fqYxLFVTayXkP33d7/55fb5QcZxnWyDBBFbCQKsw3YvQ7y0MmtVwckZ6\nWwSg3p+CGmckFd+dWRtQ8vXlTHN5XS+4FcgPs53kS5GRYkoIVvz/OcTSm18S\nh7Ve33qsQn459YQrml4JZATkb9+Un743T7pGS548K9dpaUKSuhhUrvBCQSty\nb3ep\r\n=Bkzx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"8db3c4a80e6e6c14378776a55d8071591f30cb68","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.17.0","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.149.20-canary.461+8db3c4a80"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.149.20-canary.461_1597654675271_0.909719268139378","host":"s3://npm-registry-packages"}},"1.149.20-canary.462":{"name":"@sanity/presence-store","version":"1.149.20-canary.462","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.149.20-canary.462","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"d75b8c39905bb106bb30c3142d3a5ae7e61e53c5","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.149.20-canary.462.tgz","fileCount":7,"integrity":"sha512-mjRp20H3ab9YC8HnIrWHLgz//hxLVUlc5bG4pXAjrXgEPUTfBtb6WpAQG8xoyTkn8HmoAHDZVdJfenkrZJ2uZw==","signatures":[{"sig":"MEUCIQC3v7C0G/xFh1qqSPBrlYnDESNhoJrq/Z7yzfI4CdSm9wIgN+XPu9kBByUJIb+IcUmS4JSyFriNa3L0wV3M+qWX4Dg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18228,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOlN3CRA9TVsSAnZWagAAE80QAJ67Ua5CONNFZ0sq/v8s\nVv2MGdrKXJ5bQtmFqLrVruXoFZeBaM2kts3R2EJTmRRwO4pB64BRtEYBjvAQ\nEJz0tqYt1XMbA63ePWr0mXAGzLfCJz+XbS1F9kbaBoxliOh/sczGj9qCqxwJ\nPsm7MQa1hIN+tXrlBPCKdWZC0avfj4dLkCpSvpq+CwbmX9BvNk94hnN03kjV\n865qndpVn5iKki2sP8zQdXpAsteOc87Z0FCyw3arSYwvBzYgOLpgEuLYcViI\nPluxCfMbDQT6NXtuCx6E6t7jc9hFiOPTv9/qaTSp9/0+VWy1zZgI6PKJ2uZc\nfqb3MEmpnXGNdbb+QZXcJSSjRtbnsut/zggQJYY4by3CQBzqMZsxVRNndICg\nBDEJZjHgL6CcmfxB70LfmWAvD0WCuApSy3eI6d8iQqaAEFAE61VJdLpMPXYp\nrqvvVHXCQ9Jl3DvEh+XWJMglUv/s1FWvEhIVHxdocLeSnQE46PoVviqpgDVW\n2+H8Tx/GEFOECta/Kq42E1GTCVmsbGOPZbbD0d5i+VuauwWWlgDdcK2c/3LC\ncl4KfE3HhFE6RcGup+/iuMBbXu7gibfqRISY807TI5dlT53U/HYtZgOT6iCa\nP8lBeoID1DzIUcGUT1/e6D+99L3BIYhkTdTesYD7O/aSS58IqjdYxpYwVCMA\nC6hD\r\n=RTgX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"225358a70fcf89a530e9e5966c98c9638a366efb","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.17.0","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.149.20-canary.462+225358a70"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.149.20-canary.462_1597657975174_0.4404132384695001","host":"s3://npm-registry-packages"}},"1.149.20-canary.463":{"name":"@sanity/presence-store","version":"1.149.20-canary.463","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.149.20-canary.463","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"95b2bfcee81e8893ae6d4747a9c6fc6e2d86e1a0","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.149.20-canary.463.tgz","fileCount":7,"integrity":"sha512-s/wrT85pGyAJTBZed45KX/EI7GArg27eCIQEYFeoEw0rTIxAhdWK4fI9A7FZ1HWcPnIxFJ6jYvC+Cyi3X++iXA==","signatures":[{"sig":"MEYCIQD9EbpI6YdqYnR4E1jnIbJouQzhpAh0wNpmD5yJlJZURQIhAP5b73JD2ZXwIzZ24hP3pWXN1SXpXfBuc5lgmYOzBwCg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18228,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOnRNCRA9TVsSAnZWagAAc6YP/AxIlmVFb+ZeL+bHgec4\nIMxkk0qWjkODO9L3zVrl/NvD53epk2wMSSpEriR4ljboetVUvXY1TBlL3bvM\nAhAausdj+UcL7b1J3ZdMya/DZv6Wmba8vLY8ImuQE7PNbf/rsmzwF4+HkZRT\n2KaK9A4tZA/7r9liF8OaBPg5453jXhmBLWgbTJHjIvh0pxsWhb7ieKVrvQUy\nOVJ6uCRstckp+55d9bk3j0SpbDdtjU2qg9AKLTbVeudW0fTj6GuCqU9BnfZY\n6bHi+22nJ6BrnBbmgaNgMKqW75fTNPI2YWii017mvkx4FEe7XbOUTLNTN2Os\nZ24qiYapN7epYkF+V0VSQjJEMCyQrpGCAfJAIBpNf6U9refsgkkmgE0C0r9p\ncvV6P9p0+30hNHqIvMXYdjBYonZdHNXheAt2HqlEj+oIPgVAYw0YHOrW52Xl\nrZpKIz/m2pyU3R9AY34UPawHM88Y1tnbHi4PBVPPGe5kNdS8ECsiQpw2Xt6X\nYVaq+S0n/OUSaXhj25P0k8kX6S/G8OQTq7QUhQ59ZkvY4pe8+WPBS2eStiA/\n08F2KgQUU8TAQH8y4t/45iZ/cbNA2OyAzxKw9eg6FVqy2AGcNWXa6tPYXK11\nBC673/Cc/T/6mAlS90uKveX+NSkacTb3iRuS/00lTmL6CDGMcZ7zc/HKeEVU\nTLVE\r\n=fNnl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"fae42f5e0b5f09e725a3fbdde6ed1580b3a98d67","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.17.0","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.149.20-canary.463+fae42f5e0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.149.20-canary.463_1597666379944_0.5427002649404566","host":"s3://npm-registry-packages"}},"1.149.20-canary.469":{"name":"@sanity/presence-store","version":"1.149.20-canary.469","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.149.20-canary.469","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"538f1a4347875b91e99f55ed9b0e2546e3ad1650","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.149.20-canary.469.tgz","fileCount":7,"integrity":"sha512-Z7nW75M1Ry4Y9cRPFJ9ThNn/8KWfCgqQEEI2FM1hPFmLANJco6AnWgO1cRiLtmOmuwreXcorh5xQlNUJucUcjw==","signatures":[{"sig":"MEUCIEoHnoipWqVvbuGTQNlr24Oen6nJjeHkTVNnGQhWMrVzAiEA2qsYCaBp8qfNc3mWE2zzSKVynLkoHR468THk9iVs53k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18228,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfO5EGCRA9TVsSAnZWagAABxoP/1MDf5gWa6ujeFULopZQ\nY+Yne5Xuq3mCbTbLKBbLO1htTYIAqCddtJZ6h5DUH3WeR+ks7MKOIbVwn+xW\n0cjqud4sjzR+kVf2h81mKZogONr1hVospplK2chPLRWFNkHNo7qsJNxrJBm0\n7fG528tleKwlP3jgS66T0/zV6++wax7TZJ0BIFc0zgSjXhgIoGiEusTCyE03\nK7ugHA92IRgdXs1TDD9y71Cjeu3O9Y2A6ebsK+SM98efupI81tg9r73IvCrX\nfDtD7bm9QDGf9xMZxVlRUTTbl3jOFqe71qSPv5Ud09pv00a+YLY5ktIxOdb7\nWvELi/vXLiNi/eoZCsKPEjaFDF+JIUeR81d4G9Rf5zMBAAl5vHHFLtNzFHGb\n1rzCi1LWWlSumJL5tRyDXIqn5DKklRJor33RByOUPg9hdD0gyx1qB9008Pwz\nbhY8fJ/S6Ff7JZAJK1xDRgcF+J4rSq+pQmuyxZDP6O0KDmbdNTBUvG8zFQBS\nKregYKhIsPT3YKueuYgiQ06yqkWc2G1t18yQNfm6OIduFydrg76XmsAiDHB8\n7XJIslGB9iryFaCklCHrr+csoGCmF9a3mypMvCVm6HGT4qLsDZZIDSvmFMuG\nqWtDh64BK8/M2JzBcDdAnzuQ20qTy+HTOrXySY0u4qdkToUHHSBJqF4pUJ8s\njEKW\r\n=AR++\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"0695e1a844259371eb97dc088764058279c5281e","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v14.7.0+x64 (linux)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"14.7.0","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.149.20-canary.469+0695e1a84"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.149.20-canary.469_1597739270082_0.08550927463469216","host":"s3://npm-registry-packages"}},"1.149.20-canary.486":{"name":"@sanity/presence-store","version":"1.149.20-canary.486","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.149.20-canary.486","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"70603a760a813c76c3b1374f8e0ad903c5e544c2","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.149.20-canary.486.tgz","fileCount":7,"integrity":"sha512-cVVJN+oaAhcCMj0uSCaeW0NeNecZjMJ3j4jcrGLu4CWZVu2e5ntGGMDBtxPsLO/l9QlCpsCvhwsUxbUtGLBkiQ==","signatures":[{"sig":"MEYCIQDYKR3MdsI5I22vjtii+rSvwQV3SPGJj7SC5MvSAS4IHgIhAIaq08DofxpPx6C/9vOAzUvJ5l8jkHyQ1PNbN5eouDGt","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18228,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPR8OCRA9TVsSAnZWagAAirgP/3TyXIbLsNZr9LVMnhTx\nf1S7MGs7FbMsBerNqBpoRwBnw1JGKDTHKLEU9+csy827kvDGyObIDCoKKjif\nc5ZzoUdX68MCW0lKMzxTfi57LLmQxyfhmgiTrRX1BEhgMcSNyv14dTC8xNGb\n3dgyf84/lKYnoGkA7oIM8+gjFTfis/SBnU2b3BGuZ9SIVdyurKHckFrFmOSC\nYJG7dgiFEcQRfQCqBoEGuxbTKBj0oYN0TqX/dKpwQGibM42X1gSuf/ZKKKBV\numXTGzFPvtVfQyF5mBm4dDPDEtgiZLV/ba8NTf6vByLewEESNKmgN6GBK+F+\n3vbRPGicy0SQTlMTOsZ02Jj6GC4ZsUpZiMZqIl6iZVI4ICpPGbfB9pyEQyyn\n1eXKl8WZX2RZ0njYIQMOtmsCUG2AtZnchPikEtFnk+8vYl2uukWFYvjjHLp6\nX2C2AbgRtBARkmjGsgv12/2C/ZidA0rXB/puk/ecAul+wEmzEYP2WSMmvfxi\nor2rBzb7CoFcu5Mh/4y9yVTw3lhArrKNKjBVFmap0f6LVMyehCAO459H0EGs\nXOBF/tGpDPiIHjNmzpp+82Vk+muCum3Mq1zKvw3/lU/Ln0AcmpbGwKtv43e7\n9hcIVdy+cPnxf0nFpplTJ13cROoBiQtlegJZXB/ZULDr7IGc6aP3PpoTjgwW\nHwNY\r\n=veOD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"52646d167058660ce2440de7730e9c4165c4afc6","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.17.0","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.149.20-canary.486+52646d167"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.149.20-canary.486_1597841166436_0.044226396723473504","host":"s3://npm-registry-packages"}},"1.149.20-canary.487":{"name":"@sanity/presence-store","version":"1.149.20-canary.487","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.149.20-canary.487","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"50c5f6306559ba68d1938671da6ece9ddf63d00a","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.149.20-canary.487.tgz","fileCount":7,"integrity":"sha512-LngF4fGrIwvFV75l2bO6FB9dQQ8XoHKrcCvo1m5PZxL1mx4TbnBuH+RmPW7t6sz/AcMhlXMQo1+0ZiGxeYB/wQ==","signatures":[{"sig":"MEUCIQCEuWPOybOpJxUqWgGxlU5PhbW3V2iKbZQzhWCs+3kZZwIgFPnLPKgkIkb01F2EIuhJUV9mE3WAWSoapnMadbRVno8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18228,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPUP9CRA9TVsSAnZWagAAwmAP/0He2fwdK6g1dU37LRQd\nYA5S/DtY0IARm2cHKkzGnoJhTukmBXbwBrNTz5FTjJY7FEt8AqoqbypaRFng\n99+qT6/Cf8f6Y5tk7n5wOosouhXxpccJCWkEgdFsx9VpSn/nLNQ95KqPbwTS\nW77d8tJHpH6U4JlLki+Grb2Lq4wyjhEX5ytVhWxm8LdT3iOpTy4Qu9gdtxXV\n7ZFn8+w71gAPXtRWM8RwBawOpF7i++exrCQmIcZEhta3TcJRrKDq2on1ce/B\nMS4wAEGMbPFl/tideXhEHplbokNrkhKzDShWPJAFWc8bwuJtNlKczRh/vLrv\nMblq1QfsE2z/+8omQiCh69D1riMFm/eSRsh1akNwA7ptZTW2+TFs7NcgrNtT\nXpMJEV7lX6j79FgCppHHBGURUAOGP7Ul3S03NZqOJuJ30Bt5h9BX4Z4heVlb\nQap7tO92p6ZYi2KmcHDIH/JvbtEEfweVKluXA5lbhbYOSvU5aK71FFnNCkfG\nIuA1ouMoq6EQnNYFwXatvHLvg7Yz2CufVBK7hnxz4zdaGRzqy0czccp9pAXE\n5D47RR4TqtkhZmsA/1DCBTHpiZJbqufhZtTzxAa7MlRZhvIzixAy8jwhmqvk\ndpONmXFdz6lxt17ZPVt4qYXMOXpgsn8SCMZ+uBMcx2EYUZHxEElWqXWwqEQV\nUj7i\r\n=wsQb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"141499908494e0ee3e14aab39fea6b11f3f47ee4","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.17.0","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.149.20-canary.487+141499908"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.149.20-canary.487_1597850621394_0.4504151509718246","host":"s3://npm-registry-packages"}},"1.149.20-canary.488":{"name":"@sanity/presence-store","version":"1.149.20-canary.488","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.149.20-canary.488","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"846d317999757af4f14f2d527453b3bc43a79e72","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.149.20-canary.488.tgz","fileCount":7,"integrity":"sha512-4ccDQbRnlOpSSLwnZHJQPGw/R5VgQ5MnTrMLDQ78oFi3OPT0lAGfSLlOMD3NlUJ3rbHHPCryxj4FxRcgChuJKg==","signatures":[{"sig":"MEUCIQCtcbJ5Ox4SYQlEQx2SaDn9Z57QJ1GJIal7E1PnaDL6JAIgKPbXf+gT1J9b62TELEu4vOT2Z56SYJbDB8dgZkQm410=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18228,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPUTNCRA9TVsSAnZWagAAHLUP/iJUYnRpxL8gF7Npt5RW\nVTzsyGdgF2QPjbN61oXNCxScD53ByEvkKpZHhI/h/6KcrPwK8SYzThT9Zguc\nAOPTNtr/f7D9FFZfGmfF5o6Mzam2w9Z/SBT5BMa8B6P0X2VPTUlr5YSskTRi\nltk72DwlGTqZmCZFrCMePX9+sRePu22zR2o7rhI7hYpcYNTpnbBMmd6aEkLS\nVUNmd0lZQyxLs7VOt9JcZXSYG4N2lTyFWBObUPklgup4V0T7OOn02dbHl/kV\nikJy5xoAs5ObkBZX5aklh6Q87owbWfpNEo1qZNWfv6KemdfzzUtOgzaT7v63\neHLcdMnlpDcCh0c5igo4/KtgI2MLEaVHUQIOoKuR5YXx5nTgOOikysBeuQbb\nOxoxx6mcnnMgYkIwiky5OGmQnGMoGoJTAGw0u2y3MHqkw3cdu+9ojJeu7VnH\nYnwk8xrV4Ag3xGhcbuMJaMHIocrciYTqSBwX0kKI89AwGsQzqYxH6wD68q5F\nxSttBqTX44gF4PLBnaGsFuSCnwn2I8vUApkMrsB38i8eAHJRbJMjV5D01DsQ\nMdwiRLC4ZgVYF2EDG9lH4hYdK1GKDGritr5uNPiIWAoSxCfcM49PsfTgv8y7\n878i3WrLD6DKrgX7VcC42BzgkjMrv2qwRTNLWW0qe1AGjy1Cknr723aP1J1b\nxbFG\r\n=Apom\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"efc3e78d0c0371d7a804825b45364d089e51907f","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.17.0","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.149.20-canary.488+efc3e78d0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.149.20-canary.488_1597850829048_0.6702697069692414","host":"s3://npm-registry-packages"}},"1.150.0":{"name":"@sanity/presence-store","version":"1.150.0","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.150.0","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"a05140c92b502056892d9f2856047308088bdc6b","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.150.0.tgz","fileCount":7,"integrity":"sha512-vUKEgamln/jarzZDwQvBT5sxzfFy503oI2KFB+vy7QkrW8TkPcEDbMfn6DEBxTzPpDp8FcP/MLGLIkvlXrtpUQ==","signatures":[{"sig":"MEQCIAGSycE5jrf3CtmZVH9uiQ7vCw4yZ9Yf2o38H61mgERiAiA4fHYB9Cdsxg94K7hwcYAAzFRKXEaW65TCt84CBjQrsg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18185,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPjawCRA9TVsSAnZWagAA1bAP+wRP5r3hAjUUZg+hN+Jo\nZ2bNO600ZBe6Dx6p61WY1IId54aHHpujAhuNGUaLTLa4k+rhWweqnLiHWZ4h\nED/sJ+klktugR/A8nQYZDI6+oGgF6FPo3k7lmkzJws2sGtblnzWmGvFHtZaS\nxjMdPpCmfDVN8fnBesRdhqWNci3wT7UaLbX/ry9Kk2EMyURYASocIwsdAzlA\neEgaoKmYyerLwcbHI3qdEmahgbIIj0XCzzWWpUpjQuDhidXSRNYiFfrTAk/i\nOkyX9asa7vfXDGyVv2rUFXOprkSmoMlNMPiCPEg77QycHwUIT7jhAA4vuFO3\nSymjIa5gjfnZU8LWzZDTu2SQkT+O97iyr8XuKv5rXNeTTUKeHCPQwyi+q2Z2\nfn4Mtlpq3pavXYkaiSmLe9jb72bk12rqhgplcKLfCLPgimg1QcLKDMIfmd4j\n6nubZ065gVNJ+LNKeosnKK65c1xp2bIL/Vf71IQeRG+L0k5I9UZhGqzg5Qzy\nx93OLyOfK12U1MMVWnX0cDFZZcrmccGPpXOfrLl3jDFb44LT6XyeFXTOJJsv\n9aluO5c4A5ARmso1fTOb7CSqewoDIPjJaTnmhFntj/V9/DzLcWVO2AHXJKuF\n4AdDjo/9kLB1G4u+LVAGolrKSq5RXwI8B6Oqa+dXp1DMzNHVonbEgJOKV9yZ\nZ2KC\r\n=W6zM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","gitHead":"d33f79c4e2f6de36ba37b3ab1fe004dd85ad79c7","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.17.0","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"^1.150.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.150.0_1597912752210_0.9043259760746016","host":"s3://npm-registry-packages"}},"1.150.1":{"name":"@sanity/presence-store","version":"1.150.1","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.150.1","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"90de0d394d6b85bedf538d1122adfc101d66fee3","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.150.1.tgz","fileCount":7,"integrity":"sha512-WTPGp9fMT9QQKPNUZk1eBGqn+c2nXi3NqW0VtOvgtuyaXJvjWqVTvv49lkfLQSCxinUyV25158AxeLpHLr3E7A==","signatures":[{"sig":"MEUCIFDFiUBiV4URHlz6VVqA/l9KTs0PraW3O5u4ZdT7KOfmAiEAgTie3lelho2lcYrJh6JVygKjEQibM2ujVD5GDc49RR0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18184,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPrEKCRA9TVsSAnZWagAA3jkP/iYvpHZv6LefTfmX4X7t\n36VBnvCIuhfBfA3Kq+Sby60KqjoV8MBLng+VeTh7puy25Q4pJskWcRK+wXyT\n6qHSP3cjbjDT5JfzsTtUUvvK6TCFjIuqoc18eJwDIqpbxlusVoFw58M5eU1G\nUhMf3inFcrAutzGlKq+r0E9F2d2PPJHbMU1GtPu+eJcJn8pMWL8Et19SNgJY\nhvWxuVpewibOrxfI93oKIg1kHMCKdPx8/+5xr8F5pDN8Hyp+wmdO2c0v0l/j\ncFPDvAVCCY7ibFZhAlH74C7LE0bPfiPs4gWh91SV4odLSZ9ODhjB8HDje/i/\nKHZd1ZB7as1rFUj4QiuvdhxmLQiGrJ04xYel2Cz7/CKUjNiQoE+k+zDuDE5p\nxBxhZh+qMSlLuTWeg9EoYgDfLzZBnx223Wo9VTZgjpr+CEw6tQ9Jl6Ppxqlb\nUp9aL/qQHanp7lXCPUoxG4JR0MwtylzEZftnBp04+mRs2XPD0FdeaAXsR3gW\nV6aLJxFVc9sL2BDBPPD1++iE29mjm9erp8jfJceWxg9CHooWrj8cLLHw9tYT\n1V8MdRZ3T61k9HBK0NQAt3dnK3YjImNaujNtFKrpKRG+3tAPzOA7ylyKUOzA\nNbj40dQ0VGjmX7EZHZ6Io0fV3yP8BGEapaTwNn2UB7LkMGphrJflnxZApTA7\nwr9q\r\n=FDSN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","gitHead":"4b8da7d340eacc88d6a9ae4a761fc3e58189763f","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.17.0","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.150.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.150.1_1597944074465_0.2601252480532146","host":"s3://npm-registry-packages"}},"1.150.2-canary.0":{"name":"@sanity/presence-store","version":"1.150.2-canary.0","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.150.2-canary.0","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"jemmima","email":"jemmimaknight@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"thomax","email":"thomas@sanity.io"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"c01affbbfc5ba59ff3467c4ce6b9ccc27c0c92c1","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.150.2-canary.0.tgz","fileCount":7,"integrity":"sha512-g7F8CufjDBWmTnAmZbEFVPga6d4VVuA3Z0sdUf9PkHcwCI4032bj6FpW9l9pV5yil9dFr0bPRWIBdQc8/y0vTw==","signatures":[{"sig":"MEQCIDBdOOpBnZEhSm3LbnwFtIMySboGEQS6SaafZXct+U53AiAhroZq8zX65jhhTV0doZO7yanp+7Er5xZilJHIh7THOg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18222,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfP5SZCRA9TVsSAnZWagAA6qQP/1Zmvak8QoOEf9iWWwAl\nY9+31TBfxNJ/g05nddl3hTGfAvPLxThDm+da22/r9XP290i/OkEliu+VQHd4\nSAlMndq4pSri0jtE5xZiiYsoy8GA8bb0r3EwOS22zQUQKgxQhNIKbWF5oUn1\nLHeLxPU0jdrxGUFIHwkxJOd13U6IYHWmovm9tMHb5AMfoG5dY2TwG1Ix9XJt\nv9mp3SWMSljWsOaCME0kDj2XzKzyDkmFzi7ewr6MWrNWmqyC5ybmRsh9xCwQ\nByLw0h7W5zzgm5xp2Cyi4rCcZmrtSITeJj7R+Kr4vgYr4b7tSz7KeJqQ8w9n\nUtIS1xvTYlr3vavW/fU3t254mJreMvhNQ5QBvQ4jRVwfp2zIEyIn1HEwxkc0\nxzhwqNyjtwDQnxRktvCZ5GSWwyBVP53iIo/K0zAJXBFBSnm6UWyJ7jizVA42\nayWlKm4M0myVv1IVrJuhW/6H9ZKPPzuJiBmkv2veEfyYkIP/edThC2loDCVq\nflZzJoy9kRMtAkXOjYB9KBIQ8E1PwmtqFjXRA/F6mBVQmQiVAVKRt0bKeMCw\nLUfVH+nagVcqOvZGeKxnRAewNnkTA4o1SSgfEEuDby/B4GPwibhEooXmegkP\nBg/JbThtSfw/RVVPMIXeXAQKkUicD9bLfMx+n6Ir9n3RA4eymYtat2O3umKN\nGu5j\r\n=bT5U\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"4e28c4b743358ad84d79d8743fe2747cad0bced0","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"bjoerge","email":"bjoerge@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.17.0","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.150.2-canary.0+4e28c4b74"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.150.2-canary.0_1598002328990_0.8266846797080829","host":"s3://npm-registry-packages"}},"1.150.5-canary.6":{"name":"@sanity/presence-store","version":"1.150.5-canary.6","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.150.5-canary.6","maintainers":[{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"evenw","email":"even@sanity.io"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"simenss","email":"simen@bengler.no"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"640508b885264f9cde4f9c1e6b1b09f7341b58a9","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.150.5-canary.6.tgz","fileCount":7,"integrity":"sha512-BuU0m0/Tx0Eta5pZ/1F4ia6thIW/QtCBsj+uyJVfdQrnFOEWvgdGfazrW8s9QxIcKcFUgMZqNz989qfGDCvbfQ==","signatures":[{"sig":"MEUCIBCnfA46Q6GU+VUFN602++l3okCwD+X1jI+VJdWegvdbAiEA+6RWrk9ME9SyLktW6I4JfbwHy8Rs4gzAJjp1FOVutDo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18222,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfR1RjCRA9TVsSAnZWagAAQo8P/RP4qDfQbt+f1zzv0CwF\nF6DLMyiNGp3sCe7Zzfar/4Ur/xRlseu+Z7urt/JqTePeQ22/IrdzE4zb7BBI\npUNampb53dv9Wjw524B1Ca6bA2NLLKOM73dOvb1XeGr6yhWz8Lu2ImqOHZsf\nYdroUvNKrCNeppaWEXCLXIjdkIyz5Z3EPSEeIBFd1dH4rK94Fs28fezj9gnM\nPa813v0wD4aZaLXFlD7PL56JvgWYfx6lFUrAZPX3VdSi50Uxm0ESAymVnFJd\ngTI+ZQUxJTRtwpgZYOZk1cWWkrvtzZtwdH8uwNnZRsHcuYMAou2Xaad+c6IA\n5in++j2Q4HtSc9F7HsNkqm+Jv3MkIiun8FyDQTw9RmXP+s/3l/1jYNPIxto+\np6eSAVvZyjsCmoxKTpzUpJujLcbpXqhLk3pCY0Ag7wiK7t2qOQ4lKOXOUXiG\ncWkNkFpQ2BqwCLccE8V9raSI8GI+u/AlUCB01XiuDYClLf28vpMOLU5PllNJ\nGngu4G7DdTJ1YhYGk0IamYhtuxBpApnyN0VoMF+slnzKJnBWuDL6UrZ8Zjdz\nl6BZlzalnK3Bfp4C9+v47PKlKxA2nXuRYVQCswvmorpcvqDKSS1HAB1R5LSU\n/dGDjDlZZtU7JZc3C/9V8MtSgEVff2rd1JIWdzaXHk+LO6o6rLJJuLOJrOMk\nwah1\r\n=Zycg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"61c90e14cd6643e3609e21009eb2494eb5ebe54c","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v12.16.3+x64 (linux)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.16.3","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.150.5-canary.6+61c90e14c"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.150.5-canary.6_1598510178532_0.8344144645583089","host":"s3://npm-registry-packages"}},"1.150.8-review-changes.375":{"name":"@sanity/presence-store","version":"1.150.8-review-changes.375","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.150.8-review-changes.375","maintainers":[{"name":"beb","email":"b@brkn.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"simenss","email":"simen@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"e4a2a2bea0403a0afe88cc5394a69ae930abf2a4","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.150.8-review-changes.375.tgz","fileCount":7,"integrity":"sha512-0k0EXliRVKvRMx9XB2rHJLP84nT/PZlSzSPUHBiEbSaanq7iue110/FqEA14qch4kKxapFzEW+cVWnE3E9C+3w==","signatures":[{"sig":"MEQCIAYy61JDM25xXDWQzwaSJUc4oqC2PpGWYJL+O/YMjTGXAiARq327voijW/wzaG3R4z+dsJ0pTZjPfuWkvTNAJN8zVw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18242,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWMPvCRA9TVsSAnZWagAAeKAP+wYmIEDvuPZJ+0PlTJ+i\nWbt4CqN4FFk1H5MRLnZsxow7J724+APiosKCP/kjHdtH6SUp70PxFJx1Nzdy\nwE9x8UUXh3QvLekPqBdimttnHFr03QchO+bkdsxkV92lyPKtIeiCnaVyGWbk\nfHMxnbe6mQpFIkYvZZkurCtkckcNhC/JVgBdgmIQDC5+nX10lkJmb7LXAgc/\nNUqFpZIm7jbJF2zXE45PnLXr0Rmm/N4p5Y2KqHDHpaCWd3TastmMTUB/osG8\nbwjdxzzw5gwF/E1Uf4NXz4snPFvhioaRBGoYLctNQEPJSx2BBfVQEpUEQiGe\nSCIamMbWUexUCeDA3l0bgcgHkhoUVn70aFApUPP/fFhyUKdc0h79a1Chuaha\nEq3y8cXaJe1UlA7smJZeMaWgC4KxOrWQaXa9A0HeYlZWXcs8NT9UB/tr/5/M\nPUSxSSVOaEP7DSxFRKovaCbOg9/+p1CTFKo6HqkSHBfslU2P2X2pKAVW+n9Q\nooqa+p6yM7ZAE0I4MWttQJWAFCmOfBpzpJqXjtUysnYnVjxYWK06wMwm6cCk\nuj9SAhjQ1AvFavHHlV9PyP/qCNeVcIli4iHbjG7qZH4+9pdeVQtyq1zUa+pm\nrGzWgdBndKPKRO8tzZdNe+GK9BM6RBK34ThVIhPbYDvEgWqvfIdG1WhJav9w\nXyXX\r\n=j30M\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"bba70ccda18fdc188f964c9da78caf14e0c9cc41","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v14.4.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"14.4.0","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.150.8-review-changes.375+bba70ccda"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.150.8-review-changes.375_1599652847011_0.6390054021121936","host":"s3://npm-registry-packages"}},"1.150.8-review-changes.379":{"name":"@sanity/presence-store","version":"1.150.8-review-changes.379","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.150.8-review-changes.379","maintainers":[{"name":"beb","email":"b@brkn.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"simenss","email":"simen@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"2593f12aa1a04f10fcc45e74b1962654d03df532","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.150.8-review-changes.379.tgz","fileCount":7,"integrity":"sha512-Eftvaf8I5VVT9teK9to1xy2cTkI1w9/mD6uibvv7U2ZeMsNqvNuVwolqps1orK24bU1cR+o+4bI+DzK3Ruz95A==","signatures":[{"sig":"MEQCIECAY0Hrk4/XeywNZ8oG8VGcs5uEC/t4s1yqcs1uYNhgAiBXE1oDNuQmvuED/ECqqA46ydfIFOGLfKNbG6ua/eSuEQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18242,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWMnYCRA9TVsSAnZWagAAxysQAIUQ/6JM1A5P/IHTGmer\nrm2vTDt8AKpaLZ8hcqZY7qv6nNTOn4kOrI5utsLfjWoDQaPyMc1w/mBXDv8j\nletMACu5yHp0yk/SUtXPPZmyFWi4IEbxw4+Kb3EMdTF3ZxLqauZM/jLfeiTp\n2BkKeA5TPnT5Cqf9i77IHs9b77YGB5w+optPB7RNs85gUpqFxkNz1EIcuh0k\nNeEhkdsboBkGwhS1j+z4k4uLjUB3TRDg/ITkUgJT/CSxuAE6mOpmxy/P+fNS\nUC8Jqi/7cbhgPzqrcD2l67Ov/7TSOWzwJRF/aSyR2qSp2ND6d6SxHIH/JRpA\nK9BUL5kMdKv5fWaUXrvy4GeeNZzzsaxuaMmet0w1fg1QGZ/chE6X8H6SH69Z\nDjX2NBV8coJwYbE7u28LoofUmsv95w7AB0bjf6vtwDb6XLsY9a1F+PNXsTcr\nc6LQyyTYyZACu4qAyznOngVpYpCjpUueVyEHgMY3TqlFKVYpa87yjxbVc49Q\n7vt8FRe25jPgRjT2QktQK1NzwuBcQUi30Vu7fVanezOPlPYuEhFsUeHmR9Mz\nm+Uh5zxDJ/Y3QfxTXBQhHij2efZqVtZRpd4w9RZcv7+xX9JL5nLWMnBxdAoz\nAHYkbp4J8x50SKykTVRkBU4V2CbSR+vojhPULzzry9D0erOKdWzcLLRP+p/+\nV32R\r\n=OHdb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"3d5a740a89417ae642f22a63d84e58c17bd91cc2","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v14.4.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"14.4.0","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.150.8-review-changes.379+3d5a740a8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.150.8-review-changes.379_1599654359905_0.5756156765075546","host":"s3://npm-registry-packages"}},"1.150.8-review-changes.382":{"name":"@sanity/presence-store","version":"1.150.8-review-changes.382","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.150.8-review-changes.382","maintainers":[{"name":"beb","email":"b@brkn.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"simenss","email":"simen@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"c78cd2b7f8f1edcc9709bb504144ad1847d947b9","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.150.8-review-changes.382.tgz","fileCount":7,"integrity":"sha512-pLNovQkm8OYgUyc9GjiRDyNN4tdVlvCvVuNnhPw7r3suhNOkEltXInjGDdZ380IO0IGUdgsv/8AKFEXhCaIwfQ==","signatures":[{"sig":"MEYCIQDILv2l4Uh+JXABhTCIf0eX1HDzbyt7hW4lEhUVWluiZAIhAIUp+Wh/TgWAjpcp/Gn7wuoitkJUZGo6CCqrTkvk/YnD","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18242,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWNW3CRA9TVsSAnZWagAAmxQP+gJnpTZu/GQstr93M5Fc\nphle5FP5SqgkQzkZ7DtNT/65J8E1GGqZs8QCR0/NVO2iPArL6xoMRCmXorEH\nLEdWRCR8EiXCiS+9W+8chKFyrIAyrVWlCBne9/yt4AYw6swQoj+BJLAzTsHO\nrB7FBdW4Bqw3/k0i2MbDQxpPVUNJ8hQCQx55GBn9od9/BjDzcRm32iDjFqfN\n0bGE3COZ1n9I8PVzKp635BJdJeQzHxedkyLWNeB/JHicceShyPHslb0/VPt7\ndyJdLpXJZWeqL8vGReb8V/YbLCAbuCw/145w22Huoj+2mFNiYDmKDT/ZN5/c\nikBqIhNHDzzBc0rprsMEDGBFJqHSldlFN2RIPb2Bs0NV1xqg2i7PxWNsggKm\n2ovpwYQU+81bW1kscJq88tsAPmuMk73XdP7VvnWTKK0/2/wJNaBGfvkUD9VD\nYz9nn7yDJ1qlknxgbtE8YZ0TuR9CUEx2h/Qh4d/7nteC+En+iwtC4GLJNMGy\nuEQcHx/aCy4qx5VIIrOD5RBgo0mAdkiaGTvKDSPmwQcC1Z4HVX/4KVF4AypV\ns7u3MVTXk3Pp3V5sQsS8fnJgJzqug5xxfASsCTHvUzBz6qkndGs5djc4XNns\nH+fWUYzcgA49X7HpF/ilOd866/iNf++2SpfN3Rk0rsN/dLbmG2N1gusGJ9W1\n+4eP\r\n=66s8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"e749d071b0732fc57e05631886a1d6d92808b8a3","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v14.4.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"14.4.0","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.150.8-review-changes.382+e749d071b"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.150.8-review-changes.382_1599657399107_0.136287960727685","host":"s3://npm-registry-packages"}},"1.150.8-review-changes.463":{"name":"@sanity/presence-store","version":"1.150.8-review-changes.463","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.150.8-review-changes.463","maintainers":[{"name":"beb","email":"b@brkn.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"simenss","email":"simen@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"ff905ef12bcd8d29a61e99e4aa2175acac61f62d","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.150.8-review-changes.463.tgz","fileCount":7,"integrity":"sha512-sQk99mwfTcjkNk7/aHK78bAPCUMEM53wi1JysZuk5GTIwS/FPwo83LlaIuDDWGSrjmgqmq3LLwr1AbYdnv6Ytg==","signatures":[{"sig":"MEUCICZDU8aU+W1UYlg5AblzicYGMRQHZqFg/hyxKyf8w8g6AiEAjJdov4wijyzTvhu6anVl4X5O2P20mTe92oAZAYRVZZg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18242,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYHNiCRA9TVsSAnZWagAAhScQAI9RcA54A/h6nnD7v7xG\nQsnLPP+k9fZh6OV9Euzj5hkS5oTXCmLN4XTfz203IIQXn9wr5g1WuTXp2qXH\nUd96ZZ6Lc3Ar0k71NgEePutVkQaNs1owPr4JxCWHwjFgFbfOAKLWZxWXpulg\nuSaaxuQasClvYuxGpLf9LA2d11y5rteVLsuHMZbRxBPxamVPazBSXyweU2Ge\n2BAAktjFvuJh6JvSXm+20yvOvMyfXBArmj7l4Z6vbcZPdTmH1pfkeNT9xTZT\nqBkADBU94s/6c5OC8s5DMkT3vNpIiQYPQ7mfBxiD0ASqwwDFBc+YULs1HTEw\nerQqJajbNEv/0o3+e7I+DGhxcwghWdgk6vmL3C0AzDg2IPw9N3xr1s6G4B9x\n5nDWHVB3kHR8smjYaMmwKdeWS8y9v7Nb9jyBpxp5IaWTev2k+lNQNgcTULhb\nmAsumI+CRi5opemAanUvKECxzh+8hVn+SXxVNGICUlOUEWExWN2SL/whM9ax\n1ISL6sFRTvkxY741x5eqciDHJE4iJcZMKTBJzHoByz4Yl5+QpgRuKlU9Dg7/\n460T2bjrSeZ5vXt7h4rw2eCI4aKwJ/GsKeskTE+fTc2ibDAeI/27QfTKS8FT\nhtC6aziXik4IS3j4WO5MbZQ/OnvFOdMVSlr66SmlULCvoJOonZzIzrui0kwk\nDANR\r\n=zxE+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"55603ee9111897485a46e8d91aa131912f1c0247","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v13.10.1+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"13.10.1","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.150.8-review-changes.463+55603ee91"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.150.8-review-changes.463_1600156513837_0.40683431223198707","host":"s3://npm-registry-packages"}},"1.150.8-review-changes.644":{"name":"@sanity/presence-store","version":"1.150.8-review-changes.644","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.150.8-review-changes.644","maintainers":[{"name":"beb","email":"b@brkn.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"simenss","email":"simen@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"f607898e2f947de894d3309be87409140fcde854","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.150.8-review-changes.644.tgz","fileCount":7,"integrity":"sha512-yQQTS2RG3i1+O1NF649GZmFBt6MebMx2jO9e/qhgEUbwY+c0xtYpyx8pwMZu6w0hTwsv2o/YjpV04Cpvww5w3w==","signatures":[{"sig":"MEQCIDwNpBEpgvZovyYm/Ipbw2Wdn30KrSwjMv7VmrYm3YgjAiBv7c/u+ea7KwGLpzOnM6FKzJMjmn3bIdVuc1y4wUfuqg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18242,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfZPhpCRA9TVsSAnZWagAAqW4P/2pEOKju5PcqSdc92Wu3\nSxpa3yqsAF964FRDyS925bPsx346vduMNJYhIy79QocGQseNmgVMhU4503go\n62snV1WbZTwFfzvE6TVfx3ERWqbBFrBdPCJQP5LZsHzqo81bzHLmAFTsEACw\nha6bAgPfvx1h8DXl/hg9lndxDaA4nWO/NPuNNjaJ7T7/TFfQTohnY1L1v8Al\ntXp11yA+/iyIQIiGVAtRWwld5xTGchIYZTDxJ9te9o8rJynmbGoaGmZNcXDS\nBIwEgEQg5kKdei7SUhtxBGpkKfmIASgwHf5edgYR0+T8Ci7/mmIe6a1cxfQ6\nifoRrhv7S0cZJT0RJs1fHHpsPy+92cYcJcJLJGNQxZhR8oWx19DhoKxcEaV4\nsoZ0Zu/ScuQqidsvEVZ53lxjIqHHerDclmMXeTA1iKYqEQiYCiVLiSXDHzXk\nB+/iBaaNZLQeOvwSSiWLVXyIoygpP2OerYXaWm781GgvlGLiGb/ISIU9xIYJ\nJSiAWzWPMYVXRSlhVbQ+Ga1yHmk7PSmwQ96RKI6ZbxSxFT715BwIjsPFv8rb\nfNFhq3PcmAUg3e40EQOAvKNxphjiz/TqLU6DJ89+24ymO5gXBzcjW6VsKywA\nxM5ZRi5JR1WRKhLtIvZqE2eXbPmrOstwzytdM1I5SX30LzMMWdgWZxM8lI91\nqVVG\r\n=/Fxa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"62b5810aee9b05bce3686caefa1357dd1c66b830","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v14.4.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"14.4.0","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.150.8-review-changes.644+62b5810ae"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.150.8-review-changes.644_1600452712876_0.15212606166703324","host":"s3://npm-registry-packages"}},"1.150.9-review-changes.736":{"name":"@sanity/presence-store","version":"1.150.9-review-changes.736","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.150.9-review-changes.736","maintainers":[{"name":"beb","email":"b@brkn.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"simenss","email":"simen@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"133d17a37eb788f3592666207e804eccbf2b99b7","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.150.9-review-changes.736.tgz","fileCount":7,"integrity":"sha512-rLDPO2hZplzL1PPyg2rBV+bRp4rtqt+mMQkNNge9hbYiaDuZDLs8ikk9q/4zhaEaGukqWDC6vVFwmWecEZdQrA==","signatures":[{"sig":"MEQCICnQjN5CDw7BUUowZnVNRHXEzyMXpDvBn9CJZhPLweIcAiBkuq5gozSNOLEjyu1T4nVNIzRj/1Rzb2rwolVBe6AO5A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18242,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfa3phCRA9TVsSAnZWagAAMkQP/jxmbmo49n4caK5NgX8I\nIdS6fjlx++IPhvgEVMnzwHqg2j1jLrzpFabGLyPLB4VwYu8DM+aOxg1gbbRM\n3SkLW+w3Do677epy+XMeFCdpoKVvqoAFsjWa7dwyzqh/zD30Aqz8lsoLrOPk\nud21uj5235p1x+FNUyRmTWKOK/EmHsbQL+0+62Mb3wxQPMqlUiWm+3HEmaFf\n63WznJ0nAbcxXCzCeXbZbi7TcTeq5dQwoD7Nv+Wtf1tNnDInK8X9fKxFLf4q\n4JQalQ0CwXQ3c/W5elU5k1umazYPDsjEpHoDVN5uqXnyCNlZQKoIupfVpa6n\n2X8uCk00yT/unnmvU3wuxSxddw9EMfJpsQP+TNmcgQ765CKUDACyiGZCsyQU\nC/uePxRTa5zVC6n1/qnz4wk1AtopaRZgFNQPvWHIn4j/Yh4cMKR9nZLCsc7j\n8Jed4zPwH8Iqg/YAYxAOyFRonOsFU0lwV2hT/HksWzKsTevI7ocfCHmKuLVs\nHPi1TIsaEQp1K8QEbF33CZ9ZtPIBbdgplQDqkLiIfvlKQvehYFXvHR8x0Hpe\nyxqXsLFKjVUyjhVyRb4G/2LHRcwi3ajvnwMAN9eKphQGvBR8M6NmYPNppYne\nC3QJ+Ax15wnnLiINUqYhTNN/XN1TxjYrNs+DZcEmyp9+QQaiLY8zkPBsdr6l\nSZ9U\r\n=si0q\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"39ff07c30315dfc1aa27c881b22087b3a67a451f","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v13.10.1+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"13.10.1","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.150.9-review-changes.736+39ff07c30"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.150.9-review-changes.736_1600879201404_0.7541106437560867","host":"s3://npm-registry-packages"}},"1.150.9-review-changes.877":{"name":"@sanity/presence-store","version":"1.150.9-review-changes.877","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.150.9-review-changes.877","maintainers":[{"name":"bryanlrobinson","email":"bryan@codecontemporary.com"},{"name":"beb","email":"b@brkn.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"simenss","email":"simen@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"8cd421bfd839ca7088bc884c4ed22bd730d95532","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.150.9-review-changes.877.tgz","fileCount":7,"integrity":"sha512-S1kOeIqPryTnkAV1rtjNr3IZCSwHl7F0xq8/Z3AoqA88bMw3F7Tj9jpwwCE/hBcYJSCrxCZQgngh0UsiSlwQ9g==","signatures":[{"sig":"MEYCIQDO5sEz0BtJYi7SXcHrZkIB4dWyu2VgxSD+EbgQ8frtRQIhALrP0W5XQcenpdoS4LTjH7qPzN/FVE+TuRjTmQksFdWX","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18242,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfc5Z8CRA9TVsSAnZWagAAsJQP/1J0Gg2VLXn3tFQ93+Af\nUah1PFgVR3jnL11QKPHaWnSI0/PcNpVbBCe5Atcn06GGhe+2tItMvirWU72z\n9MFqeSewdoJgqJzwu9tPvwyy1lA4ISJSmnWJkCjTEfxVkQjlcSmyBBPGZN2p\nNNoiXqEE/iS+IOaIHqGdaXGdUN8tO1Acw5PWq+FdEQdC5OzMKX1Oxq+ameJX\nVKiOkDejEwANXJat7vmKG1l7Qc0XSRCeoGBuJ9eZ121EZQsh1FkpdLEeE7Pp\n1MUqLIACOCcuxf9KF3hbkLMYIF7c3HevlyS6Wly921vc9dIlGx8/iW+LuSeR\nsXmtoJ5+Hc8ngE4O/JwC5FzSBWrQDEfdyn8XgQT4UJJjkVeS/ZeuRxKtoDHo\n78Tc5jus9p8xnXNTc1dNzJaZBvralWDi8tXcUG/uh3kr4wpojVhR2C+3pGq+\nPEseEFN+fVsuTFLEbrXL/GkgJLRJqrWbGc3F/2SwCS2B/q5DdnuK9YzujubY\n0t8gg8HymnyWw14eY9japukRsWov917IvPDiFuXbJcEx92FGUCKqQvR75kz5\nFCZktCb47lAKL0g3bJr8+ONy9duKDe+xOPuA320wokwQk9gC5JkguLI93bDq\njUPyrfLl+QE8rXLsuciK4TbIqlUeGedPxMCNGmRj4e7ukWIenxGtsqJzZUzj\nV8WE\r\n=KhVa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"10212e75d3908bec1ba0e5dff51e02c22624db59","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v13.10.1+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"13.10.1","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.150.9-review-changes.877+10212e75d"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.150.9-review-changes.877_1601410684319_0.18801198003928676","host":"s3://npm-registry-packages"}},"1.150.9-review-changes.912":{"name":"@sanity/presence-store","version":"1.150.9-review-changes.912","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.150.9-review-changes.912","maintainers":[{"name":"bryanlrobinson","email":"bryan@codecontemporary.com"},{"name":"beb","email":"b@brkn.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"simenss","email":"simen@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"3e416dfb434bcf5a86428c6955374de41615cc65","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.150.9-review-changes.912.tgz","fileCount":7,"integrity":"sha512-TSwtuxaNeGr+9LsDhHvizc9tp5vDnocF5hPNBC7FQo0ZUdobZuSLk4jgpnkFZMv6dryFXH0Ux1Ac1uZtsk/FWg==","signatures":[{"sig":"MEUCIQCETYXDY911ciIo5k41mtoFHD1dWGmMD86jl2lbbzwN+QIgLVQ9pruqYp4eh+VPkTHsNFWap35sqtRr7atkzlYZ4XY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18242,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdJQTCRA9TVsSAnZWagAAjo4QAIgZXPeb1rAZffeIx3Qz\nNPsYJCxaK+xR9XZ+rXoGpRgLg4PhOt9ROccO1vUquV7Ev24kAei9TxD/u1JA\nnZG8klUJSkSMiIcyV1/BmszY4eopocjws9NxhqQacuFOmvB0C6Tps1BeE9wd\ndDklzlLqg4H4wjDO8ACW/VAdAlAElAmF1Dwr5XUR7TjZ2xWE5dvGuCKCSMGy\n82wJOkwrYn+5fcY6GhwJE3OV/MOcTNqSkRoH0JpAdkhqXg3XQJTvONeyGR97\nDRKLS+MEvpecn3zV1/8NTME2MiwZGA3VD/JEKpsBg79hrJ7r65/HiaSNRW3H\n81P6byCwsd47PAGrGOmZ2vk2J9DpQ9B1qykOVqGngq9beUA+bm65tDMwfVQY\n8HiaDCWbmPZUhCPKAnzq5SgjGWJ60c4LQAEvjK1lkIDMFQVNtbSWZ/EDQTjr\n5iY0vjakjOaaGoiWrj6WE/lne/JaECdOI3NXaObo8Y8iMhbe1I5KSdiAjZj9\nxuifymFHqT/NpvMLDQRyVxOl1jVSAkNSDha9alERnITXrP89tfD37wMjTKc1\nByiDCeNZS375PXI0ZRZrKEVZ8YMEU4br26v5eSqK/5HCjPFCA6oRNITkj/Eg\nukWqqr/Q5KqvYFK/wsZxQlxEOLBSSXlNhPRVhMHYF3hYy9sSsXkffAssOobG\nPaHD\r\n=VboF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"c36a688d5b40b5a8b5d6ab1ca3f655b3b8bb480a","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v12.18.3+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.18.3","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.150.9-review-changes.912+c36a688d5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.150.9-review-changes.912_1601475602495_0.11384709700086137","host":"s3://npm-registry-packages"}},"1.150.9-review-changes.952":{"name":"@sanity/presence-store","version":"1.150.9-review-changes.952","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.150.9-review-changes.952","maintainers":[{"name":"bryanlrobinson","email":"bryan@codecontemporary.com"},{"name":"beb","email":"b@brkn.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"simenss","email":"simen@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"9eab79e79a8bec7fce1d893854d929a12869398a","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.150.9-review-changes.952.tgz","fileCount":7,"integrity":"sha512-PH8EoeoHDE3ZoKXAaBrJ0cNN2igGI/sqT/o7eMvvfTC08KbewyozQWKQ2QKFFt/EN8S7CQj85WEOhPFzhUJpJQ==","signatures":[{"sig":"MEUCIQCFjJ368FxwE1UEWUFSbQJlKlzl6Oean1vUJEB1hnjfFwIgT1MB+OaRdy1dkbkxIrsQO5KnSkvOa78fJTHCI6lH4AI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18242,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdgeRCRA9TVsSAnZWagAAV3YQAIlPZgZ0GfDyNwlrEH1S\nSQxAqC8Dmhd5y19kqzXJcdzn1NkAgWlTpziWNwM07BYPzYYyM7xgXtFR/o+a\nGAWpixqM3hWgFh3Bq1qCoyw93Md2W6ad0ZXcM/5Xd8/Uw4zMJtlAMVwr0x0M\n8ordwGE82xYgJF4ZF7Oap+dDYi8QKdt9hA3ACJkZCNrk38HgWYsgPi6jlkeE\nTZ69loM46HuhmAuRYyhkjUqAdDrzx6aG53ha4EkD/dCTlB6ZcK6m17e+8eAV\ns4dY6lrRSIEjrhbcRY4fNlSZeouFJwps8eQUB3uGDLj6z06WVjfb1m6KfDMS\nFTYqMMNjADQcYetbyeFRU8wsKiAAOWjmj6/aw0CMrtdoQW/M8uhMappYWGfk\nlLxd/5K3DVK7KnwoLC+6CR9m9ccK3PBMpudvk8vITI8rqQq1kG+upizbpNR7\nDsdHT/4WJC7Q9xKav3mt51WkyIuPPuDsE/79DVnP+W1wVjXwgFvxmhgnStRO\nohgW2rC13GJ93NlWCLk0lthmJ534zN+HZ+Tc+IFYozYf/bXVFzPclLX1fk9R\nYvUhi0fKipRY8NA8gmZ5zHFN3ZzK1nxSqX+htSCHjdTVsGwHKj3CTw2TaCn6\n9u5XUhjISV4ut4XscYX1v+XsFMijoLcLq4MzAM/MnkwldgN5HKu1t0jE1QRp\nHLOO\r\n=itf0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"8ed95fc53e8d080bf1d5330a6737d46a85c3f1a5","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v13.10.1+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"13.10.1","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.150.9-review-changes.952+8ed95fc53"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.150.9-review-changes.952_1601570705332_0.47220391926100147","host":"s3://npm-registry-packages"}},"1.150.9-review-changes.1024":{"name":"@sanity/presence-store","version":"1.150.9-review-changes.1024","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@1.150.9-review-changes.1024","maintainers":[{"name":"bryanlrobinson","email":"bryan@codecontemporary.com"},{"name":"beb","email":"b@brkn.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"simenss","email":"simen@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"7e56bcd81d70da5fc18b5cef9d198b87cf7f8850","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-1.150.9-review-changes.1024.tgz","fileCount":7,"integrity":"sha512-EZAXozUGW5wN/Xu36YNSzT+UgwIEDK7hmVEDukWijXH311UzH2Rtzx0Y9d4j3AqfEYFrFhQ/CXdaf3Zr4xngAw==","signatures":[{"sig":"MEQCIFC9lPMhAmVQEchZW2jAzFO/fn0eHUKwvZXezPnKWUVcAiBuoZCMLed1hvsAtWGOWVOie3F8mt+dcx1WSQgihO9OaA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18244,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffahwCRA9TVsSAnZWagAAoBMP/iV1qUpuHgElKLbV+Y19\nCE8+ILZUYZbtYkYTyq9C9HvYqIeCEAHQfds3U/rMa9gsm+OXM1RqWeW3M8Wf\nXRU2kbWpGJ1CYG8DV0Ev3cwP7Vbcl66CbCJOarq1gZrN1co+hPo1Ygc7MNGS\ndKz3H8tqJ0AXsQgMrqN37qqBgSgE1GOtY3C0brPaVMMOCAlHqm5hebIdUeR1\n2X85Bbsc5k7aPaR6bskP1rlaFOoHZjZCrMcZwEtass7kVrfLq/7Pk68phSqg\nrR/3BAweYHKKDsihjKdDhBD4lo1ZWTkfioHocHCApl1Og1SgBDIBK6Dfh5ry\nxlLC4oXj46rS7G3LIQQlF5tfuOmamOfutIJ65esIgHogF946Snsn5+/AuKSU\nfc9m85pR1YO74CGlVntQTUnE4tCd1leHQMNWXcdpQVF5v83ESmSkuDMYmhj6\nrbcrPwqympFrGxHD4ydDFAulzMwcGo/Kn20EONjNnKZBf5TZ+6VPcRLqsXxG\nWOaqB2IkkUdUDUrBxCKizbbh+0pv6LLgY7p9uR1pNQJXJLKd6tGFlJ3pdQEW\nk1uRflq3mER6VmHkcfHcpKA8VK0J0+r084+4NV+p8jxeBXY8OsB9em8kKGhj\n3BSVwZVPvCavuvn6D5mdSeZf7dqK1cgaf0OjbJCNDeT3qKRzShmB+2MUDpHI\nnYgJ\r\n=QWuu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"fbcb62abc60fe6405272e062f49093a2c1269ae4","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v14.4.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"14.4.0","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"1.150.9-review-changes.1024+fbcb62abc"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_1.150.9-review-changes.1024_1602070636567_0.4601531893591184","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"@sanity/presence-store","version":"2.0.1","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@2.0.1","maintainers":[{"name":"bryanlrobinson","email":"bryan@codecontemporary.com"},{"name":"beb","email":"b@brkn.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"simenss","email":"simen@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"337d19eedce4117f15467bcec0fb7c65ba91fa5a","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-2.0.1.tgz","fileCount":7,"integrity":"sha512-lylyOlAI5izzmCMOxZjBPFQZxoLXxw4lJlO845b0mJEipl1N/jRBmHcsZ326jCKyjvug2mMrFiz5U3ju1fBEaA==","signatures":[{"sig":"MEUCIQDR8mvy/sSkMm56+qHKetqLKdvqX8oPR9eacjgTzW6lewIgTbFxUqZpRMeisaTDT14+k9Q5IwBd9C66ywIMlLSe8y4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18180,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffhZrCRA9TVsSAnZWagAAbAYQAKOAdOzFmsTCtL5SPVv6\nVu5E9z86WXe4yenfZM7mEydcMUJUfioSDQcrY/5HjGiy4Edc7ZEPKDZqifZ3\nwLer3MJpEGOqJRhDFja0+ln81SF8jwkA1QoLOet6hzTPYSORLnJMhzckzubZ\naeO3RhNbKdUkutOV1NPeNhCZRfL0S8UNL4B3YVQuzxS5sf9VhFpRGshaKpSt\nJ8fy9qjloE8iY/4rX9X++1AI2KJOX0eGBPdiB5uR4zUTIbF2Fs/v7S1D3TyS\nMJAxKT8eyT78ImP0W7VwO+qWpUuXq17Zt0ug4J49RKyYdGAsib86vC5zUncl\nx9DEaRmxJl5JX+cer7gtEl5sI2hzwAlyvoX7p1zIw3dbbL+OjAk63nQ6B3AP\nxVONcu3poU+g3oqbOhsrl1E0jFwzNoUvj2vhfdhiMh/hkj6ZLsoefwFuU1lE\n5RksODuaBW8q+KQ+C5yYWL+RptmryB0YNC71udUkTfnPdWhNR1W1adWhZvbx\n77mwCTHHm1xthP2qDe+4CFbjaHYixBMvcqX1vT++pKJJvrJtCk7hiIogVHdO\nMDVtvO2xN8kXBxjMnttlVyIOjXNGgG49e7ho5T/3ElN0LcvCoxZ721in8X1R\n8pCKh72sV2kMxNvjkp0CGr93UkID4rLeLPhzbxcMg8Z+HP1h4CyvMygJ2IJR\nBrTI\r\n=lH0m\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","gitHead":"2513e0eb112a5994feaba4dc6ac5322f2e865c25","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v14.4.0+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"14.4.0","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"2.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_2.0.1_1602098794763_0.5411803613653667","host":"s3://npm-registry-packages"}},"2.0.9":{"name":"@sanity/presence-store","version":"2.0.9","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@2.0.9","maintainers":[{"name":"hermanw","email":"herman@sanity.io"},{"name":"raveling","email":"ronald@sanity.io"},{"name":"jorn_georg","email":"jorn@sanity.io"},{"name":"juicycleff","email":"juicycleff@outlook.com"},{"name":"fredcarlsen","email":"fred@superbig.co"},{"name":"bryanlrobinson","email":"bryan@codecontemporary.com"},{"name":"beb","email":"b@brkn.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"simenss","email":"simen@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"3d6c93327e7269fc0bb8b734eeedda68239e1249","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-2.0.9.tgz","fileCount":7,"integrity":"sha512-WeWadyD5Rs+RVrObNNBbhdzGxywa9SDCPZ4rPApI9cTUuJL1OkeVA+MaqrlR23GnRqfanzieQ+1Ig5TYsoc1nQ==","signatures":[{"sig":"MEUCIAfDbGbysqjzChIlK5uowqKvboLMMIcXdSBS7p4+55j2AiEArJtz2FuoUHEitZTdtEcfzb5P9ckfJC002TZoSlB1IQk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18241,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfo/d1CRA9TVsSAnZWagAAmR8P/3XiH3aO37kNURrjs5un\nZcX1q+s39TBBZyZSDReamvFGifW8OT9FCEGyQpv4cWKuGllwvufQ/IOJ1LXb\nTjRIEdU5UUNBV22O+qJeteRQuRStMLwv3Eea3TIVJ1bwz6L9sWdEPEYI8OqN\nbmii5mn7qNFc8t08dZ/Hi9/ID8Pk8qj0uCgIyRaDr0hrX8QNv68NmOiV1Uw2\n3u/KCEPbJDV3DKIexrqRIKqBh3R40yNY1ySlsRp3W/77LFT5tNJOHK/KS9xw\nn8s2f85nfYmI0jkLtWbxCnKBqJjgZYXEXH/12hkDcp5AQtuJe8MfGsEN/s1C\nAJP/Uau4E7XUKnBuMO64qOzfUdf1ERak/91kCs11KG54oaFj0h9QN4uuxaMr\nkz9+Kk9YSfcqrc/cOSxOZj8XP+5urpboQrk4ikpQrtqr5V8Ad19X9bfaG2wJ\nsdAH2x8kX70l1GDeIWxq9z9XRb1iweHZ7b/b3e2AKUhAR5pxYUiJQyg1jpqs\nRxzno3QIjokHVwkAKaT+ZqKmUAYfX5PTMiNZs0+d/H28lyx1xGM/ADhldAjF\n0dwtOWtpQ21T0mQ+FMHitlNlNkmmu0jIgDEUAdTZmBeFJJdwJI62NrtxKOdZ\n7dyjVN+mmGgspHf86xazfZFoT9UmsT4KbUFev9RH/oBuMFkRoR+9lsTxA1js\nAo7x\r\n=bwbt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","gitHead":"d8995bef8b46f6844af90addc1e43204470999c1","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v12.18.3+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.18.3","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"2.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_2.0.9_1604581237551_0.4928244651723974","host":"s3://npm-registry-packages"}},"2.0.10-canary.0":{"name":"@sanity/presence-store","version":"2.0.10-canary.0","keywords":["sanity","cms","headless","realtime","content","presence-store"],"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","_id":"@sanity/presence-store@2.0.10-canary.0","maintainers":[{"name":"hermanw","email":"herman@sanity.io"},{"name":"raveling","email":"ronald@sanity.io"},{"name":"jorn_georg","email":"jorn@sanity.io"},{"name":"juicycleff","email":"juicycleff@outlook.com"},{"name":"fredcarlsen","email":"fred@superbig.co"},{"name":"bryanlrobinson","email":"bryan@codecontemporary.com"},{"name":"beb","email":"b@brkn.io"},{"name":"dcilke","email":"dain.cilke@gmail.com"},{"name":"obliadp","email":"orjan@sanity.io"},{"name":"saasen","email":"stensaasanders@gmail.com"},{"name":"judofyr","email":"judofyr@gmail.com"},{"name":"vicbergquist","email":"victoria.bergquist@gmail.com"},{"name":"rbotten","email":"rbotten@gmail.com"},{"name":"radhe_sanity","email":"radhe@sanity.io"},{"name":"evenw","email":"even@sanity.io"},{"name":"sanity-io","email":"developers@sanity.io"},{"name":"mariuslundgard","email":"studio@mariuslundgard.com"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"bjoerge","email":"bjoerge@gmail.com"},{"name":"rexxars","email":"espen@hovlandsdal.com"},{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},{"name":"simenss","email":"simen@bengler.no"}],"homepage":"https://www.sanity.io/","bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"dist":{"shasum":"76bd32b5a1b37cc4766ecbae24b1dc02e5d34f0a","tarball":"https://registry.npmjs.org/@sanity/presence-store/-/presence-store-2.0.10-canary.0.tgz","fileCount":7,"integrity":"sha512-dA8D4FoZciZaRPmEGXMc74GPSCHiPt8UM5j2qp9S8gezW7+c/PFEO5es8Ink8ovuFX/ORQK7kje8/IKxTyZ/HQ==","signatures":[{"sig":"MEUCIFeERan+UBhWJFv/AJyo2S7F8K5v3YKHjnD4QidhtnqTAiEAoz8L82K6jUfqcR5WxlvMksL7P3NGSMOmQfRuJ5H1/vA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18281,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpApnCRA9TVsSAnZWagAAj28P/AxCMhdXUJcxg2wAVOd8\n/xDeXTiVdqIZ/ZJZo/ODFtZSC5c/W6T/eF2j2nB/Le+FAGFuzXx0Q7c2WT+Z\ncV3y28s1qmCeiZx4K5Mv+WQ2vqSqe7J6NsGFYAdmtAcfjrhp3InJ8EZRExk7\nMJKAGPVyNj8KDFM5Txa+qnTwjpPWzwSsXqXfs0MrJECt+7lnCadkXATcb48s\njqn+tp81q1Z4dGDjb3e8fWCuwEDakFJQ5E/84HFZ/QDCQzyKtIRlHKuIh3AD\nlF9BXqPr7hmMkxw5wmkOJdENppXirxiGe1MQkfvB7nW8OVDSNVsfnThKkMMR\nLe4PJ2br3KbzzMkEC2vLk8ChUXOhYsmOKubrsBAehI4K5yIQYkg8GbDWUcl6\nOhTsOWymRNV3soHh4l3PXBgyx0YgS/O6yU+knSbXXuQMw2CqMd+Verco7t+2\n+0GVTTi113GDPFkJEF2eDL1wbBFSF11wn3Wyq/6Kb83XhjaYj0du0G7sAO66\nDdnL9ct13Xw7dOt2JC4m//Rrsxp947/C6E3JS8teHmFCFTdfHe4v1qaC0EpV\nxKEJxtvYluvbFadfBNrglqKSZB1Zg8ZuECV5gFs2/wDKivMFcq8DAirHJccl\nZdA+EpRoHEkO5i6sNp2J8QsRTp7TKIHmGAqaKeRFm+U6401uh5bmFLljBoey\nB18q\r\n=ynRa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/PresenceStore.js","readme":"# PresenceStore — Client side presence channel handler\n\nThe purpose of this class is to connect to the reflector service and provide a consistent view\nof what everybody else on the channel is \"doing\", i.e. their state. This supports the real time\npresence experience in Sanity.\n\n## Usage\n\n``` js\nimport PresenceStore from '@sanity/presence-store'\nimport Reflector from '@sanity/reflector-client'\nimport myConfiguredSanityClient from './myConfiguredSanityClient'\n\nconst presenceStore = new Presence(new Reflector(myConfiguredSanityClient).connect('channelName'))\n\n// Subscribe to state changes about all other users on the channel\npresenceStore.presence.subscribe(allTheirStates => {\n  // Called with an array of all known states whenever it changes\n  console.log(allTheirStates)\n})\n\n// Report my state to the other clients on the channel\npresenceStore.reportMyState({\n  location: \"/fnah\",  // The format of state reports is app-specific, can be any JSON'able object, but keep it\n  activity: \"editing\" // short and sweet. At the time of writing we don't know how the Sanity studio will use it.\n})\n\n// Do this to allow the presence store to notify the others that we left. Uses\n// navigator.sendBeacon to get the message out even though the window is closing.\nwindow.addEventListener(\"beforeunload\", function(e){\n  presenceStore.close()\n}, false);\n```\n\n## Format of state reports\n\nThe reports from the presence subscription (i.e. `allTheirStates` as seen above) will look someting like this:\n\n``` js\n[\n  {\n    identity: \"<a sanity identity>\",\n    session: \"<an UUID to identify the browser window>\",\n    // and now whatever this client reported to reportMyState:\n    location: \"/fnah\",\n    activity: \"editing\"\n  },\n  // more of these ...\n]\n```\n\nThe order of the reports is consistent between calls, the object identity of each report is identical\nuntil it changes, and is always new when it does change.\n\nYou don't see your own state reported in this window in the list, but you _will_ see state reported\nfor your identity in other windows.\n","gitHead":"864ed757afc53c244f41ae7c7472746947d0a0c0","scripts":{"test":"NODE_ENV=test tape -r @babel/register test/*.test.js","clean":"rimraf lib","compile":"babel src --copy-files --out-dir lib"},"_npmUser":{"name":"skogsmaskin","email":"per.kristian.nordnes@gmail.com"},"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v12.18.3+x64 (darwin)","description":"Client side presence channel handler","directories":{},"_nodeVersion":"12.18.3","dependencies":{"rxjs":"^6.5.3","deep-equal":"^1.0.1","@sanity/uuid":"2.0.10-canary.0+864ed757a"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.8.0","rimraf":"^2.7.1"},"_npmOperationalInternal":{"tmp":"tmp/presence-store_2.0.10-canary.0_1604586087117_0.7097119127852591","host":"s3://npm-registry-packages"}}},"time":{"created":"2017-11-24T11:38:19.121Z","modified":"2026-04-08T15:17:47.687Z","0.122.0":"2017-11-24T11:38:19.121Z","0.123.0-alpha.ce219b27":"2017-11-30T19:20:25.213Z","0.123.0-beta.ce219b27":"2017-11-30T19:59:21.182Z","0.124.0-alpha.35b4b49a":"2017-12-13T21:08:51.145Z","0.124.0-alpha.d5ac0a90":"2017-12-14T10:00:38.885Z","0.124.0-alpha.f0625b40":"2017-12-20T10:06:30.025Z","0.124.0-alpha.56833000":"2018-01-05T10:49:27.452Z","0.124.0-alpha.803a5e05":"2018-01-05T11:00:55.588Z","0.124.0-alpha.831a5eca":"2018-01-05T11:34:57.543Z","0.124.0-next.71deafdf":"2018-01-08T14:57:12.784Z","0.124.0-next.6c328976":"2018-01-08T19:12:04.175Z","0.124.0-next.a6431d11":"2018-01-08T19:47:01.197Z","0.124.0-default-login.063643d2":"2018-01-09T13:52:07.432Z","0.125.0-vega.c48b34cc":"2018-01-15T14:27:50.081Z","0.125.0-vega.1bc71a10":"2018-01-15T14:35:54.572Z","0.125.0-next.b1f0d4fa":"2018-01-16T14:29:30.475Z","0.125.0-next.f7d2f004":"2018-01-16T14:37:52.656Z","0.124.5":"2018-01-16T16:01:37.916Z","0.124.9":"2018-01-24T15:16:56.875Z","0.125.0-next.f0a45fc8":"2018-01-24T15:44:24.690Z","0.125.0-next.e3503829":"2018-01-24T20:38:45.539Z","0.125.0-next.509884e7":"2018-01-24T21:00:11.594Z","0.125.0-next.90bb7dbc":"2018-01-24T21:16:55.800Z","0.125.0-next.e8a95940":"2018-01-25T20:16:16.221Z","0.125.0-next.7f27340d":"2018-01-28T09:09:11.604Z","0.125.0-alpha.593130df":"2018-01-28T14:31:00.396Z","0.125.0-rc.0":"2018-01-29T16:45:43.275Z","0.125.0-rc.1":"2018-01-29T18:23:06.488Z","0.125.0-rc.2":"2018-01-29T18:29:02.623Z","0.125.0-rc.3":"2018-01-29T18:37:20.030Z","0.124.12":"2018-01-29T18:45:56.553Z","0.125.0-next.c0a1c26b":"2018-01-29T19:42:09.315Z","0.125.0-next.d323ee1a":"2018-01-29T19:56:40.231Z","0.125.0-rc.4":"2018-01-29T20:24:21.329Z","0.125.0":"2018-01-30T12:32:20.230Z","0.126.0-alpha.74ae7fc1":"2018-02-12T03:27:06.929Z","0.125.6":"2018-02-14T09:41:24.475Z","0.126.0-fix-span-keys.12d2645d":"2018-02-14T11:07:36.644Z","0.125.8":"2018-02-15T11:36:29.417Z","0.126.0-next.a249ae9f":"2018-02-25T16:32:39.763Z","0.126.0-alpha.8a1ee38f":"2018-02-26T08:14:20.341Z","0.126.0-next.febffa69":"2018-03-02T08:35:07.684Z","0.126.0-next.536d8adf":"2018-03-05T19:30:40.660Z","0.126.0":"2018-03-06T12:17:00.330Z","0.127.0-next.f6814493":"2018-03-15T10:01:02.097Z","0.127.0-next.39c2be50":"2018-03-15T11:41:01.734Z","0.127.0-next.2eed79ff":"2018-03-15T12:36:49.366Z","0.127.1":"2018-03-15T15:36:00.682Z","0.128.0-next.124ce231":"2018-03-22T11:54:08.853Z","0.128.0-next.3c762f83":"2018-03-22T12:12:57.512Z","0.128.0":"2018-03-22T13:46:53.889Z","0.128.1":"2018-03-22T14:05:16.511Z","0.128.3":"2018-03-22T14:14:03.277Z","0.129.0-alpha.298b96b5":"2018-04-17T15:29:30.112Z","0.129.0-realtime-block-editor.3bcf6473":"2018-04-18T09:20:33.386Z","0.130.0-realtime-block-editor.e9285437":"2018-04-24T14:36:19.614Z","0.130.0-alpha.7e3ea3ad":"2018-04-27T19:37:28.565Z","0.130.0":"2018-05-03T07:00:35.055Z","0.131.0-alpha.7b4bcb14":"2018-05-08T09:54:04.216Z","0.132.0-next.f8f265d4":"2018-05-18T08:20:58.044Z","0.132.0-next.d3b8c54c":"2018-05-23T15:03:42.899Z","0.132.0-next.d060f6dc":"2018-05-24T10:38:04.957Z","0.132.0-alpha.7fcf9a39":"2018-05-24T11:13:01.119Z","0.132.0":"2018-05-24T13:22:55.633Z","0.133.0-next.ddda7af6":"2018-05-29T08:50:50.613Z","0.133.0-next.0fc5a66d":"2018-05-31T15:46:47.040Z","0.132.2":"2018-06-01T10:42:38.540Z","0.132.4-next.0":"2018-06-04T21:53:24.109Z","0.133.0-realtime-block-editor.72c3aa98":"2018-06-08T12:41:35.933Z","0.133.0-realtime-block-editor.b0c02255":"2018-06-15T09:23:03.560Z","0.133.0-realtime-block-editor.8efe50ed":"2018-06-20T14:00:17.731Z","0.133.0-realtime-block-editor.e0a05fd0":"2018-06-26T13:15:32.163Z","0.133.0-realtime-block-editor.410b182f":"2018-06-27T09:00:33.426Z","0.133.0-realtime-block-editor.6696d11c":"2018-06-27T09:22:39.037Z","0.133.0-realtime-block-editor.6334c043":"2018-06-27T10:20:17.765Z","0.133.0-realtime-block-editor.33c2edde":"2018-06-27T11:27:50.636Z","0.133.0-realtime-block-editor.5fcc290f":"2018-06-27T14:21:20.620Z","0.132.5":"2018-06-28T13:08:39.807Z","0.133.0-realtime-block-editor.6a0cdbe8":"2018-07-02T08:04:17.395Z","0.133.0-vega.cb3cdeee":"2018-07-02T12:11:47.596Z","0.133.0-realtime-block-editor.9839d7be":"2018-08-07T09:58:23.908Z","0.133.0-alpha.2998219b":"2018-08-24T09:18:20.296Z","0.133.0-alpha.6c26291e":"2018-08-25T12:53:01.946Z","0.133.0-next.9c72956b":"2018-08-31T10:39:14.621Z","0.133.0-next.0119dcd9":"2018-08-31T11:38:12.223Z","0.133.0-babel-7.c9b85eeb":"2018-09-04T08:31:47.751Z","0.133.0-babel-7.fc481eec":"2018-09-04T08:44:09.454Z","0.133.0-babel-7.06032ac5":"2018-09-04T15:46:03.206Z","0.133.0-realtime-block-editor.3566387d":"2018-09-13T10:44:21.293Z","0.133.0-realtime-block-editor.b65ceaaa":"2018-09-15T08:42:42.823Z","0.133.0-alpha.62006080":"2018-09-18T07:08:07.306Z","0.133.0-realtime-block-editor.6916e3ac":"2018-09-18T08:08:12.457Z","0.133.0":"2018-09-18T09:49:14.309Z","0.133.1":"2018-09-19T07:44:42.653Z","0.133.2":"2018-09-20T08:28:00.165Z","0.134.0-beta.cddc8121":"2018-09-20T10:39:29.563Z","0.134.0-alpha.d19d4c0c":"2018-09-21T13:08:48.877Z","0.134.0":"2018-09-26T08:01:20.286Z","0.135.0-realtime-block-editor.220":"2018-09-26T08:51:37.752Z","0.135.0-beta.0":"2018-09-26T11:13:52.027Z","0.135.0-realtime-block-editor.237":"2018-09-27T14:04:43.903Z","0.135.0-realtime-block-editor.250":"2018-09-29T11:17:06.090Z","0.135.0-next.1":"2018-10-04T14:19:50.559Z","0.135.0-next.2":"2018-10-10T15:06:41.474Z","0.135.0":"2018-10-16T14:01:41.769Z","0.135.3-next.6":"2018-10-26T09:35:00.360Z","0.135.6-canary.209":"2018-11-07T14:44:58.923Z","0.135.6-canary.217":"2018-11-07T15:30:47.716Z","0.135.7-canary.241":"2018-11-12T10:56:39.674Z","0.135.7-canary.245":"2018-11-12T13:44:21.069Z","0.135.7-canary.252":"2018-11-14T14:18:14.623Z","0.135.7-canary.259":"2018-11-14T16:34:53.002Z","0.135.7-canary.262":"2018-11-15T08:37:16.613Z","0.135.7-canary.266":"2018-11-15T09:51:33.429Z","0.135.7-canary.267":"2018-11-15T10:18:23.812Z","0.136.0":"2018-11-15T13:05:16.971Z","0.136.1-canary.5":"2018-11-15T14:07:06.057Z","0.137.0-realtime-block-editor.315":"2018-11-15T23:21:32.420Z","0.137.0-realtime-block-editor.319":"2018-11-16T11:58:53.424Z","0.137.0-realtime-block-editor.321":"2018-11-16T13:53:40.283Z","0.137.0-realtime-block-editor.326":"2018-11-20T10:22:00.433Z","0.137.0-realtime-block-editor.340":"2018-11-21T13:26:57.272Z","0.137.0-realtime-block-editor.343":"2018-11-27T09:36:50.784Z","0.136.1-canary.26":"2018-11-28T20:05:37.059Z","0.136.1-canary.27":"2018-11-28T21:49:01.464Z","0.136.1-canary.28":"2018-11-28T21:57:35.316Z","0.136.1-canary.32":"2018-11-29T12:57:14.211Z","0.137.0-alpha.343":"2018-11-29T15:06:30.874Z","0.137.0-realtime-block-editor.344":"2018-11-29T15:29:40.240Z","0.136.3-gql-rtb.359":"2018-12-01T18:16:23.207Z","0.136.1-canary.33":"2018-12-03T14:20:17.824Z","0.136.3-gql-rtb.371":"2018-12-03T22:43:26.613Z","0.136.3-gql-rtb.372":"2018-12-04T10:54:39.695Z","0.136.3-gql-rtb.375":"2018-12-04T18:51:28.895Z","0.137.0-realtime-block-editor.372":"2018-12-09T13:43:58.725Z","0.137.0-realtime-block-editor.373":"2018-12-09T14:59:39.991Z","0.137.0-realtime-block-editor.378":"2018-12-10T14:31:21.985Z","0.137.0-realtime-block-editor.379":"2018-12-10T15:02:18.610Z","0.137.0-realtime-block-editor.380":"2018-12-10T22:35:06.355Z","0.137.0-realtime-block-editor.382":"2018-12-11T11:24:40.431Z","0.136.3-gql-rtb.417":"2018-12-13T13:10:44.422Z","0.137.0":"2018-12-13T14:56:53.015Z","0.136.1-canary.66":"2018-12-13T15:24:34.922Z","0.138.0-realtime-block-editor.16":"2018-12-13T18:01:56.725Z","0.138.0-realtime-block-editor.14":"2018-12-13T18:44:00.605Z","0.138.0-alpha.14":"2018-12-13T20:59:23.950Z","0.138.0-alpha.20":"2018-12-15T04:20:59.323Z","0.138.0-realtime-block-editor.21":"2018-12-17T11:57:33.738Z","0.138.0-realtime-block-editor.24":"2018-12-17T19:13:10.346Z","0.138.0-realtime-block-editor.25":"2018-12-17T19:56:07.403Z","0.138.0-realtime-block-editor.22":"2018-12-17T20:57:44.958Z","0.138.0-alpha.21":"2018-12-17T22:35:24.285Z","0.138.0":"2018-12-18T11:51:04.423Z","0.139.0-rc.0":"2018-12-18T12:55:24.481Z","0.139.0":"2018-12-19T14:49:33.447Z","0.140.0-alpha.1":"2018-12-19T20:56:04.588Z","0.140.0-alpha.3":"2018-12-20T01:00:21.930Z","0.140.0-alpha.4":"2018-12-20T02:36:00.025Z","0.139.3-canary.0":"2018-12-25T22:39:59.427Z","0.139.3-parrot.0":"2018-12-25T23:11:04.394Z","0.140.0":"2019-01-16T16:49:02.569Z","0.141.0-alpha.12":"2019-02-25T13:54:51.820Z","0.140.10-alpha.80":"2019-03-12T10:49:44.259Z","0.140.10-canary.82":"2019-03-12T12:34:20.582Z","0.140.10-canary.85":"2019-03-12T16:15:01.931Z","0.140.16":"2019-04-26T11:39:18.891Z","0.141.1":"2019-06-25T16:55:31.595Z","0.141.3":"2019-06-28T11:00:13.989Z","0.141.4":"2019-06-28T12:23:08.640Z","0.141.5":"2019-06-28T13:59:38.346Z","0.141.7-next.18":"2019-08-13T08:32:33.121Z","0.141.7-next.19":"2019-08-13T09:02:31.855Z","0.141.7-next.20":"2019-08-13T09:50:11.838Z","0.142.0":"2019-08-13T14:27:39.042Z","0.142.6":"2019-09-30T16:45:19.703Z","0.142.8-initial-value-templates.41":"2019-10-08T23:55:09.090Z","0.142.8-initial-value-templates.45":"2019-10-11T00:19:15.364Z","0.142.8-initial-value-templates.55":"2019-10-15T21:30:49.784Z","0.142.8-initial-value-templates.59":"2019-10-15T23:32:03.688Z","0.142.8-initial-value-templates.64":"2019-10-18T17:01:35.851Z","0.142.9-initial-value-templates.60":"2019-10-18T17:08:54.187Z","0.143.0-initial-value-templates.72":"2019-10-21T18:25:28.357Z","0.143.0-initial-value-templates.73":"2019-10-21T22:14:32.751Z","0.143.0-initial-value-templates.55":"2019-10-24T17:26:42.555Z","0.144.0":"2019-10-24T20:20:24.566Z","0.144.3-cheesy-bites.80":"2019-11-12T12:14:03.739Z","0.145.0-alpha.32":"2019-11-12T14:24:21.083Z","0.144.3-cheesy-bites.84":"2019-11-12T15:00:28.363Z","0.144.3-cheesy-bites.94":"2019-11-13T19:35:35.039Z","0.144.3-cheesy-bites.106":"2019-11-14T00:44:07.564Z","0.144.3-cheesy-bites.110":"2019-11-14T12:14:10.495Z","0.144.4-cheesy-bites.132":"2019-11-16T19:01:49.071Z","0.144.4-cheesy-bites.121":"2019-11-18T22:44:26.586Z","0.145.0":"2019-11-19T22:12:44.206Z","0.146.0-alpha.1":"2019-11-20T00:09:16.426Z","0.146.0-alpha.2":"2019-11-21T13:01:52.030Z","0.146.0":"2019-11-26T15:59:55.308Z","0.147.0-alpha.0":"2019-11-26T22:29:50.055Z","0.147.0-alpha.1":"2019-11-26T23:55:58.206Z","0.147.0-alpha.2":"2019-11-27T00:22:44.143Z","0.147.0-block-tools-white-space-fix.2":"2019-11-27T17:27:26.204Z","0.146.4-hints-mode.156":"2019-12-09T14:34:43.359Z","0.147.0-handle-access-control-errors.38":"2019-12-09T17:55:26.222Z","0.147.0":"2019-12-09T18:01:49.519Z","0.147.7-document-actions.50":"2019-12-20T10:19:32.187Z","0.147.7-document-actions.51":"2019-12-20T10:25:03.689Z","0.147.7-document-actions.52":"2019-12-20T10:31:26.002Z","0.147.7-document-actions.59":"2019-12-20T13:22:53.266Z","0.147.8-document-actions.59":"2019-12-20T13:29:32.477Z","0.147.8-document-actions.86":"2020-01-14T09:20:57.980Z","0.147.8-canary.18":"2020-01-14T19:32:29.633Z","0.147.10-document-actions.84":"2020-01-15T15:06:10.504Z","0.147.10-ts-client.1":"2020-01-15T22:15:24.969Z","0.147.10-document-actions.97":"2020-01-24T15:14:54.550Z","0.147.10-document-actions.30":"2020-01-30T17:12:30.670Z","0.147.10-document-actions.31":"2020-01-31T09:26:15.849Z","0.147.10-document-actions.34":"2020-02-04T08:41:25.387Z","0.147.10-document-actions.37":"2020-02-04T10:23:38.674Z","0.147.10-next.23":"2020-02-11T11:58:10.849Z","1.148.0":"2020-02-12T10:32:31.530Z","1.148.1":"2020-02-13T00:35:55.643Z","1.148.3-document-actions.16":"2020-02-14T15:39:27.146Z","1.148.3-document-actions.26":"2020-02-17T09:48:45.924Z","1.148.5-document-actions.23":"2020-02-18T13:39:38.703Z","1.149.0":"2020-02-27T15:30:14.846Z","1.149.16-canary.35":"2020-05-15T15:48:04.766Z","1.149.16-canary.136":"2020-05-19T18:20:54.764Z","1.149.16-canary.201":"2020-05-20T17:23:09.204Z","1.149.16-canary.202":"2020-05-20T19:00:30.474Z","1.149.16-canary.223":"2020-05-25T14:54:13.312Z","1.149.16-canary.250":"2020-05-27T11:38:48.995Z","1.149.16":"2020-06-09T11:37:22.491Z","1.149.16-canary.379":"2020-06-09T14:26:16.565Z","1.149.16-canary.412":"2020-06-11T10:48:58.688Z","1.149.16-canary.437":"2020-06-17T11:47:50.061Z","1.149.16-canary.438":"2020-06-17T11:53:06.595Z","1.149.16-canary.440":"2020-06-17T14:51:38.126Z","1.149.18-canary.415":"2020-06-30T11:33:21.801Z","1.149.18-canary.419":"2020-07-01T11:17:49.031Z","1.149.18-canary.421":"2020-07-01T13:26:46.154Z","1.149.18-canary.422":"2020-07-01T14:01:29.536Z","1.149.18-canary.423":"2020-07-01T15:15:28.878Z","1.149.18-canary.445":"2020-08-07T12:29:22.770Z","1.149.20-canary.460":"2020-08-14T20:30:46.986Z","1.149.20-canary.461":"2020-08-17T08:57:55.385Z","1.149.20-canary.462":"2020-08-17T09:52:55.338Z","1.149.20-canary.463":"2020-08-17T12:13:00.106Z","1.149.20-canary.469":"2020-08-18T08:27:50.195Z","1.149.20-canary.486":"2020-08-19T12:46:06.544Z","1.149.20-canary.487":"2020-08-19T15:23:41.548Z","1.149.20-canary.488":"2020-08-19T15:27:09.189Z","1.150.0":"2020-08-20T08:39:12.303Z","1.150.1":"2020-08-20T17:21:14.577Z","1.150.2-canary.0":"2020-08-21T09:32:09.145Z","1.150.5-canary.6":"2020-08-27T06:36:18.710Z","1.150.8-review-changes.375":"2020-09-09T12:00:47.149Z","1.150.8-review-changes.379":"2020-09-09T12:26:00.041Z","1.150.8-review-changes.382":"2020-09-09T13:16:39.228Z","1.150.8-review-changes.463":"2020-09-15T07:55:13.964Z","1.150.8-review-changes.644":"2020-09-18T18:11:53.010Z","1.150.9-review-changes.736":"2020-09-23T16:40:01.636Z","1.150.9-review-changes.877":"2020-09-29T20:18:04.466Z","1.150.9-review-changes.912":"2020-09-30T14:20:02.689Z","1.150.9-review-changes.952":"2020-10-01T16:45:05.436Z","1.150.9-review-changes.1024":"2020-10-07T11:37:16.717Z","2.0.1":"2020-10-07T19:26:34.885Z","2.0.9":"2020-11-05T13:00:37.680Z","2.0.10-canary.0":"2020-11-05T14:21:27.268Z"},"bugs":{"url":"https://github.com/sanity-io/sanity/issues"},"author":{"name":"Sanity.io","email":"hello@sanity.io"},"license":"MIT","homepage":"https://www.sanity.io/","keywords":["sanity","cms","headless","realtime","content","presence-store"],"repository":{"url":"git+https://github.com/sanity-io/sanity.git","type":"git"},"description":"Client side presence channel handler","maintainers":[{"email":"svc.npm@sanity.io","name":"sanity-svc.npm"},{"email":"developers@sanity.io","name":"sanity-io"}],"readme":"","readmeFilename":""}