{"_id":"thoonk","_rev":"26-11b12474a3e6167c23ce2d8bd477b736","name":"thoonk","description":"Thoonk is a persistent (and fast!) system for push feeds, queues, and jobs which leverages Redis. Thoonk follows a contract (schema + behavior) to allow multiple languages and custom implementations to interact reliably.","dist-tags":{"latest":"1.0.0"},"versions":{"0.1.0":{"name":"thoonk","version":"0.1.0","description":"Thoonk is a persistent (and fast!) system for push feeds, queues, and jobs which leverages Redis. Thoonk follows a contract (schema + behavior) to allow multiple languages and custom implementations to interact reliably.","keywords":["redis","job","feed","queue","publish","subscribe","push","live","cluster"],"homepage":"thoonk.com","author":{"name":"Nathan Fritz","email":"nathan@andyet.net","url":"http://andyet.net/team/nathan"},"contributors":[],"files":["thoonk/"],"main":"./thoonk.js","repository":{"type":"git","url":"git://github.com/fritzy/thoonk.js.git"},"dependencies":{"node-uuid":">=1.1.0","redis":">=0.5.5","padlock":">=1.0.0"},"_id":"thoonk@0.1.0","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.8","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"07817f82476c287ca5b1e2b6693e8b4501ead572","tarball":"https://registry.npmjs.org/thoonk/-/thoonk-0.1.0.tgz","integrity":"sha512-PV0FpVShbzpFR8OCTgAuqjSa44GUzGzJVPRP65235koQdSYM6g9Fm4b0dS4vJqkwUAQJTXcC76hdeLUmL1+wDQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDmz16uBaL2bMJ9CgAC9jF6FTdAGh8CYL6rEiUXDAZYZAIhAPBK1zhU5tIzmdwasIvRZe5lIRwYHvQAUTQG28Gr7mfz"}]},"scripts":{},"directories":{}},"0.1.1":{"name":"thoonk","version":"0.1.1","description":"Thoonk is a persistent (and fast!) system for push feeds, queues, and jobs which leverages Redis. Thoonk follows a contract (schema + behavior) to allow multiple languages and custom implementations to interact reliably.","keywords":["redis","job","feed","queue","publish","subscribe","push","live","cluster"],"homepage":"thoonk.com","author":{"name":"Nathan Fritz","email":"nathan@andyet.net","url":"http://andyet.net/team/nathan"},"contributors":[],"files":["thoonk/"],"main":"./thoonk.js","repository":{"type":"git","url":"git://github.com/fritzy/thoonk.js.git"},"dependencies":{"node-uuid":">=1.1.0","redis":">=0.5.5","padlock":">=1.0.0"},"_npmJsonOpts":{"file":"/Users/fritzy/.npm/thoonk/0.1.1/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"thoonk@0.1.1","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.15","_nodeVersion":"v0.4.10-pre","_defaultsLoaded":true,"dist":{"shasum":"3fad1b778939f9ccaf82444a51fe55660ea6226b","tarball":"https://registry.npmjs.org/thoonk/-/thoonk-0.1.1.tgz","integrity":"sha512-0zH65mFmkoe45BFmKcyBy/mX/eLEycRK8aeS27uPE169bh3aMnSJCp7zitDIrlw/MkBn3gutHkPW9FOTWVROKQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDBre3AGAbl6YWCXBeUIjCSJptB8gtniq3tXqnfXS9osQIgWpU5UYu3HvwQDMAy3FEtKURNVNbxQxtMX5wWdtjRqjA="}]},"scripts":{},"directories":{}},"0.1.2":{"name":"thoonk","version":"0.1.2","description":"Thoonk is a persistent (and fast!) system for push feeds, queues, and jobs which leverages Redis. Thoonk follows a contract (schema + behavior) to allow multiple languages and custom implementations to interact reliably.","keywords":["redis","job","feed","queue","publish","subscribe","push","live","cluster"],"homepage":"thoonk.com","author":{"name":"Nathan Fritz","email":"nathan@andyet.net","url":"http://andyet.net/team/nathan"},"contributors":[],"files":["feed.js","job.js","queue.js","sorted_feed.js","testall.js","thoonk.js"],"main":"./thoonk.js","repository":{"type":"git","url":"git://github.com/fritzy/thoonk.js.git"},"dependencies":{"node-uuid":">=1.1.0","redis":">=0.5.5","padlock":">=1.0.0"},"_npmJsonOpts":{"file":"/Users/fritzy/.npm/thoonk/0.1.2/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"thoonk@0.1.2","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.15","_nodeVersion":"v0.4.10-pre","_defaultsLoaded":true,"dist":{"shasum":"6f87095122c18f8c57f76d054333ce0575a50cee","tarball":"https://registry.npmjs.org/thoonk/-/thoonk-0.1.2.tgz","integrity":"sha512-b3zlEC/6134+fgbS6gxQ49VNdDPvL4N+9/P+H4KD+ZFaTLz/+dQTkjEAQ9hTe8ZBf8rF8doO6XBPXjxEsAEhvQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGuSHJTs0WjtcUGhg3Uj+i+UVoJxeYoM0OORAtJqwCWBAiEAvMYgfHYHl2rCzMY+/5w+VVbxMPhfNgHZCFPCWTbGXpU="}]},"scripts":{},"directories":{}},"0.1.3":{"name":"thoonk","version":"0.1.3","description":"Thoonk is a persistent (and fast!) system for push feeds, queues, and jobs which leverages Redis. Thoonk follows a contract (schema + behavior) to allow multiple languages and custom implementations to interact reliably.","keywords":["redis","job","feed","queue","publish","subscribe","push","live","cluster"],"homepage":"thoonk.com","author":{"name":"Nathan Fritz","email":"nathan@andyet.net","url":"http://andyet.net/team/nathan"},"contributors":[],"files":["feed.js","job.js","queue.js","sorted_feed.js","testall.js","thoonk.js","tests","examples"],"main":"./thoonk.js","repository":{"type":"git","url":"git://github.com/fritzy/thoonk.js.git"},"dependencies":{"node-uuid":">=1.1.0","redis":">=0.5.5","padlock":">=1.0.0"},"_npmJsonOpts":{"file":"/Users/fritzy/.npm/thoonk/0.1.3/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"thoonk@0.1.3","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.15","_nodeVersion":"v0.4.10-pre","_defaultsLoaded":true,"dist":{"shasum":"43600ce4ee1124ad811e94a737b64d9f91fe83af","tarball":"https://registry.npmjs.org/thoonk/-/thoonk-0.1.3.tgz","integrity":"sha512-TLSeEMX+YuqfqeH7FQKWHHbBdfIUpllb12WnUOs3pLgoj++krhfNrBfBSSwgyepqFuS3esURarLLNkxVPSAGcw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE1cnEMpufLuWWucMMBy6ll7t8lQc2MMQcGmX3ApSbCXAiEA6Ms6IlKHrp8oWuuX3tljfsM7BssEVlub2PPAEliAPi4="}]},"scripts":{},"directories":{}},"0.1.4":{"name":"thoonk","version":"0.1.4","description":"Thoonk is a persistent (and fast!) system for push feeds, queues, and jobs which leverages Redis. Thoonk follows a contract (schema + behavior) to allow multiple languages and custom implementations to interact reliably.","keywords":["redis","job","feed","queue","publish","subscribe","push","live","cluster"],"homepage":"thoonk.com","author":{"name":"Nathan Fritz","email":"nathan@andyet.net","url":"http://andyet.net/team/nathan"},"contributors":[],"files":["feed.js","job.js","queue.js","sorted_feed.js","testall.js","thoonk.js","tests","examples","LISCENSE","README.md","contract.txt","testconfig.json"],"main":"./thoonk.js","repository":{"type":"git","url":"git://github.com/fritzy/thoonk.js.git"},"dependencies":{"node-uuid":">=1.1.0","redis":">=0.5.5","padlock":">=1.0.0"},"_npmJsonOpts":{"file":"/Users/fritzy/.npm/thoonk/0.1.4/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"thoonk@0.1.4","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.15","_nodeVersion":"v0.4.10-pre","_defaultsLoaded":true,"dist":{"shasum":"e79315d3c9f3876dc96b76dc59213918cfb637b0","tarball":"https://registry.npmjs.org/thoonk/-/thoonk-0.1.4.tgz","integrity":"sha512-NLNlB+YzQTPaUjRbWf5MRuv1HrWpLoKyQyGUQP5NRxECUOC8wiYFwCjW6pgAauUTADpikFNl5LLwh0xszHkxqw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIArhc0vN9WWlppT5fgW+D6rHyGnczSsn7r2ZLhM6UxktAiALheztS4vMmdIewFQNrvAJ+dpbYMFmCxnb9Oe3I9FQUg=="}]},"scripts":{},"directories":{}},"0.2.0":{"name":"thoonk","version":"0.2.0","description":"Thoonk is a persistent (and fast!) system for push feeds, queues, and jobs which leverages Redis. Thoonk follows a contract (schema + behavior) to allow multiple languages and custom implementations to interact reliably.","keywords":["redis","job","feed","queue","publish","subscribe","push","live","cluster"],"homepage":"thoonk.com","author":{"name":"Nathan Fritz","email":"nathan@andyet.net","url":"http://andyet.net/team/nathan"},"contributors":[],"files":["feed.js","job.js","queue.js","sorted_feed.js","testall.js","thoonk.js","tests","examples","LISCENSE","README.md","contract.txt","testconfig.json"],"main":"./thoonk.js","repository":{"type":"git","url":"git://github.com/fritzy/thoonk.js.git"},"dependencies":{"node-uuid":">=1.1.0","redis":">=0.5.5","padlock":">=1.0.0"},"_npmJsonOpts":{"file":"/Users/fritzy/.npm/thoonk/0.2.0/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"thoonk@0.2.0","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.15","_nodeVersion":"v0.5.1","_defaultsLoaded":true,"dist":{"shasum":"12d5b66832e9e46b6351610886be8c04088e0735","tarball":"https://registry.npmjs.org/thoonk/-/thoonk-0.2.0.tgz","integrity":"sha512-g7GaHU0ASst3C2LfVYguF0bmDGJqMGrRADy5aJHYS+xZ+1IGh1kMGjfXAAH2YMKIrQPMJvrVXq4f/EuSh36pnQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDjYszZX4Nf6jLNRurPoY38JFF/DlT5WtSVH0zVSisVMwIhANUvYDbveucWGI/j/2kRNxai9NLIIOE9kzapLgdIhRvZ"}]},"scripts":{},"directories":{}},"0.3.0":{"name":"thoonk","version":"0.3.0","description":"Thoonk is a persistent (and fast!) system for push feeds, queues, and jobs which leverages Redis. Thoonk follows a contract (schema + behavior) to allow multiple languages and custom implementations to interact reliably.","keywords":["redis","job","feed","queue","publish","subscribe","push","live","cluster"],"homepage":"thoonk.com","author":{"name":"Nathan Fritz","email":"nathan@andyet.net","url":"http://andyet.net/team/nathan"},"contributors":[],"files":["feed.js","job.js","queue.js","sorted_feed.js","testall.js","thoonk.js","tests","examples","LISCENSE","README.md","contract.txt","testconfig.json"],"main":"./thoonk.js","repository":{"type":"git","url":"git://github.com/fritzy/thoonk.js.git"},"dependencies":{"node-uuid":">=1.1.0","redis":">=0.5.5","padlock":">=1.0.0"},"_npmJsonOpts":{"file":"/Users/fritzy/.npm/thoonk/0.3.0/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"thoonk@0.3.0","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.15","_nodeVersion":"v0.5.1","_defaultsLoaded":true,"dist":{"shasum":"7e7d9e70d8c51e6a25e2782f7991557266742c6c","tarball":"https://registry.npmjs.org/thoonk/-/thoonk-0.3.0.tgz","integrity":"sha512-9WFm34FOOFgYbQdKUYfmwpgHsMVzBZlT3Qy8NnMc4jrK+O2wvmRVDNZA4YuUiKBpWBZeInUuu4E0Fps751szrA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCorctiBp7erCK7m5ukZ4iV5Z++JWpnazDEls84FfskGwIgTfuA5ut831+69zo9vkcNLNC1/WkNmxfU5LgYL61M6lQ="}]},"scripts":{},"directories":{}},"0.5.2":{"name":"thoonk","version":"0.5.2","description":"Thoonk is a persistent (and fast!) system for push feeds, queues, and jobs which leverages Redis. Thoonk follows a contract (schema + behavior) to allow multiple languages and custom implementations to interact reliably.","keywords":["redis","job","feed","queue","publish","subscribe","push","live","cluster"],"homepage":"thoonk.com","author":{"name":"Nathan Fritz","email":"nathan@andyet.net","url":"http://andyet.net/team/nathan"},"contributors":[],"files":["feed.js","job.js","queue.js","sorted_feed.js","testall.js","thoonk.js","tests","examples","LICENSE","README.md","contract.txt","testconfig.json"],"main":"./thoonk.js","repository":{"type":"git","url":"git://github.com/fritzy/thoonk.js.git"},"dependencies":{"node-uuid":">=1.1.0","redis":">=0.5.5","padlock":">=1.0.0"},"_npmJsonOpts":{"file":"/Users/fritzy/.npm/thoonk/0.5.2/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"thoonk@0.5.2","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.27","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"619c8edbfa5aef4e442f1769819d3956520cea1e","tarball":"https://registry.npmjs.org/thoonk/-/thoonk-0.5.2.tgz","integrity":"sha512-+ik4fgjn04TaCrMFBva6e8f8REHV9XX5zzTzoJG/3TcuKqz6AcOhEQ7E5P1lt3kfz+2uspbI9LNCbincXUY5hA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDoTs5rBbC7yZ8rdMFIOCqTxWRitoHmrVt3hsG2b7HytwIhAKY6STZ+QCoCCPBTLRx11chmz0geypjPxu6rKQKDsrWA"}]},"maintainers":[{"name":"fritzy","email":"nathan@andyet.net"}],"directories":{}},"1.0.0":{"name":"thoonk","version":"1.0.0","description":"Thoonk is a persistent (and fast!) system for push feeds, queues, and jobs which leverages Redis. Thoonk follows a contract (schema + behavior) to allow multiple languages and custom implementations to interact reliably.","keywords":["redis","job","feed","queue","publish","subscribe","push","live","cluster"],"homepage":"thoonk.com","author":{"name":"Nathan Fritz","email":"nathan@andyet.net","url":"http://andyet.net/team/nathan"},"contributors":[],"main":"index.js","repository":{"type":"git","url":"http://github.com/andyet/thoonk.js.git"},"dependencies":{"async":"0.2.9","node-uuid":"1.4.0","hiredis":"0.1.15","redis":"0.8.4"},"devDependencies":{"precommit-hook":"0.3.5"},"_id":"thoonk@1.0.0","dist":{"shasum":"b99ee79a51a6fcaf05a7f9ee8d99b50c6ab6be36","tarball":"https://registry.npmjs.org/thoonk/-/thoonk-1.0.0.tgz","integrity":"sha512-g6ojEuGA+iIi2Yp/N8U8JE3cywMeT17VKoYsvMahqs8aBhtcXy2wcajlDl02g/EqASVmKj5rgEo2AT6g08PQ9w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF48LJi59UziZkd/Lh8JG6TLZJmWlx21Y0bZmRAWESHBAiEAm1ZqRsAvudSZRQak/x9j/re2kd4uDpa9QvOA5qPrxQs="}]},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"fritzy","email":"fritzy@netflint.net"},"maintainers":[{"name":"fritzy","email":"nathan@andyet.net"}]}},"maintainers":[{"email":"fritzy@netflint.net","name":"fritzy"}],"time":{"modified":"2022-06-27T06:14:44.951Z","created":"2011-06-23T00:29:16.043Z","0.1.0":"2011-06-23T00:29:16.782Z","0.1.1":"2011-07-14T18:41:33.132Z","0.1.2":"2011-07-14T18:44:37.942Z","0.1.3":"2011-07-14T18:47:07.685Z","0.1.4":"2011-07-14T18:49:14.809Z","0.2.0":"2011-07-15T00:24:58.675Z","0.3.0":"2011-07-31T04:59:16.589Z","0.5.2":"2011-10-20T04:58:40.688Z","1.0.0":"2013-07-19T18:31:11.245Z"},"author":{"name":"Nathan Fritz","email":"nathan@andyet.net","url":"http://andyet.net/team/nathan"},"repository":{"type":"git","url":"http://github.com/andyet/thoonk.js.git"},"homepage":"thoonk.com","keywords":["redis","job","feed","queue","publish","subscribe","push","live","cluster"],"contributors":[],"readme":"# Thoonk\n\n## What is Thoonk?\n\nThoonk is a persistent (and fast!) framework for Redis backed live data and \nobjects, such as push feeds, queues, and jobs.\n\nThoonk lets you create a Model whose methods are mapped to Redis Lua scripts,\nand can listen for and emit events using Redis pubsub channels. \n\nSince all of the actual logic for the model is written in Lua, Thoonk wrappers\nfor other languages can be written which can interoperate with `thoonk.js`, \nsuch as the Python version `thoonk.py`.\n\n\n## Installing\n\n    npm install thoonk\n\nBy itself, Thoonk is just a small framework for marshalling and setting up\nsubscriptions and loading Lua scripts into Redis. To see Thoonk in action\nyou will want to look at the examples for how to build a Thoonk backed model.\n\n\n## Example\n\nFirst, we create our model definition in `examples/helloworld.js`:\n\n```js\nvar ThoonkInterface = require('thoonk').ThoonkBaseInterface;\n\n\nfunction HelloWorld(thoonk) {\n    // Link the HelloWorld object to a thoonk connection.\n    ThoonkInterface.call(this, thoonk);\n}\n\nHelloWorld.prototype = Object.create(ThoonkInterface.prototype);\n\n// Set a unique type name for our HelloWorld model\nHelloWorld.prototype.objtype = 'helloworld'; \n\n// Specify where to load Lua scripts from for our model\nHelloWorld.prototype.scriptdir = __dirname + '/scripts';\n\n(function () {\n\n    this.greet = function (firstName, lastName, cb) {\n        this.runScript('greet', [firstName, lastName], cb);\n    };\n\n}).call(HelloWorld.prototype);\n\n\nmodule.exports = HelloWorld;\n```\n\nThen we create the Lua script we need in `examples/scripts/greet.lua`:\n\n```lua\nlocal firstName, lastName = unpack(ARGV);\n\nreturn \"Hello, \" .. firstName .. \" \" .. lastName;\n```\n\nAnd finally, when we want to use our HelloWorld model:\n\n```js\nvar thoonk = require('thoonk').createClient();\nvar HelloWorld = require('helloworld');\n\nthoonk.registerInterface('HelloWorld', HelloWorld, function () {\n    // All scripts have been loaded and event subscriptions initialized.\n\n    var hello = thoonk.objects.HelloWorld();\n\n    hello.greet('Arthur', 'Dent', function (err, result) {\n        if (err) {\n            console.error(err);\n        } else {\n            console.log(result);\n            // >>> Hello, Arthur Dent\n        }\n    });\n});\n```\n\n## Addons\n\n- [Thoonk Jobs](https://github.com/fritzy/thoonk-jobs.js) - A Thoonk-based Redis job system\n\n\n## License\n\nMIT\n\n\n## Created By\n\nIf you like this, follow: [@fritzy](http://twitter.com/fritzy) on twitter.\n","readmeFilename":"README.md"}