{"_id":"casbin-pg-watcher","_rev":"4-5c3b01c8a9902ea408d5260a717dc1a0","name":"casbin-pg-watcher","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"casbin-pg-watcher","version":"0.1.0","description":"A casbin watcher based on PostgreSQL NOTIFY","main":"index.js","scripts":{"test":"standard && tap test.js","postgres":"docker run -p 5432:5432 --name casbin -e POSTGRES_PASSWORD=postgres -d postgres:11-alpine"},"repository":{"type":"git","url":"git+https://github.com/mcollina/casbin-pg-watcher.git"},"keywords":["casbin","posgresql","postgre","sql","watcher","postgres"],"author":{"name":"Matteo Collina","email":"hello@matteocollina.com"},"license":"MIT","bugs":{"url":"https://github.com/mcollina/casbin-pg-watcher/issues"},"homepage":"https://github.com/mcollina/casbin-pg-watcher#readme","devDependencies":{"casbin":"^5.1.2","casbin-pg-adapter":"^1.4.0","standard":"^14.3.4","tap":"^14.10.8"},"dependencies":{"pg-listen":"^1.6.0"},"gitHead":"fff179fd7b575196ee7d297f2697ab000bb59ea0","_id":"casbin-pg-watcher@0.1.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.7","_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"dist":{"integrity":"sha512-91Zemc2cSsf9s314veeo//cqIpm4/GSv7wCWe44LhdBSHE9JvytdLc5TnuQC0CfAX/rmdCg1F59MbW0p3cyZZA==","shasum":"e32823dea38bbd183c01886783b5f2d3afce79a5","tarball":"https://registry.npmjs.org/casbin-pg-watcher/-/casbin-pg-watcher-0.1.0.tgz","fileCount":8,"unpackedSize":8243,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPR8GCRA9TVsSAnZWagAAj08P/Agzdtv7x5x4jows5dcW\nP06EmU5o1gnhT+4l8wNrupTY8S1axhWgbD5JbLq5WtetyczzS93ihrOGK8kE\nuwVoSTR1dKgeTdfTdyDpEaCWDHdknv3+1ZRKdU5b/uISN2AyJX8WTRQunxwk\nwe27LEm0nfvw8AaFvvP4ydgcinZ2SWFxELTBrvyZR8G/aJWrUbV5v2eVsfgW\n7FMPwNTjtVGZqUweMRpXCv+DMxo9xQWiAf0QObr3wDOUNjG8gmEuLPnx+QDE\nXlqgrktnV1FiwRCZbQVnM4rFhciDjP4y8o/fjuO4DC+wViImbNwGl/h5aIxL\nBFKxblRUvhMh0n8k+Rh0WRkj6reX7aHUyf/MOiB0b+PkkQTL6NF4/1KAWkB4\n5/7CfDz7w33Xbq7NtBnY1Tl6tk49QwsSqXgDYHIH/Aryrow4ZHdXm8jVIt+q\nAm9ki2Q8/omHTrpNXwumCm7ZNFNqjhb+PQxAcTff/t46gPIpXx0MNX0mY9Ks\n4x8xSUHR5DPpS2MXNy+A2nyu2QQVP3NAtzau6nk9r9OUtKdyCjUrJpOVdTSX\n8DLLB3xAX4YSEq0PDNnuNcNd2na5/8BdVbDUb2DypnSWu37tGRTwXrO2s1z2\nkKfiAKVljXDgrAnWAiYhuBnZPuLynY7DvOBN4pSd68Cf53+GD0oX1m8n/noD\nk1Rm\r\n=+k70\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDQbnSSSBmEbIj4cewICPma8J+H59OgfSW34THgXSsltwIhANFkL+nJ1/NLvVOXF5NjIVUpHVXsv+I2lxP3hCzR5v2d"}]},"maintainers":[{"name":"matteo.collina","email":"hello@matteocollina.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/casbin-pg-watcher_0.1.0_1597841158083_0.8654164823428729"},"_hasShrinkwrap":false},"0.1.1":{"name":"casbin-pg-watcher","version":"0.1.1","description":"A casbin watcher based on PostgreSQL NOTIFY","main":"index.js","scripts":{"test":"standard && tap test.js","postgres":"docker run -p 5432:5432 --name casbin -e POSTGRES_PASSWORD=postgres -d postgres:11-alpine"},"repository":{"type":"git","url":"git+https://github.com/mcollina/casbin-pg-watcher.git"},"keywords":["casbin","posgresql","postgre","sql","watcher","postgres"],"author":{"name":"Matteo Collina","email":"hello@matteocollina.com"},"license":"MIT","bugs":{"url":"https://github.com/mcollina/casbin-pg-watcher/issues"},"homepage":"https://github.com/mcollina/casbin-pg-watcher#readme","devDependencies":{"casbin":"^5.1.2","casbin-pg-adapter":"^1.4.0","standard":"^14.3.4","tap":"^14.10.8"},"dependencies":{"pg-listen":"^1.6.0"},"gitHead":"5d3a3d15a7532f26560429e7ef3780753224b883","_id":"casbin-pg-watcher@0.1.1","_nodeVersion":"12.18.1","_npmVersion":"6.14.7","_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"dist":{"integrity":"sha512-m/fWrZWJAIBgfFCUiKIDZpb2XIMvDbTuBC+u5xDqPD2pssFYMPGLb9NcBHsp+B4hFk9ex+vHsmv/etaYsqK8AQ==","shasum":"cb8954a03a7e6ecf0e46cba4217b3066a7b30840","tarball":"https://registry.npmjs.org/casbin-pg-watcher/-/casbin-pg-watcher-0.1.1.tgz","fileCount":8,"unpackedSize":8875,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPrMpCRA9TVsSAnZWagAAV8gP/AuAOWn18abihOnDGct2\nEJH6cKG5GPyPgptDjJvsjFL2uT7G7npZVtwB8JEcCS5cxhJRiI94Jbwr2oZs\nvFJryL/KCpQPfqmngo94fwoEZVvdYEIw0dlJx77oOtW3Ur3NR2IjnqM/xkkD\nlrF/k1qddqdz8ezE2ZQvT7yxzJTxm4FuW8djWBvERfsZvHpNAzMAYgDj80FZ\nlFG66MAXZ/n75k+zST/OXctOsNPZef4UkBTHGxunCCt7hDMHF3C7UQQsYucw\nnwKh+e6VeUarW8iT3zASikuBciLjzS0suhfylVKLEHwKYghOj7PAzvCC7gQr\n/QPsfHTGUHQ9IyAR+a9N5RB2AyqLNsMuoa57mf1D6FO5Ra20oY7vfx+w0o9N\ntOQJLUobH38afbA6sLAXXW7O86X+HPkZvHhwXanz4YKvLzHjWUmxii69wCan\nf+/+NXrox36Pg0rkeKSDLTyKjhD9+7ibP/ovT1QDoUHcCPv+ci6b8XHONaps\n6L3Bhv0jwX24yw935HVhBUIawJdB5qVAG+E8HX2alWKCwAbD5Yu4SWp3c5li\noXGt5NNdE9M/tg3OUpR8zxgDhUxjv2PllhPct5zso8CIpdGTHmzUIZM1s60l\n0EIR8OXYLBdu13H3E3Kd5Xsa/P3t0P2Ce36/vFb2g0uczyD4Xu5BtEuZKttn\n5bFd\r\n=zuUb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCjwkWdrgsckBRkRq2JvDRHkuunGYrmPLRsrp4z8E0GMwIgEYcUhteHi54fekZnfiPqxHgHYOmq35dEaqGwvv+iI0E="}]},"maintainers":[{"name":"matteo.collina","email":"hello@matteocollina.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/casbin-pg-watcher_0.1.1_1597944617141_0.5717874743005602"},"_hasShrinkwrap":false},"0.1.2":{"name":"casbin-pg-watcher","version":"0.1.2","description":"A casbin watcher based on PostgreSQL NOTIFY","main":"index.js","scripts":{"test":"standard && tap test.js","postgres":"docker run -p 5432:5432 --name casbin -e POSTGRES_PASSWORD=postgres -d postgres:11-alpine"},"repository":{"type":"git","url":"git+https://github.com/mcollina/casbin-pg-watcher.git"},"keywords":["casbin","posgresql","postgre","sql","watcher","postgres"],"author":{"name":"Matteo Collina","email":"hello@matteocollina.com"},"license":"MIT","bugs":{"url":"https://github.com/mcollina/casbin-pg-watcher/issues"},"homepage":"https://github.com/mcollina/casbin-pg-watcher#readme","devDependencies":{"casbin":"^5.1.2","casbin-pg-adapter":"^1.4.0","standard":"^14.3.4","tap":"^14.10.8"},"dependencies":{"pg-listen":"^1.6.0"},"gitHead":"f8bf6e4c895a5af1af9a2af1a66e4672769438f0","_id":"casbin-pg-watcher@0.1.2","_nodeVersion":"14.15.4","_npmVersion":"7.7.6","dist":{"integrity":"sha512-1BSr3lpJSXQwuOLtTsY3pp+Tc+Wjokk+sl/oJkht09wF1C2qwsZFKTiDzYcXeH1XQlgYq+82BB7vTsc45+bvXA==","shasum":"f712e6dadfc02a7d976bc48ed79b7c6b25ff8280","tarball":"https://registry.npmjs.org/casbin-pg-watcher/-/casbin-pg-watcher-0.1.2.tgz","fileCount":8,"unpackedSize":9067,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbCfTCRA9TVsSAnZWagAAFYMP/RkY1dbe9SV8dT5OSO8b\nicSN4U42YxO2/W+8V7WLya2Tq1zV3rfiv+7ldLzJ7GHrtsbwYz5Od5Q7BImk\nYIZ0iSO4Gt6kORMW1jpdit+hEYXSP3XzsTmx+XRWk4IXB/g37d4qTZdDqJQe\nZeOcP6KzYDhcY8B3dF5x+dkblu4y5n1i+GbvIHmT1rUjx0RfE6flORZK2ScM\nyPUVxmj7k3Is5YwMYd8BgRYyaHqU3wt9Mlqyn970YwfzzFqxcGeywgXmFBs3\nEMWggawl4KWFTnYcv2pNW6IxTuzMc0DM5//zC4vCOWTQ3REx1oXRYT71dQ3k\n/1R3qoa97ahjpKVTR5gQNvLziBQrO7BWu8YpTsNFiD2KhsiL9FyIf8l/Bms4\nuKn3ZebwTlPjDl0XYY2xfa4KTKe5IGDPNwgwQ3GMTMPnFC3BD7OVsZjlGxau\nFvid6NLxDzhhXQO+WG6b/bgNdOwW+WA9Kq8nfHqwTckjgNn2pcmmnPVtb2K3\nt10iGCj9TsIVjQZv5qgFaxqZ8nXeV7Cn+qIc2c1qNMDM7kCaO/bLBKdpyI42\niErqJvXzGLBiyxXntRMFggRezx8T+ATi6w5PEz/uwqDzhoOC3tLV6g9YA0zz\nE7a5oomKET14rXZvBPfaSgstpiJVRlmOXMnLz49NfpB3g+QiVV5jcvXIqcyg\nl1Rq\r\n=OXXR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCOvh3VcRGiBHP3UxAhAbpQmqz0P5WGp9xX44P8h1eFdQIhAIkwiZKrBP8j1J/MKz7KegflUhQKGv79WTGYlkRd9IF+"}]},"_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"directories":{},"maintainers":[{"name":"matteo.collina","email":"hello@matteocollina.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/casbin-pg-watcher_0.1.2_1617700818565_0.20253350004795956"},"_hasShrinkwrap":false},"0.2.0":{"name":"casbin-pg-watcher","version":"0.2.0","description":"A casbin watcher based on PostgreSQL NOTIFY","main":"index.js","scripts":{"test":"standard && tap test.js","postgres":"docker run -p 5432:5432 --name casbin -e POSTGRES_PASSWORD=postgres -d postgres:11-alpine"},"repository":{"type":"git","url":"git+https://github.com/mcollina/casbin-pg-watcher.git"},"keywords":["casbin","posgresql","postgre","sql","watcher","postgres"],"author":{"name":"Matteo Collina","email":"hello@matteocollina.com"},"license":"MIT","bugs":{"url":"https://github.com/mcollina/casbin-pg-watcher/issues"},"homepage":"https://github.com/mcollina/casbin-pg-watcher#readme","devDependencies":{"casbin":"^5.1.2","casbin-pg-adapter":"^1.4.0","standard":"^14.3.4","tap":"^14.10.8"},"dependencies":{"pg-listen":"^1.6.0"},"gitHead":"494f36522ad5e88322919952d5c229aa4e672c40","_id":"casbin-pg-watcher@0.2.0","_nodeVersion":"14.17.0","_npmVersion":"6.14.13","_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"dist":{"integrity":"sha512-DWCsCTqT5m0sRS7FAqD3O9KFF7Jzh0JzYV5MfbPH1nGuzjgRPX6I5stbiTXJur8QxWSZGdsIY80pSDM8MY0ozw==","shasum":"e95a885e8d799b116fb300c7dd1315b1094c4c3e","tarball":"https://registry.npmjs.org/casbin-pg-watcher/-/casbin-pg-watcher-0.2.0.tgz","fileCount":8,"unpackedSize":9331,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgy1rsCRA9TVsSAnZWagAACsEP/36p1Lf9WBc+Jhk+8ucx\n+aqyPpxwg1xIPrFA6wLnwfzA8kLfAXSJaL5iySGslciQAmD355Y2bOfD64FJ\ndFdywwy/Ca8xHWYkyW3hhice+Kc6ywzOJDIPWP0wPTzggmtY57jA1CpwVBgS\nbXstyDRplpSFKpl7TjqB2S7wMP4AcIE3rR5U6WiD0kb4gUY657gjymcMe1mR\nZtrFAtZ8XrE4uvymrwT6jleluaeXJDKyzGH+0jPIamTTlY2z/iFoLH4o0xlb\nvJAf7vWFwNEo5JKIT0OWONITMr//65xns3CHTLr7Idbz3W6UgDW/TzQa93Ki\nladgeo7Alv4r0LloN+IELDWXpq2pr+9zJVSZOGMMKFnB/ZB9eeVbjOBL3qBe\nRBXFXfYyEc4Hc9Dus5AyA1Tbq0FB+OuEJGrgYX5iJ4wmn47d/g9OvLTiC+7B\ni5TWRArgao9zxA/gX8yCpxmcP3DrtDa+PGrBBK0JUY/WX7/EVqYfdPlKZneU\nY4A6cIhdyFLrBBkGSuz2ftNpnlOfIWIlWP8k0QZ5bsmfh0gp6gZ6qht9iuax\nJ410f2VoisdvAsFvlKIhNIpChfuH87biB1uC7orGxusnzjB1hlZDzUhwyu5m\nbimrcXcUrhaTqxILZcsymddbDbDP/qIPK4U7hynxVOG2wrCNtaJRMxn6i29Y\nFjdA\r\n=A19i\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDy3reisaL6TnsOpP6YOth5KbFAy6D7zScbpXLW6Oa2oAiAcuBVsX+QcSXCaqonfhQD8PAuJfINrWVqG6XKxN0mWpw=="}]},"directories":{},"maintainers":[{"name":"matteo.collina","email":"hello@matteocollina.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/casbin-pg-watcher_0.2.0_1623939820305_0.08630384628159438"},"_hasShrinkwrap":false}},"time":{"created":"2020-08-19T12:45:58.082Z","0.1.0":"2020-08-19T12:45:58.228Z","modified":"2022-04-12T05:24:40.202Z","0.1.1":"2020-08-20T17:30:17.307Z","0.1.2":"2021-04-06T09:20:18.740Z","0.2.0":"2021-06-17T14:23:40.421Z"},"maintainers":[{"name":"matteo.collina","email":"hello@matteocollina.com"}],"description":"A casbin watcher based on PostgreSQL NOTIFY","homepage":"https://github.com/mcollina/casbin-pg-watcher#readme","keywords":["casbin","posgresql","postgre","sql","watcher","postgres"],"repository":{"type":"git","url":"git+https://github.com/mcollina/casbin-pg-watcher.git"},"author":{"name":"Matteo Collina","email":"hello@matteocollina.com"},"bugs":{"url":"https://github.com/mcollina/casbin-pg-watcher/issues"},"license":"MIT","readme":"# casbin-pg-watcher\n\nA [casbin](https://github.com/casbin/node-casbin) watcher built on top of PosgreSQL NOTIFY.\nA watcher have all other enforcer reload whenever a change to the policy happens.\n\n## Example\n\n```js\n'use strict'\n\nconst { newEnforcer } = require('casbin')\nconst { newAdapter } = require('casbin-pg-adapter').default\nconst { newWatcher } = require('.')\n\nconst { join } = require('path')\nconst { promisify } = require('util')\nconst sleep = promisify(setTimeout)\n\nconst connectionString = 'postgresql://postgres:postgres@localhost:5432/postgres'\n\nasync function build (migrate) {\n  const [adapter, watcher] = await Promise.all([\n    newAdapter({\n      connectionString,\n      migrate\n    }),\n    newWatcher({\n      connectionString\n    })\n  ])\n\n  if (migrate) {\n    await adapter.repo.clearPolicies()\n  }\n\n  const enforcer = await newEnforcer(join(__dirname, 'examples', 'model.conf'), adapter)\n  enforcer.setWatcher(watcher)\n  // my own property for tests\n  enforcer.watcher = watcher\n  return enforcer\n}\n\nasync function pair () {\n  const enforcers = [await build(true), await build(false)]\n  await Promise.all(enforcers.map((e) => e.loadPolicy()))\n  return enforcers\n}\n\nasync function run () => {\n  const [enforcer1, enforcer2] = await pair()\n\n  await enforcer1.addPolicy('admin', 'domain1', 'data1', 'read')\n  await enforcer1.addPolicy('admin', 'domain2', 'data2', 'read')\n  await enforcer1.addPolicy('admin', 'domain2', 'data2', 'write')\n  await enforcer1.addGroupingPolicy('alice', 'admin', 'domain1')\n\n  await sleep(500)\n\n  console.log(await enforcer2.enforce('alice', 'domain1', 'data1', 'read'))\n  console.log(await enforcer2.enforce('bob', 'domain2', 'data2', 'read'))\n\n  await enforcer2.addGroupingPolicy('bob', 'admin', 'domain2')\n\n  await sleep(500)\n\n  console.log(await enforcer1.enforce('bob', 'domain2', 'data2', 'read'))\n})\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}