{"maintainers":[{"email":"istarkov@gmail.com","name":"anonymous"},{"email":"acdlite@me.com","name":"anonymous"}],"keywords":["change","event","emitter"],"dist-tags":{"latest":"0.1.6"},"author":{"name":"Andrew Clark","email":"acdlite@me.com"},"description":"Listen for changes. Like an event emitter that only emits a single event type. Really tiny.","readme":"change-emitter\n==============\n\n[![build status](https://img.shields.io/travis/acdlite/change-emitter/master.svg?style=flat-square)](https://travis-ci.org/acdlite/change-emitter)\n[![npm version](https://img.shields.io/npm/v/change-emitter.svg?style=flat-square)](https://www.npmjs.com/package/change-emitter)\n\nListen for changes. Like an event emitter that only emits a single event type. Really tiny.\n\nI extracted this from Redux's `createStore()` because I found it to be useful in other contexts. Use it where you want the most minimal event subscription implementation possible.\n\n## Usage\n\n```js\nimport { createChangeEmitter } from 'change-emitter'\n\nconst emitter = createChangeEmitter()\n\n// Called `listen` instead of `subscribe` to avoid confusion with observable spec\nconst unlisten = emitter.listen((...args) => {\n  console.log(args)\n})\n\nemitter.emit(1, 2, 3) // logs `[1, 2, 3]`\nunlisten()\nemitter.emit(4, 5, 6) // doesn't log\n```\n\n## Larger example\n\nHere's a (partial) implementation of Redux's `createStore`:\n\n```js\nconst createStore = (reducer, initialState) => {\n  let state = initialState\n  const emitter = createChangeEmitter()\n\n  function dispatch(action) {\n    state = reducer(state, action)\n    emitter.emit()\n    return action\n  }\n\n  function getState() {\n    return state\n  }\n\n  return {\n    dispatch,\n    getState,\n    subscribe: emitter.listen\n  }\n}\n```\n","repository":{"type":"git","url":"git+https://github.com/acdlite/change-emitter.git"},"users":{"cr8tiv":true},"license":"MIT","bugs":{"url":"https://github.com/acdlite/change-emitter/issues"},"versions":{"0.1.1":{"name":"change-emitter","version":"0.1.1","description":"Listen for changes. Like an event emitter that only emits a single event type. Really tiny.","main":"lib/index.js","scripts":{"check":"eslint src","build":"babel src --out-dir lib","test":"ava","test:watch":"npm run test -- --watch","prepublish":"npm run check && npm run test && npm run build"},"keywords":["change","event","emitter"],"author":{"name":"Andrew Clark","email":"acdlite@me.com"},"license":"MIT","devDependencies":{"ava":"^0.14.0","babel-cli":"^6.8.0","babel-core":"^6.8.0","babel-preset-es2015":"^6.6.0","eslint":"^2.10.1","eslint-config-airbnb-base":"^3.0.1","eslint-plugin-import":"^1.8.0","sinon":"^1.17.4"},"babel":{"presets":["es2015"]},"ava":{"babel":"inherit","files":["**/*-test.js"],"source":["**/*.js"],"require":["babel-register"]},"gitHead":"4d5bf956d2e83bd773270d7a95e631013fa0a3e3","_id":"change-emitter@0.1.1","_shasum":"f7aa64d3c841986bc2e8805491dce71d2bc11daf","_from":".","_npmVersion":"3.8.3","_nodeVersion":"5.10.1","_npmUser":{"name":"anonymous","email":"acdlite@me.com"},"dist":{"shasum":"f7aa64d3c841986bc2e8805491dce71d2bc11daf","tarball":"http://repository.ncinga.com/nexus/content/repositories/npm-js-registry/change-emitter/-/change-emitter-0.1.1.tgz","integrity":"sha512-yfv/TyQBW9sMNGpVndHI5w9Lr7jq0bAZ5+7iBixu0zOZX1YhcmCAOLTyc77GH9baYyMZHC8G/OEI9NC6OOHFbA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCLd1DIPL1uRduZJIif3AmJIqqGWBeJyv+p9cFZHo070gIgZ8zbskqE0reALbaaj1apLFsjKxDHPR1km58t5RUq2Ys="}]},"maintainers":[{"name":"anonymous","email":"acdlite@me.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/change-emitter-0.1.1.tgz_1463283565401_0.5161002008244395"}},"0.1.2":{"name":"change-emitter","version":"0.1.2","description":"Listen for changes. Like an event emitter that only emits a single event type. Really tiny.","main":"lib/index.js","scripts":{"check":"eslint src","build":"babel src --out-dir lib","test":"ava","test:watch":"npm run test -- --watch","prepublish":"npm run check && npm run test && npm run build"},"keywords":["change","event","emitter"],"author":{"name":"Andrew Clark","email":"acdlite@me.com"},"license":"MIT","devDependencies":{"ava":"^0.14.0","babel-cli":"^6.8.0","babel-core":"^6.8.0","babel-preset-es2015":"^6.6.0","eslint":"^2.10.1","eslint-config-airbnb-base":"^3.0.1","eslint-plugin-import":"^1.8.0","sinon":"^1.17.4"},"babel":{"presets":["es2015"]},"ava":{"babel":"inherit","files":["**/*-test.js"],"source":["**/*.js"],"require":["babel-register"]},"gitHead":"e595d67a640473564839473f1f8012bc6baba81c","_id":"change-emitter@0.1.2","_shasum":"6b88ca4d5d864e516f913421b11899a860aee8db","_from":".","_npmVersion":"3.8.3","_nodeVersion":"5.10.1","_npmUser":{"name":"anonymous","email":"acdlite@me.com"},"dist":{"shasum":"6b88ca4d5d864e516f913421b11899a860aee8db","tarball":"http://repository.ncinga.com/nexus/content/repositories/npm-js-registry/change-emitter/-/change-emitter-0.1.2.tgz","integrity":"sha512-0MYRvfZO2iduqgz7awwbZ+L3jWR93KVC1HHed+khD9eA6543dNncGaaaNh2JOATB07tdxAg49TaaVSrHqa9xiw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAm6BywA7Y75uvQz/gzLgkmQhE1ntfa7fPSZ8F5PiibYAiEA3F4i9XFBPwrpUQr0Bo1g6bOkNlS9A17sTgPtYpIQuw0="}]},"maintainers":[{"name":"anonymous","email":"acdlite@me.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/change-emitter-0.1.2.tgz_1463283657363_0.28469334659166634"}},"0.1.3":{"name":"change-emitter","version":"0.1.3","description":"Listen for changes. Like an event emitter that only emits a single event type. Really tiny.","main":"lib/index.js","scripts":{"check":"eslint src","build":"babel src --out-dir lib","test":"ava","test:watch":"npm run test -- --watch","prepublish":"npm run check && npm run test && npm run build"},"repository":{"type":"git","url":"git+https://github.com/acdlite/change-emitter.git"},"keywords":["change","event","emitter"],"author":{"name":"Andrew Clark","email":"acdlite@me.com"},"license":"MIT","bugs":{"url":"https://github.com/acdlite/change-emitter/issues"},"homepage":"https://github.com/acdlite/change-emitter#readme","devDependencies":{"ava":"^0.14.0","babel-cli":"^6.8.0","babel-core":"^6.8.0","babel-preset-es2015":"^6.6.0","eslint":"^2.10.1","eslint-config-airbnb-base":"^3.0.1","eslint-plugin-import":"^1.8.0","sinon":"^1.17.4"},"ava":{"babel":"inherit","files":["**/*-test.js"],"source":["**/*.js"],"require":["babel-register"]},"gitHead":"31c42efb047001dc4d0b7b066f0fae36cff071a8","_id":"change-emitter@0.1.3","_shasum":"731c9360913855f613dd256568d50f854a8806ac","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.0","_npmUser":{"name":"anonymous","email":"acdlite@me.com"},"dist":{"shasum":"731c9360913855f613dd256568d50f854a8806ac","tarball":"http://repository.ncinga.com/nexus/content/repositories/npm-js-registry/change-emitter/-/change-emitter-0.1.3.tgz","integrity":"sha512-U1TID2Ng2nA11pjfxaXOHrZNlWVpZPJNIJqWaH3pL5DNgaBfdBnXpohGZJ5pB7kOrDp/NxE1l7xoPA6G5jXMMA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDehzwcohnoh4j6O2xC7U1WsuBQ+drbvA9Lxli1zDmA9AIhANZ4QYtYXas4+HX7gCkmcvGzmJtU6NMnhqEIn4b5vlpm"}]},"maintainers":[{"name":"anonymous","email":"acdlite@me.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/change-emitter-0.1.3.tgz_1488311147869_0.9030326781794429"}},"0.1.4":{"name":"change-emitter","version":"0.1.4","description":"Listen for changes. Like an event emitter that only emits a single event type. Really tiny.","main":"lib/index.js","scripts":{"check":"eslint src","build":"babel src --out-dir lib","test":"ava","test:watch":"yarn run test -- --watch","prepublish":"yarn run check && yarn run test && yarn run build"},"repository":{"type":"git","url":"git+https://github.com/acdlite/change-emitter.git"},"keywords":["change","event","emitter"],"author":{"name":"Andrew Clark","email":"acdlite@me.com"},"license":"MIT","bugs":{"url":"https://github.com/acdlite/change-emitter/issues"},"homepage":"https://github.com/acdlite/change-emitter#readme","devDependencies":{"ava":"^0.14.0","babel-cli":"^6.8.0","babel-core":"^6.8.0","babel-preset-es2015":"^6.6.0","eslint":"^2.10.1","eslint-config-airbnb-base":"^3.0.1","eslint-plugin-import":"^1.8.0","sinon":"^1.17.4"},"ava":{"babel":"inherit","files":["**/*-test.js"],"source":["**/*.js"],"require":["babel-register"]},"_id":"change-emitter@0.1.4","dist":{"shasum":"a6e674b11aa17487550c409dc8796fce32d4208a","tarball":"http://repository.ncinga.com/nexus/content/repositories/npm-js-registry/change-emitter/-/change-emitter-0.1.4.tgz","integrity":"sha512-5M2DnN755Fz0ZmtsSmTw/WIGFXVj1TgugVI3qsp2YHXLwtRKhKcUaM3NOzxuI2n5RO7T834sJ1Q0BqfLaHUjRQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWNVvZlNjy5PYvnCPL+dyA280KCeilibH7QvrZElI66QIhAPtDj8GvdK78i8yS0Drzahs38cpyJnzwvttkrR+9OD7i"}]},"maintainers":[{"name":"anonymous","email":"acdlite@me.com"},{"name":"anonymous","email":"istarkov@gmail.com"}],"_npmUser":{"name":"anonymous","email":"istarkov@gmail.com"},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/change-emitter-0.1.4.tgz_1492454638509_0.9456031783483922"}},"0.1.5":{"name":"change-emitter","version":"0.1.5","description":"Listen for changes. Like an event emitter that only emits a single event type. Really tiny.","main":"lib/index.js","scripts":{"check":"eslint src","build":"babel src --out-dir lib","test":"ava","test:watch":"yarn run test -- --watch","prepublish":"yarn run check && yarn run test && yarn run build"},"repository":{"type":"git","url":"git+https://github.com/acdlite/change-emitter.git"},"keywords":["change","event","emitter"],"author":{"name":"Andrew Clark","email":"acdlite@me.com"},"license":"MIT","bugs":{"url":"https://github.com/acdlite/change-emitter/issues"},"homepage":"https://github.com/acdlite/change-emitter#readme","devDependencies":{"ava":"^0.14.0","babel-cli":"^6.8.0","babel-core":"^6.8.0","babel-preset-es2015":"^6.6.0","eslint":"^2.10.1","eslint-config-airbnb-base":"^3.0.1","eslint-plugin-import":"^1.8.0","sinon":"^1.17.4"},"ava":{"babel":"inherit","files":["**/*-test.js"],"source":["**/*.js"],"require":["babel-register"]},"gitHead":"062de98fec9f34155ce4b25f1036313860eab187","_id":"change-emitter@0.1.5","_shasum":"fa8f5aabf8d44eff78e76f9b692c5b154b5181a3","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.9.0","_npmUser":{"name":"anonymous","email":"istarkov@gmail.com"},"dist":{"shasum":"fa8f5aabf8d44eff78e76f9b692c5b154b5181a3","tarball":"http://repository.ncinga.com/nexus/content/repositories/npm-js-registry/change-emitter/-/change-emitter-0.1.5.tgz","integrity":"sha512-SCDQ5YU+shJjYcl9bQQR22dBd+Q+40PhzJJDAFPkbLnvIbzJN2GsdOuJzSE91sdhlIiQmgPmBq3yylh1jtUWuA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID97+vHhq3wJhdle0FXqhYrl72hMjE0Vh/XYRua7v4P2AiAm/pWHzmm7ACCmHScZ8dlhZTo9EnKHi+cWcIq3mMwpZQ=="}]},"maintainers":[{"name":"anonymous","email":"acdlite@me.com"},{"name":"anonymous","email":"istarkov@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/change-emitter-0.1.5.tgz_1492454798850_0.35207757307216525"}},"0.1.6":{"name":"change-emitter","version":"0.1.6","description":"Listen for changes. Like an event emitter that only emits a single event type. Really tiny.","main":"lib/index.js","files":["lib"],"scripts":{"check":"eslint src","build":"babel src --out-dir lib","test":"ava","test:watch":"yarn run test -- --watch","prepublish":"yarn run check && yarn run test && yarn run build"},"repository":{"type":"git","url":"git+https://github.com/acdlite/change-emitter.git"},"keywords":["change","event","emitter"],"author":{"name":"Andrew Clark","email":"acdlite@me.com"},"license":"MIT","bugs":{"url":"https://github.com/acdlite/change-emitter/issues"},"homepage":"https://github.com/acdlite/change-emitter#readme","devDependencies":{"ava":"^0.14.0","babel-cli":"^6.8.0","babel-core":"^6.8.0","babel-preset-es2015":"^6.6.0","eslint":"^2.10.1","eslint-config-airbnb-base":"^3.0.1","eslint-plugin-import":"^1.8.0","sinon":"^1.17.4"},"ava":{"babel":"inherit","files":["**/*-test.js"],"source":["**/*.js"],"require":["babel-register"]},"gitHead":"8b6198fc863929441c1210e95350700641d571b4","_id":"change-emitter@0.1.6","_shasum":"e8b2fe3d7f1ab7d69a32199aff91ea6931409515","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.9.0","_npmUser":{"name":"anonymous","email":"istarkov@gmail.com"},"dist":{"shasum":"e8b2fe3d7f1ab7d69a32199aff91ea6931409515","tarball":"http://repository.ncinga.com/nexus/content/repositories/npm-js-registry/change-emitter/-/change-emitter-0.1.6.tgz","integrity":"sha512-YXzt1cQ4a2jqazhcuSWEOc1K2q8g9H6eWNsyZgi640LDzRWVQ2eDe+Y/kVdftH+vYdPF2rgDb3dLdpxE1jvAxw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB5Ms+6AfoYZCNuA+ckGCR2ChCzOt3DikKB+ZdQQLOnNAiAgIstIqjhse6UoOiudIeiVLMMTZPKDXfEhKkwF3GVQlg=="}]},"maintainers":[{"name":"anonymous","email":"acdlite@me.com"},{"name":"anonymous","email":"istarkov@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/change-emitter-0.1.6.tgz_1492456785485_0.13078920054249465"}}},"name":"change-emitter","time":{"modified":"2022-06-13T05:52:27.052Z","created":"2016-05-15T03:39:25.903Z","0.1.1":"2016-05-15T03:39:25.903Z","0.1.2":"2016-05-15T03:41:00.707Z","0.1.3":"2017-02-28T19:45:48.121Z","0.1.4":"2017-04-17T18:44:00.439Z","0.1.5":"2017-04-17T18:46:41.069Z","0.1.6":"2017-04-17T19:19:47.273Z"},"readmeFilename":"README.md","homepage":"https://github.com/acdlite/change-emitter#readme"}