{"_id":"frp","_rev":"38-82cd1f96a233d2df742938cae602c74e","name":"frp","time":{"modified":"2022-06-18T03:49:27.463Z","created":"2014-07-10T11:15:38.634Z","0.0.1":"2014-07-10T11:15:38.634Z","0.1.2":"2014-10-13T19:43:20.653Z","0.1.3":"2014-10-13T19:46:41.785Z","0.1.4":"2014-10-13T22:03:38.232Z","0.1.5":"2014-12-08T21:56:45.047Z","0.1.6":"2014-12-14T14:35:11.094Z","0.1.7":"2014-12-14T17:23:50.973Z","0.1.8":"2014-12-14T22:42:21.168Z","0.1.9":"2014-12-14T23:46:20.794Z","0.2.0":"2014-12-15T20:28:23.200Z","0.2.1":"2014-12-16T22:46:07.037Z","0.2.2":"2014-12-17T20:18:45.807Z","0.2.3":"2015-01-06T20:33:44.723Z","0.2.4":"2015-01-06T20:52:28.574Z","0.3.0":"2015-01-23T21:18:08.395Z","0.3.1":"2015-02-11T22:51:59.882Z","0.3.2":"2015-04-29T09:28:11.060Z","0.3.3":"2015-08-15T16:03:21.266Z","0.3.4":"2015-08-15T23:09:57.718Z"},"maintainers":[{"name":"rogual","email":"r@foon.uk"}],"dist-tags":{"latest":"0.3.4"},"description":"Functional reactive programming primitives","readme":"# frp.js 0.3\n\nThis is a library providing functional reactive programming (FRP) primitives and\noperations.\n\n\n# Installation\n\n    npm install frp\n\n\n# Conventions\n\nWhere appropriate, functions are provided both as module-level functions and as\nmethods on the FRP objects themselves.\n\nWherever it makes sense, functions accepting callbacks will also accept\nlodash-style callback specifiers instead of functions.\n\n\n# Concepts\n\n## Event\n\n    require('frp/event')\n    require('frp').event\n\nAn event is something that can be watched for a value:\n\n    event.watch(cb)\n    event.bind(cb)\n\n    event.unwatch(cb)\n    event.unbind(cb)\n\nThe two forms are equivalent.\n\nThe given callback may be called any number of times in the future, with one\nargument (the “value”) each time. This is referred to as the event “firing” that\nvalue.\n\nThe `watch` and `bind` functions return a function which can be used instead of\nthe `unwatch` or `unbind` functions.\n\n\n### Constructing Events\n\n#### `frp.event.pipe()`\n\nThis returns a Pipe, which is an event that has an extra function `fire(value)`\nwhich causes it to fire a value. It also has a property `event` which refers to\na copy of itself without the fire function.\n\nA useful pattern is to create a pipe, keep a reference to it, and return\npipe.event to your caller so that other code can listen to the event, but not\ncause it to fire.\n\n\n### Combining Events\n\n#### `frp.event.combine(eventsArray)`\n\nReturns a new event which, whenever any of the given events fires a value, fires\nthat value.\n\n\n### Constant Events\n\n#### `frp.event.identity`\n\nThis is an event which never fires and as such is the identity with respect to\n`Event.combine`.\n\n\n### Functions on Event\n\n<h4><pre>\nmap(event, fn)\nevent.map(fn)\n</pre></h4>\n\nReturns a new event which, when the original event fires a value, fires\n`fn(value)`.\n\n\n<h4><pre>\nmultimap(event, fn)\nevent.multimap(fn)\n</pre></h4>\n\nReturns a new event which, when the original event fires a value, calls `fn(value, emit)`, and fires any values passed to `emit`.\n\nThe given `fn` may call `emit` 0, 1, or n times. It may also store `emit` and arrange for it to be called after `fn` returns.\n\nIt is guaranteed that, in all calls to `fn`, `emit` will always refer to the same function object.\n\n\n<h4><pre>\nfilter(event, fn)\nevent.filter(fn)\n</pre></h4>\n\nReturns a new event which, when the original event fires a value, fires\n`value` if `fn(value)` is truthy. If not given, `fn` defaults to the identity\nfunction.\n\n\n<h4><pre>\nexclude(event, fn)\nevent.exclude(fn)\n</pre></h4>\n\nReturns a new event which, when the original event fires a value, fires\n`value` if `fn(value)` is falsy. If not given, `fn` defaults to the identity\nfunction.\n\n\n<h4><pre>\nfold(event, initial, fn)\nevent.fold(initial, fn)\n</pre></h4>\n\nReturns a new event which keeps an internal value, initialized to the given\ninitial value. When the given event fires a value `x`, the returned event will\nupdate its internal value to `fn(oldInternal, x)` and fire that value.\n\n\n<h4><pre>\nreduce(event, fn)\nevent.reduce(fn)\n</pre></h4>\n\nWaits for the event to fire a value `x`, then behaves as `event.fold(x, fn)`.\n\n\n<h4><pre>\nref(event)\nevent.ref()\n</pre></h4>\n\nReturns a new event which behaves identically to the given event, but which also\nhas a `release` function. When called, this breaks the link between the original\nevent and the returned event.\n\n\n<h4><pre>\nsum(event)\nevent.sum()\n</pre></h4>\n\nEquivalent to `event.fold(0, add)`\n\n\n<h4><pre>\nproduct(event)\nevent.product()\n</pre></h4>\n\nEquivalent to `event.fold(1, multiply)`\n\n\n<h4><pre>\nsync(eventA, eventB)\neventA.sync(eventB)\n</pre></h4>\n\nReturns a new event which, whenever `eventA` fires, adds the fired value to\na queue. When `eventB` fires, the returned event fires all values in the\nqueue in succession, and the queue is flushed.\n\n\n## Signal\n\n    require('frp/signal')\n    require('frp').signal\n\nA signal represents a changing value. It is like an event except that it has\na current value:\n\n    signal.value\n    signal.get()\n\nSignals can also be empty, in which case `signal.empty` will be true and\n`signal.value` and `signal.get()` will be undefined.\n\nSignals can be watched, just like events:\n\n    signal.watch(cb)\n    signal.unwatch(cb)\n\nThere is also a similar function, `bind`:\n\n    signal.bind(cb)\n    signal.unbind(cb)\n\nIn this case, `cb(value)` will be called whenever the signal’s value changes\njust like with `watch().` Additionally, though, `cb(value)` will be called once\nas soon as `bind()` is called, with the signal’s current value.\n\n\n### Constructing Signals\n\n#### `frp.signal.constant(value)`\n\nReturns a signal whose value is always the same.\n\n\n#### `frp.signal.event(event)`\n\nReturns an empty signal whose value is updated with any value fired by the given\nevent.\n\n\n#### `frp.signal.event(initial, event)`\n\nReturns a signal with the given initial value, but whose value is updated with\nany value fired by the given event.\n\n\n#### `frp.signal.cell()`\n\nReturns a `Cell` object, which is to a signal what a pipe is to an event; that\nis, an object like a signal but which can be written to.\n\nWrite to a cell using either its `set()` method or its `value` property.\n\nUse `cell.signal` to get an ordinary read-only signal from the cell.\n\n\n### Combining Signals\n\n#### `frp.signal.combine(signals)`\n\nAccepts either an array of signals or an object mapping names to signals.\n\nIf given an object, returns a signal whose value is an object mapping names to the values of the\nnamed signals in the argument object. If any of the named signals are empty, their names will\nnot be present in the returned signal’s value.\n\nIf given an array, returns a signal whose value is an array whose elements are\nthe values of the corresponding signals in the given array. If any of the given\nsignals are empty, the corresponding items in the value array will be left unset.\n\n\n#### `frp.signal.join(signals)`\n\nAccepts either an array of signals or an object mapping names to signals.\n\nBehaves as `Signal.combine`, except `join` waits for all given signals to have\nvalues before starting to emit values.\n\n\n### Functions on Signal\n\nSignals support all the functions that events do. See the unit tests for details\non how these differ from their counterparts on event.\n\nSignals also offer the following functions:\n\n\n<h4><pre>\ninitial(signal, value)\nsignal.initial(value)\n</pre></h4>\n\nIf the given signal has a value, returns the given signal. Otherwise, returns\na signal which has the given value, and which starts to track the given signal’s\nvalue as soon as it has one.\n\n\n<h4><pre>\nflatten(signal)\nsignal.flatten()\n</pre></h4>\n\nThe argument should be a signal whose value is always another signal.\n\nReturns a new signal whose value is always the value of the signal that is the\nvalue of the given signal.\n\nIf the given signal ever takes on a value which is not a signal, undefined\nbehaviour ensues.\n\n\n<h4><pre>\nflatMap(signal, fn)\nsignal.flatMap(fn)\n</pre></h4>\n\nEquivalent to `signal.map(fn).flatten()`\n\n\n# Lifetime Management\n\nWhen using transformative functions like `map` or `filter` to create new events\nand signals out of old ones, the old (“parent”) event or signal will retain\na reference to the new (“child”) signal for as long as it lives, unless it is\nspecifically unbound.\n\nThis means that **child objects will live at least as long as their parents!**\n\nSo, if you have a long-lived object and you keep calling `map` on it, its\ninternal list of watchers will keep growing ever longer, even after you’ve\nstopped using the new objects that `map` has created.\n\nThis may not be what you want, which is where the `ref` function comes in:\n\n<h4><pre>\nsignal.ref()\nevent.ref()\nref(signal)\nref(event)\n</pre></h4>\n\nCalling `ref` on a signal or event creates an object that behaves identically\nto the object you called `ref` on, except that the new object will have a\n`release` method. Calling this will cause it to become disconnected from its\nparent, no longer mirroring its updates.\n\nThis allows you to manage the lifetime of connected chains of events and\nsignals. For example:\n\n    var a = getSuperLongLivedEvent();\n\n    var a0 = a.ref();\n    a0.map(blah).filter(bling).watch(function(x) {\n        ...\n    });\n\n    // done with a0\n    a0.release();\n\n    var a1 = a.ref();\n    a1.map(bloo).filter(blarp).watch(function(y) {\n        ...\n    });\n\n    // done with a1\n    a1.release();\n\nIn this example, the intermediary events created by the calls to `map` and\n`filter` would normally stick around forever, bloating `a`’s list of watchers.\nBut, since `a0` and `a1` are created using `a.ref`, calling `release` causes\nthem to disconnect from `a` and become unreachable. `a`’s list of watchers will\nbe empty again after both `a0` and `a1` are released, and `a0` and `a1` can\nbe garbage-collected.\n\n\n# Error Handling\n\nThis library does not take a stance on error handling. Events and Signals\nconcern themselves only with values, and the question of which values are\nconsidered ‘errors’ is left up to you and your application.\n\nExceptions are not afforded any particular special handling; exceptions\nthrown by your code are not caught by `frp.js` and so will propagate up\nthe stack as normal.\n\nIn general, this means that if an exception is thrown in the transformation\nfunction given to `map` or `filter` or similar, this will propagate up\nto where you called `set` or `fire`, and the transformed event or signal\n(the return value of `map` or similar) will not fire a value.\n","versions":{"0.1.2":{"name":"frp","version":"0.1.2","description":"Functional reactive programming primitives","author":{"name":"Robin Allen","email":"r@foon.uk"},"license":"ISC","main":"src","keywords":["frp","functional","reactive","cell","event","signal","slot","map","reduce"],"homepage":"https://github.com/robin-allen/frp.js","bugs":{"url":"https://github.com/robin-allen/frp.js/issues"},"repository":{"type":"git","url":"https://github.com/robin-allen/frp.js.git"},"scripts":{"test":"mocha --ui tdd"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"d43053208dc0f9ac492d29dbea6ddff23bf12b40","_id":"frp@0.1.2","_shasum":"5fb4fda2213edc7c988d49b49b0b912d7a8eb764","_from":".","_npmVersion":"2.0.0-alpha-5","_npmUser":{"name":"rogual","email":"r@foon.uk"},"maintainers":[{"name":"rogual","email":"r@foon.uk"}],"dist":{"shasum":"5fb4fda2213edc7c988d49b49b0b912d7a8eb764","tarball":"https://registry.npmjs.org/frp/-/frp-0.1.2.tgz","integrity":"sha512-zy9RGw41TGY+22Os1JQyOhJJ/xXLYpD91mf5DadNQatzj0V6Zrpl374Oy9OsOkukPOOJskE8Z8WszXdD9tQK8A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD525a9lpNQ8Au3uNB7WwNSwGeescB32LCnj7kggNzLawIhAIKl+8FK+9rtykV+VsjXAh1N1WDsgqElgS8C7+mTwJN+"}]}},"0.1.3":{"name":"frp","version":"0.1.3","description":"Functional reactive programming primitives","author":{"name":"Robin Allen","email":"r@foon.uk"},"license":"ISC","main":"src","keywords":["frp","functional","reactive","cell","event","signal","slot","map","reduce"],"homepage":"https://github.com/robin-allen/frp.js","bugs":{"url":"https://github.com/robin-allen/frp.js/issues"},"repository":{"type":"git","url":"https://github.com/robin-allen/frp.js.git"},"scripts":{"test":"mocha --ui tdd"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"57465e1d15038366d226fb6640c6830de4d16f0a","_id":"frp@0.1.3","_shasum":"a0c6775a9a77213f3af48b4bba7427e6f423200a","_from":".","_npmVersion":"2.0.0-alpha-5","_npmUser":{"name":"rogual","email":"r@foon.uk"},"maintainers":[{"name":"rogual","email":"r@foon.uk"}],"dist":{"shasum":"a0c6775a9a77213f3af48b4bba7427e6f423200a","tarball":"https://registry.npmjs.org/frp/-/frp-0.1.3.tgz","integrity":"sha512-xYB6JqDZrq90wOdF+9spURUoz6yoAKJUbYp5PXR0MqKIceErDqRRHq/LQsIjwd1bXMxKOMWLtPni/0nZuQcTpg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDROD82mJXjjZVkX4NxqzRaZ6/JNQzklk2YphLf7l4nIwIgJ+gx0t5sKq8tNS/uq0nQfif+Vzf852bhJfNA8C7MtmY="}]}},"0.1.4":{"name":"frp","version":"0.1.4","description":"Functional reactive programming primitives","author":{"name":"Robin Allen","email":"r@foon.uk"},"license":"ISC","main":"src","keywords":["frp","functional","reactive","cell","event","signal","slot","map","reduce"],"homepage":"https://github.com/robin-allen/frp.js","bugs":{"url":"https://github.com/robin-allen/frp.js/issues"},"repository":{"type":"git","url":"https://github.com/robin-allen/frp.js.git"},"scripts":{"test":"mocha --ui tdd"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"7db42b55c5584fe44880285377097ed1d4a281d2","_id":"frp@0.1.4","_shasum":"0790d968c21a5502810a15cecb81a59d96d0d9a2","_from":".","_npmVersion":"2.0.0-alpha-5","_npmUser":{"name":"rogual","email":"r@foon.uk"},"maintainers":[{"name":"rogual","email":"r@foon.uk"}],"dist":{"shasum":"0790d968c21a5502810a15cecb81a59d96d0d9a2","tarball":"https://registry.npmjs.org/frp/-/frp-0.1.4.tgz","integrity":"sha512-Rg3KvvHXIhlzJlXICUPoJp2PfN6Jm4c60OA6+ByX+kMGRFCQ5x6wKRJ1KrH7QEKuijlZQE8IiDZZ7kMFfcGbFw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGTYvz8TzxxunVf0N+dHYtcgJxomKT4QBQ+q6wTRsgypAiAlHPjTSF9vV/HQ+qB61Bv2uLFG8sURk8FTrQDbvqT95Q=="}]}},"0.1.5":{"name":"frp","version":"0.1.5","description":"Functional reactive programming primitives","author":{"name":"Robin Allen","email":"r@foon.uk"},"license":"ISC","main":"src","keywords":["frp","functional","reactive","cell","event","signal","slot","map","reduce"],"homepage":"https://github.com/robin-allen/frp.js","bugs":{"url":"https://github.com/robin-allen/frp.js/issues"},"repository":{"type":"git","url":"https://github.com/robin-allen/frp.js.git"},"scripts":{"test":"mocha --ui tdd"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"284de2b4d39809a4c4c3f26b91404523b40fc931","_id":"frp@0.1.5","_shasum":"a2970c7da0d46c7b69e8f17a3e56ed78af8b5ea6","_from":".","_npmVersion":"2.0.0-alpha-5","_npmUser":{"name":"rogual","email":"r@foon.uk"},"maintainers":[{"name":"rogual","email":"r@foon.uk"}],"dist":{"shasum":"a2970c7da0d46c7b69e8f17a3e56ed78af8b5ea6","tarball":"https://registry.npmjs.org/frp/-/frp-0.1.5.tgz","integrity":"sha512-CTSLsne8OlXRaNefozWortUW3ozzhjMY5xOx42WwttdggsQKtU5xO5fuvgYNwPohyGnXUUBhnqPAhJEurLo/CA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICx8xK/zEhiFegNt3tO2f7BZPxBSrwya4EuIwkTH5e2fAiBO2D8IZ+r5CWZ9Kh/zQ8wUQt1haE/dVguWgZKn2TRKog=="}]}},"0.1.6":{"name":"frp","version":"0.1.6","description":"Functional reactive programming primitives","author":{"name":"Robin Allen","email":"r@foon.uk"},"license":"ISC","main":"src","keywords":["frp","functional","reactive","cell","event","signal","slot","map","reduce"],"homepage":"https://github.com/robin-allen/frp.js","bugs":{"url":"https://github.com/robin-allen/frp.js/issues"},"repository":{"type":"git","url":"https://github.com/robin-allen/frp.js.git"},"scripts":{"test":"mocha --ui tdd"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"b680661a96c1024bcdf3b7d8ee690e730ddbd17e","_id":"frp@0.1.6","_shasum":"1c6033464c6f448342341991c7b28a982985c2d2","_from":".","_npmVersion":"2.0.0-alpha-5","_npmUser":{"name":"rogual","email":"r@foon.uk"},"maintainers":[{"name":"rogual","email":"r@foon.uk"}],"dist":{"shasum":"1c6033464c6f448342341991c7b28a982985c2d2","tarball":"https://registry.npmjs.org/frp/-/frp-0.1.6.tgz","integrity":"sha512-bgvlVNGLB5Gi4mQY+F159TRAJj9O2NMy1Gvc9Ei9YNQTxCz0efHlroiM7798Vn7VNLUE/jNkNdiCiAf1xGh+Iw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCvluFNSuKoxxfxXU6/Dn3RRrjkxV+4yIwwax9nT2GtqgIgOLKjawrrmDylufsZqjeMMQsp7Vj2osQipQd9258UztM="}]}},"0.1.7":{"name":"frp","version":"0.1.7","description":"Functional reactive programming primitives","author":{"name":"Robin Allen","email":"r@foon.uk"},"license":"ISC","main":"src","keywords":["frp","functional","reactive","cell","event","signal","slot","map","reduce"],"homepage":"https://github.com/robin-allen/frp.js","bugs":{"url":"https://github.com/robin-allen/frp.js/issues"},"repository":{"type":"git","url":"https://github.com/robin-allen/frp.js.git"},"scripts":{"test":"mocha --ui tdd"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"c3db87d621cdfca13279578516867ac12e6fef10","_id":"frp@0.1.7","_shasum":"0ece44adcb60864349447deb912727b9cd22b212","_from":".","_npmVersion":"2.0.0-alpha-5","_npmUser":{"name":"rogual","email":"r@foon.uk"},"maintainers":[{"name":"rogual","email":"r@foon.uk"}],"dist":{"shasum":"0ece44adcb60864349447deb912727b9cd22b212","tarball":"https://registry.npmjs.org/frp/-/frp-0.1.7.tgz","integrity":"sha512-uaDjnkp3llCa66c+2rL7bMxYeaT3OqwkTCWM18vxR/HT7eeSMTRvcRgdzYB7B1Ah59Xg+1iXOJJWFKxm4Uo9Gw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAtlb6Vk8BY6RpM+SmU21YuHraL8oHfHcPJsNo3GUqRJAiEA4Xc6sXHVbseNFnhxbk0zqWyKbJRwaF7+OWeC+8fpEDY="}]}},"0.1.8":{"name":"frp","version":"0.1.8","description":"Functional reactive programming primitives","author":{"name":"Robin Allen","email":"r@foon.uk"},"license":"ISC","main":"src","keywords":["frp","functional","reactive","cell","event","signal","slot","map","reduce"],"homepage":"https://github.com/robin-allen/frp.js","bugs":{"url":"https://github.com/robin-allen/frp.js/issues"},"repository":{"type":"git","url":"https://github.com/robin-allen/frp.js.git"},"scripts":{"test":"mocha --ui tdd"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"8fdf16a6197f8cddd3786303d9924cdc8d099ecd","_id":"frp@0.1.8","_shasum":"a070705ed98d79dc1b989a04d6d051037458e1dc","_from":".","_npmVersion":"2.0.0-alpha-5","_npmUser":{"name":"rogual","email":"r@foon.uk"},"maintainers":[{"name":"rogual","email":"r@foon.uk"}],"dist":{"shasum":"a070705ed98d79dc1b989a04d6d051037458e1dc","tarball":"https://registry.npmjs.org/frp/-/frp-0.1.8.tgz","integrity":"sha512-GH0sfx6sxofpgzFFYEv0GB7/cG/HM119gvK6fEs5eVnXk74DfPhH0uSoS7ybTzkgtJ1vSdK5dnHYKwFouXCsjA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDBlS/tiZEiZ48ft1EyPol0oxxXcgXvQKt4Kb7qXLZY1AIgIVTIJyLdFzCM78yn9cB/tMZJbKFGasFKQp4wUg5pNq8="}]}},"0.1.9":{"name":"frp","version":"0.1.9","description":"Functional reactive programming primitives","author":{"name":"Robin Allen","email":"r@foon.uk"},"license":"ISC","main":"src","keywords":["frp","functional","reactive","cell","event","signal","slot","map","reduce"],"homepage":"https://github.com/robin-allen/frp.js","bugs":{"url":"https://github.com/robin-allen/frp.js/issues"},"repository":{"type":"git","url":"https://github.com/robin-allen/frp.js.git"},"scripts":{"test":"mocha --ui tdd"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"1c7a761a3761cadb45d85d1210a5db483daa8981","_id":"frp@0.1.9","_shasum":"3639c1334acab644b37c66d5eccc0a892bf49309","_from":".","_npmVersion":"2.0.0-alpha-5","_npmUser":{"name":"rogual","email":"r@foon.uk"},"maintainers":[{"name":"rogual","email":"r@foon.uk"}],"dist":{"shasum":"3639c1334acab644b37c66d5eccc0a892bf49309","tarball":"https://registry.npmjs.org/frp/-/frp-0.1.9.tgz","integrity":"sha512-ogHjdv0UDGpiHp1Z4LVkxCqvuBKVuoTKMvEiydhi2dFi/FwkBgi5SLdtTc8irWplpKkGZNcbSwZMaFI5SU5T2w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9Jrt4ijotocCcO1diFue4vwwRdQWimlV6AwyHK272pAIhALb5MF+p9iEvGKfxvA6uwfFDUv1yD7LYozOsBCD68t02"}]}},"0.2.0":{"name":"frp","version":"0.2.0","description":"Functional reactive programming primitives","author":{"name":"Robin Allen","email":"r@foon.uk"},"license":"ISC","main":"src","keywords":["frp","functional","reactive","cell","event","signal","slot","map","reduce"],"homepage":"https://github.com/robin-allen/frp.js","bugs":{"url":"https://github.com/robin-allen/frp.js/issues"},"repository":{"type":"git","url":"https://github.com/robin-allen/frp.js.git"},"scripts":{"test":"mocha --ui tdd"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"2779b549dce1d92c25c48d845e7f4cb9cb805958","_id":"frp@0.2.0","_shasum":"0ef834a654bcdedc205d1c905564fd67932d529b","_from":".","_npmVersion":"2.0.0-alpha-5","_npmUser":{"name":"rogual","email":"r@foon.uk"},"maintainers":[{"name":"rogual","email":"r@foon.uk"}],"dist":{"shasum":"0ef834a654bcdedc205d1c905564fd67932d529b","tarball":"https://registry.npmjs.org/frp/-/frp-0.2.0.tgz","integrity":"sha512-HyxKoSVXrVGWfT5XRZ5POFQM0++G9bEnEv7BhN88m71Jp6oWg59knN8roJ/ReNoWL4FKSIrpPdhizXYj999kUQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDssuj71gfeyJuTwKDep1uKDQIhIwlQWd3JUK0BAHsaXAiEAhNLKsOaDOocamDg4DX0ORaT5JUmOFd3qXwA2jeneYPs="}]}},"0.2.1":{"name":"frp","version":"0.2.1","description":"Functional reactive programming primitives","author":{"name":"Robin Allen","email":"r@foon.uk"},"license":"ISC","main":"src","keywords":["frp","functional","reactive","cell","event","signal","slot","map","reduce"],"homepage":"https://github.com/robin-allen/frp.js","bugs":{"url":"https://github.com/robin-allen/frp.js/issues"},"repository":{"type":"git","url":"https://github.com/robin-allen/frp.js.git"},"scripts":{"test":"mocha --ui tdd"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"cf2d966384906dafded13c72e8a27bb92630f025","_id":"frp@0.2.1","_shasum":"bfbd45c44dc931a155c86f8a8f76c4cd375fc36f","_from":".","_npmVersion":"2.0.0-alpha-5","_npmUser":{"name":"rogual","email":"r@foon.uk"},"maintainers":[{"name":"rogual","email":"r@foon.uk"}],"dist":{"shasum":"bfbd45c44dc931a155c86f8a8f76c4cd375fc36f","tarball":"https://registry.npmjs.org/frp/-/frp-0.2.1.tgz","integrity":"sha512-IZ7LYqIMJQh7rpUQtpJTvvt5f4G1fcyDmS/JbhcRKp4rebMQ0aty2yy5zXZ3fdAh9KRpGObL+8yGOqBA7De4Ug==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGWMXKCCwm4XrBLnypYgt4vhfgww2BCmuvaalFXj6AR0AiEA5ILuih+CgOHbTmmEka1zvayvu8VLsmL+/NgBOJI+mSI="}]}},"0.2.2":{"name":"frp","version":"0.2.2","description":"Functional reactive programming primitives","author":{"name":"Robin Allen","email":"r@foon.uk"},"license":"ISC","main":"src","keywords":["frp","functional","reactive","cell","event","signal","slot","map","reduce"],"homepage":"https://github.com/robin-allen/frp.js","bugs":{"url":"https://github.com/robin-allen/frp.js/issues"},"repository":{"type":"git","url":"https://github.com/robin-allen/frp.js.git"},"scripts":{"test":"mocha --ui tdd"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"fe223b90f6a3b4e84874d90a319740c0963e8242","_id":"frp@0.2.2","_shasum":"7b33a834ec918aadb69e407a6fe8a7993ca9adf2","_from":".","_npmVersion":"2.0.0-alpha-5","_npmUser":{"name":"rogual","email":"r@foon.uk"},"maintainers":[{"name":"rogual","email":"r@foon.uk"}],"dist":{"shasum":"7b33a834ec918aadb69e407a6fe8a7993ca9adf2","tarball":"https://registry.npmjs.org/frp/-/frp-0.2.2.tgz","integrity":"sha512-RfBhV6vYG0MANxLNt95lZcTqJd94JfkCI51UWRmq3yRyC7Y5F8SHrE4MEL3iFYbDvFvdOCLbqglYEK3cJuADVA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCTsfo+5txHPc+kaeRnJ7I39xfoIa5U0qlJPbv7o8fUkgIgC8jRW/gd74qvEKCvjz+dHvb1yIiFKIgVIzIu2F3fGYw="}]}},"0.2.3":{"name":"frp","version":"0.2.3","description":"Functional reactive programming primitives","author":{"name":"Robin Allen","email":"r@foon.uk"},"license":"ISC","main":"src","keywords":["frp","functional","reactive","cell","event","signal","slot","map","reduce"],"homepage":"https://github.com/robin-allen/frp.js","bugs":{"url":"https://github.com/robin-allen/frp.js/issues"},"repository":{"type":"git","url":"https://github.com/robin-allen/frp.js.git"},"scripts":{"test":"mocha --ui tdd"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"b096516eb1a638f85585a8d5d453242dfa7877d1","_id":"frp@0.2.3","_shasum":"8ba495ea814c0d7db170d8c504ce267d26381cf4","_from":".","_npmVersion":"2.0.0-alpha-5","_npmUser":{"name":"rogual","email":"r@foon.uk"},"maintainers":[{"name":"rogual","email":"r@foon.uk"}],"dist":{"shasum":"8ba495ea814c0d7db170d8c504ce267d26381cf4","tarball":"https://registry.npmjs.org/frp/-/frp-0.2.3.tgz","integrity":"sha512-SZiddskwbZi6nqYDYSkb+vplKmlhH8ZQh6FHpqWaKZbKBKng2WUWG8K0PDTCpC7c0282U9m8WsvKTz0e+n0NGQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDMmQyRJ98grb3pV9uBsbiMl0e5eOCbfX5QQ0w5bOU4QQIgPFnrY8V6ncah8M7W1GQxOpJPYz3qbSgCprzN21Vvk6o="}]}},"0.2.4":{"name":"frp","version":"0.2.4","description":"Functional reactive programming primitives","author":{"name":"Robin Allen","email":"r@foon.uk"},"license":"ISC","main":"src","keywords":["frp","functional","reactive","cell","event","signal","slot","map","reduce"],"homepage":"https://github.com/robin-allen/frp.js","bugs":{"url":"https://github.com/robin-allen/frp.js/issues"},"repository":{"type":"git","url":"https://github.com/robin-allen/frp.js.git"},"scripts":{"test":"mocha --ui tdd"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"62b77d809cdbd12b3b8de0464ba8c4bc805ae725","_id":"frp@0.2.4","_shasum":"9f57b7fdedddf18a43dbe8d35dae694569a051d4","_from":".","_npmVersion":"2.0.0-alpha-5","_npmUser":{"name":"rogual","email":"r@foon.uk"},"maintainers":[{"name":"rogual","email":"r@foon.uk"}],"dist":{"shasum":"9f57b7fdedddf18a43dbe8d35dae694569a051d4","tarball":"https://registry.npmjs.org/frp/-/frp-0.2.4.tgz","integrity":"sha512-K1H3AqLqyR/DRri8BwhTgTO0XOcyYkstr1iRBP30XAt7tcMcVmANSupBeiNSAdggLpWwZivQ1dg/Io/FZ7fubg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCFrx8juSkXFn/1LOdcayUKU8SKECiPk8Dxdib4iwuyRwIgPZRCxkFD9xDfVWYHj0Nb0/uPdpnkqVUxy389JSbEg2I="}]}},"0.3.0":{"name":"frp","version":"0.3.0","description":"Functional reactive programming primitives","author":{"name":"Robin Allen","email":"r@foon.uk"},"license":"ISC","main":"src","keywords":["frp","functional","reactive","cell","event","signal","slot","map","reduce"],"homepage":"https://github.com/robin-allen/frp.js","bugs":{"url":"https://github.com/robin-allen/frp.js/issues"},"repository":{"type":"git","url":"https://github.com/robin-allen/frp.js.git"},"scripts":{"test":"mocha --ui tdd"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"f5f77276584e8301b1196535037e0c53c517ab48","_id":"frp@0.3.0","_shasum":"df0122ed8e1e3e48197153679a6af5ff06603520","_from":".","_npmVersion":"2.0.0-alpha-5","_npmUser":{"name":"rogual","email":"r@foon.uk"},"maintainers":[{"name":"rogual","email":"r@foon.uk"}],"dist":{"shasum":"df0122ed8e1e3e48197153679a6af5ff06603520","tarball":"https://registry.npmjs.org/frp/-/frp-0.3.0.tgz","integrity":"sha512-iayfFj9TxuzQzw5CYRTfl2GP4Dj3j8508s5FyTfU9zatrA/ExuvSSUNWmnbVAiYMHOKSYLDMwqsMnLxGOw/Lqw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCvUYEtNFdPyn1ncaoSCHcxhjuBatb5NyldzfwM15v/TwIgCcHpwaJqZPO8Hji3GqS4dQ9miiUjg8EM6n6mzZfm1DI="}]}},"0.3.1":{"name":"frp","version":"0.3.1","description":"Functional reactive programming primitives","author":{"name":"Robin Allen","email":"r@foon.uk"},"license":"ISC","main":"src","keywords":["frp","functional","reactive","cell","event","signal","slot","map","reduce"],"homepage":"https://github.com/robin-allen/frp.js","bugs":{"url":"https://github.com/robin-allen/frp.js/issues"},"repository":{"type":"git","url":"https://github.com/robin-allen/frp.js.git"},"scripts":{"test":"mocha --ui tdd"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"683b39880ccfb2d8c9967729b53069451af32178","_id":"frp@0.3.1","_shasum":"d03101011b175fb847ee3c0427ec2cf1fa4cafd7","_from":".","_npmVersion":"2.3.0","_nodeVersion":"1.0.4","_npmUser":{"name":"rogual","email":"r@foon.uk"},"maintainers":[{"name":"rogual","email":"r@foon.uk"}],"dist":{"shasum":"d03101011b175fb847ee3c0427ec2cf1fa4cafd7","tarball":"https://registry.npmjs.org/frp/-/frp-0.3.1.tgz","integrity":"sha512-Fdx8G4FUC0pwnOrl27GeBG3PbY3wC+W62Eljkcp5UjwlcEEOho7QAPRTiiC/bmes0wVqsRo8W40Yy8JurE17wA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIECAQhFgdc4MmAKDjhK0vC7N2mhjEvbDthe9umcSEeqmAiEA6DN57AdLccb/NYlm6OBkfQjL+5lz4j5DRq07WK3XGFo="}]}},"0.3.2":{"name":"frp","version":"0.3.2","description":"Functional reactive programming primitives","author":{"name":"Robin Allen","email":"r@foon.uk"},"license":"ISC","main":"src","keywords":["frp","functional","reactive","cell","event","signal","slot","map","reduce"],"homepage":"https://github.com/robin-allen/frp.js","bugs":{"url":"https://github.com/robin-allen/frp.js/issues"},"repository":{"type":"git","url":"https://github.com/robin-allen/frp.js.git"},"scripts":{"test":"mocha --ui tdd"},"dependencies":{"lodash":"^3.7.0"},"gitHead":"63882a3ba8a7d0a0122a94ba8f2e199b4b82477b","_id":"frp@0.3.2","_shasum":"985e4c115b1e0ef18cb02293495a8aade62069ba","_from":".","_npmVersion":"2.7.3","_nodeVersion":"0.12.1","_npmUser":{"name":"rogual","email":"r@foon.uk"},"maintainers":[{"name":"rogual","email":"r@foon.uk"}],"dist":{"shasum":"985e4c115b1e0ef18cb02293495a8aade62069ba","tarball":"https://registry.npmjs.org/frp/-/frp-0.3.2.tgz","integrity":"sha512-/hNBuwXd1pwM/371Q2F27WmavBpTZ9nqEeP4rzUOOhrEwKjSJ5yPtWB0dD20maHrMTdFDjNJAPqG2AGgjcloAA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDmQaoWYdlMO5S0nVW/hPlgTx0M2zFPfvb3iJn4iz3jywIgL+xrqLvRuh8ONAHHwkNYghbtyYL7Zw2d7pGl9JqJxvg="}]}},"0.3.3":{"name":"frp","version":"0.3.3","description":"Functional reactive programming primitives","author":{"name":"Robin Allen","email":"r@foon.uk"},"license":"ISC","main":"src","keywords":["frp","functional","reactive","cell","event","signal","slot","map","reduce"],"homepage":"https://github.com/robin-allen/frp.js","bugs":{"url":"https://github.com/robin-allen/frp.js/issues"},"repository":{"type":"git","url":"https://github.com/robin-allen/frp.js.git"},"scripts":{"test":"mocha --ui tdd"},"dependencies":{"lodash":"^3.7.0"},"gitHead":"76e467a079f5db34ee43c366713f15e19d43df9c","_id":"frp@0.3.3","_shasum":"766e5b78931044636951888cd17e1cc18d6b20ef","_from":".","_npmVersion":"2.7.3","_nodeVersion":"0.12.1","_npmUser":{"name":"rogual","email":"r@foon.uk"},"maintainers":[{"name":"rogual","email":"r@foon.uk"}],"dist":{"shasum":"766e5b78931044636951888cd17e1cc18d6b20ef","tarball":"https://registry.npmjs.org/frp/-/frp-0.3.3.tgz","integrity":"sha512-gJA4hEXshOzDGEiKnq3OJR3n2gFFiJGt7TRRqdL0UJgrD3oh2gjDNexllmtKqBQC/2WMRjCvEj21QHjhbPZnQw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDkLWlZqcrnazkesp1kUr3Y/8FvpvWZRv+OFznaqv/3sAIgYAFYg3cllxff+ExeVebWHdNmk84YU+xfaE+KkiO6U9Q="}]}},"0.3.4":{"name":"frp","version":"0.3.4","description":"Functional reactive programming primitives","author":{"name":"Robin Allen","email":"r@foon.uk"},"license":"ISC","main":"src","keywords":["frp","functional","reactive","cell","event","signal","slot","map","reduce"],"homepage":"https://github.com/rogual/frp.js","bugs":{"url":"https://github.com/rogual/frp.js/issues"},"repository":{"type":"git","url":"https://github.com/rogual/frp.js.git"},"scripts":{"test":"mocha --ui tdd"},"dependencies":{"lodash":"^3.7.0"},"gitHead":"bdc064f967b9ecb8f911a79f94a5541e2f63c4bc","_id":"frp@0.3.4","_shasum":"27e0ef433ec3fe151ecf98e5555fb228db622f14","_from":".","_npmVersion":"2.7.3","_nodeVersion":"0.12.1","_npmUser":{"name":"rogual","email":"r@foon.uk"},"maintainers":[{"name":"rogual","email":"r@foon.uk"}],"dist":{"shasum":"27e0ef433ec3fe151ecf98e5555fb228db622f14","tarball":"https://registry.npmjs.org/frp/-/frp-0.3.4.tgz","integrity":"sha512-mNtvi4pVq9dfCbAX86ZbvcsSaO2aBYLsCAFcI+jZcpDSND23yI2txdwNBEiRu+gjMAjGeyPUjPBzHKf58PxDPg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCXRFbL4KTLqyKjJTvN7lomc+3CESKu6LsrzTteJU5G3wIhAMMdckIoSlwfNOGhvlATLzwGAbGpdcAyS0I1iJi3YZuP"}]}}},"homepage":"https://github.com/rogual/frp.js","keywords":["frp","functional","reactive","cell","event","signal","slot","map","reduce"],"repository":{"type":"git","url":"https://github.com/rogual/frp.js.git"},"author":{"name":"Robin Allen","email":"r@foon.uk"},"bugs":{"url":"https://github.com/rogual/frp.js/issues"},"license":"ISC","readmeFilename":"README.md"}