{"_id":"defactor","_rev":"25-5d82c608fc1c8df0a10f9a3893c7f437","name":"defactor","description":"A deferred factory object","dist-tags":{"latest":"0.1.4"},"versions":{"0.0.1":{"name":"defactor","version":"0.0.1","description":"A deferred factory object","author":{"name":"Trevor Norris","email":"trev.norris@gmail.com"},"main":"./lib/defactor.js","repository":{"type":"git","url":"git://github.com/trevnorris/defactor.git"},"engine":"node >= 0.4.0","_npmUser":{"name":"trev.norris","email":"trev.norris@gmail.com"},"_id":"defactor@0.0.1","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"87886e1971822459f12d32a16b21aa50c501cb28","tarball":"https://registry.npmjs.org/defactor/-/defactor-0.0.1.tgz","integrity":"sha512-ShECoEzmWdXCxKCvSINsWiP3L8AKQPrDKAPTAo9teHiyG2zE2QvKrUq9+EgFM/ZyHeTerVAOOco/ohnJUNTVMQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH1HY6dPsCcv8aA3vKYvD+cR44RAUKLVHIPDjjHFQMejAiEAxqeV5E8OzWC+ELlqCAbuBzZya/DWJ04SKOo8GnnixLE="}]},"maintainers":[{"name":"trev.norris","email":"trev.norris@gmail.com"}]},"0.0.2":{"name":"defactor","version":"0.0.2","description":"A deferred factory object","author":{"name":"Trevor Norris","email":"trev.norris@gmail.com"},"main":"./lib/defactor.js","repository":{"type":"git","url":"git://github.com/trevnorris/defactor.git"},"engine":"node >= 0.4.0","_npmUser":{"name":"trev.norris","email":"trev.norris@gmail.com"},"_id":"defactor@0.0.2","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"9bcd13b2b7f232f7652ef3cd4c5bb3b0077a19b7","tarball":"https://registry.npmjs.org/defactor/-/defactor-0.0.2.tgz","integrity":"sha512-uW1gvb8fMRiGlBHL9Y5sVGJukf3Ga4c5AOL0c2pwcoRdVwksKRScNqV2kqjOrd+PXl58icl1J0SW7rxoBpGy4Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFBwn9qUfht9LjWlGXbb+fs+Bx7LcMxzsNw+ZxdXac1sAiEAm/iHTormQBzsIAptg67FFmTVtrEulC32sJtT0pBpSdo="}]},"scripts":{},"maintainers":[{"name":"trev.norris","email":"trev.norris@gmail.com"}]},"0.0.3":{"name":"defactor","version":"0.0.3","description":"A deferred factory object","author":{"name":"Trevor Norris","email":"trev.norris@gmail.com"},"main":"./lib/defactor.js","repository":{"type":"git","url":"git://github.com/trevnorris/defactor.git"},"engine":"node >= 0.4.0","_npmUser":{"name":"trev.norris","email":"trev.norris@gmail.com"},"_id":"defactor@0.0.3","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"fd362b4a07b677f6adf24fe84bc77903fae1316b","tarball":"https://registry.npmjs.org/defactor/-/defactor-0.0.3.tgz","integrity":"sha512-3HHLWIh4TC8CNW2sxsOoogkgVvhd0YBsI0fYxySeogUO4BbHQJ4supxVJbqn53TsmdwuXR05iZ9lwd5S8kYEuQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEZElv56B164JOd/XZsk45KtbjVkcTX7R89icQrj3eg3AiAJjaRq9IXaFVl5fRIdYW/4MLBP3euecCGCB2pENVmwfA=="}]},"maintainers":[{"name":"trev.norris","email":"trev.norris@gmail.com"}]},"0.0.4":{"name":"defactor","version":"0.0.4","description":"A deferred factory object","author":{"name":"Trevor Norris","email":"trev.norris@gmail.com"},"main":"./lib/defactor.js","repository":{"type":"git","url":"git://github.com/trevnorris/defactor.git"},"engine":"node >= 0.4.0","_npmUser":{"name":"trev.norris","email":"trev.norris@gmail.com"},"_id":"defactor@0.0.4","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"235c4d1d7a284c1a89f39dc7ca1991bca315a2d4","tarball":"https://registry.npmjs.org/defactor/-/defactor-0.0.4.tgz","integrity":"sha512-r6kZ4KRwB434rsPACqMUoKEdy1SKse1A1js6gojFhU1GN1JSKlxy3tlRxS9PgwgJnVQRoKJymWGq8nmLj4Eunw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCR1bcULC7M92zbnu9T6F6A09lNE6nj1LhHyjmJV76EOgIhAJDNgIiPRdC6l4SKjB+aTgw3uJeTA8IJAC9Y/av1HJR5"}]},"maintainers":[{"name":"trev.norris","email":"trev.norris@gmail.com"}]},"0.0.5":{"name":"defactor","version":"0.0.5","description":"A deferred factory object","author":{"name":"Trevor Norris","email":"trev.norris@gmail.com"},"main":"./lib/defactor.js","repository":{"type":"git","url":"git://github.com/trevnorris/defactor.git"},"engine":"node >= 0.4.0","_npmUser":{"name":"trev.norris","email":"trev.norris@gmail.com"},"_id":"defactor@0.0.5","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"8222792ef7ca959c7dfb314e4797608aed1fa8b7","tarball":"https://registry.npmjs.org/defactor/-/defactor-0.0.5.tgz","integrity":"sha512-7LqlFTIGitCZQ+nDYtEgXvTn9ZipES5XSNwT7/ZMRJ2wcfHqpvqhk8CowaQBHEEK1MyvIUb40kiWc1ZsGLKOng==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAwTLqC/3+c3HPe8wBtrAmPz91gudF5U0UBar3kfR3anAiB9mId6+JNgkfSexU2SyeDERpeY8hL4PqsFBpF2PzLYQQ=="}]},"maintainers":[{"name":"trev.norris","email":"trev.norris@gmail.com"}]},"0.1.0":{"name":"defactor","version":"0.1.0","description":"A deferred factory object","author":{"name":"Trevor Norris","email":"trev.norris@gmail.com"},"main":"./lib/defactor.js","repository":{"type":"git","url":"git://github.com/trevnorris/defactor.git"},"engine":"node >= 0.4.0","_npmUser":{"name":"trev.norris","email":"trev.norris@gmail.com"},"_id":"defactor@0.1.0","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"ca3c487d19bb715bb12c76ee9c2690ccad5365d8","tarball":"https://registry.npmjs.org/defactor/-/defactor-0.1.0.tgz","integrity":"sha512-myGJ7BeJWTu+4/p+kgPLXeqXxAHr9kdS0N/v676dsB18vgT6QxLzyC1rs9LHBY5uLP2uTKfUJX6jiTV7jnckBw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEmLjOglasKQKz0H2f//Mi+SyWMXhxNNFRchzmQUR2TvAiEAl1t4NAEGUoe//+/cOsqgykxcy/ZQquEjFUfyw/MUMe0="}]},"maintainers":[{"name":"trev.norris","email":"trev.norris@gmail.com"}]},"0.1.1":{"name":"defactor","version":"0.1.1","description":"A deferred factory object","author":{"name":"Trevor Norris","email":"trev.norris@gmail.com"},"main":"./lib/defactor.js","repository":{"type":"git","url":"git://github.com/trevnorris/defactor.git"},"engine":"node >= 0.4.0","_npmUser":{"name":"trev.norris","email":"trev.norris@gmail.com"},"_id":"defactor@0.1.1","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.7.0","_defaultsLoaded":true,"dist":{"shasum":"dca717dcd2eec75e6a998c2cbe0c674952654625","tarball":"https://registry.npmjs.org/defactor/-/defactor-0.1.1.tgz","integrity":"sha512-OTNGazTpR62HEZEjLqHwVkJj0ov1pS/WXXYJIPVD09ucxhNUfyJdgvxT5zsAoP//mCcNnz0k4n6rSre5g57tGg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICwjoSNnBjIwpAEn7B2o7T7wbsZ1pm7OZojTvqrQ3tm5AiEAucW2PK2kQQ+pP/7IQ5SIx0vk89I5Gc09xIQlB7D/97o="}]},"maintainers":[{"name":"trev.norris","email":"trev.norris@gmail.com"}]},"0.1.2":{"name":"defactor","version":"0.1.2","description":"A deferred factory object","author":{"name":"Trevor Norris","email":"trev.norris@gmail.com"},"main":"./lib/defactor.js","repository":{"type":"git","url":"git://github.com/trevnorris/defactor.git"},"engine":"node >= 0.4.0","_npmUser":{"name":"trev.norris","email":"trev.norris@gmail.com"},"_id":"defactor@0.1.2","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.7.0","_defaultsLoaded":true,"dist":{"shasum":"99dd218a2c182a7b24a1af1372919f8569c42964","tarball":"https://registry.npmjs.org/defactor/-/defactor-0.1.2.tgz","integrity":"sha512-dIWj8kAIPZbYB9RDBwQcpVAzXgdDd/N4OZJzbaiCp3uCGB6o+L28e1e8yXSF2SKmX2PuwT/SyVYk2HrSOTlA4A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAKfgQst1HNKlo1KgKjeVzoya9F9rzV0QnxX0ueAK5u4AiAiAg8V59jbA+dBnyyEyuoubssE3ieoJKJLEUXauweFEw=="}]},"maintainers":[{"name":"trev.norris","email":"trev.norris@gmail.com"}]},"0.1.3":{"name":"defactor","version":"0.1.3","description":"A deferred factory object","author":{"name":"Trevor Norris","email":"trev.norris@gmail.com"},"main":"./lib/defactor.js","repository":{"type":"git","url":"git://github.com/trevnorris/defactor.git"},"engine":"node >= 0.4.0","_npmUser":{"name":"trev.norris","email":"trev.norris@gmail.com"},"_id":"defactor@0.1.3","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"ae6a2f2e27ee3be66560b6d6a2d624674f4c0533","tarball":"https://registry.npmjs.org/defactor/-/defactor-0.1.3.tgz","integrity":"sha512-qpCOBoJOehwQS4VtDXM6/8w/3gypL8dgFQDTd+jB9r+fxX/w7ReXgq1SDEXgcMv4UPPSrP1SanPIg45EaKgeOg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCva38JigtDQd1/D6YfofpnkiCMNiHSfi/pjUT9OfRPyAIhAMFhV1UupEGP6koBrq6TlIRC6NXKnx/2x5nBG+4Xi7Nn"}]},"maintainers":[{"name":"trev.norris","email":"trev.norris@gmail.com"}]},"0.1.3-1":{"name":"defactor","version":"0.1.3-1","description":"A deferred factory object","author":{"name":"Trevor Norris","email":"trev.norris@gmail.com"},"main":"./lib/defactor.js","repository":{"type":"git","url":"git://github.com/trevnorris/defactor.git"},"engine":"node >= 0.4.0","_npmUser":{"name":"trev.norris","email":"trev.norris@gmail.com"},"_id":"defactor@0.1.3-1","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-2","_nodeVersion":"v0.6.8","_defaultsLoaded":true,"dist":{"shasum":"02ba289927980e6b41f4ed76b7c90a3cb9ad53e1","tarball":"https://registry.npmjs.org/defactor/-/defactor-0.1.3-1.tgz","integrity":"sha512-mqqHwiJWlLQRrGHk47iiTVkdEhnD12TW2GdSZDYJCKejnstzTHh38u/opj9FoZduqzhb6IdLu7pxgpyWwYjzYA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCnbT/cIfF2NLNy33BuBuQ219RAKHaDbOiGv/4zHZUmkwIgVlEDD+HJprCBn0YTpjuQhh/dfcJ8KVlSA7xashhYONA="}]},"maintainers":[{"name":"trev.norris","email":"trev.norris@gmail.com"}]},"0.1.4":{"name":"defactor","version":"0.1.4","description":"A deferred factory object","author":{"name":"Trevor Norris","email":"trev.norris@gmail.com"},"main":"./lib/defactor.js","repository":{"type":"git","url":"https://github.com/trevnorris/defactor.git"},"engine":"node >= 0.4.0","readme":"# Defactor - A Deferred Factory Object\n\nDefactor allows creating deferred objects with a many-to-many relationship between queues and triggers.\nBy creating this type of event map there shouldn't be a need for callback insanity.\nThe idea is to create new deferreds for different call types, then return new instances.\nBy doing this the end user's API can be fully chained.\nHere's an example:\n\n```javascript\n// generate a new deferred object with custom event triggers and function queues\nvar defer = defactor()\n    .add( 'resolve', 'done always' )\n    .add( 'reject', 'fail always' )\n    .create();\n\n// OR use the alternate syntax by passing an object\n// (note: this will add all triggers/queues then create() when complete)\nvar defer = defactor({\n    resolve : 'done always',\n    reject : 'fail always'\n});\n\n// create an instance of the new deferred\nvar myDef = new defer();  // or just `defer()`\n\n// queue up functions to complete\nmyDef.done(function( arg ) {\n        console.log( 'done:' + arg + ':' + this.ctx );\n    })\n    .fail(function() {\n        console.log( 'fail' );\n    })\n    .always(function() {\n        console.log( 'always' );\n    });\n\nmyDef.resolve( 'now', {\n    ctx : 'here'\n});    // LOG: \"done:now:here\"; \"always\"\n```\n\n## Features/API\n\n* `defactor( [clear],[map] )`: initialize new defactor object. If `clear === true` then default behavior is to clear queue after trigger. `map` will accept an object of triggers : queues then create the deferred automatically.\n\n* `.add( trigger, queue )`: adds a new trigger/queue to the stack. `queue` can be a space separated string, or an array.\n\n* `.create()`: generates new deferred from the defactor object.\n\n* Queues can be passed context and/or an array of arguments\n\n* All generated deferreds have a `promise()` method that will return a promise object\n\n* Events will be cleared after triggering if `true` is passed when instantiating the deferred\n\n## Roadmap\n\n* (v0.2.0) The final argument to `add()` can be a function, which will execute when called and pass any arguments. Example:\n\n```javascript\nvar onEvent = defactor()\n    .add( 'trigger', 'debug' )\n    .add( 'trigger', 'ajax', function( opts ) {  // make an ajax call\n        var ctx = this,\n            call = $.ajax( opts );\n        call.end = function() {\n            return ctx;\n        };\n        return call;\n    });\n\nvar e = new onEvent( true )\n    // ajax returns a new deferred context\n    .ajax({\n        // options\n    })\n        .success( fn )  // if call succeeds\n        .fail( fn )     // if call fails\n        .end()          // return to previous context\n    .debug(function() {\n        // log some stuff\n    });\n\ne.trigger();\n```\n* (v0.3.0) Asynchronous queue manager so functions in queues are non-blocking, but are still executed in order; and chaining will also be executed in order.\n","_id":"defactor@0.1.4","dist":{"shasum":"72a5339b77ae30b0accba37ddccd4e61f765bdb6","tarball":"https://registry.npmjs.org/defactor/-/defactor-0.1.4.tgz","integrity":"sha512-/16jTsGWn+jDm+ToP28vLKwc/BCGhStdlnSP4ORAP/eOLSQfLbUX3xZeI7MG5Ne57chRBDDblNqsKvL075uDWg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICjUCqvy+8x8FdJ8FAmCcORJ5utIgqAi88O0YnLEqDKEAiBsfeHgHaaSKlHrhtQZYBrsBQ6MOKgW708ps7OiCV0DNg=="}]},"maintainers":[{"name":"trev.norris","email":"trev.norris@gmail.com"}]}},"readme":"# Defector - A Deferred Factory Object\n\nDefector allows creating deferred objects with a many-to-many relationship between queues and resolvers.\nBy creating this type of event map there shouldn't be a need for callback insanity.\nHere's an example:\n\n```javascript\nvar dobj = defactor();\n\ndobj.add( 'done', 'resolve' )\n\t.add( 'fail', 'reject' )\n\t.add( 'always', 'resolve' )\n\t.add( 'always', 'reject' );\n\nvar defer = dobj.create();\n\ndefer.done(function() {\n\t\tconsole.log( 'done' );\n\t})\n\t.fail(function() {\n\t\tconsole.log( 'fail' );\n\t})\n\t.always(function() {\n\t\tconsole.log( 'always' );\n\t});\n\ndefer.resolve();    // LOG: \"done\"; \"always\"\n```\n\n## Roadmap:\n\n* add the `promise()` method to each deferred\n* allow `addWith()` to create queue/resolver pairs that accept a new context\n* `create()` should return an uninstantiated deferred\n* add `always()` method to create a queue that is always fired\n* add `then()` that accepts two queues and resolvers\n\n","maintainers":[{"name":"trev.norris","email":"trev.norris@gmail.com"}],"time":{"modified":"2022-06-14T23:15:13.208Z","created":"2011-12-09T19:49:22.558Z","0.0.1":"2011-12-09T19:49:22.970Z","0.0.2":"2011-12-09T20:37:44.511Z","0.0.3":"2011-12-09T21:39:10.655Z","0.0.4":"2011-12-10T04:28:19.146Z","0.0.5":"2011-12-12T19:14:27.269Z","0.1.0":"2011-12-14T05:51:33.516Z","0.1.1":"2012-01-23T21:37:36.005Z","0.1.2":"2012-01-23T23:00:06.940Z","0.1.3":"2012-01-24T08:08:14.436Z","0.1.3-1":"2012-01-28T00:50:13.985Z","0.1.4":"2012-08-06T22:54:20.527Z"},"author":{"name":"Trevor Norris","email":"trev.norris@gmail.com"},"repository":{"type":"git","url":"https://github.com/trevnorris/defactor.git"}}