{"_id":"@baxmusic/kube-watch","_rev":"3-171a2fe798ed7a14d1975b217eca08de","name":"@baxmusic/kube-watch","dist-tags":{"latest":"0.5.5"},"versions":{"0.5.4":{"name":"@baxmusic/kube-watch","version":"0.5.4","description":"Watch Kubernetes resources","main":"./dist/index.js","scripts":{"prebuild":"rimraf dist && npm install","build":"mkdir -p dist && babel src -o dist/index.js","test":"test/run.sh","test:watch":"mocha -w --compilers js:babel-register test/test.js","test:single":"mocha --compilers js:babel-register test/test.js"},"repository":{"type":"git","url":"git+https://github.com/subk/kube-watch.git"},"keywords":["kubernetes","k8s","kube","watch","api"],"author":{"name":"max"},"license":"MIT","bugs":{"url":"https://github.com/subk/kube-watch/issues"},"files":["dist","package.json","README.md"],"homepage":"https://github.com/subk/kube-watch#readme","devDependencies":{"babel-cli":"^6.14.0","babel-preset-es2015":"^6.14.0","babel-preset-stage-2":"^6.13.0","chai":"^3.5.0","mocha":"^3.0.2","rimraf":"^2.5.4"},"dependencies":{"json-stream":"^1.0.0","lodash.findkey":"^4.6.0","lodash.flatmap":"^4.5.0","lodash.pick":"^4.4.0","request":"^2.74.0"},"gitHead":"2186ca0fe27f47884d48cfaea15927335e310cea","_id":"@baxmusic/kube-watch@0.5.4","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"devnul","email":"leroybaeyens@gmail.com"},"dist":{"integrity":"sha512-Gi5atdWxqnIh6qB5HHPyHQTvVKBjXxtC7Fsf4XkDyITQe4U0ZCjui5ysjgZqotFFfbafPZYTj0Jc8D4oZ9Ru6Q==","shasum":"454eea662c32c31106138307cace179bb6869bcc","tarball":"https://registry.npmjs.org/@baxmusic/kube-watch/-/kube-watch-0.5.4.tgz","fileCount":4,"unpackedSize":12126,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbLP0pCRA9TVsSAnZWagAA/W0P/3+gjUF4GvJmcELFTmOj\nzLl2QEnupnm9/xqnLpCkb4oC6qaZbZMNoJVmSkJPY8UuLihR/Uz7aRGXVpP+\ngencKBIRzf6Fp1RuoA+PCummpb8cK2qwyziBKoRrqRF4kxMfxgIvCLsm57e3\nFH1iSTm8kvFNcoYw6om9ne/9DzryWDk6JZCAkotfovjNlFrfcbMAAbCAdnmW\nWhpyHUfu3TKkjK8wE0srVtPJLhOhbKLxMcgixGfs2RFD9aJugVjio8Oiraa1\nmLYPlMdpBXibEQyfYB5uJgs69EIIMzkHcOIvlElqBkmJMCD9ckTNRTXyZgNH\nEJfS8WmMMXNs84+WoX6EfKgbrNwT2qSZsqglbYotgxiPusVjbGyJc5GLMpNi\n6rV92DcJrmiJOQvLsYhLV7NAoJdKswFMTqLHpek1q/C6zAUWa4za7MuoqqTV\nLE8bgbFLQrpaQW6yf3u5Pg14fx+jsp62LrUqaPujXYGHKOvMMZa9b2sxtkgR\n405fws2LdKpFa2qVIAYuqNjrMxCo3b8ajfs5zU2o+iJ3ypbz43AXxO0tsFN3\nJVYIwrMqhlIw25wj7har1v4f3ChDGWzG57llwl00CYiZqwbG3HKTVVGtHFSl\num83aZrpS7WtHgHzUHMHTqZDHOvbg0IF2gVsEKTv4s8XocXngkCRccjgFeiY\nUlnM\r\n=UdX+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB5GLT0TcF8qQDO2+Fb4ozfaPEoE1IWf+n2r8jpltxhkAiEArPt20V2IEfJeDZkIKrOa817Cp2so0rnUvHeFLIOrbr8="}]},"maintainers":[{"name":"devnul","email":"leroybaeyens@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kube-watch_0.5.4_1529675049586_0.9109422370612832"},"_hasShrinkwrap":false},"0.5.5":{"name":"@baxmusic/kube-watch","version":"0.5.5","description":"Watch Kubernetes resources","main":"./dist/index.js","scripts":{"prebuild":"rimraf dist","build":"mkdir -p dist && babel src -o dist/index.js","prepublishOnly":"npm run build","test":"test/run.sh","test:watch":"mocha -w --compilers js:babel-register test/test.js","test:single":"mocha --compilers js:babel-register test/test.js"},"repository":{"type":"git","url":"git+https://github.com/Baxshopnl/kube-watch.git"},"keywords":["kubernetes","k8s","kube","watch","api"],"author":{"name":"max"},"license":"MIT","bugs":{"url":"https://github.com/Baxshopnl/kube-watch/issues"},"files":["dist","package.json","README.md"],"homepage":"https://github.com/Baxshopnl/kube-watch#readme","devDependencies":{"babel-cli":"^6.14.0","babel-preset-es2015":"^6.14.0","babel-preset-stage-2":"^6.13.0","chai":"^3.5.0","mocha":"^3.0.2","rimraf":"^2.5.4"},"dependencies":{"json-stream":"^1.0.0","lodash.findkey":"^4.6.0","lodash.flatmap":"^4.5.0","lodash.pick":"^4.4.0","request":"^2.74.0"},"gitHead":"8e6536c7b277e163907d88ca43d4bb46e4530ee7","_id":"@baxmusic/kube-watch@0.5.5","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"devnul","email":"leroybaeyens@gmail.com"},"dist":{"integrity":"sha512-R2VsoowzyRyXLMZ3qlvD1Bas/xCVz3oDknkjeF92UYz5hb3PM0kHs5Vtdo/VLBiYFPX+bHKFYJk0Q/joYr2oZg==","shasum":"5b988f3469140634e70bc24aac5206fd676ac097","tarball":"https://registry.npmjs.org/@baxmusic/kube-watch/-/kube-watch-0.5.5.tgz","fileCount":4,"unpackedSize":12367,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbMLv1CRA9TVsSAnZWagAA+TIP/0OXADKpN9boBYyDKPcN\nIi/pKUVzC6MOjiEbZAVb9c10EqTcMTa+tRGkfp1HYA4HCiG5QbJNq9H6xWAZ\nOSlJ0AAgoaoVP/qSQUuL3SHGQw/6DC702P0ZQd0HXTGbTBvlbyeO0eiHCCG1\n9f1aZDz6CsVK3c+XVuA0VQcBdVGJ7v7ZNP6JTYNpTxGmJys0YkrqNRd+U7Wh\nebnzb6w7SSClZuErMa5nFkUBw+XvKHIKi+OoLHeQ0P5iOdl8xbslubbKhjwo\nDy0onEGhYRcXw3R8uelmYKbAnjH5iX6AgsBG+9PheZrb+jjVexso79AiKqp/\nSOPXKr0ghNuExqCRpU7Up2LHOvVwcNckD9WD55Y2rKTp5EHZEjCv220pL20A\nWLXP7TXW9S3GXINzXpcNY32fEu8U6MgFFpqDkAc/Mhy/dVAGFAFZKrQBoXmt\nd7aQrokAmG83ck55KRshE9iIY0cUFs6rTL+rggxbJQzxao8wTVxD9sj8fsfx\nems1Af9CBvBhQHU5KZFxIN3ZmOFg9Fo6mu+HfQJQQ+AReh1oou0lq1199pRm\nimIqPqe7lc3+MPH8hEpDuj2W3UX8R9ttV6qJYMhkWx/DQzHFvmw97LEQF5Si\nmbjIJrYqFnSzRCDfeuY8FBDGZAtrf2tL6qZF0aBYYvRvDwWH0p4tC1219L7m\n3Spz\r\n=30QC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDKbXH8F2rnsFJAL75MAICsdg3P25v8jLwm8HXmiq/OeAiEA33BIEqDZ3+dTtZS49TccLAkHbIKHZtGlq1Xw/Dw7uTc="}]},"maintainers":[{"email":"daniel@daank.com","name":"danielkraaij"},{"email":"leroybaeyens@gmail.com","name":"devnul"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kube-watch_0.5.5_1529920501711_0.23743225748404861"},"_hasShrinkwrap":false}},"time":{"created":"2018-06-22T13:44:09.452Z","0.5.4":"2018-06-22T13:44:09.664Z","modified":"2022-04-04T17:48:40.792Z","0.5.5":"2018-06-25T09:55:01.799Z"},"maintainers":[{"email":"daniel@daank.com","name":"danielkraaij"},{"email":"leroybaeyens@gmail.com","name":"devnul"}],"description":"Watch Kubernetes resources","homepage":"https://github.com/Baxshopnl/kube-watch#readme","keywords":["kubernetes","k8s","kube","watch","api"],"repository":{"type":"git","url":"git+https://github.com/Baxshopnl/kube-watch.git"},"author":{"name":"max"},"bugs":{"url":"https://github.com/Baxshopnl/kube-watch/issues"},"license":"MIT","readme":"# kube-watch\n\n[Kubernetes](http://kubernetes.io) Watch API for node.\n\nForked from [subk/kube-watch](https://github.com/subk/kube-watch)\n\n## [Installation](#installation)\n\n```bash\n$ npm i @baxmusic/kube-watch\n```\n\n## [Quick start](#quick-start)\n\n`new KubeWatch(resource, options)` -> `EventEmitter`\n\n```javascript\nimport KubeWatch from '@baxmusic/kube-watch';\n\nconst pods = new KubeWatch('pods', {\n  url: 'http://kube-api-server'   // Kubernetes API URL\n});\n\npods\n  .on('added', event => {\n    console.log('Pod %s added to namespace %s with IP address %s',\n      event.metadata.name, event.metadata.namespace, event.status.podIP);\n  })\n  .on('modified', event => {\n    // do something...\n  })\n  .on('deleted', event => {\n    // ..do something else..\n  })\n  .on('error', err => {\n    console.error('Error %d: %s', err.code, err.message);\n  });\n```\n\n## [Watching resources](#watching-resources)\n\nBy default, [kube-watch](https://github.com/Baxshopnl/kube-watch) will first request Kubernetes API to fetch the\nlast `resourceVersion` for requested resource. See [Kubernetes documentation](https://github.com/kubernetes/kubernetes/blob/master/docs/devel/api-conventions.md#concurrency-control-and-consistency) for more details.  \nIf you want to specify `resourceVersion` manually, see [Query Parameters](#query-parameters) section.\n\n### [Supported API & Resources](#supported-api)\nSee [Kubernetes API documentation](http://kubernetes.io/docs/api/) for more details.\n\n**API v1**\n- `namespaces`\n- `endpoints`\n- `events`\n- `limitranges`\n- `persistentvolumeclaims`\n- `persistentvolumes`\n- `pods`\n- `podtemplates`\n- `replicationcontrollers`\n- `resourcequotas`\n- `secrets`\n- `serviceaccounts`\n- `service`\n\n**API v1beta1**\n- `horizontalpodautoscalers`\n- `ingresses`\n- `jobs`\n\nAPI version will be automatically selected depending on requested resource.\n\n### [by namespace](#watch-by-namespace)\n\nWatch all services in namespace `public` :  \n```javascript\nconst services = new KubeWatch('services', {\n  url: 'http://kube-api-server',\n  namespace: 'public'\n});\n```\n\n### [by name](#watch-by-name)\n\nOnly watch service named `www` in namespace `public` :  \n```javascript\nconst services = new KubeWatch('services', {\n  url: 'http://kube-api-server',\n  namespace: 'public',\n  name: 'www'\n});\n```\n\n## [Filtering events](#filtering-events)\n\nYou can filter which events will be emitted using `events` option.  \nBy default, [kube-watch](https://github.com/Baxshopnl/kube-watch) will emit all k8s events: `added`, `modified`, `deleted`.\n\n```javascript\nconst namespaces = new KubeWatch('namespaces', {\n  url: 'http://kube-api-server',\n  events: [ 'added' ]   // watcher will only emit 'added' event\n});\n```\n\n## [Query parameters](#query-parameters)\n\nThese extra query parameters are supported as option :\n- `labelSelector`\n- `fieldSelector`\n- `resourceVersion`\n- `timeoutSeconds`\n\n```javascript\nconst services = new KubeWatch('services', {\n  url: 'http://kube-api-server',\n  labelSelector: 'public-http',\n  fieldSelector: 'event.status.podIP',\n  resourceVersion: '6587423'\n});\n```\n\nSee [documentation](http://kubernetes.io/docs/api-reference/v1/operations/) for more details about these options.\n\n## [Request options](request-options)\n\nHTTP requests are performed using [request](https://www.npmjs.com/package/request) package.  \nPass custom options using `request` property.  \n\n```javascript\nconst services = new KubeWatch('services', {\n  url: 'http://kube-api-server',\n  request: {\n    timeout: 30000    // change HTTP request timeout\n  }\n});\n```\n\n### [HTTP Auth](#http-auth)\n\nSee request's [http authentication](https://www.npmjs.com/package/request#http-authentication)\n\n```javascript\nconst services = new KubeWatch('services', {\n  url: 'http://kube-api-server',\n  request: {\n    auth: {\n      user: 'foobar'\n      pass: 'el8'\n    }\n  }\n});\n```\n\n### [TLS/SSL support](#tls-ssl-support)\nSee request's [TLS/SSL support](https://www.npmjs.com/package/request#tlsssl-protocol).\n\n```javascript\nconst services = new KubeWatch('services', {\n  url: 'http://kube-api-server',\n  request: {\n    cert: fs.readFileSync(certFile),\n    key: fs.readFileSync(keyFile),\n    passphrase: 'password',\n    ca: fs.readFileSync(caFile)\n  }\n});\n```\n\n## [Tests](#tests)\n\nRun test.js in watch mode :  \n```bash\n$ env KUBE_API_SERVER=http://kube-api-server \\\n    npm run test:watch\n```\n\nSingle run :  \n```bash\n$ env KUBE_API_SERVER=http://kube-api-server \\\n    npm run test:single\n```\n\nRun tests using [minikube](https://github.com/kubernetes/minikube) to simulate workload.  \nSee [test/run-test.sh](test/run-test.sh).\n```bash\n$ npm test\n```\n\n## [TODO](#todo)\n- Improve test suites by simulating workload\n","readmeFilename":"README.md"}