{"_id":"turnstile","_rev":"181-c12235ef049a1f5b16db58ba907ba6f7","name":"turnstile","description":"An evented event queue.","dist-tags":{"latest":"5.0.5","canary":"6.0.0-alpha.83"},"versions":{"0.0.1":{"name":"turnstile","version":"0.0.1","author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"description":"An evented event queue.","keywords":["queue","events"],"contributors":[],"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"licenses":[{"type":"MIT","url":"http://github.com/bigeasy/turnstile/raw/master/LICENSE"}],"repository":{"type":"git","url":"http://github.com/bigeasy/turnstile.git"},"dependencies":{"cadence":"0.0.35"},"devDependencies":{"proof":"0.0.42"},"scripts":{"test":"proof platform win32 && proof test */*/*.t.js || t/test"},"_id":"turnstile@0.0.1","dist":{"shasum":"0389563b480fc7a6f81feb012f5a58e4d7c67322","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-0.0.1.tgz","integrity":"sha512-A0s4Cm5kaPTv/mqK0uiGaSGmVo38jzWxpWMrYFq0yspbiJnOI6i1T1n1V8YV9VdZJ6ITXZda9GUF4RBzPlIpQw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCNxVw6wmlycRZQDfdCPwWxUnSPvYNoNuCCHVGq8xer/wIgc2uLPCKt5krpnGcfNnqgU95DmpOrbbd1xT+0++euN08="}]},"_from":".","_npmVersion":"1.3.24","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{}},"0.0.2":{"name":"turnstile","version":"0.0.2","author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"description":"An evented event queue.","keywords":["queue","events"],"contributors":[],"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"licenses":[{"type":"MIT","url":"http://github.com/bigeasy/turnstile/raw/master/LICENSE"}],"repository":{"type":"git","url":"http://github.com/bigeasy/turnstile.git"},"dependencies":{"cadence":"0.0.35"},"devDependencies":{"proof":"0.0.42"},"scripts":{"test":"proof platform win32 && proof test */*/*.t.js || t/test"},"_id":"turnstile@0.0.2","dist":{"shasum":"afaaa81fd17ae52ddf86e848a9b64c09fa8dd50c","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-0.0.2.tgz","integrity":"sha512-Kaq6IIH/aQM7rVRyq2L/rQTc0FxxTYTApvtcAkEPf6dTveNRQycHYxfLVDKvhSKPtFLR3fVkjdbDy1lcCUhLaA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDqV6TEpjfdFSO9Ive2wLXv/PbpXkdsBXey0nm2eLIi0wIgIXHGfX2cVCnMJhg1GFbKXp8bdPo+40TFKTs98QCOkmM="}]},"_from":".","_npmVersion":"1.3.24","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{}},"0.0.3":{"name":"turnstile","version":"0.0.3","author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"description":"An evented event queue.","keywords":["queue","events"],"contributors":[],"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"licenses":[{"type":"MIT","url":"http://github.com/bigeasy/turnstile/raw/master/LICENSE"}],"repository":{"type":"git","url":"http://github.com/bigeasy/turnstile.git"},"dependencies":{"cadence":"0.0.36"},"devDependencies":{"proof":"0.0.45"},"scripts":{"test":"proof platform win32 && proof test */*/*.t.js || t/test"},"_id":"turnstile@0.0.3","dist":{"shasum":"0d18a76a87c8c821637f261dd39a5149f5446b02","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-0.0.3.tgz","integrity":"sha512-vy4BMLWhLClgdHC7UCSjEhPBCbU7wHvq8EBwMLYfl095uTAZLJ5BGptnqsRvkI+j6bkLTCnhPV1luC4Mj2m4CA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGrQ6fI5JR8/3Fuh5oUlzQr95Hl33Uur6uQjgE1NrswGAiB6yIizaIADR4E97yqhbpeE4dbyUJQszNdCbAiodbrxCg=="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{}},"0.0.4":{"name":"turnstile","version":"0.0.4","author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"description":"An evented event queue.","keywords":["queue","events"],"contributors":[],"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"licenses":[{"type":"MIT","url":"http://github.com/bigeasy/turnstile/raw/master/LICENSE"}],"repository":{"type":"git","url":"http://github.com/bigeasy/turnstile.git"},"dependencies":{"cadence":"0.0.36"},"devDependencies":{"proof":"0.0.45"},"scripts":{"test":"proof platform win32 && proof test */*/*.t.js || t/test"},"_id":"turnstile@0.0.4","dist":{"shasum":"ee8759589c062eb6b9cbb0ffd3e78d90701009bb","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-0.0.4.tgz","integrity":"sha512-dwtnCq4X5XR6ZAH5Uv1aTfyab2PcCWCn4B7ABG1AuO2tyJ9GtS5+7HduTPIsCx2tCITnUaw/NIW/4/6lGUGgjQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD0yes4cLk/KBgLuBahji+2YOeySC3TAhEWmzFyhj6JIgIgc3elbuP4BCobqRmjowMLjXfWmklEyR39ij3Es2w9DIY="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{}},"0.0.5":{"name":"turnstile","version":"0.0.5","author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"description":"An evented event queue.","keywords":["queue","events"],"contributors":[],"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"licenses":[{"type":"MIT","url":"http://github.com/bigeasy/turnstile/raw/master/LICENSE"}],"repository":{"type":"git","url":"http://github.com/bigeasy/turnstile.git"},"dependencies":{"cadence":"0.0.36"},"devDependencies":{"proof":"0.0.45"},"scripts":{"test":"proof platform win32 && proof test */*/*.t.js || t/test"},"_id":"turnstile@0.0.5","dist":{"shasum":"347d44b048a6dd7d0a56fb26ef5bd7164a31b862","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-0.0.5.tgz","integrity":"sha512-IdRSi1sD3dzLg3oUwYoPJB4+AcSfmI7RMzmUSthQEwIszfA8bKnrMbCkiIfgWWDkWBjqpsCvQBFT8IQQ7C8HGA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBD7PfiYT/aOS4ai7K6oqmHihD2PtHa59jP/+qbzW0raAiBUNlTkOd1cX4/cBeVfKOHd9JCXUGRtjgn0mLZtjkmL5Q=="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{}},"0.0.6":{"name":"turnstile","version":"0.0.6","author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"description":"An evented event queue.","keywords":["queue","events"],"contributors":[],"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"licenses":[{"type":"MIT","url":"http://github.com/bigeasy/turnstile/raw/master/LICENSE"}],"repository":{"type":"git","url":"http://github.com/bigeasy/turnstile.git"},"main":"turnstile.js","dependencies":{},"devDependencies":{"proof":"0.0.50","cadence":"0.0.43"},"scripts":{"test":"proof platform win32 && proof test */*/*.t.js || t/test"},"_id":"turnstile@0.0.6","dist":{"shasum":"bcccda4d6ee48258568c394e63c17e2811dcfc41","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-0.0.6.tgz","integrity":"sha512-PqFZmX91139Kz/TkV7eIgK5b9aoq0rc1xWWPRvs+X/l1eIPiRDaHAQBd4g7APt+yoGRD7ApS3xII/NveEf/SKQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIClOB2i+ObDVL0kF1+LLQKi5mxjap66KJcRsXYL06cblAiAsnG8u6Acr2o6WQjwK6zLMjUM0R6RXNnjih3UWCtvmzA=="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{}},"0.0.7":{"name":"turnstile","version":"0.0.7","author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"description":"An evented event queue.","keywords":["queue","events"],"contributors":[],"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"licenses":[{"type":"MIT","url":"http://github.com/bigeasy/turnstile/raw/master/LICENSE"}],"repository":{"type":"git","url":"http://github.com/bigeasy/turnstile.git"},"main":"turnstile.js","dependencies":{},"devDependencies":{"proof":"0.0.50","cadence":"0.0.43"},"scripts":{"test":"proof platform win32 && proof test */*/*.t.js || t/test"},"_id":"turnstile@0.0.7","dist":{"shasum":"0becd8de1c48eee8a9e3e4e7bbf4327c266db415","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-0.0.7.tgz","integrity":"sha512-zrYsAPAE70FmzXICfwzxC39SBxldDH5QRIh9teHhrUeUMq85rGuN4rh1hO2rZpqpFaefzym5Zi//i9Q45D44iQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFdknPeEGwx1REtGbo6KmW6SriZZt6UY8L+FBZRd74MZAiEAv9DAmNeF2dyHXJbBNTSPk/JFh8wsXGq5glHfmkXlJLk="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{}},"0.0.8":{"name":"turnstile","version":"0.0.8","author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"description":"An evented event queue.","keywords":["queue","events"],"contributors":[],"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"licenses":[{"type":"MIT","url":"http://github.com/bigeasy/turnstile/raw/master/LICENSE"}],"repository":{"type":"git","url":"http://github.com/bigeasy/turnstile.git"},"main":"turnstile.js","dependencies":{},"devDependencies":{"proof":"0.0.50","cadence":"0.0.46"},"scripts":{"test":"proof platform win32 && proof test */*/*.t.js || t/test"},"gitHead":"c0ec8a78fd46f2d174e55a169a70076cd71f9ff8","_id":"turnstile@0.0.8","_shasum":"b60d7cc1075184bba4802a8081204bf823d76ced","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"dist":{"shasum":"b60d7cc1075184bba4802a8081204bf823d76ced","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-0.0.8.tgz","integrity":"sha512-7pwDJXOZ96q7xUB/vjpcuNZ9c7ojPWPlHygbzpfxgm8lc1m4nh2tnkGwAzJHyYDWx/quRfotVsgHuWwQkY9kWg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGMmqCpTeSwRggOFddP2cfSjN+3L0IUQAgB5PJBvFXxOAiAKVoZY8UVYEGWTDzpbS4kK+KwmY6qrg7txfyeoKRLlRA=="}]},"directories":{}},"0.0.9":{"name":"turnstile","version":"0.0.9","author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"description":"An evented event queue.","keywords":["queue","events"],"contributors":[],"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"licenses":[{"type":"MIT","url":"http://github.com/bigeasy/turnstile/raw/master/LICENSE"}],"repository":{"type":"git","url":"http://github.com/bigeasy/turnstile.git"},"main":"turnstile.js","dependencies":{},"devDependencies":{"proof":"0.0.51","cadence":"0.0.50"},"scripts":{"test":"proof platform win32 && proof test */*/*.t.js || t/test"},"gitHead":"694cac01923f425ab51f8176d2334976345506ca","_id":"turnstile@0.0.9","_shasum":"3b6415485834de438e88bd105139da849dd8cd41","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"dist":{"shasum":"3b6415485834de438e88bd105139da849dd8cd41","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-0.0.9.tgz","integrity":"sha512-f3iqu64oug6ssOvNHdf+jJuU4XDKGbVSg2swEPOGUmbAcHcCKCF84ZlpBFJaNPhqD3eMfUbbHK6bF0pMJvao5g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCuq/TFH0AynxlluhYn9yKuFru3VwiRByEUcNDi0Je2CQIhAIeTUC6N3JAMIUaacdpFq8DiYHM6KpEnTVIvE5DyDIgK"}]},"directories":{}},"0.0.10":{"name":"turnstile","version":"0.0.10","author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"description":"An evented event queue.","keywords":["queue","events"],"contributors":[],"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"licenses":[{"type":"MIT","url":"http://github.com/bigeasy/turnstile/raw/master/LICENSE"}],"repository":{"type":"git","url":"http://github.com/bigeasy/turnstile.git"},"main":"turnstile.js","dependencies":{"cadence":"0.0.50"},"devDependencies":{"proof":"0.0.51"},"scripts":{"test":"proof platform win32 && proof test */*/*.t.js || t/test"},"gitHead":"ae608a0937c8d29e84b5242c74aa299b747209d3","_id":"turnstile@0.0.10","_shasum":"e16d04fe017fe02b33da238f3ae631c61ffcb53b","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"dist":{"shasum":"e16d04fe017fe02b33da238f3ae631c61ffcb53b","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-0.0.10.tgz","integrity":"sha512-bA2SMhHk4cKojsAt+c3B/7RYcZIcEBbWk8UDLnaqUBVF7IMWx51BezOrYpLBxyU8Jb4XsSuh9/zqTXZy/EAX5w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDRLQ7MhJFwZN2Byjb8V3TnujHFDatlwc9HnZI430ZLjwIgEbjA7qSOk2wrqRXYpceZ1jJ1wrkMsyYk9EKUpq9cd/0="}]},"directories":{}},"0.0.11":{"name":"turnstile","version":"0.0.11","author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"description":"An evented event queue.","keywords":["queue","events"],"contributors":[],"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"licenses":[{"type":"MIT","url":"http://github.com/bigeasy/turnstile/raw/master/LICENSE"}],"repository":{"type":"git","url":"http://github.com/bigeasy/turnstile.git"},"main":"turnstile.js","dependencies":{"cadence":"0.0.50"},"devDependencies":{"proof":"0.0.51"},"scripts":{"test":"proof platform win32 && proof test */*/*.t.js || t/test"},"_id":"turnstile@0.0.11","dist":{"shasum":"64a136eb00a00457a2763864f98970ff96d91902","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-0.0.11.tgz","integrity":"sha512-wMnxUpaXVz0/5ElnDHcSunbMeZgpiBfi92TuecVONDAaP1k2QNSDAg8ctTdj3vKERjJRSdg3kkmEErUE2keziA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIApLyjN9IyZyz3CjxhqPLMMoj+TQ39B4UUBqthKlM9jNAiBb8CkiB8tBrFbL7p8Eju4tyXXFJQVzTt22bGyxdCqOYw=="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{}},"0.0.12":{"name":"turnstile","version":"0.0.12","author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"description":"An evented event queue.","keywords":["queue","events"],"contributors":[],"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"licenses":[{"type":"MIT","url":"http://github.com/bigeasy/turnstile/raw/master/LICENSE"}],"repository":{"type":"git","url":"http://github.com/bigeasy/turnstile.git"},"main":"turnstile.js","dependencies":{"cadence":"0.0.56","abend":"0.0.1","eject":"0.0.2","adhere":"0.0.1","operation":"0.0.1"},"devDependencies":{"proof":"0.0.52"},"scripts":{"test":"proof platform win32 && proof test */*/*.t.js || t/test"},"gitHead":"3625683bd723cd6d1b70d3978cb40422aec9d448","_id":"turnstile@0.0.12","_shasum":"e17f1b98f101950c647b37f911272e06279387d0","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"dist":{"shasum":"e17f1b98f101950c647b37f911272e06279387d0","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-0.0.12.tgz","integrity":"sha512-Yo284t/+bylRIMmVTFywn6kSmAUan6gPqlfc4woPhA3rAAD+j4sVqnlSsROTGNRZ3MxlPKhyR10TbFKCQRi4ZQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCyg97AHZpi8+M1ugFkI+njEszNn0vFcJzV4hB6CWNYRgIhAOjcsb+d59fJ848nh9guXxJd+fQbtETHF0fbbGN9rgMX"}]},"directories":{}},"0.0.13":{"name":"turnstile","version":"0.0.13","author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"description":"An evented event queue.","keywords":["queue","events"],"contributors":[],"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"licenses":[{"type":"MIT","url":"http://github.com/bigeasy/turnstile/raw/master/LICENSE"}],"repository":{"type":"git","url":"http://github.com/bigeasy/turnstile.git"},"dependencies":{"cadence":"0.2.5","abend":"0.0.1","eject":"0.0.2","adhere":"0.0.2","operation":"0.0.2"},"devDependencies":{"proof":"0.0.54"},"scripts":{"test":"proof platform win32 && proof test */*/*.t.js || t/test"},"gitHead":"986d6152d7ad1215d77e22d6aa1589a97a8c0bac","_id":"turnstile@0.0.13","_shasum":"043083135d7c215a2750d86ade3de7780ff3c1db","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"dist":{"shasum":"043083135d7c215a2750d86ade3de7780ff3c1db","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-0.0.13.tgz","integrity":"sha512-+Cv2Ny3U6GxGE4PkpsqLD4GvQgdmG3UQi9AlfcIpqzZHLDOrI0dBQY2kArZB54LP8HkZivAFCrS23NGqr7vyOQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICZ7eUfGXKWc7rVoUuTtuD+6Aq5vFbXuf1hGuLupZ1qiAiEA5ajDdYCkBsigwYHHo3jsFMOQvEOghEMSGybRjq7JTk4="}]},"directories":{}},"0.0.14":{"name":"turnstile","version":"0.0.14","author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"description":"An evented event queue.","keywords":["queue","events"],"contributors":[],"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"licenses":[{"type":"MIT","url":"http://github.com/bigeasy/turnstile/raw/master/LICENSE"}],"repository":{"type":"git","url":"http://github.com/bigeasy/turnstile.git"},"dependencies":{"cadence":"0.4.0","abend":"0.0.1","eject":"0.0.2","adhere":"0.0.2","operation":"0.0.2"},"devDependencies":{"proof":"0.0.54"},"scripts":{"test":"proof platform win32 && proof test */*/*.t.js || t/test"},"_id":"turnstile@0.0.14","dist":{"shasum":"3ec628e5a8293142b3c140b5ff93ff7fa72d7bf3","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-0.0.14.tgz","integrity":"sha512-D8YS9AjwlQbHhSO/tHrXRDalRpEOGIPHAtPmEFavuDcQO1qvZKAmtgdm2X4GiQ3SaajDfn0Rkrvp3MF1Vi+uNg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC3IfGF2cnjlALJ8WXDIgdFE38HlY+8tuopG5DKbYBOgQIgNgESqepeA7FYC4l7hcxMCdKdqBKJE613WpnsYgIW1EA="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{}},"0.0.15":{"name":"turnstile","version":"0.0.15","author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"description":"An evented event queue.","keywords":["queue","events"],"contributors":[],"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","main":"turnstile","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"cadence":"0.4.1"},"devDependencies":{"proof":"0.0.56","abend":"0.0.2"},"scripts":{"test":"proof platform win32 && proof test */*/*.t.js || t/test"},"gitHead":"f9189486a7eca05573e9e91616e8edf9a38f07cd","_id":"turnstile@0.0.15","_shasum":"d09c849d24bd5acba6ca587d6eeb4490cdf217fa","_from":".","_npmVersion":"2.11.3","_nodeVersion":"0.12.7","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"d09c849d24bd5acba6ca587d6eeb4490cdf217fa","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-0.0.15.tgz","integrity":"sha512-Ndgv8qIguHGXVZC05+5VDVRox6hBkbz1RZIIZM99gBC6LHFImD9AVljW/Q4VJd38QBr1QIRjMQOvNdprT2WT1g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFxRpXim12Ty1Ywx9FrsDmHW6VKquTJBhb/PkCCxzFghAiEAi03nuHc/vGvB55syyOw7pKKKicE0R3XEtVUnidAijnU="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{}},"0.0.16":{"name":"turnstile","version":"0.0.16","author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"description":"An evented event queue.","keywords":["queue","events"],"contributors":[],"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","main":"turnstile","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"cadence":"0.4.1"},"devDependencies":{"proof":"0.0.56","abend":"0.0.2"},"scripts":{"test":"proof platform win32 && proof test */*/*.t.js || t/test"},"gitHead":"b214546bde61b8470ceb6c130aeb33c2398cf732","_id":"turnstile@0.0.16","_shasum":"574c818abe23cdbec57745cae618044e3d575967","_from":".","_npmVersion":"2.11.3","_nodeVersion":"0.12.7","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"574c818abe23cdbec57745cae618044e3d575967","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-0.0.16.tgz","integrity":"sha512-DKt8/mReU/7cAbXkK50YM7lXh06yNH6pHDltgtGQXW9gpGMY5RYPqv04cFSyC2TBKx1gMXdeA//K+0svrnwWIw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCxBDwsPchyUwcAJeMupRzLFGapWuRmc/WJQnBPKOdQxwIgRv43xmiDAsGXjqtlUv45CeFpgxwGmRbdxKb5aYyI/rY="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{}},"0.0.17":{"name":"turnstile","version":"0.0.17","author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"description":"An evented event queue.","keywords":["queue","events"],"contributors":[],"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","main":"turnstile","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"cadence":"0.4.1","operation":"0.0.2"},"devDependencies":{"proof":"0.0.56","abend":"0.0.2"},"scripts":{"test":"proof platform win32 && proof test */*/*.t.js || t/test"},"gitHead":"a07a67fc416cde5a4d8dff08267f8992a5334e1e","_id":"turnstile@0.0.17","_shasum":"e8dfee5f0e95c33563ad8567b1a64fd166471c84","_from":".","_npmVersion":"2.11.3","_nodeVersion":"0.12.7","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"e8dfee5f0e95c33563ad8567b1a64fd166471c84","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-0.0.17.tgz","integrity":"sha512-Cu84t9MCFMYhTowSF+lJO39HNmQ1/vRuSeWlKddFaIiQR7iE50LU68Ylp9kTOki+LyMxGsxVStr03y706wMzxw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCnDg5HJS/7eIyV+wxWNwakXkb2eauPCBlB1kEj0f7jGQIhAIcba4ubVh55KseEMzr7U7NGUPaaTNNFxRyMPJrcswe5"}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{}},"0.0.18":{"name":"turnstile","version":"0.0.18","author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"description":"An evented event queue.","keywords":["queue","events"],"contributors":[],"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","main":"turnstile","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"cadence":"0.4.1","operation":"0.0.2"},"devDependencies":{"proof":"0.0.56","abend":"0.0.2"},"scripts":{"test":"proof platform win32 && proof test */*/*.t.js || t/test"},"gitHead":"c7cc09cb31bf0a3a4ff7ea6634257e2257db641d","_id":"turnstile@0.0.18","_shasum":"10725ad9f61064a351a9ab02b1653c0d2af6d7ee","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.1.0","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"10725ad9f61064a351a9ab02b1653c0d2af6d7ee","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-0.0.18.tgz","integrity":"sha512-sWxFwl6j5IH6afOSOLdo8gdbtCtz6DooDNWel+7+F6yI68Jf+Dq0BVJpehJk+nrFSy0S6qlgCf1ZxoD+VaCv4A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDYNN9+3FXcBSHX0X0saWl6NzZybTGpIPDC6WA07H8iJAIhAJ5HH8RtFuRwcuO0Ddyt2/vhC0XUxK3tVPHzRU//ohJY"}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{}},"0.0.19":{"name":"turnstile","version":"0.0.19","author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"description":"An evented event queue.","keywords":["queue","events"],"contributors":[],"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","main":"turnstile","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"cadence":"0.4.1","operation":"0.0.3"},"devDependencies":{"proof":"0.0.56","abend":"0.0.3"},"scripts":{"test":"proof platform win32 && proof test */*/*.t.js || t/test"},"gitHead":"a5af8997e33f39142b7b70607d60524d933f0af0","_id":"turnstile@0.0.19","_shasum":"690c423e9d285d3d02e862d71cdc40babf339d81","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.1.0","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"690c423e9d285d3d02e862d71cdc40babf339d81","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-0.0.19.tgz","integrity":"sha512-tuHBj11zmGLQThjqvi+kov9fE0IJUBNIAlQ/NFlk6Zv9nVzSKlakksSHQWU7L20kiUxZ1qC/+Ou0zgjmIvZF5g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDIpraB7SoguI+n0WK3CzuTJ4qLYURwuxUtFesF6D4hmwIhALLnzzimSAqnytmZxCLyL13oMjZ4fCvMOEMYxkrvku1v"}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{}},"0.0.20":{"name":"turnstile","version":"0.0.20","author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"description":"An evented event queue.","keywords":["queue","events"],"contributors":[],"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","main":"turnstile","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"cadence":"0.4.3","operation":"0.0.4"},"devDependencies":{"proof":"0.0.57","abend":"0.0.3"},"scripts":{"test":"proof platform win32 && proof test */*/*.t.js || t/test"},"gitHead":"d01ec8a1aecb47ceb534c4a3b804026c9d97aa1a","_id":"turnstile@0.0.20","_shasum":"e46b737d0e218fdab80ee472d3d821be94f6199d","_from":".","_npmVersion":"2.14.9","_nodeVersion":"0.12.9","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"e46b737d0e218fdab80ee472d3d821be94f6199d","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-0.0.20.tgz","integrity":"sha512-ll2s+xjnh2XWxEfb4dK0HTk+FI0iiWawsuiRgkuWFhIL4aTiu6/3tFu+r14TgPBNr809jiMF31TDXsolZDvFyQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDq+F/AWkYwN0tI//5aw+b8npBsaOEn70SyvLV1LtDhOQIhAKIDcC68fW2gnunysaqO2U1BxaC4IK3riyW3URdRQQqc"}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{}},"0.0.21":{"name":"turnstile","version":"0.0.21","author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"description":"An evented event queue.","keywords":["queue","events"],"contributors":[],"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","main":"turnstile","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"cadence":"0.4.3","operation":"0.0.4"},"devDependencies":{"proof":"0.0.57","abend":"0.0.3"},"scripts":{"test":"proof platform win32 && proof test */*/*.t.js || t/test"},"gitHead":"ba83f8578ecd462748ce384f8a857f5360978a2b","_id":"turnstile@0.0.21","_shasum":"0b2abaad3e7b0ea5b69e2d7d5a9efef91b63acf0","_from":".","_npmVersion":"2.14.9","_nodeVersion":"0.12.9","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"0b2abaad3e7b0ea5b69e2d7d5a9efef91b63acf0","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-0.0.21.tgz","integrity":"sha512-PJeN1msCytArSFCX367Tf9SQaFcUf1h2V0IwbB4Ap9eqi3Z/7HaeE60+YmNqkrz3uXf0FXhw0j0DTbEhaYqakg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDimwCP0sSmAREhOWXuesQW/2NSgZTcKb/oNIPbz+5V7AIhAKhZam/QwuHrTZLmageRbKksW76mCGlCHg+SB54OdDl2"}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{}},"0.0.22":{"name":"turnstile","version":"0.0.22","author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"description":"An evented event queue.","keywords":["queue","events"],"contributors":[],"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","main":"turnstile","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"cadence":"0.4.3","operation":"0.0.4"},"devDependencies":{"proof":"0.0.57","abend":"0.0.3"},"scripts":{"test":"proof platform win32 && proof test */*/*.t.js || t/test"},"gitHead":"10ea04fbfdf6824da3915ac8c4f01eb328228af0","_id":"turnstile@0.0.22","_shasum":"6cd4906c68092229949e51fa43333c035ac31e47","_from":".","_npmVersion":"2.14.9","_nodeVersion":"0.12.9","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"6cd4906c68092229949e51fa43333c035ac31e47","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-0.0.22.tgz","integrity":"sha512-y2YSLGJaJWok0HX1AWy7H5LLnd4A02jNX6HcVJYFTk269XuLTJViwQtqtohhYuUZaknCMl14qPhZjg0yDEnXkQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB66zlTRMmWftZCZ8Si5T+UqXaWhKwvfw/IsCesn1LqTAiEAlNoGrhxcKBFtiERDPxf6ce3OXwPd4ikePMQbeQRPb+Y="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{}},"1.0.0":{"name":"turnstile","version":"1.0.0","author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"description":"An evented event queue.","keywords":["queue","events"],"contributors":[],"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","main":"turnstile","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"cadence":"1.0.x","operation":"1.0.x"},"devDependencies":{"proof":"1.0.x","abend":"1.0.x"},"scripts":{"test":"proof platform win32 && proof test */*/*.t.js || t/test"},"gitHead":"0d44282b1d26740c445f862cb56de2bd2d73460e","_id":"turnstile@1.0.0","_shasum":"4b25fe40301f0be80e376e51479a41bfc1262acd","_from":".","_npmVersion":"2.14.9","_nodeVersion":"0.12.9","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"4b25fe40301f0be80e376e51479a41bfc1262acd","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-1.0.0.tgz","integrity":"sha512-C5oKqg9b0u0Cc1zL1G0aByVRhxJQqq88WdP/QfN4gyyZBcLiv++j49Ej7fMp2uMZNHoqGQd9MvYaMKC2fRdWPQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCpAkK6X3V9L9EpP5ceKImLUaMc9mowWT1HURh1r8OzgAIgafzXdPPXRseSj4+JK1Tfi9OX6J2udvjROtx8HnZA+BY="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{}},"1.0.1":{"name":"turnstile","version":"1.0.1","author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"description":"An evented event queue.","keywords":["queue","events"],"contributors":[],"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","main":"turnstile","repository":{"type":"git","url":"http://github.com/bigeasy/turnstile.git"},"dependencies":{"cadence":"1.x","operation":"1.x"},"devDependencies":{"abend":"1.x","proof":"1.x"},"scripts":{"test":"proof platform win32 && proof test */*/*.t.js || t/test"},"gitHead":"53c5397adbeae2e10d499fee1606c0ab508ea5ce","_id":"turnstile@1.0.1","_shasum":"0bb0935d284c542f249a412a3de6ab4732657916","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"dist":{"shasum":"0bb0935d284c542f249a412a3de6ab4732657916","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-1.0.1.tgz","integrity":"sha512-nUKLiGTwVHeTXYZEKOEFhj1n6CCmXtL+nnTPGyuq5o1cuVNRsy9AnVh3gSyksonrq8gWS0fRkcYcu62XcO2U3g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDeQUvBRk/+dNgvQkr+qK8jTGHs3CFc+nlKB3ipfVNwlwIhAMvmam4ZVfKU7fof46rqMxe0zhskE7Ninlep70udrCKn"}]},"_npmOperationalInternal":{"host":"packages-6-west.internal.npmjs.com","tmp":"tmp/turnstile-1.0.1.tgz_1454490949885_0.6377203348092735"},"directories":{}},"2.0.0":{"name":"turnstile","version":"2.0.0","author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"description":"An evented event queue.","keywords":["queue","events"],"contributors":[],"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","main":"queue","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"cadence":"1.x","operation":"1.x"},"devDependencies":{"abend":"1.x","proof":"1.x"},"scripts":{"test":"proof platform win32 && proof test */*/*.t.js || t/test"},"gitHead":"d09030484bf8d6604d2d932da82f544acb51f224","_id":"turnstile@2.0.0","_shasum":"1e969aa515cc950b58337c9b5263add21671d4f8","_from":".","_npmVersion":"2.14.7","_nodeVersion":"4.2.3","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"1e969aa515cc950b58337c9b5263add21671d4f8","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-2.0.0.tgz","integrity":"sha512-Iu03RjgLvoX/Thg5DuDtBS6+XoMojm6DXqbtTIoYVuVmsUMM0wEeTjig2Ah0EhTO6qtbLjcmw1IXqmhXamFAHg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEeD6E1fNHm1maaAJiLzntPAXbJ/4xYo5SyOgkK/caQtAiEAzygemF/U7WRFbAyx8WrGxDy9KH+k9kQ6QleVwzCmXkk="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"packages-6-west.internal.npmjs.com","tmp":"tmp/turnstile-2.0.0.tgz_1456715839292_0.8498957178089768"},"directories":{}},"2.0.1":{"name":"turnstile","version":"2.0.1","author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"description":"An evented event queue.","keywords":["queue","events"],"contributors":[],"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","main":"queue","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"cadence":"1.x","operation":"1.x"},"devDependencies":{"abend":"1.x","proof":"1.x"},"scripts":{"test":"proof platform win32 && proof test */*/*.t.js || t/test"},"gitHead":"e5fb0fe099154c6f6b86052a73ef46a9f5bc87c1","_id":"turnstile@2.0.1","_shasum":"aa304e5b3475d5747d3514d32de64ad01959b63f","_from":".","_npmVersion":"2.14.7","_nodeVersion":"4.2.3","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"aa304e5b3475d5747d3514d32de64ad01959b63f","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-2.0.1.tgz","integrity":"sha512-4jivLZI4mHrorau+eSoV/CMyP1MG1dU5ArcpqCvtf0yHQoCNDWvEWpktswDpq9Cr3V+vTZqvPBF8saTIPd4iEg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBP7VkQ10YNSqXdTqf+YYS9Y6vmGZ7AiwErAnV+0lXMSAiEAsyZLXncex0nJudNHw0iHCohmMtcypk7HwPu4JHBv0y8="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"packages-13-west.internal.npmjs.com","tmp":"tmp/turnstile-2.0.1.tgz_1457173399321_0.053951324662193656"},"directories":{}},"2.0.2":{"name":"turnstile","version":"2.0.2","author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"description":"An evented event queue.","keywords":["queue","events"],"contributors":[],"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","main":"gate","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"cadence":"1.x","operation":"1.x"},"devDependencies":{"abend":"1.x","proof":"1.x"},"scripts":{"test":"proof platform win32 && proof test */*/*.t.js || t/test"},"gitHead":"c2600be6296c3a692281723536eb7679ad8bc713","_id":"turnstile@2.0.2","_shasum":"6dff872d28b7db0a5a0de3ef65da574546cf4f51","_from":".","_npmVersion":"2.14.7","_nodeVersion":"4.2.3","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"6dff872d28b7db0a5a0de3ef65da574546cf4f51","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-2.0.2.tgz","integrity":"sha512-0xP4zD4A74VmU16MqqBDcEVVlAT1ptL2fsNGK49+dbrJTGgC4NoUmufGBpbHGRvud4iM5HgbOF9czuhl2pV1kg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAmXA74p0GXzclhVvdL5eEOq3s7zy+tv9M5n1IC0jpLsAiEAnqxnI/LFiDCimaLIFiVyDoX6EZNeBm/IIyyZwRR8Oxs="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/turnstile-2.0.2.tgz_1457279079382_0.5274132834747434"},"directories":{}},"2.0.3":{"name":"turnstile","version":"2.0.3","author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"description":"An evented event queue.","keywords":["queue","events"],"contributors":[],"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","main":"turnstiles","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"cadence":"1.x","operation":"1.x"},"devDependencies":{"abend":"1.x","proof":"1.x"},"scripts":{"test":"proof platform win32 && proof test */*/*.t.js || t/test"},"gitHead":"7f4018c55bdddfde22f47f696e7b17a9b28b90d3","_id":"turnstile@2.0.3","_shasum":"90f4542071eb4cfbc613fd50526327fa02d95f66","_from":".","_npmVersion":"2.14.7","_nodeVersion":"4.2.3","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"90f4542071eb4cfbc613fd50526327fa02d95f66","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-2.0.3.tgz","integrity":"sha512-C8Y2m3Y2Y1fxUQ9oF6F+FQ52uKXfaJWLv5qEjJRwDzePb3eJPcPa2TgPbLwXMYim1PTZmLGY90LyxIMZYQYqeg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE0J1FJr4bVzI5I5fKG+UdOreO9zfHDqKvxbi2YHQWXqAiAkSevYiuNWQAPsgmWqx1JuSAJXs58t6HJoXBVVgwRKvQ=="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"packages-13-west.internal.npmjs.com","tmp":"tmp/turnstile-2.0.3.tgz_1457281813453_0.9006901050452143"},"directories":{}},"2.0.4":{"name":"turnstile","version":"2.0.4","author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"description":"An evented event queue.","keywords":["queue","events"],"contributors":[],"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","main":"turnstile","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"cadence":"1.x","operation":"1.x"},"devDependencies":{"abend":"1.x","proof":"1.x"},"scripts":{"test":"proof platform win32 && proof test */*/*.t.js || t/test"},"gitHead":"e1f8e3a9664a4219e29ab53ec910c29194b35530","_id":"turnstile@2.0.4","_shasum":"9418c3a9751bd0343e7d814749d91cebbaeb9783","_from":".","_npmVersion":"2.14.7","_nodeVersion":"4.2.3","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"9418c3a9751bd0343e7d814749d91cebbaeb9783","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-2.0.4.tgz","integrity":"sha512-sc+UClpxDII4s+5BcpM4zYEfLxiuywie4+zKX/Py5YanJXMoUTTsD0BO9Tw3lYixCQ3Tplwe/0puHOV1GhTO4g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC3yQKOUdAbeAKYQ88K50lu5sUZI7i48ho6dU0lXO3QbwIgO3FD7G/ErcgdFoXLLOTHBQC3JkB9bYe2uI+Msjz4sXg="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/turnstile-2.0.4.tgz_1458089908579_0.9606159874238074"},"directories":{}},"2.1.0":{"name":"turnstile","version":"2.1.0","description":"An evented event queue.","keywords":["queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"cadence":"1.0.x","operation":"1.2.x"},"devDependencies":{"abend":"1.0.x","proof":"1.1.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"gitHead":"36b38953eebd2235e5e87a2cd59103544f74ee57","_id":"turnstile@2.1.0","_shasum":"2edbbdfedc712f0039384d3d948d7db91f1b45b3","_from":".","_npmVersion":"3.10.7","_nodeVersion":"4.5.0","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"2edbbdfedc712f0039384d3d948d7db91f1b45b3","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-2.1.0.tgz","integrity":"sha512-Fn0Q8fctUF1GrhouJbil0Xgi0sQLK/25TdlsMPHSTja52BOomNiPlEggxoMCET2qo+8pmOZmpodfu4wxHpScww==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICmc2+lzrm4m3QRqfZHk6NLU8Ut7LG/iMMhVtm170VlwAiAhFFLp0E5aA2da6arElizrExdqwmiADairCwNhFQWkyA=="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/turnstile-2.1.0.tgz_1477507834135_0.6782423364929855"},"directories":{}},"2.2.0":{"name":"turnstile","version":"2.2.0","description":"An evented event queue.","keywords":["queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"cadence":"1.0.x","operation":"1.2.x"},"devDependencies":{"abend":"1.0.x","proof":"1.2.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"gitHead":"bfcdbed58dfa224a1ea10bc9f61c71c451fda91f","_id":"turnstile@2.2.0","_shasum":"ede96a8f1c457b38e4d121fd974b04c6b7fef29f","_from":".","_npmVersion":"3.10.9","_nodeVersion":"4.6.1","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"ede96a8f1c457b38e4d121fd974b04c6b7fef29f","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-2.2.0.tgz","integrity":"sha512-OV9b29EN9IxcbrOnEpSDND8alJXce+7DT+qAL0JzNrMhYvZhhpRcbyDhurl0Am7X+uBy5TnfAS+LY3mqE7Oa7Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBXWPSnrbebxotq5K1wxEz+hp7ypxa3VoWqQ555/GGUNAiEAholjY0l1TFITe8y3GfJHTaMD7XceADtvYdkL4t7FF34="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/turnstile-2.2.0.tgz_1478101465942_0.9517911241855472"},"directories":{}},"2.2.1":{"name":"turnstile","version":"2.2.1","description":"An evented event queue.","keywords":["queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"cadence":"1.0.x","nascent.coalesce":"0.0.0","operation":"1.2.x"},"devDependencies":{"abend":"1.0.x","proof":"1.2.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"gitHead":"bd235f41b1c64a7cecfa8d61e2f33329e43bdf3e","_id":"turnstile@2.2.1","_shasum":"6f3ddb88775759bd91bc4f74b81452f05378cc76","_from":".","_npmVersion":"2.15.11","_nodeVersion":"4.7.3","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"6f3ddb88775759bd91bc4f74b81452f05378cc76","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-2.2.1.tgz","integrity":"sha512-8vP7mET0CZ/0Woqn/4A6i3XC2gm/UQdG4quLJEbwjakcs2dUdYIpyyKdcebLB05EpDHeWpUx999ZPsipn71kng==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCA8FLl1GZ2RQpI2HfobdbptuOFztRwqCL4n6fIq4Lr9wIgQ9NnBGLL2fZu5EImUQfLPcXg+SVVIC4hIRbOsp+pQaE="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/turnstile-2.2.1.tgz_1488155627547_0.47143325791694224"},"directories":{}},"2.2.2":{"name":"turnstile","version":"2.2.2","description":"An evented event queue.","keywords":["queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"cadence":"1.0.x","nascent.coalesce":"0.0.0","operation":"1.2.x"},"devDependencies":{"abend":"1.0.x","proof":"1.2.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"gitHead":"e26071c2c33883b341ae78e5b144bf237cceb649","_id":"turnstile@2.2.2","_shasum":"a368bce45ceeb2a7df009f1521ecf04dbd0e66ba","_from":".","_npmVersion":"2.15.11","_nodeVersion":"4.7.3","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"a368bce45ceeb2a7df009f1521ecf04dbd0e66ba","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-2.2.2.tgz","integrity":"sha512-2ARCdQRTflHVvIjNa6Oe1h6UCzAtRvtYuOsp7ZICqtw9OS5a53oGmNb9jH6aHQ4lwsgguWv7mTvFlFBjECpp+g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD7uPzxTLv1ztPa0ZOrk8ruDLFCBqj5O7v7GCHNQ6XmKwIgWAdmOwLh/XGaTQfj/u4rGgxtrtEe0pyg/qacnXBEj0M="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/turnstile-2.2.2.tgz_1488156997151_0.7866287971846759"},"directories":{}},"2.2.3":{"name":"turnstile","version":"2.2.3","description":"An evented event queue.","keywords":["queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"0.0.1","operation":"1.2.x"},"devDependencies":{"proof":"1.2.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"gitHead":"a6a4483e52184fd74afd847df0afb1373118e511","_id":"turnstile@2.2.3","_shasum":"027aeff7e7ddedf0f8fdf783ce18d4aa35c192b4","_from":".","_npmVersion":"4.0.5","_nodeVersion":"4.7.2","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"027aeff7e7ddedf0f8fdf783ce18d4aa35c192b4","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-2.2.3.tgz","integrity":"sha512-gE+Pn4pI6v3pf4zLNHydvAP0BOtCF7AJPt31SrAcjBVuxUcAfY8hHuHHoXtqa+NyeZMOI86B2zLLSy5lvdFhEg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD/jspdQeLCHUOVJ1p27PARcr69ul3bPtf9sbGsComaFQIgQqnNkJMdCo/bwLk7tJjFHwY+ZZ3djVNtdzvxq5wTEAw="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/turnstile-2.2.3.tgz_1489785016330_0.1494317138567567"},"directories":{}},"2.2.4":{"name":"turnstile","version":"2.2.4","description":"An evented event queue.","keywords":["queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"0.0.1","operation":"1.2.x"},"devDependencies":{"proof":"1.2.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"gitHead":"d9bfaced712b05249c74eb8ecc0b102d03beeef2","_id":"turnstile@2.2.4","_shasum":"76fcc304807cd8c13e417a314dbfe56bc50cd8ac","_from":".","_npmVersion":"4.0.5","_nodeVersion":"4.7.2","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"76fcc304807cd8c13e417a314dbfe56bc50cd8ac","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-2.2.4.tgz","integrity":"sha512-qUIolvL87vEi5iiW/TarYdKdsWZky8KavafMXM8JZM20J8XHKJ/AlRZjOuwsqTqXmpU+tqHEivA4FKXFAgmBVA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD/e4KphwLSVvoH7oKS2ZUx6qzNZZ1Dk4EDnda/ls/V6AIhAL1WSnEMiHQqScUQEmZ51G0+HSH/ybjHX5A/wuU9NY7V"}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/turnstile-2.2.4.tgz_1489785341795_0.2936780350282788"},"directories":{}},"2.2.5":{"name":"turnstile","version":"2.2.5","description":"An evented event queue.","keywords":["queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"0.0.1","operation":"1.2.x"},"devDependencies":{"proof":"1.2.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"gitHead":"39208d81ebad53ea699dda8872a8b1f321fe69f3","_id":"turnstile@2.2.5","_shasum":"d5de093527cb7af974da87cf4b83a5487c44b9f1","_from":".","_npmVersion":"2.15.1","_nodeVersion":"0.10.48","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"d5de093527cb7af974da87cf4b83a5487c44b9f1","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-2.2.5.tgz","integrity":"sha512-PDcSekUwFdVWfypXXwGsHjtdZ/3w8AqjFvXVHbqT38YRPO+Hun3XdMRERlBgkvNMvmC958OypGBjvNn0UjIsJg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCiw1TlUHzcoLSDcRCa24m9YL8U6qOJVRRnaFous4IzAQIhAMNeyHr1/LLnxMRHxYVF/zZrAsCX6H1ZGLzgLAMqnDrO"}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/turnstile-2.2.5.tgz_1489785707863_0.07170067564584315"},"directories":{}},"2.2.6":{"name":"turnstile","version":"2.2.6","description":"An evented event queue.","keywords":["queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"0.0.1","operation":"1.2.x"},"devDependencies":{"proof":"1.2.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"gitHead":"ef0218c6d699020e781dac91766a797ca74d70df","_id":"turnstile@2.2.6","_shasum":"1278f5e4f2bb4b2cf321c25a373de65687fae548","_from":".","_npmVersion":"2.15.11","_nodeVersion":"4.7.3","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"1278f5e4f2bb4b2cf321c25a373de65687fae548","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-2.2.6.tgz","integrity":"sha512-YJmpkScuzMsztuftGjWmmfC3Y0YLDsGMHg4n2KYwWqRLXhr5N6nFs6DeRRawbHbm9mINyHmDpj5MSnTTuUOMQQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCoi0RSnt5zYKNgUId3znp72DP/g9VujEX3v7pdqda7+wIgKy3gLCNArZTAojkWKjYMoCXH8z0X16JD47KgyMX0t40="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/turnstile-2.2.6.tgz_1489977277324_0.8344458532519639"},"directories":{}},"2.2.7":{"name":"turnstile","version":"2.2.7","description":"An evented event queue.","keywords":["queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"0.0.1","operation":"1.2.x"},"devDependencies":{"proof":"1.2.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"gitHead":"53c4475f1084b2eb7a3b0ca0e0050fd4c46070fc","_id":"turnstile@2.2.7","_shasum":"c29c4674ce5aaaffdb7ef269d3c61eba3cc3a7a6","_from":".","_npmVersion":"4.0.5","_nodeVersion":"4.7.2","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"c29c4674ce5aaaffdb7ef269d3c61eba3cc3a7a6","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-2.2.7.tgz","integrity":"sha512-UZwbma+Vw20n90g5xp4lyAq7rm/xn2hNiU7m/YNjLZUTb35RJ4aF/nH9cOJffrOQ1we21DOLMctiiCq6xGtkkA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDZC9q773MtcKatKLxr3EqCGfb+j9TRODckh/y4yNdyEAIgMBgsYWV+FRddPakaOUIQR8Yq0mbM278zlTZ2OkHqCKk="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/turnstile-2.2.7.tgz_1490024694746_0.12858495814725757"},"directories":{}},"2.2.8":{"name":"turnstile","version":"2.2.8","description":"An evented event queue.","keywords":["queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"0.0.1","operation":"1.2.x"},"devDependencies":{"proof":"1.2.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"gitHead":"60f45682188dca84dad1361c53897526b2bfd73a","_id":"turnstile@2.2.8","_shasum":"b525fbb2810508bd0f03ee45850d609fdb9b1cfc","_from":".","_npmVersion":"4.0.5","_nodeVersion":"4.7.2","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"b525fbb2810508bd0f03ee45850d609fdb9b1cfc","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-2.2.8.tgz","integrity":"sha512-6G8fApQ2A+7BpvweVJoSSt4V1IjoTGzQK424hC8F96TkrIXw1LuHy/RH0DmcxU11vSYBUSKS7GKhnyTlCiRHOw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDHyuPOfZW2ARqlibiszBDEn2eHQ9TngCx3OXDx3m3z/gIgWqUuJnQXZ7fXM0FtA74OG4Q6rqNBgYEUmyvEnbJOS8k="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/turnstile-2.2.8.tgz_1490026465938_0.6476990086957812"},"directories":{}},"2.2.9":{"name":"turnstile","version":"2.2.9","description":"An evented event queue.","keywords":["queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"0.0.1","operation":"1.2.x"},"devDependencies":{"proof":"1.2.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"gitHead":"1851ebd30e167a7b8c3c583bd8a02277921657ab","_id":"turnstile@2.2.9","_shasum":"7703249329c136e3b5935cb2a92a441a4adcf98d","_from":".","_npmVersion":"4.0.5","_nodeVersion":"4.7.2","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"7703249329c136e3b5935cb2a92a441a4adcf98d","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-2.2.9.tgz","integrity":"sha512-lq6/5y23YM1DdrId2ZaTcykXDIASLn3fHXMUCd36qmVm5ywwLgsJu29Ttb4Pb2aH5mWGH5TF5cJv8Ke0hBkYNg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCAC7JxKzP6rJD5n3e8MYLXMoeW0QDzsgk/UtbNBQVWTQIgFsTYVvSdaGxP7C5ftVMcd9W5CQpSybFPyNSocPkMPD8="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/turnstile-2.2.9.tgz_1490027278538_0.8717811780516058"},"directories":{}},"2.3.0":{"name":"turnstile","version":"2.3.0","description":"An evented event queue.","keywords":["queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"0.0.1","operation":"1.2.x"},"devDependencies":{"proof":"1.2.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"gitHead":"7c760473abe9511e76dd9b1ef7a5881e9cb38e39","_id":"turnstile@2.3.0","_shasum":"293e02e91c045417a8eb3bf5a2f4b9393432f188","_from":".","_npmVersion":"4.4.4","_nodeVersion":"4.8.1","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"293e02e91c045417a8eb3bf5a2f4b9393432f188","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-2.3.0.tgz","integrity":"sha512-84pJtvJbpDC2FbcyPgdo3vFQj4VTdVF2weWCXFckgXe/YRvxVlV+KK2LCauk8dk5W1J6a1uMgzZIDoUGaFXY+Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC/wXYGnhKr7jt0SaCTQ6jPoDBznORZIBZ/x2JfVZcFiQIgYTJzrA/NZIw4ARtnaFEHx6soBfC6SuYUMuuWnh3UFAE="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/turnstile-2.3.0.tgz_1491368169935_0.18328998307697475"},"directories":{}},"2.4.0":{"name":"turnstile","version":"2.4.0","description":"An evented event queue.","keywords":["queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"0.0.1","operation":"1.2.x"},"devDependencies":{"proof":"1.2.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"gitHead":"23b3bb516d72320eb70fee5cf0c3c04020cafc24","_id":"turnstile@2.4.0","_shasum":"183d7745b72b32d7ee2b79d2b45e3abf4d4a124b","_from":".","_npmVersion":"4.4.4","_nodeVersion":"4.8.1","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"183d7745b72b32d7ee2b79d2b45e3abf4d4a124b","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-2.4.0.tgz","integrity":"sha512-r6NAmEP3VTKx1KGaPnRtphjUdCGv0sTlXL3PKimvs7Cc/T5+7q/Pei3BffBhBHpUtxh9dv3XZsnFCX95y9C+9A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCni8nev4+qEfY7dPif/6eOqwPrOo5qFqEd4m+VZWBFpgIhAOS5aM14xezl5rmQ2dDyqxVMZ87U3idGBVTIE62XOvhs"}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/turnstile-2.4.0.tgz_1491369176693_0.5110683261882514"},"directories":{}},"2.5.0":{"name":"turnstile","version":"2.5.0","description":"An evented event queue.","keywords":["queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"1.0.0","operation":"1.2.x"},"devDependencies":{"proof":"3.0.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"gitHead":"5396747109e88ce0c3cd501929d6ef2f624284be","_id":"turnstile@2.5.0","_shasum":"effe4f65eb7a667d7d575fb2b8057d2633b605cf","_from":".","_npmVersion":"4.4.4","_nodeVersion":"4.8.1","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"effe4f65eb7a667d7d575fb2b8057d2633b605cf","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-2.5.0.tgz","integrity":"sha512-bESd3D+ZG1rzo+tbGTpTRK/3Pf3gE+04N762y+YX2vPKuO6tr6wP9iwwUlRj6oODX/EuM4LsqziDUe0I0TpZkw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDZHOeyVJCXevGYHu5W5zHi+hkBQDbQSUwJj1buNtjkYAiA1aa1r23uepOwN/1S/t9EwnZhJ4xPlDSjtjC+/3qr6Vw=="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/turnstile-2.5.0.tgz_1491409725805_0.6876845478545874"},"directories":{}},"2.5.1":{"name":"turnstile","version":"2.5.1","description":"An evented event queue.","keywords":["queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"1.0.x","operation":"1.2.x"},"devDependencies":{"proof":"3.0.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"gitHead":"547baebc7777d02bd75a7431eb386199dacfbd19","_id":"turnstile@2.5.1","_shasum":"1cae32bf1febb502a70e92bcb1d81359678becba","_from":".","_npmVersion":"4.4.4","_nodeVersion":"4.8.1","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"1cae32bf1febb502a70e92bcb1d81359678becba","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-2.5.1.tgz","integrity":"sha512-PhD9v8NCE3ySSMq3KAKzayO1KB4fm8dMuVN7n4rREOQh94ywVC6CaoW1SwSHrbbqNS7ZYySgV+I4P2NGCOnuZg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICtjIbwTpcQvMHHGU0YxkGEKEdXBTL+YK6ei/6vo7fnbAiEA8Sk4LbHGJk0yYV1S2jnPe7wr/njRawyASnByNLeOJAM="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/turnstile-2.5.1.tgz_1491550114247_0.603331234306097"},"directories":{}},"2.5.2":{"name":"turnstile","version":"2.5.2","description":"An evented event queue.","keywords":["queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"1.0.x","operation":"1.4.x"},"devDependencies":{"proof":"3.0.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"gitHead":"951620eb1065f50b3e8b83e9e970eca59a2b5f88","_id":"turnstile@2.5.2","_shasum":"336477efd36a267f91fe2efd5ab9dbb1fbf4a28a","_from":".","_npmVersion":"4.4.4","_nodeVersion":"4.8.1","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"336477efd36a267f91fe2efd5ab9dbb1fbf4a28a","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-2.5.2.tgz","integrity":"sha512-L0FVFiuVqrdRMe/ca5BYebwjXG7mzo5xFQGlXjmS5FaPYZV3go0LdBogANS84pdNhiW+GD7eNONwvwWWvkNdeQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGHBIraleAp47uz+v5I+t/XpQHU3wh4xXuypJ9WbcUWQAiEAjScxmD04ijHV9vP+2vKaU4jXw7KQNSRUyQSGLK/hLE0="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/turnstile-2.5.2.tgz_1491935955405_0.2643022686243057"},"directories":{}},"2.5.3":{"name":"turnstile","version":"2.5.3","description":"An evented event queue.","keywords":["queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"1.0.x","operation":"1.4.x"},"devDependencies":{"proof":"3.0.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"gitHead":"4283e7f993287827e9a1b0c789908b6b7bb892cc","_id":"turnstile@2.5.3","_shasum":"7ba4d6e1bd08e3a1758d37306517d225a2b0051b","_from":".","_npmVersion":"4.5.0","_nodeVersion":"4.8.1","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"7ba4d6e1bd08e3a1758d37306517d225a2b0051b","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-2.5.3.tgz","integrity":"sha512-KBz+yoa0MeQdbQqy17WUnnKo77VS9sZWPsrbhRfT5Eddn9eX9DvxiSZg+w2eLYZ7Wfq1XVVaKrSgl9pW4Zc9PA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDbfhPP7IhFNfE2yH1F/VTpde5UL1TPJZIp18PtLV4ZIAiBstC87Uo5qmqPO/O6uZP1Ppi+2MnIeLfTkC5lvA2qYVQ=="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/turnstile-2.5.3.tgz_1493520051265_0.22691993904300034"},"directories":{}},"3.0.0":{"name":"turnstile","version":"3.0.0","description":"An evented event queue.","keywords":["queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"1.0.x","operation":"1.4.x"},"devDependencies":{"proof":"3.0.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"gitHead":"4ac86696bdedaa302348c10ed78e9848129b8acf","_id":"turnstile@3.0.0","_shasum":"5e33cb9fb635f325827bfedef193f70c816626dd","_from":".","_npmVersion":"2.15.11","_nodeVersion":"4.8.1","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"5e33cb9fb635f325827bfedef193f70c816626dd","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-3.0.0.tgz","integrity":"sha512-Cwi8jqTkB3WyCMGWhxh93KV0AUvWgQeOJ5/kH+XL+BGUacS1ZrvStaIXTiUJaJk/vzFeAE4UxSoYWUMX84fZFw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG9q8Su0Fg1NQBmYF3rqKs9M2iM089IEzCVV94lMqzTTAiEA+g0QrgfvmfgY/xAocf590vNsYTPek2+FhDbe2H76gL4="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile-3.0.0.tgz_1497549169277_0.9154718741774559"},"directories":{}},"3.1.0":{"name":"turnstile","version":"3.1.0","description":"An evented event queue.","keywords":["queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"1.0.x","operation":"1.4.x"},"devDependencies":{"proof":"3.0.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"gitHead":"ab7916767683166c965934da040bf3240a9a4bc4","_id":"turnstile@3.1.0","_shasum":"00ee5db7a5600852f90d96f6caee60e70f432ce8","_from":".","_npmVersion":"2.15.11","_nodeVersion":"4.8.1","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"00ee5db7a5600852f90d96f6caee60e70f432ce8","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-3.1.0.tgz","integrity":"sha512-iq2TSOlPLvSD17g0vn8cyTlywGt4KA2l8lWa7gam2YoZuvcr43EzICTh8TRHo+1hUy4GSzZC3MWeqw6E9vPTqw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIESX7BPnCvP7FqC/eCaisFm+4zX8FXubWwGPIt/XRGJ8AiEA/LjCMOxy+bRl8QDCx35Q7mURqCQ3+kczLaaR+Ms4/KU="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile-3.1.0.tgz_1497976197441_0.7727418525610119"},"directories":{}},"3.2.0":{"name":"turnstile","version":"3.2.0","description":"An evented event queue.","keywords":["queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"1.0.x","interrupt":"5.0.x","nop":"1.0.x","operation":"1.4.x"},"devDependencies":{"proof":"3.0.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"gitHead":"9c3fa5150c812897965afc44f2db5d279854ff9e","_id":"turnstile@3.2.0","_shasum":"68f581797b0f3128c206be98cff98017f9d8355b","_from":".","_npmVersion":"2.15.11","_nodeVersion":"4.8.1","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"68f581797b0f3128c206be98cff98017f9d8355b","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-3.2.0.tgz","integrity":"sha512-aChFlXQmK69NrIgzl9mZfoNwrUKVVnaBCzD6DQ0hp3oQ0Odl/BjMu7rDJjvVbgox96kv70E0pNNZAgrzOIgqAA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEMCHx7rYgFeoQSh9G1MB6wZN0a6grBNq04Gt1qMLtMp/SMCIHkIFhMgKZeIUm2MUNpokOayKRnbmlxO7IsLTw2JEKHe"}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile-3.2.0.tgz_1498263982693_0.6818045119289309"},"directories":{}},"3.2.1":{"name":"turnstile","version":"3.2.1","description":"An evented event queue.","keywords":["queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"1.0.x","interrupt":"5.0.x","nop":"1.0.x","operation":"1.4.x"},"devDependencies":{"proof":"3.0.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"gitHead":"dae1157228bdd173075fd63a8a60b230ce949207","_id":"turnstile@3.2.1","_shasum":"f093013dd42509bfa85657fd1095ea10ffe42fce","_from":".","_npmVersion":"2.15.11","_nodeVersion":"4.8.1","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"f093013dd42509bfa85657fd1095ea10ffe42fce","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-3.2.1.tgz","integrity":"sha512-kx+Lw+pfBOF6Z+3MrP4DXRG7DZxiJbskCA51sHFMAMM7YTF/+wMbjq1fCOxaIAU1m/j0sTCBRgdwG6GoYn7kCA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE+WGRbwEW8YN8fBGykiPdglpIEmz6wnBQDuBj71O3eIAiBEBEPvQwAbocSew62qjZgpEavT8TiPYDhBeMABBEkWmw=="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile-3.2.1.tgz_1498310109654_0.17772700474597514"},"directories":{}},"3.2.2":{"name":"turnstile","version":"3.2.2","description":"An evented event queue.","keywords":["queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"1.0.x","interrupt":"5.0.x","nop":"1.0.x","operation":"1.4.x"},"devDependencies":{"proof":"3.0.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"gitHead":"7756eb06c573606cc7616f26c3aecb74a93ef3b5","_id":"turnstile@3.2.2","_shasum":"e308a521af37f32e8a50c1abd3b623625d2d2b97","_from":".","_npmVersion":"2.15.11","_nodeVersion":"4.8.1","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"e308a521af37f32e8a50c1abd3b623625d2d2b97","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-3.2.2.tgz","integrity":"sha512-pFoDMHeXz+qbTRj8QRnlx8ooGaXgX797duwle/6itSRtfvV06ruEcGUEpZzrdCAi6Zk5Gcufzo5rjYskk1Mwlg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB+s1a6ZH2zbZuPyyKNZHwa3ZnDkEEJ7P6i7yf3ka0q7AiAHvlm+3hUBKya69leQh52EadbYkur9EY91iNXLRFrj5Q=="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile-3.2.2.tgz_1498315365279_0.8485583371948451"},"directories":{}},"3.2.3":{"name":"turnstile","version":"3.2.3","description":"An evented event queue.","keywords":["queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"1.0.x","interrupt":"5.0.x","nop":"1.0.x","operation":"1.6.x"},"devDependencies":{"proof":"3.0.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"gitHead":"c005e791e6352e296294487cba6bf3a61107d0b7","_id":"turnstile@3.2.3","_shasum":"7147e9834811fd32bda359cc70c05f813cc6f97b","_from":".","_npmVersion":"2.15.11","_nodeVersion":"4.7.3","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"7147e9834811fd32bda359cc70c05f813cc6f97b","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-3.2.3.tgz","integrity":"sha512-TfhZ73v3RrUkXj+vZG1c1uUu+ngSB8fnuZZgM5L1G3p5ri+LufmtF2RWSdnta9gSTsGUp88zf5ZsqGIqb7V6ig==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCEeg4y2l0OhxnOzNO30d6o2S1cdVNgEZ0vdY7lK6lckwIhAMA/MCcnNC6vlH84UfHZQqA1BYvXf+czYsXKqvna7Ypp"}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile-3.2.3.tgz_1500003909281_0.9716166558209807"},"directories":{}},"3.2.4":{"name":"turnstile","version":"3.2.4","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"1.0.x","interrupt":"5.0.x","nop":"1.0.x","operation":"1.6.x"},"devDependencies":{"proof":"3.0.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"gitHead":"26fd198ed158d0c73c0cb66e0c5c6b2cc6cfeb83","_id":"turnstile@3.2.4","_shasum":"7c9403ebb7592f0499f5f35abd7c1213d12d10b9","_from":".","_npmVersion":"2.15.11","_nodeVersion":"4.7.3","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"7c9403ebb7592f0499f5f35abd7c1213d12d10b9","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-3.2.4.tgz","integrity":"sha512-EKOfXu0wwzVNisn17ya56EEZWbB4XXs4bSbiT5NG2rDNzSCmXUjToU1Risc7vlbYMjN9YDfqvGCbLv1KNn8dLQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDH8cWSZoRYJOGTdM84Sga7o2g/f2gH9rXcfUPocpBaZAiEAz74QSrC+MP8k8S6flYkh1+ahYtV1mqNo+sd3r41m3HA="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile-3.2.4.tgz_1513322776493_0.7257514405064285"},"directories":{}},"3.2.5":{"name":"turnstile","version":"3.2.5","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"1.0.x","interrupt":"5.0.x","nop":"1.0.x","operation":"1.6.x"},"devDependencies":{"proof":"3.0.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"gitHead":"ed1ebb33e0cc61777658d14ece5211a908181cf9","_id":"turnstile@3.2.5","_shasum":"e8f6784ae1be528cfe3de62610f248f74af1ba99","_from":".","_npmVersion":"4.6.1","_nodeVersion":"4.8.7","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"shasum":"e8f6784ae1be528cfe3de62610f248f74af1ba99","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-3.2.5.tgz","integrity":"sha512-Z+8mkPFGxciSAM5VWlJZHF6i3+Vc4uEe7QvfH77F86Zf26/1r/xevbAok8hZKaOUGfSG8MYYdM/l3fiW7zhcvA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC8YGjyihTFTXgsvCw1WBEnDk+g6WGaQ0F/aZgG1fDPUwIgQddypOvyA6NUq/LwAPtwcs9ZCwnNJ9T46c8nfVytgrA="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile-3.2.5.tgz_1515333766720_0.18250222853384912"},"directories":{}},"3.2.6":{"name":"turnstile","version":"3.2.6","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"1.0.x","interrupt":"5.0.x","nop":"1.0.x","operation":"1.6.x"},"devDependencies":{"proof":"3.0.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"gitHead":"211c9c27094cbeaea7e42c2016a7ce90af8350ae","_id":"turnstile@3.2.6","_npmVersion":"5.6.0","_nodeVersion":"4.8.7","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"integrity":"sha512-La9i1NISjqPOP2bDffPWAUCdLPoioC3RpXPmUgm10gHocNkPeWr8JJ/8yqNX30d85kp4yxE/wadlXaIquwhA4Q==","shasum":"7fb403dcbffd1048941611ba2bc879c135671f59","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-3.2.6.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD3+K4kTsi263j3pHaIsAVOYkYT4StAdAc/ji1bTyeKHwIgNS+v17qv19y6TNFC2/GoIGRwdXLmW1Kqawi/MUzcvsE="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile-3.2.6.tgz_1515638827937_0.845483873737976"},"directories":{}},"4.0.0":{"name":"turnstile","version":"4.0.0","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"1.0.x","interrupt":"6.1.x","nop":"1.0.x","operation":"1.6.x"},"devDependencies":{"proof":"3.0.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"readme":"[![Build Status](https://travis-ci.org/bigeasy/turnstile.svg?branch=master)](https://travis-ci.org/bigeasy/turnstile) [![Coverage Status](https://coveralls.io/repos/bigeasy/turnstile/badge.svg?branch=master&service=github)](https://coveralls.io/github/bigeasy/turnstile?branch=master)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"9a19505cf7e9cb4d3b54c5595f9633db901cd9e8","_id":"turnstile@4.0.0","_npmVersion":"5.5.1","_nodeVersion":"8.9.3","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"integrity":"sha512-fafk/wOFwirfjiff0J5VJi+0SMLhFHNXdQhDdo1Yia6VhEdQfja1wVSI13vxSIFD2LO9ppKkcBMmexjVSA3BIw==","shasum":"7ca26b783d85476f88237133579ef4a9ef66db01","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-4.0.0.tgz","fileCount":22,"unpackedSize":40192,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC2+jyd0xKqAMn0sNlszc4NZCR9ln/p4Liq7p1TLhcelgIgVZrQEugVRlrnLp6+slIrd3zTmLkQ9RTojlKpjPYdQqs="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_4.0.0_1521496693002_0.05569471674922699"},"_hasShrinkwrap":false},"4.1.0":{"name":"turnstile","version":"4.1.0","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"1.0.x","interrupt":"6.2.x","nop":"1.0.x","operation":"1.6.x"},"devDependencies":{"proof":"3.0.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"readme":"[![Build Status](https://travis-ci.org/bigeasy/turnstile.svg?branch=master)](https://travis-ci.org/bigeasy/turnstile) [![Coverage Status](https://coveralls.io/repos/bigeasy/turnstile/badge.svg?branch=master&service=github)](https://coveralls.io/github/bigeasy/turnstile?branch=master)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"d00f58c0111859e793187fc4587c2ace2dfc1def","_id":"turnstile@4.1.0","_npmVersion":"5.5.1","_nodeVersion":"8.9.3","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"integrity":"sha512-4iViMSa4OHSL6SrmnXjeU6iPhahe/Jkg26MLJ5yKnJcxoKqVoLd/gE8uNBbBteUU03MsoX3BBZuiSGLsV+xD8w==","shasum":"1eb27613d78c8388b12902a9ec3ea69f7d0bd721","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-4.1.0.tgz","fileCount":22,"unpackedSize":40192,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa2AHoCRA9TVsSAnZWagAA7JMP/ArgoEunnaYhRaOxbTvE\nOhaBMRQD2YoQFA8ETq2W5aJ/HdPanD/PDTW4dSIruzRtVo5xExtJ4OgzXZ3c\nlx7ifGn+J0623YMC4IOnMiaVknzt5KgR2ltBoozIE5OCiN3JNhAD6eEfKbet\nqFjc21Q8noW4z6PWrSnTsc9YWrAmXcqHzXRs4Ty49UbZg5RKHQAAKNBIZFOv\n+Y1/JM384LwT0cESil0l7/YFBZ8bcQkU/iSUN/Wuv0yoCyLZRV3TfHFZjKbM\n4djwICVXjJriFReUfYbbzQ67GIhEvF3XmmWb9/Ptzf8WQqcliL77R3FN3QAB\n1Qsg9MJ0KB2nwbGfq2dOpxiidYyDn88bjG55ZZp30P1n0m9O/Grq+XzCKyc+\nAI6YFAXr5URnEQ3HZsuiw2/khDnGTrYyFnT5ZlT1WlVQs0/cAZN7QT8g04v7\nA/hHULcpdaHC6pfM+KREYGZcEtYuQLvSNyex39KeNYiQ4fa68GWV+JoIcrHD\n216kgSWEVVn1GHjC6vRSeOIV4OqsMQp2VZ0wLYfWy7XcCU015ceSmv2Q6+kQ\nR2rU9rHtUyhuivESD+wCrPkZpc6r4tqLJD9MPsfL/sqAUcRsfub1p05ab8Uk\nSBMf4E3EXOZxgMXOoIgmo3WrRsR+3gYtsaRYLHRAg9McxCrZgKLO1S3kTy7L\nhT6U\r\n=qiuT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICfsmvYoRSn/Svt9plHAfBrQjx5aPe1Ljh70uF6f3S5WAiEA7xCJhoaRVHOPmMu18Q/xhDKZILnkhQXPOJtBXl7lA8Y="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_4.1.0_1524105703759_0.3865376251826702"},"_hasShrinkwrap":false},"4.2.0":{"name":"turnstile","version":"4.2.0","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"1.0.x","interrupt":"6.2.x","nop":"1.0.x","operation":"1.6.x"},"devDependencies":{"proof":"3.0.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"readme":"[![Build Status](https://travis-ci.org/bigeasy/turnstile.svg?branch=master)](https://travis-ci.org/bigeasy/turnstile) [![Coverage Status](https://coveralls.io/repos/bigeasy/turnstile/badge.svg?branch=master&service=github)](https://coveralls.io/github/bigeasy/turnstile?branch=master)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"cb79750a0a25d46cd020b418609f6304789a593c","_id":"turnstile@4.2.0","_npmVersion":"5.6.0","_nodeVersion":"10.2.1","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"integrity":"sha512-zp8v0KEhefmlKjaDgFw+/5Tz895+u13vOkKUxQ6C5XpHfqbJ7olBmZKKzc94JTi/WkluYf8WhqUOip8ApOESgg==","shasum":"15d5cfff8f62e6b9a9eb23f99b24845d58d61cea","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-4.2.0.tgz","fileCount":22,"unpackedSize":40178,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbCk4rCRA9TVsSAnZWagAAf4UP/ixj9Phhcsi1m/5jLKPH\n/Iu2XTjczF21zGpCM0QJpUuc5WmpKrZHbefRDt+qlsQREOEuDCnR3WOLXuOe\n6I0p+1N012fY+YW1+3+yBPfO0UfUvgAfO/dy97NiaKSUEYhUW0RF3huhl5Ed\nYuKGEppa2weEimYYqoYQvDBNyMjVpOJfkNAp2D7S8mVUqNxGnm+hxwjij8C0\nAqlENmgts5uqHZl/Hh0iT13zRwGeXa15mktcNGLBaAllPoQ94kO+Dx/oh+6S\nCV2VYvBXKrSg8otRCGjSwmUhowDBe46xffHEkmvMibnGP2FbU28WevS/PrFM\nlIv64f5Ny5o/gEc8w6lrK2LKeHC3rRCSgQW9Rg30upIVE8Z0QHd2ZV2jcLFx\nSwUnRDjdblpPlIJ/EIB6UDAfCZPevSugdLuQvTPc27LEUX+y7FJp8nGnlEA/\n+9hdTgVh4LJpKgrQ0ZEVrQA+/Q1o4N+DrOwron0/LG8uz/1wNG/TO+pz2Jfg\niut4hQ68LCS9QeICDavCxHRR+2bfx3fb8V+Jz++GtnQKLcwmVSpQL5W/HJw0\n75x6u9I9m5APYf3GrwQ2pbvdJJAap4S8CWkEdwHrReCP+ld9ZlWuBZIDtwCG\nyUfttmnoci2786QzEcaK5f6K3z6Arie4z11b3BV13s7dFPea5GD7++KahSEp\no6OX\r\n=Prej\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID1hFDh/ykj0pWEePgxKRoZygIEIS6Py3+G/dsneaM34AiEAqfh58/vHOzOq79Sd6D2d2LuNndoiFyRuuNqObVSwXjk="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_4.2.0_1527402025883_0.06545113762274046"},"_hasShrinkwrap":false},"4.3.0":{"name":"turnstile","version":"4.3.0","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"1.0.x","interrupt":"6.2.x","nop":"1.0.x","operation":"1.6.x"},"devDependencies":{"proof":"3.0.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"readme":"[![Build Status](https://travis-ci.org/bigeasy/turnstile.svg?branch=master)](https://travis-ci.org/bigeasy/turnstile) [![Coverage Status](https://coveralls.io/repos/bigeasy/turnstile/badge.svg?branch=master&service=github)](https://coveralls.io/github/bigeasy/turnstile?branch=master)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"e1c2ccfc1fc31f6ef0eabb33cacf39ba023e9717","_id":"turnstile@4.3.0","_npmVersion":"5.6.0","_nodeVersion":"10.2.1","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"integrity":"sha512-VGxyqzFqqyIsV2MfLEbThgzUSu2iFTewxSBcq33UJ5pbsQfY4d9JPWM9s2wGpJ6DbR4iDwP59nWPzc6JhCr7Xg==","shasum":"02b7998cf307a52aa4e0d517482f88cdb3c16a41","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-4.3.0.tgz","fileCount":18,"unpackedSize":31008,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbDXoQCRA9TVsSAnZWagAAmmoP/RbyVLYqPCyFEXRv4NYd\nu7LjH03E0Rj+P0mnIXcc482KbDWyowpaFnYak/1hOouV6FrxmqYlXgiR1C1I\nnaSY6/l8JocNEiTTZrN8ipB9chk4T0gtIbBbmH55sAUm/epZE6ajgEIx2a9W\nI7WpY49h55ecGe9HIjZSiFF/L2LGn/JPIbdPqN1tpQuCWfPTWGv7l0UPxIfy\ncqMRAPmCJIakw3Kb8zpeLWXAjYhT3eC3HhAGf7VcnzaxAyZtQmfCyUVKdQMQ\nUewRFExY+9ob6M4aNQ9CvLuf0RQ4frKWjPqtp6wpNmqiZrJKkab1DAr6jMMY\nQj8/8RKKb0/YHa22z8nzxGKt++WnwHMIhtBoCt5p6J5gKJo0GJgQXkRAG4gg\nU6JejNqdNeeSB2WpSJqZHvjKJYSxZAe4WNAFj4oxl2mrbp8xiDGNYosnRcGO\nOx06Sa49nBQo3L+eEOJLxi3lw4lQPAoJje02qmPzeTkNiJouCcZwg7fK+c8z\nyIP09/RHwVXx9UkAcCIVidoX6OaYpP/PY9tbuocyNaWvxzGlNcK+XRiPmfIB\nUpUI04vgPFZoiLr/v9tR8CPPuBtwXAl9S5ec1vuc97JAGzXV64IrQGWt1bk2\nb4M1Nc+PrzGD+VTuecMZIHkqMPdrlo+2XO5ToLTm8qr7NwoPZm2YISxo8wAp\nz1SL\r\n=4hIk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFFvIQfEXeYxoTYC0suvqIXuDbU/r7n8jx80CWXHJbmbAiBW+jpZfuJwYQMPkDDMpIXKqen32oKprfQ3B/mUv054OQ=="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_4.3.0_1527609872387_0.8094583585680115"},"_hasShrinkwrap":false},"4.4.0":{"name":"turnstile","version":"4.4.0","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"1.0.x","interrupt":"6.2.x","nop":"1.0.x","operation":"1.6.x","signal":"3.4.x"},"devDependencies":{"proof":"3.0.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"gitHead":"22fb5b13ef05ac9192881a33f029a03fe0f77bc1","_id":"turnstile@4.4.0","_npmVersion":"5.6.0","_nodeVersion":"10.2.1","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"integrity":"sha512-m8VYSdB6lVBveiQQEG6b1DzlB4nZ7cjyTrns4Q6rbgeXygHDezCC1N/tTDDxENEQdgwWoknP3qAhDzjKpAHLXQ==","shasum":"8966d67fb8879f6aacf38786395fe6127aa6fca6","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-4.4.0.tgz","fileCount":18,"unpackedSize":28334,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbD5pRCRA9TVsSAnZWagAAlVwP/jZZA5eyOChWWjaEOAyd\nc94hRev3MrWdS0/KjjbxTCSJLsT7bf/oc3zA5AAMznFfDFYYokNdx7rA47qL\nQ8mYQCQL1IcTAECeQ7FZy5X19Q15C+hiT04WyYLLGMYg5tGBmnP+LO6evzLo\nD8xltSmSMAABXcSNXmqaGvimzKyzCelYUsFrGH9dBVaoFcdsYRExpys6GEyL\nywjnh6bl+M+XotiocUNB1pnJdv07ivqeI3kyTKuQU9SLsQnqlKHGHgtzd5b7\nWNxvZua49wWMlEInPWrFomyOumid+1NUYU5LOIoVJreC8NqrCrSGHHv3AnB6\nTi+d0JDgzQOnSnxrccosrwjH3FpgzkeOOBTqcDavf6jrwW1p7tqAkcug5lwG\neXdszrHpZxUxSIfuh8y0Y6FjdRqXNaET5PTR3sV+kRzTV0bQodDWtn6a87rX\nc54udAgMc+v3o/8hzSb+phzbx3MQd3R6YULAxlQr/no/R5JwA5o/DDx8LUay\nWWhvMbFCgoI3HMV2caCWji5BpmPeoOt3j3z9uVidDCH9VnUdL0R2sNkFIp4e\n4v+CjZGp8SaDxOQkgaZNL2MFzduORRnNg+yDA4RkDZUnUVz4SawfQBVkexUV\nddlVCbjioheGrvWLvyTjB6E2y+ag/EV6UPMALyxYzf4PgfK4zUhik7rp1qB/\na2vM\r\n=+/0t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCwkmyvB2W2ZRDZDYlARTrfPraG25akx3vnUa5prePifgIgZo+8bLWAIXUeYQG3FON8Zk2XMafB7NyRGvqnKTA8p90="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_4.4.0_1527749200955_0.15073724701404267"},"_hasShrinkwrap":false},"4.5.0":{"name":"turnstile","version":"4.5.0","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"1.0.x","interrupt":"6.2.x","nop":"1.0.x","operation":"1.6.x","signal":"3.4.x"},"devDependencies":{"proof":"3.0.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"readme":"[![Build Status](https://travis-ci.org/bigeasy/turnstile.svg?branch=master)](https://travis-ci.org/bigeasy/turnstile) [![Coverage Status](https://coveralls.io/repos/bigeasy/turnstile/badge.svg?branch=master&service=github)](https://coveralls.io/github/bigeasy/turnstile?branch=master)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"2f7b352144081477697080eccc008ceac3f90733","_id":"turnstile@4.5.0","_npmVersion":"5.6.0","_nodeVersion":"10.2.1","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"integrity":"sha512-uy2WaVbs/1yncPv70w9nSX2tjI5nN5DAQc8W53XYLR6bPieoYbdXE1V83odUT4Hx8bCP6jjTQ2CH81eYKTiF3w==","shasum":"885de287b096f85aef2942f95662c1d568489de2","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-4.5.0.tgz","fileCount":18,"unpackedSize":28334,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbD5piCRA9TVsSAnZWagAAT2YP/R5d0xbyy0cgmJ+8Ygs6\nSIspsZj1kKT7yNMBtFL/lvLbxGtQhlE8rJDue8Z02nMJsZtcb8JNKFcaF3oS\natCnVy+n+b7STnosVOwKTQle26DWHzBgVSBSQjPJjfdtP9x9dWyswNaA+peb\n/wQ/l4xaMo77uoNZWS3crvQCUuF/elBbVy/DqyTkA1u6VwY5M/40KAFm+PEB\nGSXMGcPyhKsU6sZx2qkqso/wjUSc+LBed+vc11JqgcyXOj4aeLviDAAogps5\nconiECxg4rUSmkZCZngEWhlbZZVoI69IKwZbto7uSBvXD8BwYWYdtuLon9iF\nB7ifGVd32qFKTR7Lhl8PdGoml6D+LnLW9jkFoyi3y/9eGbVA+hxvJzG6pX2U\n71vsnlMhnLucpUiUV7lh6XkRBMtB39Vy9wv1PUfG19Ojj2hRfs4lUQ090InO\n9YdUQq1ejF1QWJgTzFf3WbqbXXfhCiJv5LMcohAvMPSC41hXrxD7orKdefUp\nd1PpZMihKoRrogvwdd40TI7Ap6O4LOMRVQYSnRctJoOKjV58QVnVw2Dj5BKo\nFTjK2JlEaLaFCD/cUZ2DYL12omySA6QCNQB/ACqXFRbgVWD9qpGdpQCGPuu9\nduvWjuTd2Mjj/xjqBDqz5jeeii71uPcpH+NxYaqysd7hgFCbMGZkZ26UL1MX\nDgWB\r\n=o45R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIETA7an0GjYjLCTdG5vOjsrjxkhHLPTwq5kW8lBoIg8EAiEAon580384esGwhC2Kjwc4zgkpOzFCWOIOQwMeOE9Qbz8="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_4.5.0_1527749218019_0.47994652656196335"},"_hasShrinkwrap":false},"4.5.1":{"name":"turnstile","version":"4.5.1","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"1.0.x","interrupt":"6.2.x","nop":"1.0.x","operation":"1.6.x","signal":"3.4.x"},"devDependencies":{"proof":"3.0.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"readme":"[![Build Status](https://travis-ci.org/bigeasy/turnstile.svg?branch=master)](https://travis-ci.org/bigeasy/turnstile) [![Coverage Status](https://coveralls.io/repos/bigeasy/turnstile/badge.svg?branch=master&service=github)](https://coveralls.io/github/bigeasy/turnstile?branch=master)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"0320bc5f857af2b76e45d013f24231f642bf26f2","_id":"turnstile@4.5.1","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"integrity":"sha512-Q8P0rx2d0MjqN1S7OuvwE3gJAd5OInYYVkA6+8U04IdGij3r2A3pnhxqZ1SHei81KVET1WMaFZJDojBM9zwllg==","shasum":"b07575b6bbf84fcf1297be536ac74e4eab1a1eb2","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-4.5.1.tgz","fileCount":18,"unpackedSize":28326,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbFvdsCRA9TVsSAnZWagAAqnYP/1juwKM0DgvdrLw7isNq\nlj3570G+kB1mcrGQyh2ezz8EK3oXYkFcrpk6IwYRQAsBJiQ6RbzD0wLz6Nis\nNdMvnIDxSuIkelx2I/DwPSfWLHE7zCbXaTRLWDSEd3zthnH1egvn4W2hvFqe\nynBZd/z5SwDBYSOVBguH2X8fcTj7eVOceSG2ypLuS5n7im2rgZzajhHzoTPn\nrmYZ2aqSaZLwJeVxOkOxqzeE0Q012M8jazNd0mX7nQDB4jJ2yxtY9+3bCaYs\nSQo8c0AYrvcAprrXHhijv3r7kw5dbSzOi0axxlP1BmU7x/o+Zy/yD2S+NFIv\niPYHzdadoJxxE5z6Giw0IHyJXdX0QKeJ2zKDEoRT7aGkdFblMhCXJnZNXdTr\nP8m+biIi80oQGpL4QQAolwvuMY0HdNOypqhdNc662s07CawMH/iao8raIeIG\nQ/2O74XhetcRDIYgwB/sJYm9j3EOagmk/OZr1BT+ewCkxBaLiNe0Al34Sb3K\n/o6S8gdjQKr5E4FkSc5d7TO/DwEYWPge40CjxyEvV6M0XVVkQnRzqrlPz4oZ\n8kw8Y76DiujBzRJGYxv4sEJzuqWq8h1FsZTdOCV1i6GV6nibxRYlzBylPxSF\nmp/0zzv+yZxvVyWCPYCVHH0S/D96S8ZXyr+kh54D4V9gd2P7j3mGno77mNoI\n5IL3\r\n=QN6T\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCAOuPfrqtoU97JONrCGuE4zBfyJOo/tYp/paW4UONHsAIhAMngUSpsIrF2qIvVS4j6EbFKAM06kykDNbpLzPTMrppP"}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_4.5.1_1528231788392_0.8852884786929855"},"_hasShrinkwrap":false},"4.5.2":{"name":"turnstile","version":"4.5.2","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"1.0.x","interrupt":"6.2.x","nop":"1.0.x","operation":"1.6.x","signal":"4.0.x"},"devDependencies":{"proof":"3.0.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"readme":"[![Build Status](https://travis-ci.org/bigeasy/turnstile.svg?branch=master)](https://travis-ci.org/bigeasy/turnstile) [![Coverage Status](https://coveralls.io/repos/bigeasy/turnstile/badge.svg?branch=master&service=github)](https://coveralls.io/github/bigeasy/turnstile?branch=master)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"51eca7087f6b0d0e64a6e2a74f291162199259c9","_id":"turnstile@4.5.2","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"integrity":"sha512-6vvFeP0tm7gb2ckH2EXYxfpJ6ccK9TDe6NraODBaOLRmo7BrwxwtIsB3L09wqiSLMC38dw84PUBaaXkwEv8DdQ==","shasum":"ea4759d8564e4b2e765f3e9d6e4762bfc92dea09","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-4.5.2.tgz","fileCount":18,"unpackedSize":28326,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbHhOSCRA9TVsSAnZWagAAJ8AP+gIQtadSpB3KUyKVbh7n\nHrI/8U/IoSaKrCupiPNTJvJ+1FQHPFO/DR96asUqo5GVpQUpLYhz2nmQ9kAP\nPkjlxRlOr6+K+NxSkjQZGvDSf2oQtdpNEdS69do/rl+iu9jT+SnFGUULwxq4\nZnyFBe7jR/Cbw7g1/+6UQFSLmFaD1i2vQxrxyQtfhTD1FnbN1+iTajhc+xpN\nNOXWYIRh7NtmOoxsIbZC3YrLLbk0r2qT+gAidr1KZ1RAA3BnjlapZSmUa756\ncZZTeiamgua3LyBCUbFrRizVLHK7D8W0TD3gmM8/xw18VxIfk+rrEaTpnl+M\n4pJd4azle6UJ65SSJMYSx62/4tYryf0ZBsFGFXCE6KC+A46H+zzEfulWufge\n0bAaurF9gv2akx+BxSBD33svMiJS8itVfIVKp5lEMRO1ARXeYfMnz9k9FAqR\nhPksU21hqJ64rE3ohZLsFUCxMNS0WNy0Xku3WRTy+SORIV2aqbafd78r6Wbx\nEPQ+0t7Xp9uIRTVRAsa85nV2o1whr5YVxpaiPTg6ArftDFL8Q/ttK56Gt7nn\nlDAd+71qrtyDmx62OU3N9yZ84gw+J/NTd9tf0VTtOhzLx1dCBVtEVJU+5jSV\nR2UMpfbf7srJ+1UJITJKlam51ulXUNrx3ONWrpnUHNRK1ytHNqdRI/MbwIyk\nI1CX\r\n=xGw7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICzG9/GustAAvuxT+3k8t7XPhgeGIq6JKyrrOvIXidzOAiATk+voA2bDDWQfl1l8lJmkWBu8JEYEjpV1CJXC6j3X/A=="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_4.5.2_1528697746510_0.8678797006452239"},"_hasShrinkwrap":false},"4.5.3":{"name":"turnstile","version":"4.5.3","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"1.0.x","interrupt":"6.2.x","nop":"1.0.x","operation":"2.0.x","signal":"4.0.x"},"devDependencies":{"proof":"3.0.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"readme":"[![Build Status](https://travis-ci.org/bigeasy/turnstile.svg?branch=master)](https://travis-ci.org/bigeasy/turnstile) [![Coverage Status](https://coveralls.io/repos/bigeasy/turnstile/badge.svg?branch=master&service=github)](https://coveralls.io/github/bigeasy/turnstile?branch=master)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"13d184b8c3341d5ade26271ab611865b0e33cb23","_id":"turnstile@4.5.3","_npmVersion":"6.1.0","_nodeVersion":"10.4.1","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"integrity":"sha512-EM70hIj9fCE95vyOIdmqJ+nGIN356Xdd1K4R3T6NFKvgam3vUraw6qR+pjuCTIRwuw/VghowkpbOOmLWnb8TwQ==","shasum":"269fabd6e1d7691ff402561d97aeedb882e16431","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-4.5.3.tgz","fileCount":18,"unpackedSize":28290,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbKUkJCRA9TVsSAnZWagAAcMEP/0zoZJoQCQBZV9tgUdi/\nJ+ZfZwHgMhO4zIe8/G6GOpx9n6MjMw8GFHP7Qv1ve2oINGj4QXYf2/MkM+2Z\nYbXsI4pjhZfgc6sYLbFehSApaaHPSQrA5y7xnFnvm1HFxclmTU18m0FKYVpz\nL8S76WEoxirfMLgylWQPJqWukiBcmaivcbXtcQCY9/FUGHBTujR4muRInknz\nX1SdsNXhXJWEhbXKCWh0N5Ml26xnSy3zfM0ESlVMBKKQ2sSUELWN7DWGIc9M\ngPR0RvNNH29eIxo6iyNicT8fhEIyuNOOzh2Gfe1p33zVjylwFvoD9JKDfYSL\n3dCYcpIH6suEBXyeO8TMGcsayellIUbO2ATFBlW8M96uaXHWb7M6jqS/lwtZ\nk+hj/2zeexaaA7rRqAhn0jq7nVhuy4cxLy/fhvffnim5s/i4x2mcUAvJBp6f\nvgF9tEC+MMWbebP20hJp323dCMcMQJYNU3ZKfXi91VjQb6DvGsA029PfwBUv\ntoR3oFR+luUxxdqQGAYAL0L9NqB1vj/W31wS8aqHgXkkd1L9zy1dQzodafRP\nPgAiRhEvze8uTBv4FVWmpjkHSs11bZyYLfo9HKzSqpQzglcA+n11ilf7txT4\nHuqU+S17IBmlbu3BVhgeWzKYi9A9pAzcF3d3A5UP8gtMDs36pPBrlr4nKdtb\n/r4B\r\n=MNU1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC9BeO4W4uBfF5/uIBykwlFsLDq54pP6OpglY/SPDttVwIgPGEHfXe6GMcM8MzXTyZGmfbP+iPPSBdAs0oLO1anepk="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_4.5.3_1529432329104_0.8073783712121576"},"_hasShrinkwrap":false},"4.5.4":{"name":"turnstile","version":"4.5.4","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"1.0.x","interrupt":"6.2.x","nop":"1.0.x","operation":"2.0.x","signal":"4.0.x"},"devDependencies":{"proof":"3.0.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"readme":"[![Build Status](https://travis-ci.org/bigeasy/turnstile.svg?branch=master)](https://travis-ci.org/bigeasy/turnstile) [![Coverage Status](https://coveralls.io/repos/bigeasy/turnstile/badge.svg?branch=master&service=github)](https://coveralls.io/github/bigeasy/turnstile?branch=master)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"d31abbfb676d8b515c8d333b48142172e7941121","_id":"turnstile@4.5.4","_npmVersion":"6.1.0","_nodeVersion":"10.4.1","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"integrity":"sha512-OMAlYca832HKqWfEHRqj4DdmU0MdakUNdS2UDpIJXtqCCXm5/OBXYJE6SUtcFRP9dL1MOOvZTJ/6SRj9RfYnpg==","shasum":"1d864dde1733dbf11e2c093ba62f01f492007a61","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-4.5.4.tgz","fileCount":8,"unpackedSize":15754,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbWWkjCRA9TVsSAnZWagAAubkP/3vY7YD+odtBedFFqgGd\nrSltfobi9HkzQdN+zhGCSV66aEA2wVgIIbTu93IPtBYlDq7qYvF4wu/rPbsv\nj8rfmphIXkg4JwuhrtfizTQ01hjG829/nIdiaxAH7Qu2M7vhipk/NZdxWwcN\nrMNRfpQLu1x+ppsFnqpP4MEF0+ZmEV+EiNmpYw/XeoCOQD33wrTJLk7wTpF3\nGYv5xnYBxh3lrgom1uC13wKdVAfwEaU2yn/V7PSZx9sIiZWSdvZtlNbkp4kw\nnGwp9U7UHSd13vNM+e/pl4zqgpHb/SkAcApjulhtL4JsbhH7XNFoG7wpz7o3\nScZRDDpiIMFLDE8idQsL8plT10ztdM5OMpEjG0GKmxgyTmAlhq+HkgLmyVCQ\nIrqxkT/O7lMKAqjV/N2M0zxqwN8CHIJ3Gd9HT9hl+ZQD+JELRY0oR/sbS8mp\nAdL0IFgGE8uBE2Ip4V1byPfm2VEpOD6rw4tt7KJb3CBj+SG7yb1o0egBYtX7\naVJokOnMYJ4gwwlwxJFWzToyn8fFYyUnzsY2csmpblAL+En6w3MgrFqHtWM8\np8RoRBokwWAHTSu+znmmqAWCCrnVeVpkgAheRGq19ASKZu0rSXNkUU5XPiYY\nb+eteODO8vS3nhfGWDgjLm/Q7TdguATorw1oj0ZTrBKznt+wiWjmZWslz+8l\nKVZy\r\n=3r1N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBKNIpzIw4ruOvtlHDf1a8H4Qof1/hqTRbGALYymSTZQAiEAgIpV/z03+JJ3SWa3pOEPHvuoOZ3idFE283ly6pfLnRc="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_4.5.4_1532586275685_0.8975271668829867"},"_hasShrinkwrap":false},"4.6.0":{"name":"turnstile","version":"4.6.0","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"1.0.x","interrupt":"6.3.x","nop":"1.0.x","operation":"2.0.x","signal":"4.0.x"},"devDependencies":{"proof":"3.0.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"readme":"[![Build Status](https://travis-ci.org/bigeasy/turnstile.svg?branch=master)](https://travis-ci.org/bigeasy/turnstile) [![Coverage Status](https://coveralls.io/repos/bigeasy/turnstile/badge.svg?branch=master&service=github)](https://coveralls.io/github/bigeasy/turnstile?branch=master)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"830e871b55ce021a142283ee874269ca71cf220a","_id":"turnstile@4.6.0","_npmVersion":"6.1.0","_nodeVersion":"10.4.1","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"integrity":"sha512-WFDDhYbm93h5kJ4FhfPwN+Z61ooKcGcMrx99HKBqt5BaT8JmOkPJLp0LIAtydAes+Jsnz9TFJDGRUUNRJntIZQ==","shasum":"c5361c21aac6c7a5801b06e88e45485abb23559d","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-4.6.0.tgz","fileCount":8,"unpackedSize":15817,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbb70QCRA9TVsSAnZWagAA32UP/iraOCxz4y7rIFruD0RL\ndqNyxVoZwKnYvbttvXqiByLWEihZa6pb9ng8DFlHXafcoe9g90kJjqmCv3wR\nMKXAkScGmT8F4KgihFWbfHgAHSqJPK7rBzEQrOjtyJSWsUU0HkeU33abFP42\nQPC34VOd/nHMpWpDoqAPkr9mBR+n2MFCQoeSfrYOrmi6v/kVHsJJEfzOdHNh\nlaFdd1nfHN9lEzfzTbzB9btQZo+mSkGlz8C5z+A2vWrFzH7GqwChTQMD09V4\ns7eBp8O8D1lSNdfy/W62QSDmcHpIn3u8H6PbHasZ1NTOO0+osjcvpTaQ1i8p\nUuoOPTW3tH63MHDuM7XjRUu3g9aA48rru5XiO5G3l61m/GTAdI6b1V1oRRL0\nyBVE+XePLzhIugNaiKKm+8W9TMAqBQQa9KtJDPQ4fQFtFD7oWXv35/8vmXOY\nbe1e3EajWq9ldkpxlUxTjKo0+yjecNQZM9fMwx7UF3v1s/pjX/5yns/M++E9\nwS/KMjj3HbuRFlByf/0UiAgTWwmHA0Pzc0JN3ZP6BKWt9hydXPKM7FMqu2Hq\nXXQ0nsMnpQXzlWII//yLR7A/bbm7s+LPz3ScsYiDOmY7yfkHVIFCJ++5eZ8a\nX87VFFc3AhvOJjPwbut/OpHjH7d+E2JaQtRUUFcSPb0wkS87TbSeCKwVGD2q\ny3v/\r\n=rZ6D\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH0/ZHejzYUMDBVOwNtnhp3VxiexhtJ1xDtzkYCbc2pAAiBYbX2rWAAYtyphSA6pMuInRRNY48QYyaVaICPpGvbv3Q=="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_4.6.0_1534049551836_0.6413051963917946"},"_hasShrinkwrap":false},"4.7.0":{"name":"turnstile","version":"4.7.0","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"1.0.x","interrupt":"6.3.x","nop":"1.0.x","operation":"2.0.x","signal":"4.0.x"},"devDependencies":{"proof":"3.0.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"gitHead":"bfd108da689a6cd92b3b779dce77b340949eda23","_id":"turnstile@4.7.0","_npmVersion":"6.1.0","_nodeVersion":"10.4.0","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"integrity":"sha512-4ee5zO1U+Akrqb9EXZcQbPs0dg4eXVz13pmn/QAC3mnq3Zg3LhrLI+sGcBSGjH7LM5WnIxrSWYsY52fI3beWKQ==","shasum":"54e761517e29c4c72aab085e9535eaa688349a4f","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-4.7.0.tgz","fileCount":9,"unpackedSize":21075,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb8dZICRA9TVsSAnZWagAAFyQQAKDhBtJHnIshx72prMNy\nOredajwsbil6Xcy1N5R46ru80M2RjbAy/i5Dhbh2GWH9Dv3ZfxAQKYyf/o3W\nRNoP6R1DYEzlj8x6Z15oCUBUR2e+xgvg7rWXV770QaI8UEQ2vyVTnCIKCRBF\nYj8wP0XJLzbA8Cv9PK3b2fzJDaUexJtbQdNm7hSA4XqRYkdgB9cxxc9mtyvf\n2S8rbVqdOKGnxiN9tktj6DYJiniLLMafD9ua87jTQmnm7fMdHiGK83+ELWax\n4OmKxNjEoWJlG7X0m7qG/MVc03pt0SPhhZirR2tN1gsJNIpl8zwdYH8u+SJQ\nNQmzqZoyMLv4bdaiVRIDU/eu7FF30KLJIq6VRtU+2Qje1pubANApOXxXtS1J\neME7UaO50z+upVdb91yP56bAa45EurbWIZsHELkE9CV3lxSkwHjq2jdZQDxA\nbKJ32n2CeVs+GYwNulUOKCAUwBHAWnRIBrcyqj+7+LULTozL93iDGBj2KcLi\nRUeMc26ZeNFujOLuey2Dx4Y/t9LZRjZYKU0ZwpgGnsTDHXxDdTrHOowTEJVA\neJXciLtmyK6q0NDDc/zs7Ka5I6Rwr35Fe5S4lL90uCxdaBXbSHNcWkuiPvam\nMYIffWKqL8AiDk2Y7+4HsrMSWFVyNBnj2KI7J3r8VU2ScsqL1WmbH1dKYuHr\nY3uT\r\n=6tfh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCITfKM+hdGEfTK59Vg+jCCjbpAu7V67Mv+hH/s+CZh3AIhAPiGhxV1359V2SLDqvQuGBKX8O29+iEK90FCmpOfjtZ+"}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_4.7.0_1542575687497_0.6399848378882249"},"_hasShrinkwrap":false},"4.8.0":{"name":"turnstile","version":"4.8.0","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"1.0.x","interrupt":"6.3.x","nop":"1.0.x","operation":"2.0.x","signal":"4.0.x"},"devDependencies":{"proof":"3.0.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"readme":"[![Build Status](https://travis-ci.org/bigeasy/turnstile.svg?branch=master)](https://travis-ci.org/bigeasy/turnstile) [![Coverage Status](https://coveralls.io/repos/bigeasy/turnstile/badge.svg?branch=master&service=github)](https://coveralls.io/github/bigeasy/turnstile?branch=master)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"4cf276aab7494062e8eedbbd5026a34ae12ca308","_id":"turnstile@4.8.0","_npmVersion":"6.1.0","_nodeVersion":"10.4.0","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"integrity":"sha512-IYKe3JvAlk5R1ozjzi/rG14/UDLBikmkoLXzFcQj0C55kRThqQdT30oS8VeNZYg2H//Hpj+Xl6iBHomSBat0FQ==","shasum":"cba4897447cea210f7f23c11b052a32a94b399e8","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-4.8.0.tgz","fileCount":9,"unpackedSize":21075,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb8dZ0CRA9TVsSAnZWagAA/SUP/2WdSQ14q6nT8Z2s28Jp\noBuET3vNXppTVmiWrYGKFRW4aQBtRbYFiLl06iEXNr3asCyZyILlVhRmfY/a\nIW8sbKzUOu2i97J+YKV33AOnFjt9LiON7LYmM96ZW/rMiTxIXWsk3IhHWnOO\nw9wSH+UC2U2w9Y8hlL7GRZaNrm9y4PvEDjYSmmQ3et+rFrBFKUMDVindz8tS\nK3Oi1FxeK+dOZKZrj9ky3ncKmCKlAtuE1ymPPja+6+0RjAeYDQTURverl0pe\nBIfnmpqwSY9h13V+iG3aojA7luFw6o8MqzxIxZwXEGd26OzhkNj5J/qWHE4U\nLnNBu+t6wP8Zh56JutgvJrT7RPxTPnkdlWdj/TKSv5CUdzHSt4OhK/kLqLdM\nNdQ+pB7h+NRBmDWMecah683jTqax8YiDkPZBlytRVjNgBBU1X8ElME2uI791\nL4mbTg87iAqjMnWutRc7krqSmScmoPMU1U2ysh/Sj3leQemI8aT4AXnReMFV\nwlj+P9CxenNUCNl08uXW0pnn+X52CJKozSgtAz6wOcGzgEPjcYbikZDNCUZv\nFQsTIQqpMFDou1DfZfCUxeJF21T2MV+vxBffjYlxGLqzMhK364RkYyGYplpH\nSiUpN5NI8sDySR5afNkMKTe57XaL9l8xWsVmnJQ+oU3v74lGJ8qK7noNUOuh\nwfk5\r\n=lOe1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEJ0YimcHJFx2/ziH2gXPSEl/M0ERbrmvSf7QRChb/OWAiAdHcYta0IhIabDA91DruVR8PreBioeyroKaWVW1XHQvg=="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_4.8.0_1542575731861_0.9124741173676674"},"_hasShrinkwrap":false},"4.8.1":{"name":"turnstile","version":"4.8.1","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"1.0.x","interrupt":"6.4.x","nop":"1.0.x","operation":"2.0.x","signal":"4.0.x"},"devDependencies":{"proof":"3.0.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"readme":"[![Build Status](https://travis-ci.org/bigeasy/turnstile.svg?branch=master)](https://travis-ci.org/bigeasy/turnstile) [![Coverage Status](https://coveralls.io/repos/bigeasy/turnstile/badge.svg?branch=master&service=github)](https://coveralls.io/github/bigeasy/turnstile?branch=master)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"c737e168e9e428c1bb304c932c574ff9e9780e25","_id":"turnstile@4.8.1","_npmVersion":"6.1.0","_nodeVersion":"10.4.1","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"integrity":"sha512-6U7c0DWqSxiCPGFJ7pLh4NwtBHcHu/b34PBGf7mg7YNKJqClh/4iTgS+5fN82gyurpZHOQxXfx6Xe1+FY14DZg==","shasum":"28f1a4bbffffe09056bcca25d62731ec0100465e","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-4.8.1.tgz","fileCount":9,"unpackedSize":21075,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb8gwICRA9TVsSAnZWagAAZVYQAKNdFBqQykNqhB9SVnrx\nSSEZ6XxmB1AdH6AQ5+BjfKRVo2fMcV+4v3CRSNM835Fnk4HspBjX6Owl1kC+\nIWlxuWiLv6BuBxrqYkXs0qNNINwfJsz/8sR1VUcRUAoUbUWRpK5Pq+tKuEBt\n35RFhlYcZdNYr2Rn1kukFd+b7UVbom3yGux4FKk9DgVO18Pr82wbBK7VrTIf\nOgwcUymi+lLWUPckM0FirYraBlagop62XEfRsTY4D3uwduRtE4C4Cm6FVZWb\nBw8dJ9cALM3RXguWYRvp113pR7lzwVx5R6qQpGgCQG0GKaep/BEUrynQLGOG\nUbmbJBgRvIqVfMrWvshr2lb8MpbrY43rmOL1bblfKXhrZ9vVupwghuwODrxX\nG7iNMTAJCj9JAxU3yhCYNIeoGU6sXLEYSelLqGfu49+dOuIkwhEla28s42Jd\n9VIcMSuff1UJKVePFKsfHDOz5E2Q/KDKc4ScmZyEtiDErwBSV54LM9Nj+6Al\nvgAbvga1v3NBxczna1Q3CAuYwmwvuTzJSCC3Q33yoWjT69QRsfL5an/lfwiP\nudLTWi68m+JVLVXEchFQY2A2Y2wVqtB76RG6L7YYE2DZgZhAIqwdHihqQKpU\nTHa8YtQa54oCJNplX4+hicmCz0FPA/OQ+8L6weP0bWFKY2ACkwjP42kKGyDQ\naqTH\r\n=6Blf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHlDhNpn6TATbWGLSs785b5eo6gLSXLIKtUF1e+ZuWDvAiBYrjbA6jg5HXFc8cBQrJXTufyl02OQhNvTpdrZbXdVgw=="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_4.8.1_1542589448002_0.3611935428925057"},"_hasShrinkwrap":false},"4.8.2":{"name":"turnstile","version":"4.8.2","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"1.0.x","interrupt":"6.4.x","nop":"1.0.x","operation":"2.0.x","signal":"4.0.x"},"devDependencies":{"proof":"3.0.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"readme":"[![Build Status](https://travis-ci.org/bigeasy/turnstile.svg?branch=master)](https://travis-ci.org/bigeasy/turnstile) [![Coverage Status](https://coveralls.io/repos/bigeasy/turnstile/badge.svg?branch=master&service=github)](https://coveralls.io/github/bigeasy/turnstile?branch=master)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"f95ed9a47d936799b12f4cf2e84fa8b3fd39ef9d","_id":"turnstile@4.8.2","_npmVersion":"6.1.0","_nodeVersion":"10.4.1","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"integrity":"sha512-dzWtfup6vTv6vQiVBfJPGO/k+QrPe3Q6f1yDF87WQSv8E5VvnReEcPi/73jiImY4x6aMaSWha0kJhbmg7Itp7Q==","shasum":"f601ab76fe48b576df84884a609801976cf31080","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-4.8.2.tgz","fileCount":9,"unpackedSize":20870,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb8i2NCRA9TVsSAnZWagAAEo8QAINXPmJ3MtnGWupOj6rj\n6Bgg8SKw3zChn6md4KP3rZxmXetNUNuXbed3fhvQVlAx1xoFqVgC5sXZRZQS\nwtpNI6nhjYfkZ/tcCXEgjeSirecqUnoVC8bk+rZUa5lu02KIxeCGpb5uZOMO\nBR6zyQjjdhyGmkTZ/0gIXMRnmdamcs2tPNOsEhJXwmoHhlZeuaXUALN0EkkK\nrAgLVjWEMrOdAaLL2CpnkcBm0rSE1RdOeS8J2teGj8WEnNrwgpbOAMznDRM/\nkAPoVBZxFHL3qxkPSpRTuMVyCZEudO1InkvkqEceKvaziqmAJK2+UBmaSTsv\n9oMvF8lGzlhhLs44bqp9vu4LRZmn6H05EkGJI6lD3Ldi2ZTI/2MEvJUTKrDY\nVCxaEslUgx7ISdbs+U5eGVY8NGdTX0ahfeVmKDLMI1jSaPvTKFT9nAFoPMH6\nucVz3bkulDdkA2lAlvHWcp7yGAgAcjvht0gP4TMr2hrdClHI31CZT2H/xMfJ\nwieu2WGJR+xn69LvrA7KR5ejAgeH4VxMHUM0940XJHwU8/JGKL9GKA3ufNsn\n3TzpKHpg9ZSBB9Lekl2kkSy3vmzJ4gFbSCqUIdBcn9XvlUdvXyTgHx/XWXZ1\n+fgVR554D1N+YvF/jOaxZMMpTNnmFGpj/4H6g6GYIWGcK3zTNb18DexFxrsz\nNR2m\r\n=FLYq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE5U+HjSCD6Nm9Jl6a6Fc5VAORPXLe+w+X7uzyb6u81QAiAwTlSxMVWcmK44AmKoUke3PTayLTf2NS7Dm7svFc4vOA=="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_4.8.2_1542598028884_0.9180570006669493"},"_hasShrinkwrap":false},"4.8.3":{"name":"turnstile","version":"4.8.3","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"1.0.x","extant":"1.0.x","interrupt":"6.4.x","nop":"1.0.x","operation":"2.0.x","signal":"4.0.x"},"devDependencies":{"proof":"3.0.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"readme":"[![Build Status](https://travis-ci.org/bigeasy/turnstile.svg?branch=master)](https://travis-ci.org/bigeasy/turnstile) [![Coverage Status](https://coveralls.io/repos/bigeasy/turnstile/badge.svg?branch=master&service=github)](https://coveralls.io/github/bigeasy/turnstile?branch=master)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"557418c1a133e6c2db8fea1675048cd53eb8d942","_id":"turnstile@4.8.3","_npmVersion":"6.1.0","_nodeVersion":"10.4.1","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"integrity":"sha512-0R4e2HBXCUkuQ+dYhCP6sAv3S1ukl/DMSpk851yOvWnyAhtIi04o4rpd/tK1SUEz956W26sb1hOQ7G9XrQacRw==","shasum":"d9f3be2a85280957a97ff99c6905658c01473c93","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-4.8.3.tgz","fileCount":9,"unpackedSize":23130,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb8oSuCRA9TVsSAnZWagAAie0P/2UuU7rk076uiSoEc79q\nYUw9j1KNbqtfp80Y32CoyXknJ/n44rGK1atzbSOgjpfP3fnUU3moMUtKtejS\nfYv3qG+V9T58WguHuPq4nwG03sc24gnAnlQ8cQKWOSJq9sYoUlTwZNSg5j4/\n5sIdsw+eR+sWAsWWhL6GU0QAMKCbrmNyzBrCdQ7ZnMPE715909w/CqT3fZ/l\nMNC/6ZupkTp8kp0yQM9gnx2IVTf9N/McG/6ZwF3PlZDbcKlm9e1vqytCdPjG\niOg2m3uMqQEahTbR268uTg5El0DiGSHsWbaNLQw2WyOqGwDjxaI6Hp9iEmBK\nn2zsnAoRTHC1D7hyds6XpH65liIoYthyK9Gg4e0V/CwcjZPTEuW9l6D0Cwfv\n9Z7A+79NI17z1SvMmW7P4zHVLAW9OTwJWHEIo1e3UzJlIntjK4p+lLSyk7Z9\n2ugnf1ovXAkdUSyO6gdfLq/NlaMHf9LS7zB0hGbXndC5LIiem5t/VGonsPZE\nkAyEpb9hy2UrPz0NF1D/D7Aauv0oV8FxjJNVS1IfTtiR7OY7clIY8Ik/H3LZ\nObGXTPu567yKswMidhAGTA8A8D6AJYjZindR7PbMx8rYvUYiO19lVKaLSLMX\nIfv/7fJp16B5AL6ARFrRlX5Aq8WH8ZW53xuwMsWCkwiX/tIvNB4PBwqZ+4tC\nkEUT\r\n=2PY/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC6qNxjsq6MfMK2HKgY6WZZDIIOfeS+pCbamaR2h/k41gIgNE622SQCHLDM3M21xKrAfG+59K6dpfhwVyXEymoKng4="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_4.8.3_1542620334095_0.45646570578562873"},"_hasShrinkwrap":false},"4.9.0":{"name":"turnstile","version":"4.9.0","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"2.0.x","extant":"1.0.x","interrupt":"6.4.x","nop":"1.0.x","operation":"4.0.x"},"devDependencies":{"proof":"5.0.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"readme":"[![Build Status](https://travis-ci.org/bigeasy/turnstile.svg?branch=master)](https://travis-ci.org/bigeasy/turnstile) [![Coverage Status](https://coveralls.io/repos/bigeasy/turnstile/badge.svg?branch=master&service=github)](https://coveralls.io/github/bigeasy/turnstile?branch=master)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"e4a32e4c434aa4a274740b6f507d4df2d51a1f8c","_id":"turnstile@4.9.0","_npmVersion":"6.1.0","_nodeVersion":"10.4.1","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"integrity":"sha512-gEslDCYg30HSiNcy6zOOpCTWtm6ftmNOVLK/9jmwxe5RWouXpPwC5xKHMoxvnFwsk5LuVkqHtTrWuELqTBpdTg==","shasum":"a45f60701b0e2cbe5314d0a26584f4d60a71e7dc","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-4.9.0.tgz","fileCount":7,"unpackedSize":16421,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb+pbRCRA9TVsSAnZWagAAIqwP/jIqnPNFIOu7VQYAdGtr\n3/IMOF81tiYXtp1kdqcW/YwhL+Ga4L9QKX4gDWgO/daxBaqoSqQpUsMvw4UZ\njCOIGT5+oYshK1mWXnxnE1ChkAOlPV5S9bH3Gr/1x6Jgidr7m14yYQ2PmRES\nYe05blnkKbMQLNHu+0BeAAnq81pmSNOVHMQELN6ccmaJ9DUdee0xKkCYiMvc\nVR9fl2LpgJi66RuRHV5IMqlDl4wz+ENBSU8efiqemNYHkwjo6VlQ0tNsV2E2\ncM2wX1HQZAzknbluudF3rUcUNJ2JbPk0cHcdtn3ay5+7t2U1q9B42idJ2kek\nhBClpOE5+9Ae9gMAbV5w2kNujjVP/8ijxzN5qVLlOzdRtu9qPmpD78Th75RF\nKTXPPUaggUNuP4w7pndJg+WYf0liuLKJ2KCcrFQVPGAG0S2eFwINyqOy3e12\nGgS/Dag+hjRqsvaA/bvjfnCeWutGOnX0F7dSX/VGHjjQq7ExjEwwVPSDnAB4\n57RQFKyZEzOjjQvjPYMnh180AGsoEd/ltp4WoODg+vo4SRxcEsxlVoUm1D4/\nMptFMOeXF4Ks+rsPg39qjdhiLxk4wyi3KQm5nQFOYyYJPo/Snh0ay/g2wFeN\nXdaXKgJ3CyS+0pQrnCBloaQO57SWROb7wsS8hDeDGWPhYKrzXdJ/K7iOnudm\nE5Ka\r\n=JT/4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEiTMFxgOjpu2Oqnlgrr3fvxlBExawtL8xVRWSDWyDBxAiEAgdD5+RNUBrXQ9f7vfEDZ7UfMFL980BS4mWQ5ANz+Icc="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_4.9.0_1543149264618_0.3360690828147994"},"_hasShrinkwrap":false},"4.9.1":{"name":"turnstile","version":"4.9.1","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"2.0.x","extant":"1.0.x","interrupt":"6.4.x","nop":"1.0.x","operation":"4.0.x"},"devDependencies":{"proof":"5.0.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"readme":"[![Build Status](https://travis-ci.org/bigeasy/turnstile.svg?branch=master)](https://travis-ci.org/bigeasy/turnstile) [![Coverage Status](https://coveralls.io/repos/bigeasy/turnstile/badge.svg?branch=master&service=github)](https://coveralls.io/github/bigeasy/turnstile?branch=master)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"796220eada1af34a5812675217196d0bc0e51296","_id":"turnstile@4.9.1","_npmVersion":"6.1.0","_nodeVersion":"10.4.1","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"integrity":"sha512-itFgzLFTl2JjVrFP6E7O4jVSXxea58ZdWc6KxQhYZGxwnX13CiSdfp0/Rp6k92A2r5jEeXEh5TV4EQRnhYSGJg==","shasum":"5c75c2b7d0a6529f360d92f5f20dc9393a6637dd","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-4.9.1.tgz","fileCount":7,"unpackedSize":16601,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb++UGCRA9TVsSAnZWagAAN/MP/0GplvjMZrREBv1s/Suh\nnuSrRXdyVL1AKoqSJllyEw3ShhZZXO9MSmN3vk5O10fLJ4dy78FBU9Q4oWo6\niJu4pYTC77IvqlaIaMy6dXod4V7hkEY45DV8HC5lpLW9jZHqNsdbLkihPxWU\ngblWxMh9o6NkvTLsSpkXjhPMHNiA6WKC+fJBNgqQDkmNIH2l9CbNnY2UL2Jo\nsiPXRIOj4s7C4Ii0LmWIwGKlwKK1hUOPcVR/XFyR520n0FQzcgatzD5Szqny\n4X7bMKlVjGADWMUuqrfs2Ek+QmZhVOXuJlyXd7Xy33FAAH8SYVF7wtTNApAS\nl0vMOuQjza3AOhitTnDNl19RUiLmI+B2n103rSGujGqvk7JU+QWwHbiZbeCU\neED9OxtBvM29t9v7n0TkBurkoPU4Slr+qPTWJQFzqoh3OBrjkDFRNuFiD1Xj\nC4BPol7piPjzGAAR/M5JC8/GSvlJQXUxeKlm66Z2dhpgKQfMFee7khDjLDup\n8shy3px2X/9YzotTWv5YH//Y4GnaVWp2gSGxYPzR2HuxgzRj5eQBjKybgv5A\n/MPW6jTN18kd+mHh2nNka4E5WA72vZA+tiXam4rr7/tJuh5JbRIyOlymYqap\nEJcM39xZEdQOjzxoARS8tpPnoUzmujv6c9Z/cglVo7Jnsgv8qsOewzqYqSXv\nQIwl\r\n=4wqg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDnDOTsd/WNQIbT+TUe23uadx1MkpfTaFGyS6uQEWtwqQIhALDELvzscYZTG7Zt+6W7gJdHfYokY1Q21vUc355GEDCd"}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_4.9.1_1543234821741_0.8505393720664163"},"_hasShrinkwrap":false},"5.0.0":{"name":"turnstile","version":"5.0.0","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"3.0.x","extant":"1.0.x","interrupt":"6.4.x","nop":"1.0.x","operation":"4.0.x"},"devDependencies":{"proof":"5.0.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"gitHead":"60e2178275dc2528db8f312b8682c6cbf79a7b5a","_id":"turnstile@5.0.0","_npmVersion":"6.1.0","_nodeVersion":"10.4.1","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"integrity":"sha512-OAZAVVRQB5HZr9QxSCQhEianSB7g7iMWRDPeIKlp4AZ3IwwzbyQuMJ+/0Q/5Vo9LHwzIR3GWEJ+kuzJm9qt1dw==","shasum":"8227c80a570f30242a41739651178ed1adf7edda","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-5.0.0.tgz","fileCount":7,"unpackedSize":16601,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcG1SACRA9TVsSAnZWagAAn6sP/1DhMmpusyWRdhiPUpAs\nNWrfCQxKOuMPBO1GBR3nqkxi/PbiHDY98yGTw4IRS/4FHOYtOtU9uMdfiJx4\nBuwinZHLErbz1CsnKyenTsiPrkNkQDZ7B3R/Q+5wbWNNiJvH23u3zZ4Oj9KG\nDf0W9GdHnbalGjFjFDl6DWYIGGOJ3Sgc2IU5FdhIEeOF8+wBo53pehPsXu2N\n6+rz98jxPT6rzRwKErF9DMBC2/cIKa2KYImPSIkqyPGNHfjux/J9TJk0+b1T\nMaLb7kvAvJRxcpZtN4OuvWri39OMySj20AP4OyY9LeFazvc6Todmv//5czvW\nSv73EoqVuzaSOGFoNjMKWCZMtQrq5tg48xadXnZz3tcjN3T2HwgWOtfkd0t+\n1xywBO4XhLl/YuiZmh96Yklayfu60Mec33St0wA0q7T7d/Ez8VgQZ1T5GFct\nbDrQq5HYrlNE0A6tJhpVBdKhKsFx4e8UUEZFREStbQLLdlU3ucuwi39GyH5Y\nXxRSwPBGFTaV7sm8+l8/DUOsiUSVwOJEyWepjBa/JrzAST8snOa80+i6j7US\nxSjvSafS6D2EZTb0dOMM4nLSiHK0jE41E6ySVL6IxwlsPBPx+dGfsFmlHpCQ\nyUB3mcju9wTTpnydI7MnOXWNa0gjMvOi7gI8kstvJaJjGguqVfqxI9ZT1euH\nurHA\r\n=fOKT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBRUXD3Ta9ScKkbaj0YLFGmX16hEKPP+HAAQhab+xnJ9AiAFvesd8ofNLH48laHR+zQoyqa/gZVgLsim0gf4+okcmw=="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_5.0.0_1545294976275_0.8141525293723648"},"_hasShrinkwrap":false},"5.0.1":{"name":"turnstile","version":"5.0.1","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"3.0.x","extant":"1.0.x","interrupt":"7.0.x","nop":"1.0.x","operation":"5.0.x"},"devDependencies":{"proof":"5.0.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"gitHead":"cc01a8281202eff2686c8c8786cc45d8413c095a","_id":"turnstile@5.0.1","_npmVersion":"6.1.0","_nodeVersion":"10.4.1","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"integrity":"sha512-mQe6mc9TliILe0xSApc7wfazCp1m4gYZgUTtLmtOVFYvUUMDijwwPeUXog6h8TRKfzkJYIFDo8kcD/VF+5Ia4w==","shasum":"976436977a94cb1dbc8edfcc93c8caffed3adb02","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-5.0.1.tgz","fileCount":7,"unpackedSize":16601,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcG1ZzCRA9TVsSAnZWagAA+IQP/RQMhNGUix5+Bta6+euz\nc6KJuwqBLR8hlvr2hlfcr/PKb4/ZvoMnP0BGsA6Ys3oUozdhmYKJE+y1et3S\nUmytmayRdXy9dOdsB7Zz2gSI/KmDyTRlL2OaJf2jBOoC/pW1AbGr3wd+NkUZ\nVDOazcTmrTcmd/A2HlhIyFkkQbS0JoBmyN16NygLlh1LUyv+I4J6sKDWQ3To\ngJKNRyzxi1OrVwz19DlfH/FSa2DOgmT/d1F5zfOmxQh1Bu2bmFoOkomM/Tja\nfwvaSBOdmil+k7BqcqBQ8MagjV7kfXtU5TnmN46EJhbGE1gto2QSvFnjJ5Fe\nXUtAtxYHwbbhuT2kSUdH4z3cy7VpkwR4XFuQK1rm7ijZWrvlfMBNSU91koYB\ntnFUSu7I8zukf5jK+trGc/On64cSYpRvKdrkdXYNe8IvIpSRMjADE0b/kp5K\nscR22wRmbp80SDNyJETdgWHpfeFvxVdEBNdQCeKcppfAe8wJrX/yh2JIOSXa\n4Qon4aFtD3JtEEIxxLV3Nm/yGtJB0pIKMQfG4BHULk1X7o0oed19GP1420Dp\nFeg/s2M0B8oEmUhq8YcfULRQx3hRDzJGKH8iFl2AMbmZ5QzyUqh2g/+QZX7c\n0AGd/TVfpa0efpfUbwpzswKFyAxhHdN2yn3oIcm1dnlyB+QM0JLmiy6T1xgB\nHQWe\r\n=0On4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCzTzuC+R75W1mkfqqe1lE0JYNXzK/uVinls2XtDjlFIAIhAKf9oSa6jpUFDEH1bfeOFWmH+FUgse3mXV2uH+235xU/"}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_5.0.1_1545295474446_0.5685354915916556"},"_hasShrinkwrap":false},"5.0.2":{"name":"turnstile","version":"5.0.2","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"3.0.x","extant":"1.0.x","interrupt":"7.0.x","nop":"1.0.x","operation":"5.0.x"},"devDependencies":{"proof":"5.0.x"},"main":"turnstile","scripts":{"test":"proof platform win32 && proof test */*.t.js || t/test"},"gitHead":"1d45121081e579882ff8341645849ef7ece7b465","_id":"turnstile@5.0.2","_npmVersion":"6.1.0","_nodeVersion":"10.4.1","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"integrity":"sha512-5WCTkF6u7J1K4ScKWcVpgSv5l6xeANyrerl5i/ZI2zgaFzjHHViqHubszKyTdNAYCe6k+nvlPJXDyXt9sZ5Fpw==","shasum":"83586cdb2fa107e140060b1babfbe8736abbf62a","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-5.0.2.tgz","fileCount":7,"unpackedSize":16601,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcRQBmCRA9TVsSAnZWagAAlPYQAJ7YszNW/wO2OEwsiogv\n+7OPVa3MYPKTf+d5HSmnXXliGt26juh+lE9C3THeny70QXV93GZ+bkSM5IPS\n/Jjrt/hbu0d9fSKbCd0CALR/7hhyhTYLmmdPN4w1RBIDNA4jvtVe/09i0NGa\n1T2aUoqrNbjfw5l71gA4R6mXsve1nPQTrLxL7HrdyUM/QEViUw0pt6l40/Eq\np/fiBoecfLjzh5+7zMlG60Jb//LhXZ+sPIDqJqUD4ZdgLOfFiy9L5iPHPR8o\nJaBxcGZtSbPc7Ju5VtMqRxWMuu63tDTKOyc1IYAPmLuNKMbjvDqHNQjGYxt3\n7QjLLR2uXMvi1WOsX3I17yljXyOip5uffZJxYxl8DCRN6N3ZGERpDsiGhDOH\n8nlOLGE4HcW19Po3aHVOrG60TflW+zOPB/QIj7+fGG8vTStGgd8F0iNA2Vpx\nFoyK/Hjn/ftPp4waD4awk5Pvgryx4MnAk3J0NXTdTi/3rhoAax6uAnwcEJlh\nFsqKKM9k3IWEFUYlArDZb23dE++esix86f9KtlxfmDr3UxnhqLJncZpJ5o5f\nWQa3FCLkjGPsA+9pKKBKsZzjWvPMhu/oy6xEZtKsrGv921vbOlI2HG9CnX97\nTpUQRHprSoZhqXcnsTLMMuDhmrk834hxCCsi/WD6/oiERmM7ZdvjNaLRGKCM\nUh/4\r\n=4g9g\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCRqAxRDbV2LNrmOBuKS5EumK+nSMt25kHbOR3jNVhYLAIhAIloS5VgA6kX625GC/Ti8jPSi2cBTQrbMiWFHEKCP9wW"}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_5.0.2_1548025957910_0.25663909032623167"},"_hasShrinkwrap":false},"5.0.3":{"name":"turnstile","version":"5.0.3","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"3.0.x","extant":"1.0.x","interrupt":"7.0.x","nop":"1.0.x","operation":"5.0.x"},"devDependencies":{"proof":"7.0.x"},"main":"turnstile","scripts":{"test":"proof test test/*.t.js"},"gitHead":"bab01b1156d25f35e5c301262df986a5120e00cf","_id":"turnstile@5.0.3","_npmVersion":"6.4.1","_nodeVersion":"10.15.1","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"integrity":"sha512-aKe0BZFIfD40ztvKsSqlly1ylUoYZ4Ztb6/mv16Utp6UFRg3uCNrrWpfxoDWJv5eL4NuLaYo64Txo4BAegbG5w==","shasum":"34f2f5fbb006c939d9888772cebde353e4bbd4f4","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-5.0.3.tgz","fileCount":7,"unpackedSize":16284,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcd6tWCRA9TVsSAnZWagAAmC0QAJHExhDwALtDWR8r6AGm\nQOomlo/RyYP2PzJw9xunXPM6BY2IcPo00uAc3oiYoKDvvUG8+F7f4bPbRDyE\nPY3AErZWVWD+Wp51XpVzBFzamdTrCN1xhk3sS6d19hKpqbmU14XUW/AW39vj\nWHoPcidNUmi55fqYYXkwyVhWYRY+bi3MUigxPeSNIk1gH+jZcI/5kw6+SIFt\nQgzyQyPPrvPzkOqdf2Ki93v1dQetJLhBc/i1mWlqXYeoRylotOdxL7FRJ4JD\n50qH95naZN5Ypi9cqLgyX+Dr2j5wHX7d99xCYQIAMXXBCz2OxqR2haO3Gaft\nHd/p33R0qv6j698YyWVQ7Lb/pIChSq8MvAj4NDVCIO5q/y1aeTLpMP815o8y\nj819mifag3TBEYJu1KFbKnPH/t4tW9MSmYMBzqamxz6soye6Rxjm7scWD58x\ndZ1fY6J84gil9HOKmpQ1mwzqdtRVCNPA0XgdaToTzkEWv2dOvq9OOJ4YtrIW\nbGJiPXjOTlrxDAP5IJ6CaZHmAA9ixllO7++8eQAhUyF8h63qBHc9aDxFneo3\nphiaDw7v3PBF0pb7gEd3KCDFJc7HrjfPr31EhNyho2A15AJnytv5B9AxMkRg\nWPYiIZ8SmamxaoOkpbXDUWImNTIzaK+qPXKuej0KAgbNKk9t0W/pJh/0i/3G\nWaT0\r\n=fPMK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDX/tmA5vf5s4rvX8XBDpcOLDqh7T5oMDWnF/xlqb1O9AiEAmHAZF0rklP1rWLGAfHUbImMw8iob+ixhdePYcXyHCko="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_5.0.3_1551346517561_0.10603483257442115"},"_hasShrinkwrap":false},"5.0.4":{"name":"turnstile","version":"5.0.4","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"3.0.x","extant":"1.0.x","interrupt":"7.0.x","nop":"1.0.x","operation":"5.0.x"},"devDependencies":{"proof":"7.0.x"},"main":"turnstile","scripts":{"test":"proof test test/*.t.js"},"gitHead":"64f2a29301c8cb9a2b4a47e2c0075f0801486799","_id":"turnstile@5.0.4","_npmVersion":"6.4.1","_nodeVersion":"8.15.1","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"integrity":"sha512-8Fxom+HDCWKxdEK3sYGszIDOKIjDRqKZr+NW7xQCKW8miLsah7Rkps65jzxBdjcY6+bhoEeo+Fiq23XdniM40Q==","shasum":"790149fc668db5d6f025c61c972ccc0e6c9307a2","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-5.0.4.tgz","fileCount":7,"unpackedSize":16284,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJctUSUCRA9TVsSAnZWagAAO3YP/i/AOUl+7D2xH1Bxu4W4\nUlagMjmdDuLTnSOS2h20EQg0HsDZ0YV30GEZApYdOP8uiKTJIi501xcrwlVR\nG6Ir694L7EI2U07YFVUqGDqWrS8iHZ+p0zwqGb4OiAbgttW5dklCGk2tuzFY\n+6pgOMfUZmrEIY7dd0AIsILQWBtRlyTok9/XLlT4mqARA56yypHp6Mvrm/2K\naMNuYwZ5+tG47HX5b1cXFzAWAL0fHXife7UZuNcQFqT23kS9L04gOJBEN40X\nyyS2kIxoYFaFch+bjZSQVyKx4k8lF3iKMiC+vAjXdGteZ4/98bk90gd+O4vi\nKEvy2iJ8y6+IBcEuP69IoBVfiMOeabrUFIMcklGeEeJuROG5LECocm1+aOKa\nY09fh8SrFmmQ+DE1CLV1E0OZVOPMHyW4FcT+8lGc9ZfmVVI+wQ84z6DyQcSC\nQv+g1OZI0dcgVQEOLMS0QizwEo7C2aldPx9bcIi53s0JgBMtO+zUdm3PKL89\n/XuuMwmDytX4INouHaD7bbpZVOjVMHyXZK5Oc4L473jQPOUzCkhAHtUz+yb2\n11CjzR/yZ0SD/mxHdfQuH1bwSmOitjn2DMuBMjQN8GwjDywghlFynbtfszW3\n2+B1USVoy0f7vIv9TcO3Es4ENPkHMzM5qdpm6DrVRJyfzGk74JmqYdZVtdrl\nk/SF\r\n=Hrrn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB27AdVYQjVc0E7dQcF511FmPzfWLhE9HjQbJKRgTHdOAiBzrQLtVW1ViiRFFBCC7oSK3HzAMSiSjfxwXE5FaFkYyw=="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_5.0.4_1555383443705_0.20279171045510402"},"_hasShrinkwrap":false},"5.0.5":{"name":"turnstile","version":"5.0.5","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"abend":"1.0.x","cadence":"3.0.x","extant":"1.0.x","interrupt":"7.0.x","nop":"1.0.x","operation":"5.0.x"},"devDependencies":{"proof":"7.0.x"},"main":"turnstile","scripts":{"test":"proof test test/*.t.js"},"gitHead":"31030784b9d767afbf1780d074e6de0a4f4f3a6e","_id":"turnstile@5.0.5","_npmVersion":"6.4.1","_nodeVersion":"10.15.2","_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"dist":{"integrity":"sha512-z8zPZjdTDnwg/gBRJDbHQEXRX7+kEMkvLIyIyvt1w+sz0EoKRwNlJXeR+pBzx/u+wz7hcMlFTFaxBhq4zFWBXg==","shasum":"22076f17370aafed1095b67bdf85570f46daea34","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-5.0.5.tgz","fileCount":7,"unpackedSize":16284,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2+grCRA9TVsSAnZWagAAgAkP+wbDRRk7Eea33lKZbBbu\nV5kjnWPIWwOEA7SSeNrSSbQ9bczl18Ne59D8CHTZi/+Dh1g8pYdK+NA3OfZk\ndsd8/b6BUsZe8YLCEiZNPpHMBO3Ifur9wnbEQVUx1mHmjG4zb571T/nYFC0k\n1UBJZWdROrrWSgCKhE52HPpGpTFq8zTTApQf7eb18vGD3K62V+5UdNRfDR9w\nILqbe+qb47tsJR3pfysEKqjbj/eeu3JEc66LdW1E0eR+6LUg93emRUjrIvHh\n7mCwfpQHPgvyzK/RK4SYorTQUlGim5S3GWOgcbAaXKcaFvJr3FY2tdpzaOi+\nublSnFEk1qh7RFkNrjQlFsJ5TjB7ykW9CQGn2FwqfI36erVrhSeU4aL9jnj0\nf7JCeMHsxZjiKXhRWQ8HIc9GQGMOyz+f791ZekeqBvHMZcgItQYnfAmFtRuy\nzi4jZRc5DQAkg4OoV8WRKo/P9TuUM+8GNZfyxE8eCG018BThSTVNjqLTAhYV\nSyJR8Fppr8dsZ5O0WqP+YwwM6T9m0VKt67IifwOGizejNJTQArr4EKNuwpOo\nLzr+oRCwZ3vN/vdT1PVsjROWDTNFfze9YuTN4TxB0IN8x+wZTGJeN9eiJ3U3\nzgODzZE33UMoibaJlszCv3oLFzSBTDaq5QFOpnwnjcbv2k5yy8jculWEqfnA\nnm1E\r\n=yFZV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBVGbGojebKx2tqXii+YDPtTBU/2eaw+GBZXP2V095ZjAiEA2TadFhYUACukuRMkVQG6fkqEDrWFaYndrxoBy9I6SXY="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_5.0.5_1555461553959_0.024709110978894833"},"_hasShrinkwrap":false},"6.0.0-alpha.0":{"name":"turnstile","version":"6.0.0-alpha.0","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"avenue":"0.2.0-alpha.3","extant":"1.0.x","interrupt":"9.0.0-alpha.4","nop":"1.0.0"},"devDependencies":{"destructible":"5.2.0-alpha.5","proof":"^8.0.0-alpha.1"},"main":"turnstile","scripts":{"test":"proof test/*.test.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"140f14f7992c790baf35a7f52bdf5d569dbb802f","_id":"turnstile@6.0.0-alpha.0","_nodeVersion":"12.12.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-c8CEUu7MWGTMkWGteqZEeFsOFQD1xVnWQ7UqkjjpGZg+D/pXmV5mAq3xaP7npuVlXjdimQH/s/rSeslGUE0Pww==","shasum":"19a29ea46867bf2b1265dc5515a65c6786e05aa3","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.0.tgz","fileCount":7,"unpackedSize":17069,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJedGDQCRA9TVsSAnZWagAACTYQAIYlJDS3swyI6INfuIgJ\nk7xg5bS1TRO8sYgn7Gty4jMFSSdgdIf1lxynldMazpCqOdhO/yIM19JXGlRA\nGko73ELJ9QXQlMslhHDwxhi8PD+uAkA5wR0xFziBOeIVijYQwsXTdqtmg74x\nXctF9a5+/KibrPDEpCnpprTIkgp7U3EEFtiKLQA6jiB3mcgnVDqbv6Kipi6F\nzOFGYMu1D7MeRe9szFFUlVRcmteT9TfHc5jCskETSvezqpxZDur7AgQRmFhz\ntknEY7hMEkVIfLGSkZLnzKDx4pozAFU1joREtadEiGnqYurzvcAhS5js7//m\nyWh3Ir5ozJuMCtfPF5KmxGuaSP25UUWRszmgfNlxKnragjnhJlhexMf/T87i\nX935Qw7HjzEs75z9CU54UZsUoXoFu86unQGpZ2JqOx+FeRE3qDzdOFDhibu9\nhlHGmSim/pmn7yUfgA/sd+jZCA/J+birgQlR+NAuQHl4+IqZ8x7Jwx1TrPhe\nfBIcpzqRJVr0/ucJgY6umD5UbxJaJ2RJj6vX8+WHK0phB7vZ/XBu4+KcSkMa\n/4WS4mxfHMqzY97bKEOF59mAn/DAlTOjlu4T+wVo7O1SRgRydlf+OqKk2uW6\nrvPWZY64H6vaw9uMMwVOVVULv3n/olJKleVxVC8fxIS3Yqo0/xTgzseB+E+T\nd8pQ\r\n=dLG+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDvkGGYcPYrggIlSm6NrZQytLcfzkD8VPDOX7UtogahrgIhAP71U3sDdus5mvOP7FJB5JOHcqByPTNBh69sksE4JDxN"}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.0_1584685264172_0.9899861439659468"},"_hasShrinkwrap":false},"6.0.0-alpha.1":{"name":"turnstile","version":"6.0.0-alpha.1","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"avenue":"0.2.0-alpha.3","extant":"1.0.x","interrupt":"9.0.0-alpha.4","nop":"1.0.0"},"devDependencies":{"destructible":"5.2.0-alpha.5","proof":"^8.0.0-alpha.1"},"main":"turnstile","scripts":{"test":"proof test/*.test.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"adbf9bcf2a34f32e6f8d23270ffb86adbb56c6bd","_id":"turnstile@6.0.0-alpha.1","_nodeVersion":"12.12.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-/KkWO+3q0ilBYaDDm+YS4HtE0BB2J6cnAhuCzcGPSD8PwNM8Kk6+nubOn9srjoPEaf7sFfrXyDg4ziCEPAe6SQ==","shasum":"b659667af11d9962535bcbba071574cddf5e1440","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.1.tgz","fileCount":7,"unpackedSize":17349,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJedcZjCRA9TVsSAnZWagAAsWEP/3VbqFUN3BaqhDtg5Cdh\n1Uy0VnCQDRySKTddAQ7JmMdMsNWXZHIRkwgIBeOY7MWuprcIZfbf6o5yhZng\nJ/Igr1S6GBMYtShDZpLkkhxLq1xWKixO5WjSRuV3CEZljUJC73O9IPuq73qQ\nJm3AG/MdN9BHHkps9XgWmvDFzE9jALbVzAuaBFvU9wOuUzDmNMNI912DARgd\nnonCuaC4hbOprpSuyT5k4viIMEYkr2KtVaR1uVikKg92xCta7DaqglzStINY\nF9KEmdbJqeoSboE/W8LkyFXuwcOz0fLJixpG2AEQH1V31KLita8KxlO4PGIn\nxhw1yJxlQkhaSaYNX7pFlmrL3amz2k3Io9TRwQIUI/K3ExdqVNMRkjRa3fVG\nEkvHSj4v7ehUW24staZY7qMs7nNS9IkE1npkKN4DFVBA4llkclCAk6JGtx6B\nmD+96BCIml9zws2SuRLtRIUho0RjsGqhSBYUMh1gz0MFbmYRarIWj7rtVhjN\nw5dnm1/lWAwZlV3UwaBhuO0Krc8cTkylN5mN0/C1tv53h4dvFwXHmGTkaosI\nV6IqI1DZ01sVNmk1FL+rvWi24tI4rbHbQQ0n+mpXp3I67HK8T7RhIKVODC6J\nvu0j7LGFJObt9t8JUEiIR/RtFWYu+ABs59ZEDkWJZi1LXY1KaGoCeX1fqObm\ngtkw\r\n=vYZt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDlDwAGwHwJUjsdtRvz7+vRrcoYt+1a8Kc6ZrrLyEYaYQIhAPs+lDQdPPTiOQ3CI1vfEWpsMHe1cNH+yUMDqqi9YyHD"}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.1_1584776802884_0.7475348779834099"},"_hasShrinkwrap":false},"6.0.0-alpha.2":{"name":"turnstile","version":"6.0.0-alpha.2","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"avenue":"0.2.0-alpha.3","extant":"1.0.x","interrupt":"9.0.0-alpha.4","nop":"1.0.0"},"devDependencies":{"destructible":"5.2.0-alpha.5","proof":"^8.0.0-alpha.1"},"main":"turnstile","scripts":{"test":"proof test/*.test.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"e569f30e454029e40b05588e00b5706de1bc4ead","_id":"turnstile@6.0.0-alpha.2","_nodeVersion":"12.12.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-oLRjE1pOcdocBIgO/RGMMt1IjDJGuSWBZZH6lgt4JzmEPOIsswz7NnnAuiZ0DZ7+AjNbO2PWQkchnZY5DQsU9Q==","shasum":"c2a656091b8569fc19bcbaa65a9edfd2dcc0070e","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.2.tgz","fileCount":7,"unpackedSize":17329,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeddpyCRA9TVsSAnZWagAA76cP/RgLbTvCHyGFEm5YhQKf\nuS9xaI1cJZfU+Fwca93UbZ6AcMSonxsXY6GpaCx+cxcZsewtikAq68gW0rrh\nKijSdcZkiYxY2qxJ59C2br/scs7efd0QXOySqFv5WvAW1lvPVDNXojdLJNfx\n+jUzX83uipFxn83f8HB7teue5xLPwWRvW/WCnMoQWKS3Dj2rENUKHYyvQw3K\nnCCqQ5rEEe4bN5HKMWIFBU0gdYDktrT4rFDNFt7ib0fKyzYbTFLYMmeD4GX7\npC4ZCMPXxD+oCvzgFeFvwkhfZ3S+DBOKh5Jnxi5WI0rO8YVCQWI4upWy99sk\nlvUgfzaeqSRV/2s0YIHKSErPHAuN2fO59Z4aDk0VEIg82DXhG9kjSPjRh/Iy\n1b7k6Eev+DBAJFrW9I2qLYimAIVZF2HMDgI3e7+00ElGocnXMUSWR3jJuc71\ntK3nxiT6JP2OfMvrQib1ujn1Lh3N9def0q6hvB4G71DMSPZjzXfKujGQ+Z+I\n4QqadCxA6By/mcjxoEnVf80CY+pparY5M6xWFKy2goyCVvKbSdrcuL9+WVDY\nllXGA4vM3zoM58SGleiRM0eh59LpFAsQxLFjB0Fd1ePOErKfvqZEUOs44i+w\neKHHhYnEHGRTp5zjCOKrbO+0yvFHuOS71RSbD+smhOw+oEa0utvBXQlGjlZu\nrQiH\r\n=8L0u\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGZvx619liV7PTsmxglr8iTX4H0WeNze6ZLzUzb/+CjLAiEAhH+IPrxo0G8yt64EWysZZs57pcDpdoIlF2e0O9U+hTw="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.2_1584781938475_0.39458669034213933"},"_hasShrinkwrap":false},"6.0.0-alpha.3":{"name":"turnstile","version":"6.0.0-alpha.3","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"avenue":"0.3.1","extant":"^1.0.20","interrupt":"10.0.3","nop":"1.0.0"},"devDependencies":{"destructible":"6.2.4","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.test.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"71b43712c7f78fdc236b5ee340786efe79c49a5a","_id":"turnstile@6.0.0-alpha.3","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-FajQePjjtzhdsnZsYh7BM14IJbo0tI88TGjW4ttNiNEQMMNZ5gV0jLGwnMRPKDU1YtBJECki5uv2c1xwqirnSA==","shasum":"067effcf1d97db9b3e47624e9bb00d46ff039baa","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.3.tgz","fileCount":7,"unpackedSize":17300,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPRb8CRA9TVsSAnZWagAAEcwP/Aq0lqu4MXESU5wQWF58\noj4O8s5C6cpQapIGiKeZgsPJBG0QqBoxf04AwP3Wp/XvIqHMeYhr6kg7GO7e\nj9X1B9LKvxkUGQeEqE9gOkhpzDaek+BwtPZG9MGsife56SxvTDIzE1GXe2ke\n4YXDq7fXsT4mTLiI5Wz8W8gromU14OHdDb8apT6IJQSSJuqr6XTm2NJdyDBe\nPfR+sl0o+ZSVXPq0OfoXBalHpQj3mHrdPbSj1VFEc/c7Jd1hnCCgKRENcStV\nJbZq1ErJlMJSaIA9HAxotC1XJ/lnRnFuoEoMW/IOohZmdSmbXygH3D34T6ol\n3l9asgcTcy9WKalIiJwwie6hls90aIn2uxOiQiqSNB5yK/ykqyUuu5/aFXx8\nJJlkDBupLTcTIBEGIPZiB46buC/7Vc+mFhGRlbgwKBzLrQoe0BxwcEC4KKk5\ndr8CsTPI7UIVuom2WdCXEvhJ9q/5SE+7rIzUZ+0xKeMqlrtBSNriFp2zW/DR\n/uSOK2vhO2IVWlhQMcM3mRHosyKLoPfLGS19FQxWJImr5ob1UwzA5mPxLzBe\nSrl287u2su6b1Gj9mV+52Nmuds6un9WmVghv0wnCyxLgVDFd4/huTrt0IixJ\njfWtdotp1tLruz5ecsb8b0CxEHSFTOBePXHExw2edgr0NcsUv83t7dGdaj1Q\nz13e\r\n=0M9q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC8fCSwE9wF52hfQ3YuEQG1JccJtNP3VXgwe2AfVhLpPwIgQidLGTKgO3bQbrAB60hdYA/zrovq8Ww49kkvo+mn4S8="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.3_1597839099679_0.6454339161487561"},"_hasShrinkwrap":false},"6.0.0-alpha.4":{"name":"turnstile","version":"6.0.0-alpha.4","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"avenue":"^0.3.1","extant":"^1.0.20","interrupt":"^10.0.3","nop":"1.0.0"},"devDependencies":{"destructible":"^6.2.5","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.test.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"824743fef9062cbe4eff26807294c4438de79d25","_id":"turnstile@6.0.0-alpha.4","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-8q9NEMjXoT3Uk0rxlIWMX9kL8M3VfulGSpynh467BvGAy0MLZSPGv3jc2HpdReVJXt4U88Yzs2Sv85pkI3OhLg==","shasum":"9023a1b9c55c1abc732ee82b271fff0fde7e227c","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.4.tgz","fileCount":7,"unpackedSize":17303,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSP+CCRA9TVsSAnZWagAAHMMP/R17zfku8Tr2bfNVTvqZ\nKrE42sC76XNjAYDgHNSCzpyAHbp2d+82pgcXgZoby7P+gRignNdMSFDKYp2g\nOf5QrBLOQKN5ykjq/ZCb8SKLl2HU7psDlLAQfl9WSBCdWHyXGgdQ6f1UmnJY\nErk4Xzu5VvQNdvPgj+M9y08EZTQnZCnTVqHS3oCnDMIHFip67PFpvRHQKTH0\ngD+fppndE7IA4nT6rkArzdP4Cz2cG1ENoNOMKf84lEiCtB3xvbQ+T8J+Jbwi\n95r07ewsM3z9nkq/0V76LUT2DMGjWAk6ePFbK093akMOXTt7DTR3+oZdhgJu\nrpi8FAdOCP0uOS7xG3kagtn/3x/7PVm0KW9Xo7EtfA+y81Tjs6QeOMCn1xkL\nEaWj3X7+PLf9N3h1lQK/i232cAauMWJ8qI33IVUNA1W/uoJprSi0X2c0gJr1\niU4cZ0AcYrqVxkdfGcbVE4kAMDbTaMrEeKp+tAXZ7tchrjfJmvrmdg7qp6eO\nsoIa29mM1bsFWbqVl5p9TXKjESFddwNrOZBnB1qgnHmVeC2BXZdrKEvJtvAb\nfXmvoabPuC7HOS96OOzSSAJCaxAbG4UlXIxQjLj4/j/Iq5BJULty9Jdgjdl4\nFsO8Tgla3aOMCF+so0wXY8QFWR58+5OTn6vNR/lSxqVNS5U3cCJKsvuDGzr2\nhlqT\r\n=JrIu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCgU4GUbmAUsOjMGP8DxiiMOOTzeRN4o0bpy2SJMUq+GAIhAJoynYekfkcpvNa8VN1yICpTxEB4y+zdwpNhIDgqPHW5"}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.4_1598619521328_0.20445944111055736"},"_hasShrinkwrap":false},"6.0.0-alpha.5":{"name":"turnstile","version":"6.0.0-alpha.5","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"avenue":"^0.4.0","extant":"^1.0.20","interrupt":"^10.1.0","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.0","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.test.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"ac7add21f927d80b1fd6019fcb722c04dec89ed5","_id":"turnstile@6.0.0-alpha.5","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-yohr1/6/GsFDscBKndF++5ybX4YuJvJ4BLIAnycSiC0K2QrW51Z2WU0iVahCAjFgPoQazJs1GlI/rTf8ZCRCfQ==","shasum":"d4059d94613ec640898781caec5a9bd2159cce05","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.5.tgz","fileCount":7,"unpackedSize":17310,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUdhLCRA9TVsSAnZWagAA4TkP/iKqHWFUfwT6YQVXyhJd\n+PvdaYBUErUg1IZ5HIxg9lW58qiT+Y4du/ugopIJw1S1Yr9d61KHUSarlEnH\nvAa8CXMuaCwxWl1HfLWG0noBvJIz6FYYhnv2UPGrXbuC1laY0ijCg9MOO29c\nbhtrDwLPp62R5F9E+75UdugDi06+dDCqIIKGMtwQLmoxkawlZFhKvZVV94Z3\nMTvK+PA1JGw5agkfMspq7zV3/IR5F++e27WJWq+589cGugiBHF4z/2857mUg\nKDvjtVpPKP7ioLFoYkiG6nS0RnUkM7h2fNND54wyBJPWD3tbp9T2/skdBtcC\nMK8V/P/fAGjUoiuppr4FR+o0AW3agHNGKH+tayiHHkIkcvpIAEZ8M+Fa/OCZ\nlJh61IVjRg0UZpTACZoVwInK1zJ+giRwaWg1EUK6TI5nh5ZMrU8qPvpYfduo\nuS4y6fWnOZf8pHljbD3oPs3LSrS+F6sxJ1G8L0w37WfLwIZIUJJspKMOmrYT\nDd55FZmOh8tPID60TqHyi6vmGR0vGcG4DO+M50vc5URY9wnqNFaQlS/cutZt\nUmIIWwkNil9KBBOz/5yAi7z5VUz+hY6pwJI/f9gFxSZ5uGOaLV7eTeucg+ik\n5Z2Z/UvXlYG75/60vyW/7SUi55rX0QCOfQ2Vabj3fWSVImsKdGOMYMel8ofj\ntDAF\r\n=vp2U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHrEr9CN9NhlVjLMGziAnWaVuuaMxwNNrhJ1VvZTBJ2KAiEAv/2EKmLdzH1OD3BPo6VMC8Or9MD17wWNLUg6Nmeufz0="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.5_1599199307568_0.023516650076766954"},"_hasShrinkwrap":false},"6.0.0-alpha.6":{"name":"turnstile","version":"6.0.0-alpha.6","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"avenue":"^0.4.0","extant":"^1.0.20","interrupt":"^10.1.0","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.1","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.test.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"bd105cad06f1e65dd3523e8627ce0515d622ec9d","_id":"turnstile@6.0.0-alpha.6","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-2t1MC4XlzA4CYzPOG7k/eeV601ZYPT2DSFaP2tTlIKzjR6G6E1vi70jtnPgs+TGs6L3Z0JDXi1UQWby9vNBSxA==","shasum":"e417118a93f30a49138cfe3b13646c17cfe3c78f","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.6.tgz","fileCount":7,"unpackedSize":17310,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUegGCRA9TVsSAnZWagAA0HsQAIKfIdyiYqhKCzL5BUda\nx4FcPrw7a85labGhtOA5EcT16NYv7WlerbQlgZsWLr5lBjXpsWhh4Ye2RtWL\nspgW5c+I5yVEFjMvy3V6MdrWvtbH/eWWZgSfwcN1TS6bd5ktMKnxnHjVPXgJ\nEj9rkGZQ9TuJmrRuKsUCOa7UB6J+2eqMkTYJSQ9s18VDHMIi6HLFfn9I5JRS\nDSYprWRRrluYMFNz9pB3C66v+GOvT6+hhmrgOdprNqkIB9BFTBSs8vvFtx/r\n1qDA+DzWwlIax/Ztx49RGcXHNlT04Dx0CN4zhdSqiMNwMFXRehB4lwYQKycA\n5F0iA3P2HoPKSkMciRpJS7SuqbHBGPbk4foDhx/ni/+pjaNfBVWrFhmslb7K\neGpwFjYkMfqed5XYcGbVus8gzIclqy8tZPTZ1T4PdBkQD9UNigKCoK2AFs85\nN7UsNG/ob83OCF3EgG7PSuXb/CSoOnMJPBdTbtnm9d1/zvBGkRl+uw8nxxGY\nd103rQDZPFiMiuL30+qioHODGrhdRTzDx0j+8DgQKVXjvVF2zywCGEzacqmo\nb1K80OQL2rnZNdUFaJZsuVULyAZPTFwsGTlUsbG66shnA/7W9c+1ABIP5Tq0\n7pbBWsI634mVR45df4TbqgHbdHbur0ji6OVxlmiSSWqQdDbEzC3AYm5hFImJ\nbb7V\r\n=/zHu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQazjpRIL6Dk7Pqmoag2RoDtl/xOPqpor4uVhNe9VL0AIgf38Wtr4RizhTIsOy8pGFWU/fu8SxxJdXks1Cx/Z+GyI="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.6_1599203334289_0.17519105861538553"},"_hasShrinkwrap":false},"6.0.0-alpha.7":{"name":"turnstile","version":"6.0.0-alpha.7","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"avenue":"^0.4.0","extant":"^1.0.20","interrupt":"^10.1.0","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.2","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.test.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"76ec5e53a2c8fa17fad72bcff93ddc9f37233e0f","_id":"turnstile@6.0.0-alpha.7","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-/vxMNlTrlavKZUgGofQkor6QAY8T5D18thfrho5IPjU87cGjqJagLmfgPXrWBFGgxdzed+3QflXhExj3IIgT0w==","shasum":"4f0aad7084b586e35a8ce2c95aef801d7c6ad79e","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.7.tgz","fileCount":7,"unpackedSize":17310,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUeq9CRA9TVsSAnZWagAAu74QAISfg5dGUUrnVBBZLv8F\nkC1Iyit/RMFuD20pVWcxS8knWy+Y98A2/bN0C5gpGeKm4rW9S0xNIBGyYHL5\neiN/BPIpmVjEj1LMtlrhGcxw+lys5xxxgqshAIXtpp/2pL5r32q8RJ3ynBHK\n9YOXabWqTWrX0wZciWW/zqOsLO0PqkkBCARJUvNa2KqSRXDZaxC/1tvW9FiP\ngQ5oCaYig4SdpP1oJ6cO8w5aW+L3DbWBkik0/GPTajDQzEn5Jo4LiDLTGCag\nBOmVlzYpeLsl9NBGqw0hsINW/xduXL9kjUkIAi8lka4pIRsRuCK4z2f2ykQX\naEEHq5OLHy/gpeTNa6O1qVDfhGJeFy4Q3gC+Cne+p1akrS+0e7W4hA5luIN9\nWeqeDzAXnTASyOUyBRl5wBvOxRgNPsjAQEnM+6xzncLyjkN+VgGl9ueyzRDL\nNwhi+Ub7LIODoi/uLY5jPhqEDPbARsJdLgZB4C7bO0kniKm6bweURxBW6Nc0\nXakOum5RQiujf94IL6Lsei5uNQvzMVuxoVaKyreo3ItbbAtfJNsRgCa0lLNr\nFtqp1WNN1CG1rZyqSu/2MKzFZ2nF/My6gmr/lMJTKwJ9kPU41ZDFG2bip/78\nwqwVVZ18iD7cpPlmneFV0Dty9gMJR0JHKAfmGIrmRmnZdHJ919lmS91zk72t\nr69p\r\n=Wy9s\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD2G02Pvfsc8zVDeN5yAlNvmqjcp+4FYA7WsQL3PS3/KgIhAMycSpwrmZMR+A3zSh3bTDa1ryBd3E811nuLk14Ia8aL"}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.7_1599204029197_0.5178471566688971"},"_hasShrinkwrap":false},"6.0.0-alpha.8":{"name":"turnstile","version":"6.0.0-alpha.8","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"avenue":"^0.4.0","extant":"^1.0.20","interrupt":"^10.1.0","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.2","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.test.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"8a409cf9d2dd30399afbf9f0ff59b8623bd8a07d","_id":"turnstile@6.0.0-alpha.8","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-8bwUvdMeBQ4CQhv2ByD/Iw/0AFgm2EQcWvKSs9K+GzQdbgpFmr0zZixypufoNfztxWfzm8x7p+g0lHuT2hnjkQ==","shasum":"cd1444e02fdc265ad0befcaeb2837c962de141f9","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.8.tgz","fileCount":7,"unpackedSize":17307,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUfJzCRA9TVsSAnZWagAA5dMQAKGPfSsRDegM4OXAQJZl\nIz6NzDELmdz761o2B9mjQuikTCDxrER31KUwUEv7LmB8C7vzGvERZMf5S0YG\nnsAayhZ8DQm9lDS5BQm1++5FpwsNLcbvC7X+5oGFT5o+WOFK3NKo0nYHkzq+\nSN2f8Rmr+D0xB72MkEcl+CQT7oUA1017y1e29uJofvZuMfSbLZEFZqTrJWml\ntS5R3zWjtcTX0s1aVKzmyTkZ1WZA2vEqaAsbb1M5UfYySG712heTzsGxAccx\nSstsdJ5E2qw9WRBeavVoHXWICOP50lH3g2Ed/BoreEP8Gw6ryXtKNaBuXgMt\nMQ+MtjWchsiJvPiY0R3YMH8z6off7a6CW9XkeZNe0CHltD1ErLlsIDKjVpQg\n0O8oT7+yqSnkATgAzL53fVaPodT3QbcKTqW+I8AZyYSGbztJq5A/+wF5SmwH\nQ90rIp4PEaAikabAFvOgKt+36R1QMXBMkRwhel5oduEl6pBDaOTMzNZTykwx\nH57gtkuvTz9yWT7999FyqzjlleOMsgFTOWK9GzwyqSDSR3yTu/H0y+hHCUa0\nCcS2uYT8HiwUZDcHSVaK7DzdZkFPeKtp0YZeeKjL7boxooEDbvexMdKvGgQx\nPltgkshQB1sDYkyxOKUieTM8Jpf8kFIZTYePtO9bCcuyBnzcEOu9z0aQf+rY\n8vye\r\n=cw+Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICl+DY4e5NsgZAVAHtqGGTazD2btfX0u94JTv4q+P6UCAiEAmobJ9GXHSQBAESnxxehhAuEUgxFE1J6HkzlNu86ynrM="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.8_1599206003144_0.7587069543821572"},"_hasShrinkwrap":false},"6.0.0-alpha.9":{"name":"turnstile","version":"6.0.0-alpha.9","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"avenue":"^0.4.0","extant":"^1.0.20","interrupt":"^10.1.0","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.2","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.test.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"2d8723e7ea9e55a287250e9fb0e40050ef47dc40","_id":"turnstile@6.0.0-alpha.9","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-9RdnAFUnuhMwqJ8dcmrdAsAxRqJlNzFL7iATZFAGC9OAWWTvgAq3zLZF1eMuZTt0g5t0KufkWuKqb4VybeKmiQ==","shasum":"a26291e6eeb92e9209d4a80c0f997d1ec12d6d60","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.9.tgz","fileCount":7,"unpackedSize":18399,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUxUgCRA9TVsSAnZWagAAVGgP/3MQDsp25I4TifxSU1q/\nJ7L3wzv0PHND84ajmBnQE5/hRA7HhLi+1Q8SAALrleHVpzmKSE667yy5bfgx\nS1pfBZo4hgVhljbnuCe+eEX2Sxdog2RRiS4s9liVN/uHfBVTwhyaPvBG/8GU\njJZSN6jcY+fjwV6x2t/RO0k+6fYUlEi3JUFa6sEsHzuR6BKAX+IRXy1xOXEo\nJLxr4WC6zQKTpoSuts5Eqz4y7Q9YfocRFila9E8YCq4Xqb/M/paTapoEX5il\naS/PZt4rqssDLASk+IWVoqCfzpSS9US5bcrAek0dTPBExYi0xuRZbAnqiF1x\nJe3NX39pwnyfypYxUopuvFHGaJGPniMJpelPoCKNbODUIY/EsZt+csgJDTuE\nR6ChlixgkLODVrg7OM0dpJ6Ztgh7OY5tIQw1HjB26f0vwQI3yHYS8tXiq9p6\nRclrWbD8ElNr0MsuBQwou21fzoftQjlwI5YXxr8376d0sg5J7bMXGf4p8gRq\nzoAvf6qfpA6tMBuH8I7JYtF0mTu0+9oZ81ty50ISGf6sNso0oMzEAAvftG83\n+WGgZwVCOnaPhxe6qKMZIkBnqmxXXUHXDtgGYubXvgi1n1tYjEa/jJ+W0hDy\npHm7puXx44x7rAjV6FI33cCOMfexGMM1EQfsO6V40pkhd2FPqBgYasOj8yn0\nMlti\r\n=MaLW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC5Fi9FrSWa1VKeGyHwFIFSh0OLmV6GxnHDb3hjTdaD7gIgBl9reSg7BzHyCLAKvwdnI5oiCtUQK//hOUjON/U0z5M="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.9_1599280416108_0.506550128609891"},"_hasShrinkwrap":false},"6.0.0-alpha.10":{"name":"turnstile","version":"6.0.0-alpha.10","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"avenue":"^0.4.0","extant":"^1.0.20","interrupt":"^10.1.0","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.4","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.test.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"a4785ee8009eef108d08f5dec02ac856decb30db","_id":"turnstile@6.0.0-alpha.10","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-BZhHxb7ErnVyqH6WhkvjicY3kLo0I32YBnCoOZCt/m/cwfSIKhoTtrBKZsU+w4kiTtyjK9I6C6+lZCcmLQt7jg==","shasum":"1daeee9ee86bea9ce61c484e391ede87cc92fcdd","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.10.tgz","fileCount":7,"unpackedSize":18400,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfU8/iCRA9TVsSAnZWagAAzzkQAI4VCQN725HI2bVE9KLF\nswp52UYwW2rECTEu7wXHVQZXOLv5F3i/ILodcE2rxCZlyj5aInSb0IU3aFkf\nRIzZ8zyJeDqcNChtZOz1y/WabFxq6RGbvbt2xCqnU3+KjdKKJJtqL9PKA4Md\nNPOydHSXcaAcepRb4T5VpzFlMpt0KNld3Fci9RSvtDC209TRXxBdTpmGB6pF\n+mz2Hzr0YMRLe6Wr4AfIaq5QDMkza15HDRwipyTswioVTQLcR2GfvjE13tPk\nUx3mJM+Wnc2Qx8FrBXKq8Fo7Xn7tysLQN9EubW0fJ3GuJDwJ6GJrfneoO0rN\nPu5e7MaW14RDuPCwEa4W/HTAvG6pzzwMENFOUybRz382V7AAwAoGQGR5d00v\nNhzEDgf/ZZvGSJFEAT6m2Uog99uX5+GSl9j8z4sXF3HIbGMkGbEjyMKGqPH9\neOQxPdvUwKmDAkF/Co3kc1rUYNKPqD/WkgypPwqOTBIJ+hJXql1K7CVC0tVq\n0Xy28PMw13Ena4IRerFuhRBTg65VAgDWgC37xswZ93mb6cA/xwNVhSltfQlV\nagVkvD7gkFYeeZs1JnewMB/14+LAcs4MUu3Ev2qsovxeAhSesdi7Th64ijX2\nMe78+kvnfFUoA2iH2XzxB9bQRgMhN/yZx/8Byc4t9/IWZLl8nwWKPdK6bYWq\ngPHi\r\n=o8DZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9ulkBAKiXpkjreKnPX8XINfMRQ+4XgIJ7h5sW964VqQIhAOihzLn4MwBsimD4DLqQ7IkSqixnxALvNOGiP8FNAE1z"}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.10_1599328226349_0.44115725661108485"},"_hasShrinkwrap":false},"6.0.0-alpha.11":{"name":"turnstile","version":"6.0.0-alpha.11","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"avenue":"^0.4.0","extant":"^1.0.20","interrupt":"^10.1.0","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.5","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.test.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"16f5f167c771990320055b5b5b84e3b3ea6a62e9","_id":"turnstile@6.0.0-alpha.11","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-BK7GkvfYvg8b6PB208TYSwqD6TIsdkr+b/g46Zsuz+0NQ1YR3VaJjdJ/sCqtjYKTSb4uy27DpvblP0niEN7Dug==","shasum":"b3f614e16b4154e25249b00b2bdbe5afb2baf259","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.11.tgz","fileCount":7,"unpackedSize":18400,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVCrFCRA9TVsSAnZWagAAnasP/07RkxoAFfStdO/CXc8u\nI5YlLipRJ7qXb/3xn0pES/n1TN6ApFDnEVnX1DfxwcBehhSCc9/l3AxjdrGR\nXyrxSOZLHQPuL/eqeYDr9cUOVoy2oY3NYkJu58zrDuYCKdAyMmv1wsqKGiTv\n4nzaVH3nedMl2aBTA9yvooX/1mj3NZ/mcbOViZ9+/y68ZIgFK+7/xUbxIiWv\n1f15G8oFK54VsqrY5e2WDJJmmrD04/1F7JEhRlpiulyfmqyRmeTnqIubG1oy\nEF3uxxiC1dx/r8KB1ExyhcC+ug42nKS+eohZlMa68PMt2wYzKhkZ0xhdPgGD\n0eiOVlXdZUgAfyAAUAXIuKR4K+kjj2Y7dW0s4Bod653YaoHp8rjCmYUSCnrS\nX95TeHstAHGKbs5VYlUYzssXVcK9PnTsrsdfEbIt19Fb6CX0W+pKcvGJdl3h\neETpKBmsSRBpvmQSOfpn+XCS98ei+K8ODMfudt5zGL69wsxKCZpuZn6sErOq\nnGtcCcaLi5mRR3GoRROwDJ+BUPDmo9oRjV31VgJFVq6h4ySW8wKLkdgiNS/j\nwNxTGqCMkX+xIzNDtge5paZsDeO51HOkphDYvvfk/KiTiv80Ksw74feXVizy\ngiFpm2ikYvroHeosFgJGKXq4+vzYoxQmRFkR9E81b0frqSwLYA2VpMqJ7srs\ndGox\r\n=jgMq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGmj65O7vefBEebvFGMLJTv6rC0l4UJ58OjmJUuTapy3AiAvR+ZjnJN5C37bggu6F85eHCTObve2+EcP73RXZGm3dg=="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.11_1599351492577_0.9173766906335241"},"_hasShrinkwrap":false},"6.0.0-alpha.12":{"name":"turnstile","version":"6.0.0-alpha.12","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"avenue":"^0.4.0","extant":"^1.0.20","interrupt":"^10.1.0","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.6","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.test.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"9e612a49b9f5230d1466987e9ec6c3ee504eadb4","_id":"turnstile@6.0.0-alpha.12","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-QF8/JSl3Gp+PT6LK+PvfSGW+Xqw+5+BTOqTW/ulKdqRh/LsJ7U2eVayjlYOtkc/OhlIn0/Rhhv5fDbbgpSIvQA==","shasum":"5ed18b6d29ee43d87f79b143179062be6e1882a3","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.12.tgz","fileCount":7,"unpackedSize":18400,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVKGVCRA9TVsSAnZWagAAiwoQAJ7chDdzHkP/Nd/RCziC\nfa4ZK6chi44zxWQUizm1Djn4LdIGmKJ6Rf7Q4k2SnQe9ZgFfOe+UbPQj5yH7\nHCZ7A9SelRlFNIrBIGDpX3FIBGYpQf62ArQ0i57yyhkYFhxz6nMjUFlYkPM/\nSqW4aq5KVdujaAjMk34HkhpquMNZsvrvlN0FNPbO3clqu7tSSjBCkFjbdpEw\nuRiBKZeKVC82ycij4HIRPmQMjxNz4Ig75NJux6Y4zLhP+OUaAwlN+F6l5I2M\nD+fz4u0kAeQK/Lbu/RCye0OanuO7sh5RrA7R0yoBSxbF9dV8MUkX5vFdFqdi\nqRiPoqIGejNceutwReNSohdOayvlGY6e2f3+vJDhBvevC3IFRjkyJMR/QCIV\nsY5OAc98kh88uRaskAnxfpb5hdeCXhGWF9JepCo9mPov76IdXnpQ0yMqBzGn\nHzfedH6BtUANAFehj0Q1PoumLN8nh6JYHzk/vlc+OCKQfmtaXILC+2qkE6oR\nDToNj1P1nS8obOa3kB6bfjoiT/duYAOd+mBSytxGjHh8rB/xlQY+3xDyWMvN\nV4Osrl0FQzgU2JELaQWLt6jmYrMHNI8WyGIqycOuhWwBM2yJIunnoA2qRdiB\nK3XW8K4DoH/1F5pW8RuJi2Dium88zaZ/4O2y4QlT7olvNALbtFENsOoNy3xm\nTNuI\r\n=Q4Ea\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDrq4PGagZ9V1ThrH4o++2I/qudN1b48VsxMQZgYZs/mAIgYeFDsO2iM17qsUvvR9Oax4eufsSCmUMcvgQXumBCCv8="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.12_1599381908259_0.42811545949197227"},"_hasShrinkwrap":false},"6.0.0-alpha.13":{"name":"turnstile","version":"6.0.0-alpha.13","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"avenue":"^0.4.0","extant":"^1.0.20","interrupt":"^10.1.0","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.6","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.test.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"12582e72b97cbd3452b874c104f83c287a00ee15","_id":"turnstile@6.0.0-alpha.13","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-QHbdbmHSFdj+Dr9U4r4wLmO4UT4dEB2O0hA91cJ1ykDOZJXCOoZ3oKzy+WfY8pLspWeEimYghe8GeaEmuUClRw==","shasum":"27564164a1fe55c01e9bc526d0d6a7919653944b","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.13.tgz","fileCount":7,"unpackedSize":18400,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVKwMCRA9TVsSAnZWagAAyYsP/3MXeiDyFn20pMmhj3Cn\nfDKTwJD0yQKUglc13GpanVA7YZisVxFmy3NRVTlZWpvHuzV+8k1H5m8G6RMM\neDAlhcAQW+m6SBlVWOV4zA0KmqCP9cQl7RpvXpp2TvckDfTofmNYcNBnKRnT\nvzF2VLbBa4qhBHwsJ3mCsEJ9RsjoO3Bu1iDsHCFBecDDDTd6b4FUkT7AoSbz\nQnneBlNmRMk+9rJXe+Urj5/ht3bdMurLAU0xCNwonGdz5MsbyNu5ZOFQLzBA\nggcupaALeQiK5S+oRvMiNgUydl0s+HNHvXgK66qqQGx+MGP2XTbbP/YDgqS+\n8pDz5sSWTEO8Dwk4KAhx/Gfwy381Rb8yfai1OFnvvnrGAqukYHL4ejaUj9z4\nlg0q2gh3fUsMcpoXWm1UpIO47vRPSOG3E8LjybV51IdPEJ0zklG8Z50eNYXF\nxwpZhSK7evuvsG5y9G5iy9Wo5vv244hNxW3nUZzFFDBBGVOfwZj6d+22X94W\n0rG9c5Sc/tRrK/SBT43/Xc2kMHiBALvJyxyIB6x1hAt8zAtA8JqPK2awu5Jq\nmbOuKOcnEe6w90KuZmTPGtIXT1hWLTFMy0jUSgsyzLzPBqEqbBVqLUGkg+De\n9u+IAfGasSmxTZ2RlHYvRUnO7ctotJ01cRBhO7mu8Bkh12GGrH/jXwbTZ91j\nr02M\r\n=gosX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC/VwgAHt4nOsDI9irPYrzjpSqq56GwO1zanoqF5TX+PwIgHtqD1ZoiOK/d6YGQVAyipvYDgYHSRnFdU2Fk1iD9piQ="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.13_1599384588219_0.9971135850509878"},"_hasShrinkwrap":false},"6.0.0-alpha.14":{"name":"turnstile","version":"6.0.0-alpha.14","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"avenue":"^0.4.0","extant":"^1.0.20","interrupt":"^10.1.0","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.7","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.test.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"d23ed057a452370fd77b7ee10d4fd83196e00537","_id":"turnstile@6.0.0-alpha.14","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-EU436F2LCYBpIHSnoo+90Y/w1ruwv0dC6fY8ihGLFevXXu2Of1vpjRusULDKX+pea7LQWiMU2Fau8l4FUL49gg==","shasum":"4acbfdd09b6aa512b9a03f4733c5bf0c54246d80","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.14.tgz","fileCount":7,"unpackedSize":18400,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVk3JCRA9TVsSAnZWagAAuRQP/2XSe6pxSNkDWHlfEdEZ\nDODzWLEB8R/VMmeTuwgfjligecxbLyOYynqIm4pgh4gDHUlBhfq6Z5blZVrg\nMojgTkUXNUNzNhFO5HkVxK3HBXUx1ZxkfozbGer55A9yIXhzvpGPoOnzpePs\n69TCLCho0w67ltdrjDO2/HDKFN0PGLj8ecSiacSlbJ2tM7RGIi3IHth/D+zr\n4GqsQZA0QPf8h8Wqkkx2HHgiZoc6fhuLqCqw4W5Wd1PtN0cy/fOIlJGsVuSy\n+r5pZVHwEpt1rUup6ZiDwHoba+Ugn1jSoANnPwbk2cUOrvnYndmDWEbxkecS\nckfKzDIL547jT6Nrr+foK51rdcIv0X8XUbEK3Y0sHQMejK+jdbdRRLUV/uFq\naRg0LUUhi6Sig7e125fXgWHNTISPLa79MJJgRuA6zN1YnO41TYWp+D+pN3Iw\nfMj0asN4L1wnyFxvOohCulfd/2jelh6j5DT4UlhYSMmGiS8OweDiSTKYExSz\n06GIEpvUf+vDi04lwZSmIy48aIVx0YWhA0Xrxce0qb5MVojmBdAl8UzYBkVY\n5ANCLEJeoC4r0cGsov1mzZRugRKfHqR6ptapCHlis3Js9nFlzsIEAbX9y21W\nEFhqhGZ6p7Xv/8JsexB51AXhHV3jb2fXVVy8UPM0lVKjPnEtbcijfx1xGj32\n0Utk\r\n=KK5Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDVU5LSaPXa7Qks/6QstXNOJekPe8WsmpJWX24iCAXCSwIgAujdtJxgBZWtyE3JPTwydklddV4VrF+pZJykF7hlCvA="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.14_1599491529347_0.743267555615964"},"_hasShrinkwrap":false},"6.0.0-alpha.15":{"name":"turnstile","version":"6.0.0-alpha.15","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"avenue":"^0.4.0","extant":"^1.0.20","interrupt":"^10.1.0","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.7","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"221f146fe518175b99cccf56a72f835cff1a2c0c","_id":"turnstile@6.0.0-alpha.15","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-YvjQ05BVhC2+3sdMCCSPbrhcmtQQbTV3OiQ5lIUOv02WpGCD/EgorNATeKEXmnAckJrzV8iTSFySorwy3C5gqg==","shasum":"404c48fe0a57c98aac1a1cd42b0449d040aec032","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.15.tgz","fileCount":7,"unpackedSize":18397,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVlOdCRA9TVsSAnZWagAA51cP+wVNNXF2PWty9nu1hcJK\noZ8Qp2YwKPzj1oOPKwixygEKwBmzjY31c3sbC/qb9lQ26nmDehYQgzj+ATvd\nQkXL7Ayv0CqO7o+dxtp7PAAVzvi+Hx/65Zh8iPBnRJgk5tazUBB2/5x8XiTl\ntjAFasGlakPu9NIIJecVCs7Hyw8zrSaJehwE2+d2PeEpWxunS6J3ZsTvipPQ\nQCg9r8QnkIHfoupZSsZ1dDYJ/56LD+UVLydGOoQSYXJ4Dy0JSml0YwSsGAiw\nzNFS75mqIOl9MMIwHCDLriMVpebkD+sicnWPeMJmKK9Gn9zrpAqNA6UrcN8D\nEt0PzcFniOKhP15aNdsVfPnW0BREMjVl7vRGwMn9MY6on/ZqnufRnSaFQqRX\n5oojA+yOwWlzmogegNrgOVQ7iI9nLJPNUzgsUcgxK2kX4N7tYKNWF3nx8uYt\nlT6ziytebmKL2DWnX1iR153hyiYaSRoB9k9LFeqS/2vHs3/5IxPt1UOMZdHR\nX4xh58E1+OTpmVwUdqHbcPYDsfbCK8LjMmNhTUhksHPz5u42sw+uMAiPuLzM\n6WCyRSKfvdlDKN7yx3U1OLTVpJCY2eceJgZvPwtYTg18hQE+OxxWyPwggRQY\np67Z+4SRuWqAEOKjt2hXkVdsf8pru7pjer6LSMZ4SeekLzrnWNkYXb2PqTPx\nfLp9\r\n=QE7T\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDClq1CWF4uSaKVtcoZqnG0tFQeIr2Sf+GC98pCZs/oYAiEAr6eIMohk5+DFxupMEHMF25/D/X1MD9YmT/CU9F4PnAM="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.15_1599493020834_0.908584892673493"},"_hasShrinkwrap":false},"6.0.0-alpha.16":{"name":"turnstile","version":"6.0.0-alpha.16","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"avenue":"^0.4.0","extant":"^1.0.20","interrupt":"^10.1.0","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.8","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"86a947dfa0ce2ef86d0698411d5c907f36d83bf6","_id":"turnstile@6.0.0-alpha.16","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-Zh7dE7wjIKjnSlzSAFxFLjZyXvGo928yKp/emCcxQ4525+yL9mryWAOxye+cxKH8piaaqpFAYDnvjghDFHOm7w==","shasum":"8b8c477c8263fb9a132948665303a13d09347324","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.16.tgz","fileCount":7,"unpackedSize":18397,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVxpwCRA9TVsSAnZWagAADvAQAJ8V1/RwyVnyVQ4E4ztf\nuAbUDhT4qBWo1im9NmRPPftFpe622Qt1sWY1+12wDawrop6l/HJzgVUK4peZ\nhN1X2qeJKqWwFh57yerGYaS7WEcSux518QnEtXys9cmbfTzVAIOylrn3jJfP\nLVRdo9x1z6JVEBaaGnaHooZKIQVoSvhb2S5NNmGD132J/O2qk9HrsOMr6b3s\nVBDAMaX3B0eqZ5XNwLl0E0iTFzHvxN2IM4xvYHJ8eQyvWopBA1rlhoy0xa/7\nTnkPP++/zjvsdUtQLFlMJumYWbIwLbsRHVZZdGMsxv2KCxsbIERQkA+SfACk\nfzuOVEfK2qyAIY0WQkvn7fdthQuwiJbt5X6q5S4+X7G7mwFmO8e7iVVr0YdA\nARE/rE0m0cA01L9EPykTNOlkGRJlVT4Y3QfqigjNN2WTBsy1em3GCyNlUnS6\n7F8xCR+h7fsCJFyU5M52etGfyWhl6kknGHzCbcOuvL5+ccXS3omJh4KMOrUF\nXb+vJ25++HN6GmY4K0yPJpFeNC94jDaytgtEEG+PcRyikCSC5iumTQrsIach\nxDw4WVv3mC2DCALafaVpvucioaNR34NnHjY20OHO3PklHkpua24lDxPKWP3A\nAIQCgh2k4oY5dB6x18xH8JvpNa0wXPPzBJC1RrMGTiKRfWOcgF8vY1fM1W3A\n5E4U\r\n=Flbr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDr54MgFppTmI1TQUCseQra5nl8jGVc2OmBxTYkwPSQ2gIgTDvgwKM9o7ke2Z/IwJToKYCyUf+pBBxcKnq9kv9nJug="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.16_1599543919752_0.6927896663659106"},"_hasShrinkwrap":false},"6.0.0-alpha.17":{"name":"turnstile","version":"6.0.0-alpha.17","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"avenue":"^0.4.0","extant":"^1.0.20","interrupt":"^10.1.0","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.9","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"38d6af74735d5c4af4267757da871001f4ac7a78","_id":"turnstile@6.0.0-alpha.17","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-xwKsYvQ5T/8tbj7AV7V76sx87rC9lyka5srcOFqLGU1HHcSQAMkwquo6jiC/fF+JXjMWD4Ph5W5eXrSKJY9xBQ==","shasum":"fc8c3ecfbc1326e7c99b858e34635febb6d7b561","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.17.tgz","fileCount":7,"unpackedSize":18397,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXe08CRA9TVsSAnZWagAAWCAP+wbXwqAHeRjbnt+JaJKA\n+INmAtLc2i4Ax9pVv3mdzoNvY5UW9b2PUzGxpudvKZ3yTnN8hFWEDEV/q11G\n/Hqu8++eMeokQpjlkONmlmlvTSV3Dq1ThV5GM1zs3BcDucwrHTXPduY012U8\ndmJMfBZB/m2B1k39iAdWZSiH7xCvXWENvSxPW5vAqu3OrW1leZiCTRatVGcH\npOhhvPoFH06WIhG9aklBZ3S4Kso+kviIiVzDVkN76SqfQ9jzufZyOQ/ncnJz\n3lStlrmdfWYFCvSnkrEUwkcIW6Xt4NXETJXQT/XeBXhZSdJaSA0lw6afhSG+\nPrTR5xI8FiM1gSeFeNS08yoag0v5voIjl1FaWB8RTrI46zwh+VDVB4jQZN/3\nf8stocKuJXIpD2XzoA3NwiC4JQUtUx29Q8/9kemdxtAPOXtfofZ0NdjM/Nsg\njp8f9CJsWJo0mZHOnLsJ1x2loWjVhsxDZsAICYCUNbqa66jmpo2pP0zfivth\nGGsKONN/2zFzy8Uh5Oa4frttjeiuRUB2E1sRgYnJxAfzk18SLKY1ozKNDEZN\n+eTtc17fy/bahLPI9XGY2+fP/vXs6MlIO78+5lj3ZY7m8T0809/SfT7f8CYJ\neIKYOGQvW6rTlADyn9DKUs5eW99XdbE3imMqoMzjPmwszSoKZxzIYgbHh1WN\n0YlR\r\n=kle2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIQD3cqotkvqqh0hMv7ZgzlTKVG23zWGKqUJGJrftMmhXWgIfGhWyHqJgUW69Y3UNP1uo2BLaUrk8hJ81c7552GS2mA=="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.17_1599991099686_0.7788138326763752"},"_hasShrinkwrap":false},"6.0.0-alpha.18":{"name":"turnstile","version":"6.0.0-alpha.18","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"avenue":"^0.4.0","extant":"^1.0.20","interrupt":"^10.1.0","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.9","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"64bed3bfb2626a4ef4ef39bb5f647e5ab4f87f50","_id":"turnstile@6.0.0-alpha.18","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-wdJ8JoMHunJUqhD+HqMstuPa7Gnnd1fVb7Ek7qwouI1cExCGc7+STEQIlAySG858uPBJR72FLIhHHFcx/fxIrw==","shasum":"9085a8872a5c37a05b33aed11ec0a207571c1f2d","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.18.tgz","fileCount":7,"unpackedSize":18397,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXe4qCRA9TVsSAnZWagAAZb0QAIiOMR2MTM+uQ7kN9XIj\nEnA4IUF3a8Wzp3h8hfDqu54d4bTtNZGMMIei1EfrLg+QeLDTo9gr4hmloojq\nniJnTAwrNJjKv7Js88j4DD337k6m+La7ldtY1oAX3AVrRcQouweBW567MQ5b\nfu/EnVnBc21LYcIxlobW+zXSf+gqs+8wP/1A7LgWlfN9KOhxauKhNUEqmFIu\naBTq8CchRbK9mNeQhYk7P+Gq7DIJheoPgvTjbkU/q70ttOqr6TPdKNIO9vpR\nX16MG8pzbgxamm5kBn70FBbwSSz+LuV7yowi+pXBtlG+rSq3vUyuyGljvdaZ\nKsSJuEKyGCNPwYdPo9AkoUsPAS7FxrenWQfyGNdjfq2FHPyIOCPDX2UdL0MM\ns1kuqqSvW2HGzZmRsKlS8awpd8jirI6ZXTvhkltCE+uJ1GDr6HHqRjvQ/798\nrK4w2zwOPNZlg/a26PLBcwMfar4M8Ww+9UfzHkfZ7BrE9x7IsG7D97RK1RKB\nu9H484j39GJjkzfgGlzfQhBupkQCPgQpRC/aPp8c9IeLt+GnLJFdngTi8azo\n3khs1gbnyghnBqfZJw1fdTl8rPKlt7RT0yHzDQh0RvAJFDe7OSrw07tn1NvW\nExcb2Fa8JpyMaKHvHSjplj38fBXeuOKl+o2kOcjPeD5zNoOfIQqgyzlj7paj\ncj6S\r\n=SLnw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE3E7iy71z9+7qgxNO+84k0o3xo0YyY+FI3cB9n++tWTAiEAz8Erf4S81RM8/szi2Es/y9Bh7kzoaGAD2UGvn27aVOI="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.18_1599991337643_0.45316608841348827"},"_hasShrinkwrap":false},"6.0.0-alpha.19":{"name":"turnstile","version":"6.0.0-alpha.19","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"avenue":"^0.4.0","extant":"^1.0.20","interrupt":"^10.1.0","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.10","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"73e447c307398a97914e8f1f7b88cf6865e9a94d","_id":"turnstile@6.0.0-alpha.19","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-/D2m5pP0A+45bdRtD7IATzYLa1BtX3sQhlFgQnG9LS0YLVJluUSwD3hhArRze+inBRZ/G9ehKA2MxcyiCUuMgA==","shasum":"61c29c79038a62fb30b041c52795e1fd776debe1","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.19.tgz","fileCount":7,"unpackedSize":18398,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcE8PCRA9TVsSAnZWagAAwNoQAJRqA/OHmbbIGZgBOKHh\nDcia1DdoKO5RF9w8/TNOr3tIhJ/+vm8d8i7rNvr360VqZLjv6WvtDor2JLdR\n6ranc2UdbHaFXNzspb4+7+2y3io3Avbq6ngkA3+b9pVYOQdS0oQiBeTddVdz\n4OtwApUL4kdLlMdUfcs91flH9WjD7bSbhrUDs397K3cXhDnBF17YMUNVk1/c\nbwLjjR8twKUkMnfqdA5mCBhci9DrgEyn+2tWYjjuD3ZsA5kpRZLtagppEcKD\nLlo2Jd3CRmqQ/qRPTIXza96fOwx3SDEQQdlQblNVi7Vrq94Ltrw8cVa84Oky\nSm1GsH40BRf7CyO6GfpYsh2BjZ4odOpo7j5JGwhx2cku9PvFD81TbZgRVydf\nG3rSsxs9+MBjArb4Jp7GNI251w3d/hDgVR3UEVGLKeKM+cGDC3NQrElTqjX6\nPFduHGaUBMD8wRq1CmzxG3uMPFKQ2E1LvHRVvGutnMIAhhHTYbjBtPSm9q7f\n+5tHzM4unmshBDsXKA/Ymt8x/9cWk7iJP5x2gEjqsXLzNyYJlxqcgF5cBSSx\nWxZriS3ro3GPjruPQQITV1i3aZTpBz0Y8YaM5F8LKLTDUC4fWoZjmauzBKX5\nIKqp9+h/1RHb4cdEG7xeCM/7FxbpribFE2ZTulATlVsIrJzIekvWE05EIIIF\nAeyy\r\n=fJ4k\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFeJXL9oC+2oWDqTiF1f2QahJWl2rYfzDXsQkpxhc5bdAiEAzuwEHQzukPm6JUNpMgW/fnITrAzhx5lTatqluxuCRIU="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.19_1601195790908_0.05861593102249296"},"_hasShrinkwrap":false},"6.0.0-alpha.20":{"name":"turnstile","version":"6.0.0-alpha.20","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"avenue":"^0.4.0","extant":"^1.0.20","interrupt":"^10.1.0","nop":"1.0.0"},"devDependencies":{"destructible":"^7.0.0-alpha.10","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"32adae6f65dcd5b30e591ea22c1ab5123c2a1f84","_id":"turnstile@6.0.0-alpha.20","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-4No/ITU0FORW1flLqDAuXhat97GmqdhdJghqfcS3jqirP+lM74fwHNJcWLuYRgnbrigfDReDvprlNLocMV6rpQ==","shasum":"0133565ea4c394df43239b2ebfb145d87105f08c","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.20.tgz","fileCount":7,"unpackedSize":18399,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcQz+CRA9TVsSAnZWagAA+o0P/1T8M3bX4i6uaLXmTCan\nqg6Jgg1moaAxjbRUywMmmtGJPmubFND1S9iHn1jcBLIfcJXkiHx/b658PQzf\njDojM9RZLQUn/w2JFicUCvRqlkxKCJtHMBaxVylq3ZPWoe0K34OFN+zLAMQV\n/IhlEHbruh9V9223kr7Oo+URpUrA3hnAQwwn20Vs94coYJDokVlsMPyTpGOi\nksWvAVo17qET7P5Zrx/wUeLlrFlQsXgYTyNetuSaBZHS4SDRkRA9FQix6bS/\nzAnOXY2nCYL+e3R2Dl1K4yvqSyAL6trXAZNi2gidduLdv79CW02WIMvE3g9f\ncspEbwr90/I8ecR7+JPQu8lwNafA1vR/Z59LoO/ZzYuBFl23T7t+v/pchk9V\n4u5h8TD81jnEzRmD4PKNDAo30ilqqXDufA6IhJhPy+OJ5ceNlZnZo519ky/j\n8aR1Aexiw7ZwHV6YZjhLfh0l68BT3DKbRvI87a8RBHsMcnWZHctdWyqcolOy\nVubGTJIC5vUWIMeR/7XKsWBRzy2Ba1iGdRCuX+wSrwR4uyJBrrVXkW1Se4U4\n5UfTqMP6rRb2VYawQipkLbmvlZHJA09Et+R4ImbLu8E3eI1utzNm2/eExmbP\nK/DEIEHDRTONdNZ5DbTgMj+O3QmBar6r/jFu903kte+eURUHrshcC9RPTn30\n/0rP\r\n=K7Ls\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBvBAhCZ2E6D/DjzJg4QtXrBBUAKKTRhDKVC1ttp7CtjAiBNnMyJkWcHmMwQNliZ9Gmze3K8Ub9Y9CDCDS0ekxkHUg=="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.20_1601244413578_0.2274683189351685"},"_hasShrinkwrap":false},"6.0.0-alpha.21":{"name":"turnstile","version":"6.0.0-alpha.21","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"avenue":"^0.4.0","extant":"^1.0.20","interrupt":"^10.1.0","nop":"1.0.0"},"devDependencies":{"destructible":"^7.0.0-alpha.10","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"e51438b1d0ad5820f119b5db45ffd88d5379181e","_id":"turnstile@6.0.0-alpha.21","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-6u5VRfhtvcMwNkVADotAAgSReCo1ZJ1d61VCRtIZGSC8gPui56+LI8jRq/bYGpALNZ3ksyFr7d5maQvYgDdabw==","shasum":"86232ccf798808b39c0c7a0cafab357ceeca8942","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.21.tgz","fileCount":7,"unpackedSize":18409,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdBKVCRA9TVsSAnZWagAA+yAP/REWvL+TdaaRNiq6nItp\nBS/iN/0DSZnnr5a1Ttl0R4ct/5cHKaSTEOeKq37eTnD4vZ3825Q35XrWorVB\nn4xwJk+MaOsvyZnKY+urCDqz7XWC2IOaD0cfl5GSz/EASszF2r/CBP84zuVa\njStmzxHcdzGmhUvoSC1wTj402Q9bQlewZvyZR8WWTd6LNvY3z+Nw0456iudA\ng1IBh8tuJ+qNHjp0aBixu0ywwqtD9tEZUDgaD/+Bt4N62VOdxl3dxo9kCzEc\ndiW6mZWgsTYO+TOXPwygrhIbxJEzcWcftkGP5zHI1jSwMcSSmhHpAD7XD4BI\nh2nPuxO4a/rIDuhl+4JocbMUSqGg2YpQOVgZAiA71QuZybx0q3zZZiqyxoxR\nqkqUadVBP600vqsa5jLzWB/uSnztA+LTps3DnsV2jFY1h+XNw9vAnv+LlS++\nqD5HwUdRKsbsFMmq8RRFQW4ohZu22z/BXNBN28rPE5BcbZD2QhYtsRIv5eeu\nYSA0AsBET9ML4wb/PK36miwgZkgoJG9KLNtFJyfFAgrnjP9dFD4kmMfvnGnu\nz2ssoI2C4xuJJgth7UkJooPDyAN+eJKndhxjmdshW576OQozg51IXSU9eUMe\nWHAIgbIq1HFIeUvNP+m4SdG10faLfsq+x0fJBX6hQDHsiWFwhFce09IqXWfF\na8sU\r\n=Daju\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDVCnivi2x5IzZ+fIfZlRkAMrbxndoBpQr1QgMYlG6rtQIhAM+bp7xT1ebVqGoNC1HUtc/iF5/EBEZVRrXVTfIlcQZY"}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.21_1601442453482_0.6803727357681306"},"_hasShrinkwrap":false},"6.0.0-alpha.22":{"name":"turnstile","version":"6.0.0-alpha.22","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"avenue":"^0.4.0","extant":"^1.0.20","interrupt":"^10.1.0","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.11","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"328738a4442cfe168dca0830302e9b603fe908b9","_id":"turnstile@6.0.0-alpha.22","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-6XicvKYox1Xk1+H37e7oLUE+xJD6ARbCQ3XxkLbIrXH6T0DbiQ17p3i/NYFzS5OwDxm6OQRI7+0kbOaUSxQCgw==","shasum":"cad964f3a1cb94d72efd449d087ae63baf46afc7","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.22.tgz","fileCount":7,"unpackedSize":18408,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffr+jCRA9TVsSAnZWagAAS6YQAIRUJSG/MR40sof6cPc2\neRwG0VnmI0WkYMrDk9NETr7GNkw4Q5gW4TkdTYJzYb0wuwBoUgx2YHM4Wdsg\nA6IMdRjbtiz+BtiFZTYmSjHX+RvEE4U9YOLeA6B6LsO6f1clJCVT3S8OfOfj\ncWjYwQ3IIKwEcJDBXLee5aHfPLXjj5d9ZWm8qXTDpi5oHCu1UoiU6nwM8w0U\nDEgYsaxoPcHX8+JT7MjEuJx7uBplXh3+W8o6D7FQC5fuJfuoaTkQSEw/Wzae\nsphhgvtKFFQ5GeFdagU7UYvfjfkWwdt/GBO3+na5g4ZxBkH54xSklkmD15Ky\nd132uUwzeH7vItIJfpIqVbY9/mX9EFVw7PPFneFMDR3VHJ7fpvqX8ycanzvn\ndTHEwM/Dbwx7DEZ7Ez30aKK4uHsiIviLLAFfz3wKV7zXYc04Cz5d5SSGa1T/\n9m4KGyABFOoHnMDDSNi9F5n1w5c1qB34oFxiijYUCXp9CpuBja5bKGqXSIhb\nnMhQeV7dQXVo+K3yZIYFYzoD2KKNq23A0jGq/bCBT5Y1mI5vZlWN68pnVhOM\nLTVZId6RCOknXKoOhtxynxe/ZhoFpbxNSXRbujw/WU+5GEU9IdU2R7cqXYXc\nT1+fQJUDmHTWxDkICmxkJRiRl7/Z9wDENPsPmV8sovka6HqpfZqs/FFpAGxm\nMNZq\r\n=PXpv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIANyRNY1JyEuO9KXE6lJks8bG9PgzGKk76LDB+CHX46tAiAIVnpG9akVJlqmd9BjbZ02waqocqWCNl2gO/j516hXmw=="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.22_1602142115094_0.17956193651269214"},"_hasShrinkwrap":false},"6.0.0-alpha.23":{"name":"turnstile","version":"6.0.0-alpha.23","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"avenue":"^0.4.0","extant":"^1.0.20","interrupt":"^10.1.0","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.12","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"92588195b901395a59f7c18fd227cbed775d462e","_id":"turnstile@6.0.0-alpha.23","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-CYQqzBQPjbeM7UszB8vVYTAK0pqR5WbwFcEnrTD/TRPuUzSOwOI5Drhym2s05aHegMa2dUnObmEFR/G0aAr5+A==","shasum":"97937155621f7b9ad1b730507cc84e5ab5007d8c","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.23.tgz","fileCount":7,"unpackedSize":18408,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiELkCRA9TVsSAnZWagAAluAP/3HgWBbucUOuUVlh6BXV\nqXTf0UOKZJhoXNwI3AGjQljuPx49M1ScPG00JjYRwav8MzDZJ+ACKPQ2DF5K\n3mz7dvZcoIRd6q5hfNHgoG8rh1J03qoxMQNuvtwWm4qszArSiS4Q8PMumyez\nV7sQA956CD9mP0+BOzhyCFi2+Ej2NAm/ZDYleBBh6IDYuO8uPyJswEYNxEMg\nPlys9bVaCEKpYv6AxYs5dPSgKUGsCPPhD3I9BMcHnLuMhLPgsIStg9vL9+ZO\naHLkVe5tVZDAxqSb/WlQf8A4o8p0OKbPHr9py5aorClsdgvEMGOtae146PAn\nAaC9YeaFtoHGvQZCml+ZQqnsYQsJCTiLLUAZ2Eung1hoZger7PqApwZtdhMF\nuAkqBrAZlKGpM16Ul7AkGEd1cCIDlLwfQhRwj61WVs/eLUJHuQF7UOTT2J7P\n7YPoqr2dYqJor0VFy3ef4u/lW1RNY1TIqKnH2SZdUHtIF+PX/0B6kVa4RION\n1O8O747gPqla4C4vLcVBBPKBbL1TsMOsd3pPMMXpCu+I0xrbN8Gzz3bsw0N1\nysj5FL8Tk9OQ86ImGMz9qDor66YsFSz+rLFT1cGnzzWqMhty9chzRtxRpG+D\nMiWE04srnb8WTC8jLz28Iv49E1lItJTO3qvZFIxrpOm7ilTJUBkk51IbOoi9\nxWgs\r\n=puqe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCZ53T20BJhFZYzwwthem9Yi0gHplZZ38JpbXqhdGi3JwIhAIlWz2A6dR5DiUZgZIyac3PZh9Cwf+EQ/GeRBbI2Ht+9"}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.23_1602765540425_0.41454677940311435"},"_hasShrinkwrap":false},"6.0.0-alpha.24":{"name":"turnstile","version":"6.0.0-alpha.24","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"avenue":"^0.4.0","extant":"^1.0.20","interrupt":"11.0.0-alpha.1","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.13","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"75da184a7c9cce6bdccb2e38ee7d1eadb00fe4e1","_id":"turnstile@6.0.0-alpha.24","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-hr5wGAeJqzHWBQHl3Wnj2JKQ7DT8YAYd4DtZdQdwOscJuPbLG1vePkP8hDuGSi3/m1oA41zGhFj9zBtgvgAbig==","shasum":"31a7ebe2a1eba345657d34526408c4b87244a2b8","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.24.tgz","fileCount":7,"unpackedSize":18504,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjnABCRA9TVsSAnZWagAAbrwP/1SybrTIwHqPVoIAStys\nzMouR5WQlLyRRkDENFWcfAk7mvHRJbK2pvi0Jc+PdoeKio4EqHhAz0LXGR3A\nNfvhXlcO9XLi60w2zlpKsTDCKKAl4O9pCoHLesnvivxOYvvz3/edASSD840J\ntT5MeUpm8YikFcUCoVn/tamz8yH634Y/jd2rQi4uCuR9Rv/HY5yIXPs3xwDU\nxscPVEHqx/qZsUxwuaSyFZ33YRyOPjIF3mWGDXtI7cPjkpeu7INMyQS58DAg\nLNO3XMkPkEMchR373KBaH+RcbHmtKMmFUGpyz+GCEiXFvRxkbm9KiLTtiS4q\nBa2yjqXreuNreLmk6z6ej602E9zlH+4c3XsNM0ieZqBHvazsBK9JL+EYEgYh\nSSgl5Z1F8+o96QscSmuJhblNblubdSC0yu6pGg6mAHyGbQmSfbhgtoGR+8GO\nl8ac4vw9RsoQ8yaDJIPARI/Mupb4RVdjB/36sypav/vfHxTNIxX+QM2THmzI\nKc5+EcfcS1rB5f+fFrr0Q6oyFV6NcF0rZG3gLOclfEvwKN6FlxBv2GHJMzvZ\nHklE5n1DICEtIy4Ljm20qoy+hZkS9iH9belYpsYQOHQ8fZXIlXcbiQNOFYS7\n7e2b+7o0WuKOD+q24zxtYqf1cZrRl9dCLo5OEQcFh0y0yzg9GtqIyGRpm0v2\nqwlB\r\n=4Bmg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIATsx/jK/umtRCArHHw34+sh1d0RWdaqgC4Sl/l81kdTAiEA9GViTrP/PUPIW/RVRlS9tNOBL9Quj+Ro03vrM1kwBoQ="}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.24_1603170305230_0.8472313537907352"},"_hasShrinkwrap":false},"6.0.0-alpha.25":{"name":"turnstile","version":"6.0.0-alpha.25","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"avenue":"^0.4.0","extant":"^1.0.20","interrupt":"11.0.0-alpha.1","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.14","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"b83f97264755a3fd3c3c2c0362a2d02281574228","_id":"turnstile@6.0.0-alpha.25","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-YdnRoGvHWaxx1fUO+womswxBh6uhwdTTQuzKb6lk/TbZBxF2E/TYQhEravx15OA7H1KRKLF2MsSq+T3/bnJuyg==","shasum":"35ffbca6d1f55f5875dbd9d948d838e54e45917a","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.25.tgz","fileCount":7,"unpackedSize":18504,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjp0RCRA9TVsSAnZWagAAK0IP/Rv8q9Tm6pAAf8jgbRHh\n04rPIts0143lHnKRkUaYNkqsdV7G4UNph2DDnmmffsp1u4fUQF6K+Fyqrj6M\nwTXyfddzqwVYg+4TwBjysewUagpd/JuyL3WnG0kFsQ/hdGS3nHyaP2l/Vpil\ntwiHHKNdXOCFBgwlAfMxoKmZQEzbggi9KaMzXVrCKo820Osr6P6WDbXoNTx1\nua308j2hJ9J8MIbPKWVw5ldG8HsM5c5jPlislM2gdZoFbWArFXt3zECnS6Bw\n3jbz/da52oktuyPZS+aoWpYHu4vn8zRLzNVPsExhwUc6k3OyQjPtQF76TDmQ\nhgEFj6lTki+1HX9mA17WmSwtPQAE/vhdiEST0/APv39w/c8cM8NsY6upwBN9\ngOozZ4yMtzAtzu4RANM5y04zdt2+PFSSBzMJW4/mco3XlBK5EBEArQ/x97tb\nnPIVD85JliOIVcRaYpMggFV0augq5mCd+gTNGMPk2u2bOEMVcZvbJTSAYscF\nCiPvkmqKFYouWO8e9RBYOri2FX0UD0Ob8Zpjlus5xrGTZUORA/EMPBxu9qbS\nrFdixQXw6MQ27bdEsGGpNnJdpxZWbmotXoplh4Pw7iE9SJ9ZW9NkAEP3r99+\n5adeiAuI95F8eVlfiUmcos1P3WA1YvnEL7hGg76uEVakGy3BkHUJIoiMhb7E\n/plP\r\n=7ja2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDwf8hjt96MoAeNCZBm4z+j12YBcc3kmi0oQY4rGjpSbgIhALXVoiagJIcrSDQCqbgGFqoy4oLDrxHLhXzOYaTqMYXW"}]},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.25_1603181841465_0.38593528688797063"},"_hasShrinkwrap":false},"6.0.0-alpha.26":{"name":"turnstile","version":"6.0.0-alpha.26","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"avenue":"^0.4.0","extant":"^1.0.20","interrupt":"11.0.0-alpha.11","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.16","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"6e683ca6f59c3435c0a6e6289946a958abbafd31","_id":"turnstile@6.0.0-alpha.26","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-mD6RN2LcLCkXssKS/RTZXkT0OTZfUlJtuKuNm/GrtJllxVqrRbXDKTgomH3IyajWhnmfKdf13pjhaiTUBezcTA==","shasum":"a69e9d33fccc07edb1cfa1a7ba6dd6ebb3156320","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.26.tgz","fileCount":7,"unpackedSize":18477,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf19p3CRA9TVsSAnZWagAAEPAP/iFfWkNsaMi42LBQt/m4\na24qr0lEtfGHduxU3zvqWk21uK+KCuA+Bxc5qf9sISy1IK119CJDpuIWtgRN\nNW2jLsKpmErMQh8vLAhx3K6a9Ye3fezvFVPzGTWFV6DKwl1/VMy0qFn63wKE\nWb7L5/1xTha3o+KzXkSsl3On4KviOCEIz/17qf35zNPYkvGbBiuY9tEbgqdZ\nKfDf2UBW0FLJfdoAyGP0je+QG+9QTsiJDwgmvZyWWE+HGlj8Ti6uZTBWNymG\nCMxcem4Uke81Aah2MDXrn0yI/gBqPPvXe8Bp4VfOHWTpAgFR8HSMs4Q8uLdF\n2Ze+44KvCP5AjSjIB00SQSiaN1ENRPU51gSO81+0TQzeWV8ygMXtTE66IZTQ\nyD2V9K8n0fBcEOd7CL3UgQLIv+OhnrA8TCJ2G87z2aMS3hTzSgsyjIWQVMlj\nSailUogKjBOsVQVL0831Byyx67mTwCqfcgGuZ5RuchjZ47QEvrzT2vgBpeSm\n5KLH8FsnbS9B5Xb42XKr4A1D3De90pCBqREf4EIP/FOy5o0n8L6RxMqkxXPU\njHY8DSY60dKGbwvMjfrIdxaP/WWLH90CMEEI/CmlQ5wyag72taSWGPKaC4bS\nEz5mXLPemXqEg7TODiLADwhbzHJewmsne/EzqN19pwwZDGPM9415Gm+BqIF+\nUzzW\r\n=32wj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFa8n1HhZ/tfc6S+VRI7zq+TkwJuJMh4pQFBTOaBwv2lAiBRHOHd/R2gVJs5FmvtTfblPzWYemv8CtViSRlCkIIgtQ=="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.26_1607981687120_0.48167396503332394"},"_hasShrinkwrap":false},"6.0.0-alpha.27":{"name":"turnstile","version":"6.0.0-alpha.27","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^1.0.20","interrupt":"11.0.0-alpha.11","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.16","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"63b54597adf3ea9217086ff9eb528436a7611a81","_id":"turnstile@6.0.0-alpha.27","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-Cg/sC10c5J4wYgQAQNWg7RyWaM/5RhP2lJL5BWvehg9LthmOESsnaCv/sRAeSIwizS7xgjy0HnFgWPwFiKLOgg==","shasum":"9e76142edf795ddfd6c453903f8b8b29d09af034","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.27.tgz","fileCount":7,"unpackedSize":16929,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2jqfCRA9TVsSAnZWagAAYJgP/je1devYPsmXM05Oeark\nP1Kx7YD9ZJiJDNolar0WrM87p5P2omeeWnlpSRNB2BoBkXKlGmkXlEyJ9ua0\nWn6hGgbhUTmLJ1N/eKQfXlLELVEwCt/0DslbcksGriN4/4+MtEilsER+RjKg\nFxwolLaqUbzqUGu5FeTN37gEk4dSmCMl0ApFbwmvfbj+Jpr6+EftttaqiW1V\nrj8FuAVU4VuMNXOpBaOoMMoGhzj36MJqToQabh5b7L3k+zEnROuf/TFo6jx2\n+1ZrGsZsyT5FRYCjoVYmw5fo3LQhow4QSB5us3/0F2xjkcdh6pb7Zvht7IV2\nPX6oVgaHcNbCfbm54O6r8Ogy4X8ktqNeii7WJ852wkVhcajLTHInMhcpFL25\nuf+B95R1dBEanmOng4+Qp/6cG76f8h8X95Nk/hbs5to1O04Tvy28O1E0dE9E\nilgnB2A8OkRv6QsksicGa6ONwxwbOeZSBKcoB6T4miIuTimHh6jobi0Q8C0H\nEcdFHHxxcBhDe5H5O/vL2vgsp7si6Zy4Uqp4e2iZLSLRChsbfBH/9medliAi\nr8RxZpGDY4dZ9Ej5k/5kkGUvYpjXLCP9CgnFVMX/aUWayh2kl8DBFsznhbHn\nMMqiGG7vCsqBo9OT2B+PTmIiOsZoMkUhXvfrOBkYRmu8SY9E5hUJ3YYmrATC\n/P8E\r\n=CgHY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHs2CDNtoLYrDJLNOol8SF66jqh90lRPSUOzzvXfrnJBAiAPDujH9fU5C/yZgnpyQpBzZUV3FmEn2SeR9I32YSNl5A=="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.27_1608137374740_0.5762478201763366"},"_hasShrinkwrap":false},"6.0.0-alpha.28":{"name":"turnstile","version":"6.0.0-alpha.28","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^1.0.20","interrupt":"11.0.0-alpha.11","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.16","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"07962e63b8fbc95e59b3acd1fdadb8fd1364dba5","_id":"turnstile@6.0.0-alpha.28","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-7ISIdWndoK69Bp1ojFFFDckh69m66aL1pxNWoPXG09p3UptUW1O7zGGn7CaUIB5HI4quu/Uvu4iNY7eiLA46Sg==","shasum":"d9316a40ba09d24cd85571c14482f7c302ca669c","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.28.tgz","fileCount":7,"unpackedSize":17637,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2j7WCRA9TVsSAnZWagAAmh4P/RvWKDWE/hIxROSy+J/f\nj4Qoz3M16l31ogPTDGrKuXtyDBekFeUqqtsOMUG8Z3i6s45lF2/Kkl4V3GTb\n5+6tGfYFDPhGxHcb/jwz2dvqhWuFEr8Gtu/RqcAd24hbRFxOUT7oxrup3ul/\nWJoaDwYY8d1x1eftU+/cZGvjfPe5duG54R5js850R51swyZTRynyq7bEh6Nt\nu5Z/ojIUE23z9NaUG+rDMheVVYOeftB5YjyJ6iIKZgM6Qqml4W4MVy+BqEMm\nrisC+LyPf1hXpVtGttlYw+n/RfxzPU2Wfg8nfe6vbp+Q1KzZSs1mw269CGab\nT1WbvHzPrLSYMFG+r3pw5Al+P0jasnNVkPOQbtdf3b9oeTsMpLkZgoIxdRaD\n9/j/ZXHiRsE893lkr5l7Tx6wI1zUAM8vct59mb0Wc1WlpZ/qS4e7+qRYzBAZ\nRuy+jiT2OSw0k83XGg6+D7ym9G6Sc211iON5n4Ox9eztfZJqPe3zR+Iib+xx\nHgdfdSlqX0UdW32z9Ectv67tjtJIXKazHU65twuqcS4qkh36+lAObSeyWVhJ\n8tT00StRegQHPLE+yqiXfAh6AntOvqKT1dDRYPFmhNFsvtyRvmr7mg8tCWr+\nYXeiRGHdCmcXZZqOlTND+bKOOW+WInOzgwbY4NYafNF9A6dcfdoskzbgjTt4\nwczd\r\n=1hcs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHCYdiupBpLcPXoyJRLEhdpcyRwGh6vyyMegMxbjMzirAiEA3eBfXTBtQ+zNxidL2O63twV/T51xSYHsRny3P90PkYQ="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.28_1608138454390_0.9036835652325259"},"_hasShrinkwrap":false},"6.0.0-alpha.29":{"name":"turnstile","version":"6.0.0-alpha.29","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^1.0.20","interrupt":"11.0.0-alpha.11","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.16","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"2940cc70ee060412f3c1cb0b64b14e6bd8f3c53e","_id":"turnstile@6.0.0-alpha.29","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-oJkduy2eXEtOW65KXvfv49iDggj9JLeXjoNWV+cfDJVBak1nG8T5zs7MpvBpZvtKr9gNn28UIJRaw2CI6gzC9A==","shasum":"dd329a90429d841f26c3d7ef7cf2d714ed4371a8","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.29.tgz","fileCount":7,"unpackedSize":17692,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2kKaCRA9TVsSAnZWagAAElkQAIvUt2Ujc6IGcIvFQU9/\nrckhS+XSU3fvpceRlcmCZ/qk5BzLXZQgn70qgkF9Ahi47aNLz97Cnz7tHwIu\n7k685v5T6bBN14oraq3tuH/9T8Z7F9T3S1n/QH2nGVxTsAJI+flbJtc5d+iI\nb5sgfYr0wzRt9fzy37ByOVnE2DdEHNCH5iFSXg/bopIPq/S9hW8ZIamFd80m\nuQmsw85bzpVTybmOhMn4rOd++RUipF6N9Ev/OobbNJYieeWRMOh1gDITf97g\nLuu1hToN5m0/DmS6BPH1/ikpqcKzZJPbX6AcohiG1cg7nx/kUHKtDVK8W3h1\nmOn23wm3fUzhBRvCIi9DKkGKMFLq4YvE/LcwdnRqYQaGLVGLYhqt8P+d2pAn\nI2TZL4ZaT64Zssc/HX4NFrSVTQuGmuKr1uBVy2qKubtrxJHrc5J/z+VwmSwI\n47KNi3VlrQnXHRjqp7dqC+As5GX1aUY3Eh0b41/pRovuIGDZSs4WrSB6HLZB\n1XosnwPjhoNwBc1vixsFDW7Hmdic5znsfyeWULDnRVH+YOfZuywfKn6qDRjB\n4KCcFopuqRXPp7V/IEnysRZUWrud1d3VEa5IxPKpoAEr7Cqx2xC7cDqvZ81m\nwueQ+u0bc6aV182pwxRDEHF4HhCTTn8C/7Ml7jYO4r8TI5ZPzaWEmSjORppq\nfTtl\r\n=2S1N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE29cwinYbBwDSKBR6jqfKgDW/wAoSVOyj8QKSbfr8wyAiBu5eTDETmlIAAwICpvIEah1JaiS4Q6ez/a1EZK1snw8Q=="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.29_1608139418105_0.6408549972963564"},"_hasShrinkwrap":false},"6.0.0-alpha.30":{"name":"turnstile","version":"6.0.0-alpha.30","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^1.0.20","interrupt":"11.0.0-alpha.11","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.16","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"df7c3a7263aa93a8b3ae26973b74fe3ad795aad0","_id":"turnstile@6.0.0-alpha.30","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-cDWUvyYBBIZchaMbt5BoMtXVrhtoojON/rvfOpMm/0bFx93QtLfE2MMVPqqtEXBOyANP1pB+8UZeYYSLX727Cw==","shasum":"86e8863966ab70ae159e972234cdbcadc8d5f81d","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.30.tgz","fileCount":7,"unpackedSize":18135,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2pKZCRA9TVsSAnZWagAA7MUP/2xxbYmwMZsKvoFFFXKj\nVLaLx6rnf6U/wZs5wbnp8NM7J6fPinu/9WYKJOiPtdIyk6FpmQPwW7eqKCCT\noDEiTWKAg3EfbigScSagaoFJWCQ2pc4Mtquh1hA0q0k2hf1Szob8qOlP8tZY\nSvrmcBXQlRlcFdLv7WEE4YSaAWCDFKisHPD9h+t2G6RODlwOINLRna//SK7R\ngXWku6QLwWdrHd818Ph6LtpBsLSF3KF8BNDf+zQNRfBAbnXw2hH1dZBcDnPk\nLLPyVupSagHw/Da8gbMtzSnF4mSvyzo3OSKjbbUeMync2CH7rJuCyQoy7WFO\nX1WacEmHRgBXAMxmvQGQ7Ss6UNa2aTC5xeySUq3C8Cu1o/QzvJ8iSHw3DlGn\nYGUaSQcZ8vrWEHL1ZCeOLsj8JyAS+PBaU3VL5WUy4OCABCWuv5+KFWR3KwV7\ndt4tvwZAM4Se20li9B6Dzt+ETQUCGkMwnxOB3AcLcBlPm2yp/3tKMbv1wsCG\noEOzn+23cOmHBlQnp6OMgoctZW/DXBkLn7s7GKX5Fz2BdaF7wCJuxfLphlpm\nqQt3gdFWNIeuAiBWM7WZQPDDhHfMtD2laEJmzkGI6X2na/Sl04IFMljouPtA\nZhFZt93Zcewj9rdNRGaWQPo9GS1yDyYrJ4qEM8rYf+EB07rIenyBq6B9UyXN\nexBC\r\n=s1is\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDboqC2IsKhHYFNk/zWetFBUy8rD50jlSTWiv4qDcjwDAiBvJfagbS1qUxJ2CBL6lxZJ2pxJy0NctvoBJtSImnpzyg=="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.30_1608159896524_0.6149129761824452"},"_hasShrinkwrap":false},"6.0.0-alpha.31":{"name":"turnstile","version":"6.0.0-alpha.31","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^1.0.20","interrupt":"11.0.0-alpha.11","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.16","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nTurnstile is part of the [Cadence](https://github.com/bigeasy/cadence) Universe.\nIt is a work queue primitive that feeds work into an error first callback. This\nis how I do parallel operations, in an orderly fashion;\n\n * with a runtime adjustable limit on the number of concurrent operations,\n * with a fifo queue that can be measured and monitored instead of using the\n event loop as an implicit queue,\n * with a mechanism to actively time out messages in the queue that have grown\n stale.\n\nWithout a queue, parallelism is unmanagable.\n\nYou need to create an object or function that will do your work\n\n```\nfunction Service (processor) {\n    this._processor = processor\n}\n\nSerivce.prototype.serve = function (status, value, callback) {\n    if (status.timedout) {\n        console.log('timed out: ' + value)\n        callback()\n    }  else {\n        this._processor.process(value, callback)\n    }\n}\n```\n\nIf your work has timed out, return as soon as possible. Otherwise, do your work.\n\nYou use the queue in this way.\n\n```javascript\nvar service = new Service\nvar queue = new Queue\nqueue.enter({ object: service, method: 'serve' }, [ 'arg' ], function (error) {\n    if (error) throw error\n})\nqueue.nudge(function (error) {\n    if (error) throw error\n})\n```\n\nThe work enters the queue using `Queue.enter`. It is an operation to perform,\nthe argumentst to pass, and a callback when the operation completes.\n\nThis work gets added to the work queue.\n\nWe then call `Turnstile.nudge`. If there is no event loops reading the queue, a\nnew event loop is started that will call the callback when it completes. If\nthere is an event loop running, then the callback is called immediately.\n\nKey to the effective use of Tunstile is knowing that you are supposed to panic\nwhen a `nudge` returns an error. It is not a good place to handle an error. You\nshould handle all errors in the context of the operation.\n\nIf you do want to recover or log the error and continue with the next task, you\nshould recover in the operation. You should not allow your error to turn the\ncorner and arrive in `nudge` error handler.\n\nIf you are using Cadence, you can create a try/catch block in your operation and\nrecover there. This is how I design my libraries, to use the robust try/catch of\nCadence, instead of having myriad, context-lossy error event handlers.\n\nWithout Cadennce (or Streamline.js) this can be hard to sort out. Try using\n[Restrictor](https://github.com/bigeasy/restrictor) or\n[Reactor](https://github.com/bigeasy/reactor) for higher-level, yet still as\nperformant, implementations that will do everything right, or else go crush your\ndreams against object streams or other nonsense.\n\n#### `new Turnstile(options)`\n\nCreate a new `Turnstile` where `options` can be.\n\n * `workers` &mdash; optional count of workers, defaults to `1`.\n * `timeout` &mdash; optional timeout, defaults to `Infinity`.\n * `Date` &mdash; optional `Date` implemenation that should implement\n `Date.now`. (Used for unit testing your timeouts.)\n\n#### turnstile.enter(operation, vargs, callback)\n\nAdd work to the `Turnstile`.\n\n * `operation` &mdash; The operation to perform, either a function or an object\n with an `object` and `method` property.\n * `vargs` &mdash; The argumetns to pass to the operation.\n * `callback` &mdash; The required error-first callback to call when the\n operation is done.\n\n#### turnstile.nudge(callback)\n\nStart an event loop if there is work to do and the number of working event loops\nis less than the maximum number of event loops. If there end of the queue\ncontains work that has trimed out, a special rejector event loop will work\nthrough the timed out events.\n\n#### turnstile.waiting\n\nThe number of items waiting in the work queue.\n\n#### turnstile.working\n\nThe number of currently running concurrent loops.\n\n#### turnstile.workers\n\nThe number of currently running concurrent loops.\n","readmeFilename":"README.md","gitHead":"1aeeed6436c80b37fef1fb4f80c2fdc627a1f2f7","_id":"turnstile@6.0.0-alpha.31","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-xkq9Wq9hQunO3hNyvg1XQmJFWWjaUYH7Ndltn2stNRpm/IZJ/2DxLM+Rv6rgnlr0Y97wbQ/wCWMUMr9JMIpZBw==","shasum":"40974a4e71308ce86c20746d23b038c43b0ef64e","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.31.tgz","fileCount":7,"unpackedSize":18581,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf34kECRA9TVsSAnZWagAAxiQQAIbhBpYBn8DuUJIagwk+\n2VquP8OBvgTIVPoUf8RiAQAkG99fqn+3Y7B8Sgq+P7cCO0g+7l18kxJKirZA\n0jujzurKmvrnkugvtgLA0ZmNOWxOVDa7VFk76F5nYFePPTgH1VOFJbW0JGCx\nqARO0xksy7SqTpkT3cilVb+8MQtHLxCJ3PSXZX2HZ9ydBIkNXF7zypRJ9LZr\nmSAhLmnoEbI0y+fzVGKWmITwceFsM/8H7qAblhVXQjkJOPBtFL2ffn8780xr\nusTiJM8xxwLnTm8uhAb3oU8R8LdukcnPAwsfQECW4GVYHmB074/fXJelQa2Y\nF6NOonzr4eRmD6DczdFbSKdOTVlCiVGCw8HxZZ0UGTlXcASuz+fX2LbuBSL2\nNH2MOP6Ux76zaRr2dfgxWKg/hfDZewRQqcw89PBgPscagcvjggIIcSW2Oikn\naejX1ZXgBA6Wu03Zeyk1esdVuE0l6t2nqoAf+1yhITXtLH/5md1OwoYtJ9FA\nw7nXFSHEz0mNurFeSkabMmxwVBkvR/Zbezwa0EuYCLeJevWxpMlQSzPduPKs\nXO5D2Y4MFpe2hDpa0XORhm6z1Dy4hDYNxnUWua0EXOAwu98d/PwUhVIjy0Ho\n+N4x601X8tvnK/lBh0DGnSlSWflOhxS8NWov4EzVk5dGrkkr9qSf58ogT6IS\ngVEC\r\n=BQqH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHdukeNQLzqQCO1g+/oXz81dXpCoC448ja/alEqXFNIzAiEAnFqur6MkAS9oC2oo2F2b1dj69Mo5vVZHbMUSH0T9esQ="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.31_1608485124007_0.2703850392175817"},"_hasShrinkwrap":false},"6.0.0-alpha.32":{"name":"turnstile","version":"6.0.0-alpha.32","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^1.0.20","interrupt":"11.0.0-alpha.11","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.16","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"2cfba0b36e4570642fac8b684bb660ad97774190","_id":"turnstile@6.0.0-alpha.32","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-+8Y3oKSzdjEmlSjeyRhcrjYNkodaqKjj+OLg21oVF72I7lTYsszyl1NT5sGW4n7/CHO3xlQiJlgs0lXHmqfYgA==","shasum":"d5630ded6a2f018e39b008bff0ead1970aa9c97c","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.32.tgz","fileCount":7,"unpackedSize":15294,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf341yCRA9TVsSAnZWagAAlfMP/0beHtMYkRpo40OyDPoP\n+qjJellpmrGoAOLlstfmRkgmAuKrzGFQ63bsEhSGlsxF0XznmU+CBtBESInc\nnQ+J0z1EGQaGBwrhLD0/rPqRrwxGsi0MZ3DJnch+6/+1pi8Dm7q49DpAUYgt\nCPy2AB3f6auDMQgshJ7qVJgBhlN1zHADUSxCMTLqx4O21hFlyP3LSEsvSyBq\nk0vGrIt9qM22vAg+DpHqM1/ACEwdRIlogRmfowM0UwA5euud9eZ2nDEMmsBt\nQTLeFdG0Q8HOdoxlwsUrApFrvOGm4DKttm8ItUUHFGMw6HAsZf6Y1ngOmVu5\naunBaWWr0ka23FDLJl1y4OvtSugxL5Kkj9Q+BL8gt9fQEg+3roxbKhI9CZVZ\nNB1DnuHFyUQIcBRy2Ni4yfyJqnKEnlbDMKjY01sh3iI8z6JHJA7fFfSmlMCY\neeLIZ5pORRlOwz9x1RzLvJa8CkSnNinQ4c3bdf29oADGrl4b/svSfnVL7fUB\nbYJd2oHpxlWHL/up812JJUIXM70eVk3exIZBV5gxKnll+Do28ErXG2uZRqGj\ni0YX7Yf3pOnxKfxopAqtvejE0+X+qQUley/tPP+eTdBrsikChttbX3BZXfZR\nUCtPHOdOdei+mWPy5OCE3rlehyluluL/Z35YOpYsIW4lUjenNPsw5Jal/Z1F\nUIB6\r\n=Imtv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDrnzHwHgjvjVUwPN7q81Rab90vh/zRespZOiKifQPrxAiEA3SUZn4xApEpS3Rl3dzxVnLNzYi8+O5537Yl0UnLwtlk="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.32_1608486258233_0.5207882710031884"},"_hasShrinkwrap":false},"6.0.0-alpha.33":{"name":"turnstile","version":"6.0.0-alpha.33","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^1.0.20","interrupt":"11.0.0-alpha.11","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.18","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"ada7fddbd6dca7c4edd8f7a08055ed21d72901e1","_id":"turnstile@6.0.0-alpha.33","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-A5Mv/Io5ffejqaIwR4Mi/A7XBJJv4ud6GjqsPgyCGBylnfFaG9vMmtRXn01YcYfhZ/6hE6nZGyv2z5m+w9halg==","shasum":"ab363ceda6b6df74128b25fea028fd3aa38ac825","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.33.tgz","fileCount":7,"unpackedSize":15294,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf35DMCRA9TVsSAnZWagAAUNsP+gPyYVN637uiSDyOP7Bk\nhYam22Ojv8jMkirqqHK3tXB8Yx6X774HmvwIOSvCU5vmEYyIKu8TK8kO5ugQ\nZQM4b2cjl/we5N6RZmKTeM0JKFWfvXoM2iZSu+r4o23rMuY6yai3PimUkiMn\nB0zWyw1o744XaZDBKNJt52iH8riGzKbgo5M9jXEcp0NOzPbeZ3GQU7KAexX2\n4iVSF9FFyUDn+dyxwZROuTmaEN703HMWa9ql/E6u7sPdbnGZgtIaAY+M2yZl\nh/S78/lPOz8HugfWQv9pWsP5W+bF/ohClfvWToMQRYVy02lfHfeP+sq+8Etd\nHIuKu+bzN7rnCY72OVOQIRH1uoWYIznTQ8deiSkthXaT9L73HzCEL1bi2DVo\nuLyfNDm1Uzk60OaDtkGkO4Hn9EoCE5iUVg/lLKyHjxm5fOXK2F8bZaBkkY3X\n3B2OJuO4J6ON2bf92hKZy3jFHgV1mvi91N0Q2Q+i4SVsm23aMBwu4Vn2hvaD\n5ijOeaxp+oE+Iof1Ecg80kdPYGVILmgmGOrxuEO+cutW9surazcBAdN0gC5+\nouXDrVylYIbHQgj3LOoYPy+wGsNXRLfhBBSxerRKEofF0BEN7/SIhZuHS6Pm\nhNI6NS0NsxlLHrHQYxmNW0nMhvuNPRQEAXZtvqQmgvqKe6b95VN2D5amf92u\n/Kjj\r\n=8/P9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDOyWNsl2lCtSFSL2Akpd0MSGHwFt472IpcipkOA6ZrmQIgUK4WrtNpcahrdjCLu8ZxQ/fnij4uEDBgO/95AcHi/2I="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.33_1608487116285_0.2558324208710834"},"_hasShrinkwrap":false},"6.0.0-alpha.34":{"name":"turnstile","version":"6.0.0-alpha.34","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^1.0.20","interrupt":"11.0.0-alpha.11","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.19","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"f3b7b97ef172d98178b28e0297b8cf5231d65b96","_id":"turnstile@6.0.0-alpha.34","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-gCOapXXxMAfTeo8S+fDPP4m9sCx7Lc0dC2Y9c//kmwTdxgzwE2J5v+69QJFQKP1ZafrwrSruEI51bniH/WPfuQ==","shasum":"0aa1da815a6a501b4d8d81dfb66e9d360ffcc1e6","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.34.tgz","fileCount":7,"unpackedSize":15003,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4CvQCRA9TVsSAnZWagAATw0P/2nzt1Qo7DMgpnydV3mt\nRtjb1tf2+w2OHx0G2pP4e7MitD9GxdB7AqwM+ZDjHJxe6OhQPPkmMyi0wfP3\n46J/vbYTrOz/SAkdONqzIyxI+iB1EWD1fLqIfNL201+XSsuMDRxU28wZ1C0K\ntbGpe91j4c8GZFQrS09jFy0gIuNNe0lHal+M1qtl+ugM+YTYlFZtY4lBXbUE\nmd9rXk7n+ov7dhcuv/mlyuuTVKkXMc9RkkhtrMpYvXY38iTL1PLFWdvZcIua\nHSzZu4iwARXyOoDlCcqk6TFnVuXyfjltZT6rIA6JGvsl9ohSZLudOGtMpOuM\nHtMYgvp9ovqCLXYgAM/tfJN3QEc7Sqtx4vBimthqw6HZCxVYD4xD3BOAip9k\nVQECzJAGX3eHRwlAGtDXjN26l613DVRXxAs7Jm6EKUE4zRrJNpYBzlP3IMMK\n2NhxAamRUCp1vdpnL4lCXDggqq95QUBvL4Q+Ew4j/A2yQf30wPEdSVzJ2Cyq\nFbzYEQuQyGTUMRCZWd0jHYyat9tZBJL6dzakDH+Z3uDfK8XzPoNnKq1T0JMh\ntYRwdy+QkzQ+cG2Clzn+IxwxPx0wWwAEEBZlO1KPxFhB9ZXxmDX81GBlQBhk\nYzP+y/b3nYSWRYNAer0POZbvdMOrHl4nJnoQrydihjUNvM7SN4tOme61c2UR\n9vQz\r\n=+5UB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICdRMXRO21MOvVCX1mYlAz/+FEXMUkZcsfGR16v9t/EMAiEA2r88bzgQcOrgEK2gqwICLFmLGcsmlM3OBRwOGoRMgwk="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.34_1608526799742_0.6207404237334802"},"_hasShrinkwrap":false},"6.0.0-alpha.35":{"name":"turnstile","version":"6.0.0-alpha.35","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^1.0.20","interrupt":"11.0.0-alpha.11","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.20","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"9380c0cb5a26394c2ac487d8decf81510829ed22","_id":"turnstile@6.0.0-alpha.35","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-c37Py7nAk5Lzdsi8HreKp4K+JkqESSmd7BQT9awjHA7dmVitsXycgqq1c+bhIpdhZ+4h/8UcnheC5s+cTkPsKg==","shasum":"1ab95d250937723027fbbb41ed9063630edf01e1","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.35.tgz","fileCount":7,"unpackedSize":14858,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4kgLCRA9TVsSAnZWagAA3WoP/iz+584FE1qdxgd0/6wU\nwwcDzCZTHF5X/Zoz3MEqyLTux73qlrf7AOSqeiiE5x53g+xA2DAp2ecgftPf\nTtWyBCnqQ9maX6e6Pq0Jt2WmNnwl+7WbSZE00eH/MgAeMn+yXrKfyrHBoUiZ\nXvnUeb5qPC587GKoBbL7UnANm0diFn/SBNNzigZAv04FdlqHHxjIptWUEE4S\nRTuZZxvVJIfhK967aEJMHeVjWB2LfJ5Yndwa8EySYrZ4sKBEdSmOC/qbaXgn\n3nFyUoN8ZBBYcpq20EGkg2T6sHt+7sF3Zurg6sNww30TtuyDIyPWDCA8FunJ\nZdwWNLTdW4k4Mpn3zO7YU9BcmnPxwgobJ8QBJWq5HfiH1TrOftlh5chsNUnD\nwLxoLDs3VAp0RO0dbxCUkU4aKwlqrzeeOC+M9frc2PB9uGXq3gHU3HAiuU2f\nLk+mBUi7eDOb82D/1efw1vdc9UD3CFd661eWGrKPtC9Y/b/v0DV9LK0VOUZu\n6C8u1K3eu2mYtcGWMXy4L8jmVR+j8B0Bu1FwW+k1lcfihDSNxjrUlOhoNloi\nX5HMpC90hCpchDX8UXcTT87ney4sO79it0PIScKB85/OZrPHjKv21ryk0C2B\nS3WwLIp3QiG0cqV84vZxhjFXd9ohFaVlqE+QIqYU9ZMousZMzx4YezQ0Z/w8\n3/rN\r\n=YPuu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDXWk/GxE4vyTg+IcQGb3T+jITAU/Ja3RBtDVe9Jft2FgIhAO/XLtNdpcdTch4MA74Kes9bWRe5VnoGLEG8pEjVnsmv"}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.35_1608665099347_0.16054228649791602"},"_hasShrinkwrap":false},"6.0.0-alpha.36":{"name":"turnstile","version":"6.0.0-alpha.36","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^1.0.20","interrupt":"11.0.0-alpha.11","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.21","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"967f53f827385ffdab735746581a74f3d2d0c3e5","_id":"turnstile@6.0.0-alpha.36","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-p8R11KD5hM/sIOkRyGWgm/mclwNusYf+qgVhHfMv7Tg+47JFY9g8f1pxdDHT7Nfi6rU+9mauyvxvO86WPYMZ+g==","shasum":"d0de0835516efbbb2d1b01df8249cd53536dd2f5","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.36.tgz","fileCount":7,"unpackedSize":14858,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4laUCRA9TVsSAnZWagAAPvUP/A0DL0yFoD/YZAlm8AuL\n4cp1ksU2/UmuOwXGoRq/0SmYbAuwAMqc8fkX9xFtxpAPA4zjnBb6zkoXxlIN\nvQd6zyImr6Sbfe4wDP4Te+l0KDorxXNzdbeX9BftP1GmS+XWmwdcpnfCEosb\nqKPbwW/d9GYAxdV/SB6sXncf+VxP9xI4LYNK0V8zby6vHOFPz2FZZSoeKrJB\nIbZUqwcSswADJsfqQ8ZGuyXcqC3Uyx+Q1UC3Fw3tgfoEPwWIArCPEp6Zi/Im\nmYpL2R3yoHvM6G0UQcQ3j7tBFqXMoJ+tF2ro+EvFn9uyTiXpCEt2NnODPCOe\nRQ42+asnEM3tYomUVewSEPVZGy4bZLojTBVndYoNArHwK51DVqOL4cxRPfWB\nWymEZqeuhc8nF5569TzrUB+ECVH6huHhdI6I/0VClwvRQS7PNiDQW+eYcmUt\nP+0klbxz13qwTg3ulnGbRc7RDEByCrBfzbZGsXLI7xj/ngVenbaQjGI08ZvX\nA+RoSbht9msTqKdW5qRLblfaoWglCiGe5kHY5Nl/wbuUe8Lk9ZBVh1TmPWqG\n7EfyOFDKhYgUElmtJGI+Le65byi45M2f4h+fkSh9ji+RKcUJGERAf7/exhYb\nnxRpjyA86yTwi1jAycuEOtSsqzQS8z9ocGJbayOnF75swhpKiImwVUsnvtyB\n0dIr\r\n=2kHn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDkdDPW/QZv62inn1YFscJ8qUOPaPteR1mSa/sKhRTHAAIgaonJkgKdIGw+RsHU+N1Eo2YnOYRvRG4a68wubMZLqCc="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.36_1608668819590_0.8800537941459263"},"_hasShrinkwrap":false},"6.0.0-alpha.37":{"name":"turnstile","version":"6.0.0-alpha.37","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^1.0.20","interrupt":"11.0.0-alpha.11","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.22","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"f812adc92e78bf5394d58df7b534ba7c38fd1350","_id":"turnstile@6.0.0-alpha.37","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-WM15I62trEMBzl91fF65i07PnENMgfUETB/bQGDkiv3GhenHOYyNnuXLMmzkjp56z573NKQv4emQ4H7uUZa7Xw==","shasum":"24b9cf51c4bb388349637553b12912c88aec443a","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.37.tgz","fileCount":7,"unpackedSize":14858,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4odtCRA9TVsSAnZWagAAedAP/0M54PgtkmF1HPivXijS\nt0aEdvtYidRSGPSKTvmJE++ydM2/laKYhRYvkWx1YUQqVWdsYDNpvR/MGHoN\nE1BSD2GydI1sTqlx22CRqivtgrjWSaERpJg/2J4lax2JdXheNHvEV0HGFnlU\n1ecDkio+uLA0x7Xf+MXQF6CzhPMOuawGUhqaYpR5ecCn+JqTbAqB0sVknFmj\nA76fHmQjYhbbWMiq3RI8NQAEA6JDrwbNcKTga6z5U9394zGlzGCvR0rMqXi+\nTPiTIJMMpXy7NRWOkxdANJE4gZfqC+W50yTM823/KA9XKBQ0QK1rsE96h5yT\n521KbqtZmP1qXwh4vAsCB3lA4mTL+xqgByj/ucEuioQNq5z8i82GwqOIenFw\nRy2GU4/cIGlICHv7YeXzbbVTZHiBOI8S8WH8wEWvl/EH/ZGe50IbmeRa9DA2\nourcCuyFHBvZp+m5PfyDDKRYWH+yc7JysMAR/hey2YTi/YXH7uFHVGUziy+w\nsfvupi6bWcSPH+vBSRRw1IcK3xHOKI8ZPYCdhQJeYq50JWLc2TLN5iqO1aXC\n9Xh2CyXmN+z2NU1wPxeQW56KqpnPD3Cc9qux62FBwXwzoxDBNvZUmkJiHZla\nuxH/xzP7Wxf+9z5HuExWk79pl4Sv1epXBA3oFrh4dEu7ensFFQGeot5hJUAc\niHHe\r\n=gWu4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDDMsSiJZKd8Z4UFumcuaFWt3akHi4juRVAoAAxTrpTdAiEA1vUgAveu1nNhmFggx+q+cZOU5fTF3QnUh6w6cqDvge0="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.37_1608681325036_0.24188157320322512"},"_hasShrinkwrap":false},"6.0.0-alpha.38":{"name":"turnstile","version":"6.0.0-alpha.38","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^1.0.20","interrupt":"11.0.0-alpha.13","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.24","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"afe0906e394715a21f3b0da5fe119af12719c395","_id":"turnstile@6.0.0-alpha.38","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-Od/Di7ITP3jXCOQzOX8gXkKcYT6nTqIS8s7VY93B3LPP+km+XPMeW/MJQTQ8sYjvr5pxjnwkFXjqPHHbaiZJrQ==","shasum":"6176b3967ae0d26af076358ee7510e2f2e8543ca","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.38.tgz","fileCount":7,"unpackedSize":14858,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf5CRZCRA9TVsSAnZWagAAxIkP/3jzRuBJu89ZSZG4997z\nvh7py53N0iX5e3JY5mut1DJBnCEnPFac707msQ4WKH4yl5D/8bbDhhRRwTx7\nfx+0iypu29las/KntAH/ghS+uOniEupxR+8Y/h0uM0N4ZoCQWajpu2g8WPfW\nhtUiP31VLkjQek9DVXKfZrrMtSHqKObQHOYm0n6+pe5H7+FJHJ7m7HLxDCoq\nlOFGn/T9TVhW0CfApog8IAVeqQetFtti7HZBDEAW3nQt+tOp5DHIQncEMr9W\nEWgrBKzaEtHbzxMywFzyXC3xvO8geun1RPkmzc3NBtI2Qd42ChEdTJPrWuJU\nAwmx9bG8eqDfJ9A04lJB2a6c6AQpiQ7ivnpv3faK9f3xtWhj3d8lPmXWem5F\n/+WFH+zs8J5GJxN+5IQDmxEIC2k0VMxPXDBpfJOsw2roehlxuOli/UN7Hlam\nYHkczlKWI949jbKI7urkeI1o3TjbEr97BJa5sCwThmI1/MAL5gWiKwJTmvjx\ntE2g4jyPIhHuAz1jQUWluocWE6xweVkrOML7Ch8x7UJe8tQNlqYcFg/sG6Nq\nnpKXkiY856fzwMXuUIvw9WUPzM1Ay+IpdMmIoEW+Cv1DSkLPzQiRbCkNX1NZ\nq8F1F0agmO6Qgeb+C2I7hUvH8EoTht/m4z5l0tQuAOlUQRI1Dmc7KV0eRulz\nu/EZ\r\n=qlxp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCH6Z5r20KjBe+OCXOeZJdItuswA7kVi3jCx6sAq1R/cwIhAKRKSEiyzaeLJ+UwxzYBZed6/M4QRNHEF74UcZd4uTzr"}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.38_1608787033399_0.1659246280389277"},"_hasShrinkwrap":false},"6.0.0-alpha.39":{"name":"turnstile","version":"6.0.0-alpha.39","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^1.0.20","interrupt":"11.0.0-alpha.13","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.25","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"eeeeb1976bae33fc86fb8764cb7dce71a18ff202","_id":"turnstile@6.0.0-alpha.39","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-A+YO6bAmZQJjZVTplS5nZaEGn2BQIq3Y2rwWUXyMDaHLLRKlP87WMALXEqavbjwUogtil9frUqttocqow4Q6pg==","shasum":"fe5665dcc08892ec98e04e5002cad8735f32072d","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.39.tgz","fileCount":7,"unpackedSize":14858,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf5CgCCRA9TVsSAnZWagAALVkP/ijGoiJIExfrnfK/K680\n0ANAzi8oHKwIw3Sf6gETXz8BlmsOJiGVVVqNZgNxphdMBfR340v6kgQKXsG9\nqDtKxblhZmxUFEmHFF9+w3LIoKqPbKpT0xScvAICDDYx9YoBUMNmiyGhal8m\n94I3m8GtctTxkBkSaKcE2qOY6flRnC67GQ0tIYkoUn5dfkLDM6O8PN+gEdN8\nLYFoCTR5bMpcDKbJ+d1y12TbflnoOED9QHxvNG9iYOPo8gb8e+MHcERMzUpz\nnK0Xe/Mkow5B8QW1ERpOQbmT19NuV/80ucFzN/KnEKF84v1bjxj4hKamTsIb\n0S2NcPfC6enMmyclWD/v386xYQMH6xbjWgL1e8CIVoJjYQUQwjn4UFZq6Jn8\nqGGmvb91MTUyZiUo7O15VAZOx/JKTYL2+CaWEOPPNnj/I9l1oH5Q5Q/Nz8Wo\n843fVT3LsYmNqmbWtlGDfD5o5zNpyfyDn/XI38jtx9Y3cHuQzNx9RKEjG9Tb\nvAWOZtnlrKx04326blpXG9LCcHSjLX9Sc8QXuLBS/sKaZu0c5FOclo/z3/gq\nJ1PF2W2HN+ZB74mvZDtyoV6XO7+UYgBWGNzkhOtGWIohhHyMVG2zB5raI9JQ\nZDlxYnby1NG+UugaCrYCZueoLvMd3zjzet5A43RSeGBtvqGrgRRBJWllUzXE\npLCm\r\n=+bfi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFbFkOczzAvVe45nvbHPOI6YmLNQWYdFqYig1fPOJsd8AiEA4OZug3JlISIlqh2K4RZpcFHGcUD2AVZVc9zjvF3Zua0="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.39_1608787970403_0.5131372239418293"},"_hasShrinkwrap":false},"6.0.0-alpha.40":{"name":"turnstile","version":"6.0.0-alpha.40","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^1.0.20","interrupt":"11.0.0-alpha.14","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.26","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"4da98ef806117635590e56afada8fa13f0339dcf","_id":"turnstile@6.0.0-alpha.40","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-uC+wU3Gw9B3tVbjHjcNJtqEW6og81JxzvdmsC0z6FV/8VitmF5DCDNT1Uqxz29cRTWvdicQYskXL5uHiKynbCg==","shasum":"221114076d6b34426d5ec74ba5f409b91773bb2d","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.40.tgz","fileCount":7,"unpackedSize":14858,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf5V2jCRA9TVsSAnZWagAA8bwQAIivL5Ffn1de1PRg7uCo\nHHWPjQQ+nQMDZdwrKqvHSaFvwt9iGT8zXPf7jvKvFeFJh+dYWfZgA/z+hm1v\npceKiiJzC0r1GWHPY/9KDDps51YRHCeNRLmGDqqR8YTGwPj1yFV2U905lZd7\nk28drsUqjhU1B+Bc78iUwYmvs35WBRqaiMrj6yw9Y5PREBLyH0PsQ9cui+fk\ncKAlkn9zXdzdupgh4Cc1jXheWwBLpRCxScIafdl+Bof436i9TgapuaTel4Ha\n47dSSKiHF66spq8OW0L+Nxo6LbKYhiQh4pACtWNjU+q+hdXZBQiVMXJmeFwp\niAROFwnVwW8kg27ltWUKWs+haTfpTOWd5WC+x1vcwtcfWOHW7u3ehxstn0Sx\nBjjO1xBcoyy+UcRr5BMv+pJeCAhfkB5TBm8syvjqx++go6x3HjYXOHYFx0At\nhMf9kZ1pcypqqPFuzJ/6urcIlgutfi7lHozhqJ44+XmYxnKybAbtTEBA4StV\n7RfMgD6HcF5uVgjUXqqS7DoQZA0a0l+9VwblYvCcggZbbIp31crcT4M7f/8u\nk0w/hMQo4z4P+yLA3ZyzFzHUx3AI1cr4B2u1v6a6quL9Cxa6DhGvqIdwD8Om\n7Xgs02jycoSj9tBfP3n4ZQTsHY/lMnEYYisfppfq8BhnOC50EAMcYUe1BOTt\nn8ov\r\n=BkFT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDIAnSbF7RS5AJXwHKVZFIDXrsfWi/axRH4akaiCreXuQIhAMYqimcknvDgeXD7bkFK8CrIhexnVU2UxNOxMoYzrN6K"}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.40_1608867235367_0.6839057152562382"},"_hasShrinkwrap":false},"6.0.0-alpha.41":{"name":"turnstile","version":"6.0.0-alpha.41","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^1.0.20","interrupt":"11.0.0-alpha.14","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.27","proof":"^9.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"8080fba6469754c907212c6aa2e2a760aa393e16","_id":"turnstile@6.0.0-alpha.41","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-VwteSqCptuuqZ0AB2+wZqWzpSkIU0b0DNflx3fwua0B2u4UMYTUNaqi1lJQMhMi69ujpCV5TNTkWf5fLj4xA0w==","shasum":"df675e621e2b79ca0e80083cfbc1e23b76e56141","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.41.tgz","fileCount":7,"unpackedSize":15136,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf5qwbCRA9TVsSAnZWagAAcpgQAKCkkojYycIDvr0i1D5k\nl6Nx51vDdxY8OAB4aw0ngamrhVJFwza/gtJ66F2YBtC5xg5Hn3wrmsY8Lum8\nrbZlPk8SFqLFuaYR6HeYO6jO4dBWfg4zQLp078iJq+GHRYnCrOCONZlAb9L6\nWFxcmyK5newNsEsuE/MQeydoi8Tay6TCyT00n7XLMCr0YkBp5tZEE4EVImny\nMJ1Z1tKlVOuK4L8L+fyiB72x2WLiGr6Wr9fi8KrJFeVcho2QngoAG2nXCrda\nRJNpVq6itOUNtjMh4ogG3zty74tqmfP7F6aBUVsQ2sLkXKQkXVOQjG446XB8\nMlLqby3Hcs0iULtm+BrNX0dWDenUKIjv2ZwVrMZijnIYEwP6V6teS2GTxQeB\n6JOojATGlO17+JIUttYr4fYu3QtQGjDTi/N4lc3Cw9v5khlUrXopw5+VBWnG\n0U7WwduDG2RAMsKuGuo9ppzNdAtVBEkNRBEuIls6btBr5ROcuieY6Dq/EWli\nDhFoj4xnvHg5kAmEIGc/pS0rC0p/PIMmoAJD41kaSGx/E6hZAggng/lEyshu\natkclqcDV3cotANJ7OrJVYuSkQ9lq720Fgp0RIqChQX7z58WqgsRV3KXOvhB\nbxKYQrEWaHrPYnVaTN4v0nWHxQUdKr3qM1KAcjQpdHlqM9DyoxAKjkp5MFqW\nQYCg\r\n=Dmmk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDYZdOUVeQd3QArH5ND9bsAKz4nQOd4M/uZN5jQP9PZkAIhAORfN7+FuBeAsW9zpm5ZAoQsc9hWqbDVXnz92DvPW9W8"}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.41_1608952858942_0.5530322770806448"},"_hasShrinkwrap":false},"6.0.0-alpha.42":{"name":"turnstile","version":"6.0.0-alpha.42","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^1.0.20","interrupt":"11.0.0-alpha.14","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.27","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"888f852e457889cd8ee8a8eac67a8201fff9e14a","_id":"turnstile@6.0.0-alpha.42","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-NrYaUUTS9x/UrlOgThhmrKJxMX/fvtxQaaqYOuwjiTfG0tz/HrpnSb1aY8wHhEKGl5xWdjbBGmx8+FniLRIcqQ==","shasum":"26be71b86987b7dd2412e504d1868ec0ecbad63b","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.42.tgz","fileCount":7,"unpackedSize":15207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf5rlrCRA9TVsSAnZWagAA4CkP/1xVKRR9moN4aIJokS/T\nPB7i+T0vO61wpTEC6u9nfEuxnCmi1yJsxglMyZ28TiOIUkXX8EY9Vq71RAEZ\nMDjMxDdKkAY9kqKq/HJj9ZsQZZxNydvNQW6HAy7QkRRohZhf10h63T3ovIF+\nnvuloB52EnvHzygB2Ikx7V2g05x0mORsf/RA8Vpm17bgo8X8MQywmItgd27V\nucYxGSjpEE1NKTgwBToteqfAv2omyBC3rUicDITjf6A8ENsaYLjSnTv5+oup\nGKgAIbFcaO8bi73wco1V9nRNgfagLoUStAU9WeB7X2UthVdT6Vod8uW9QJTx\nE6cAPyAQ1pofOeRDLzWtHS3eLM6i0GllEKkjqqdPdjfBl5DN2YMQfrSmnH89\n9nWDYV+I0ss1eukBpiRbCgFboEm3tv5k/MGJEH1pTtrJybIm87ybUJJJs9Q5\nldZ891ng6sOYwJ/UsfWbkg6xfLpI3XWjQpYD/EyiYUvT5q3u+WAmLaWz9bkO\n7EJ0v9fbZO1cpUfVR0RyuOoCIs8rSaXISL5lybvlswT7yxDjPgrvcsEu7A49\nDPWNKPxJ4IIUV2totVpMOfGdDQ2cEhxJn6iAY6KQrjTGDL9QOHxbKMnrqgWG\n014+i2CSyQ7OEwJqpZeXOfOsqIK1HPJ54z5lbp0TbuXXwboNyINaPNNNvdmN\nxYyt\r\n=Wp2+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIER+diCTXjzR6bT0Ftmlr1Nk77X029BuQfxCgL1w1Sn0AiBjmRZdCgwAbivJc2tYwwKQ0KGs+c6hl9ae4MEDwPKcUQ=="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.42_1608956266861_0.21359138953922852"},"_hasShrinkwrap":false},"6.0.0-alpha.43":{"name":"turnstile","version":"6.0.0-alpha.43","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^1.0.20","interrupt":"11.0.0-alpha.16","nop":"1.0.0"},"devDependencies":{"destructible":"7.0.0-alpha.30","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"2607a050294132e1fddf67f287d9de90958a974f","_id":"turnstile@6.0.0-alpha.43","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-+exha5JZ+U8YpHlGNMBtfNZk4UuuR1bi2l4xxk2oVH4rJinT70/nzR2vB0jeyEXid9fpMo3hFolm/IquRZFirw==","shasum":"dc40b5cdffa0117270a1730df9818710273c9731","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.43.tgz","fileCount":7,"unpackedSize":15207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf8AZ4CRA9TVsSAnZWagAAVdAP/jHH80p3BtrA8vXd9CTA\nv4pDgjSGBGSoXfN3T2b9reiW2DKeeoed60oW3LwihBwVniosHdXmYpx10EcG\ntlRwUNJ3cgsqNR3uui/XDG0BBePdp7XPX/k47H1Wuv2u8ybmDkhGurkA+Sep\nIoGmKPaW7auslUYXiKJcJwUari7lBaTwyzPS5CS7Gb4voZDyyqG3kPg8mpV7\nfBFpAOg6USTuAVkheeqtgjXiqyJKAOMsOB7Lfb2KUD7NoZO++Hdo6SiJaEre\n+6tSc3z/gvD89YU169GBWhnyBmGbkUpgalBxLGfrxnqV5UjVcf5o0uUqGnW/\n8i3xVPmRtWWx5OBd5ZjC10mVkIVnX/sTBz1yZ+eZBbPqwe7PQ1YgQY9Afill\nuW8zSEHDhvuzfbFVe6MISeUgzleCZahkLBaY4fwW8AH6BWHO257u4b90Y4T1\n/bVFQE2h+WgMTmSQ2suFsGpw/VcG6N1kdDssheBNr9ZuF/LA+WmzNQSqs3lu\nkLylJzFniKAibvXOikvXJ7cOw+R1myV8GnxyGuX9GQt8ukgMMLN9KLaF/SQA\nSDkYrbbn6UOcz89ucC+EvVYQ9y+FapEx/NPp5O9HSIWRiOSH+++vj88oXbwl\nkk7a8+uNBXRqvfJEiLXh89nKF3MBqUkkrtao8AB6g4USuSPRaA5BAX+J7KPS\n7000\r\n=d4kO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDdGXKw88mOpB83K4cTIqFOjpDgNyehDTxnvHGOSJk9YAIhAJvmZVF7Rn8ldzgVckAXgxPi2xcEoyIThFTWJy8uD4MB"}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.43_1609565815663_0.06279620444583922"},"_hasShrinkwrap":false},"6.0.0-alpha.44":{"name":"turnstile","version":"6.0.0-alpha.44","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^1.0.20","interrupt":"11.0.0-alpha.16","perhaps":"0.0.4"},"devDependencies":{"destructible":"7.0.0-alpha.31","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"af5d25b3c2bb20aad2157a2cdf232551455c9763","_id":"turnstile@6.0.0-alpha.44","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-Vguaq2ETFRQu+B7PQ24mj4fosB/NHFDfcvDwJabp+Uxyi40A6xWj0Xzisq6/w8UE9SflIoKlhgnKo9s8LrEomQ==","shasum":"2de0a0b776196f2caddaf664b033ad7b2f2e6fa2","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.44.tgz","fileCount":7,"unpackedSize":14993,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9BsXCRA9TVsSAnZWagAAbQ8P/2NBpY8Ewypz2OiVB4G7\nJMdDUCPDzakz+Lsks55AQS2R95/wfIXQoEVgzZBcQT3S5+CCPDsV+dz27oBD\nh8hqHVaccdtbEiYPqDAPZejcQ6YqiQ8mx4xcJyhshvB5RZW0LStke7dQupfu\nTzcVYYPbiwjpFZ5UeM3nlKObagh69CMMPxieecbabihaWvnJ+afzxmlTXqnN\nFSReUqp4oBpySYOzCxY5MgtYRRzdYihhDastgCgV09eIiNCFM8EPUKRGYhMQ\n4igtKeDIdYfDqUxKjcwGEbAcMPsdHmqx3zqbBGzhOflpy8q77FvjL/IjB0Gc\nCNjG0bOFaMyPhSsttRnoZLTGf0QsRSo95eRdjOgkMKb6nZS05z10I+Gg/QyD\ne9CiKcz45CxpEMr+EsXgO8u1esWjs/zHMTXqeTsD3xzUmGKyac/zsHJS/vfK\n8IJvOru1/ympLneNbRHdKieYcTHVdcrwTlZ5tK4o51W0jRp0LIt3OcJW6A/w\npN9dnWlt7tOYTkG+o3on47GsLlXFi30u3nWgFTHzSwzY2TXEFjmIjD+7FvqZ\nvRWsvYMGjA3PTEH1A/s+GH57P6M9z/GQoTZ3C0xfqblZht3xrdJ6U/NHsEVa\n6gDeOyvxGW7FJP8X/FwHtjalBAAQ2NiT65xPDtdNNCJOKiUKyG58IUiAVwKd\nZ3Ej\r\n=bYMC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDBZWqvmXbLQCqf5AzZQeVZPhoRSb8Dr7iQbFfNPw8OZQIhAK/4N2x3R1Vw/vNKLRO5D4oNW/khRyFPGjL5CesXPgPN"}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.44_1609833239012_0.7958465369286092"},"_hasShrinkwrap":false},"6.0.0-alpha.45":{"name":"turnstile","version":"6.0.0-alpha.45","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^1.0.20","interrupt":"11.0.0-alpha.16","perhaps":"0.0.4"},"devDependencies":{"destructible":"7.0.0-alpha.32","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"59a65c6a3a155a512038e8e5203b292543ad6f9f","_id":"turnstile@6.0.0-alpha.45","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-TvvPVIt9cnUd+6QVHAa21DYouraLty3faLI//gEY/SEQnEWVzyALqy0RgQRhLJvHxHYNXf6W1OJ8NJph3LO56w==","shasum":"01dfb3aab6a2fe2f250723dfba5336e884611726","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.45.tgz","fileCount":7,"unpackedSize":15135,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9C3jCRA9TVsSAnZWagAA/XEQAKUA05XdckxSCRzEjjr+\n5fELIaZRZTV7AtMG/fmHt0uv7lXg+dD7uWyvJ6JFhjuTZHIHKkQYUltFYaiS\ncPqld6RWf2Vb5jJcwKQcN4ilk1eMSSDWTmwTPHuGEA5ndnkuhLcgG7svusY+\nR+nDTwElqZ9hHPOYgXmwSyk0kA8tHobu27htM52mJQpejsDQOPOruO0nEDkc\nWHnmPszgRqZEVQs41cFxN4P5SgWSI3Xqpb0m4MeYZmB20ZL8bm+k4ZtPoWCg\nIau46HZJ6MmXWYwSqoi7zSxAugjvZiC0bTMj85g/VkZqtBnme3yYY/FQL3k/\nhB8YVOcwQBsq/TGcALSRgqzP9WE5/F/JI6ZfMcOwdPEW0gutZCRYPjS5zyLa\nOnfh25QSQ6ZfU86kh/o5KKFUTAw6La0rgQxddvoHxYXWsx7ZY1PAEPVQyglP\newRj2qA+p4+X67UYXKZ93UPqtJtC7X/Ftt1+4fgDmxr8Gg0jFQH49M03cybD\nQIM+LM+5EKtiSXxM1rzMOJi01ARCIFi0kZUmtPSkPUgkLRgVpPHxlGy0nEX7\nwEmhxR3XbO70FIBuoBlxq7Hod0w9aKgmi5L0eKi6CkwL0BnPdf8p+95Xbwdy\nNgRBY/M2RAUB+MhjuYwaZ1d3hCQ88Cq6gLrssrGatPaq3gCzVJl1z82/7/AY\nkZOA\r\n=ShXL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC9uLXKKsHVsqG1RdfLWXzINFk9DzPpxlhSUx5SEt1N4wIhAK8usA4CvGgtMKQRKHdKx6LxROpeqrKcW7bVfMdHGFNH"}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.45_1609838051124_0.609379764186839"},"_hasShrinkwrap":false},"6.0.0-alpha.46":{"name":"turnstile","version":"6.0.0-alpha.46","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^1.0.20","interrupt":"11.0.0-alpha.16","perhaps":"0.0.4"},"devDependencies":{"destructible":"7.0.0-alpha.33","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"e892144d71bf63f259ab046d4ea8bb3e10b892b2","_id":"turnstile@6.0.0-alpha.46","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-HWIE80yNXc8jFwAhdRfdf+9t66CxNCOB2SLstBlvuSmAyWFowFFL0CgQtzGHiHk9pM2ofPHCi3CXbwteee+pEQ==","shasum":"e2dc5ef8811afab515b594624dd78510a2479dda","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.46.tgz","fileCount":7,"unpackedSize":14442,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+KAPCRA9TVsSAnZWagAAh4MP/AzJCU4nMzaVqPotsy2B\nMVNirX3hmbdJQ6NQWXAzCz4JOLn4dnB1wuZs5sswx/dtE9MiMopvgTpVifC8\nYMPMfAVZttCvnld3dcy/zhfWlW6JEFUJrmgmDV6wM7BSjnnVroc6xXg25659\nFIa4pZJvAzMV5v7OIZUQyG2sB2p/XnvvljQT3bLVU0qguKm++bCABpqHrFhb\nxb5fDkD/MvZZzJcW1OyAbBTPiIY3kwvr/jcXgq+bwUQfh6TbKv6JcPHSce18\ng/wcxl0bfzK63sTM2ofS+JkVaFxJbSQ+kYz69fIkGxIQzmcU2sFTGYkSinD3\n6f/FMHKtsG5clixp/v6geb65U6l6ryeIYWOwIxeY3AdxiW44rFDLiEs0AAQo\n4Pz7M9L8+pP+63ORLtHVONARLAkL/id+jDBid5VI4+ZEMSCFy2XGXfCYl1O0\nttqyl/RbOd/uti1Jgs3fLH0OOdN7liWiubVZrqdj6U/J06nBEEk+8Fv1dZt2\n6Poa7XElt3Gsx5yNgTk05J0o8xG89Pt5xEeh7zUUqs41APIC8YbOg4cLZAW3\nBWn5QY2Rt35x5WBGVaArFdWyrDhHTHaruxZ9HOevoorZ71fujs/HqDN3qPpP\nWycavlIRa/veVXwpsyZxMSRWcKme23pN3psLohiTvmZ1+VoFVrdYbvctADPp\nccvx\r\n=g2EG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCvdATLl+hBqroXboZgoCr9Ma0F9470rN1qph4PNH5bIwIgCK2G2rDevY7LPo5KkpMilE1/1IX//v8aVZgYbGA1bi4="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.46_1610129423551_0.5330796175253463"},"_hasShrinkwrap":false},"6.0.0-alpha.47":{"name":"turnstile","version":"6.0.0-alpha.47","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^1.0.20","interrupt":"11.0.0-alpha.16","perhaps":"0.0.6"},"devDependencies":{"destructible":"7.0.0-alpha.35","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"a2db9832c9d84a998cd9c4c18fe25db87713dd77","_id":"turnstile@6.0.0-alpha.47","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-1doNOLURPxphuWhXIABSYdQLVDO78h55fcU0kNauFCLdlsyYzQqKLKZHeh8Z52KMQXcBsB3KwbWScvBKYn+vHQ==","shasum":"2e9b047a276173cb1e77181aadf2c13fc8eac8a4","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.47.tgz","fileCount":7,"unpackedSize":14531,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+0EOCRA9TVsSAnZWagAAV/cP/1JVbc2ctqBrIgQ2CCnC\nKnxGGM8RmwdskchFpTCJuSh0Bkaf5B/REsllVEpn43JrZpeImwiGBTl5xVT4\n7ofl/Mve8UXDM/WdtnRHSNcpZ4TMqtqyruNafjeRMMsT90pxuRM5wv4MigQ6\nQf6wWj94ekMdwu2dtF+YUulXau2rMzwlpAuXU/TzE8vHq1iT+ar+7IkGddGb\nmeGk90gPHcIMn8zx9TutTU4mPW9uP4tKqUX+G3cYRhmryCZruaJj3LgTefMY\naDH39hnCxe8aRPr4eSDEVa3Gjm3v/f3W4TlhDRucMneTORTUjAcxDcKAPzFJ\nZ2RtaoiQmW4ckgfvPAfnsTbHyNjEkzI3uaT3XxArZt+4DCYMXsodyFTiHtgq\ncSUeCb9XK2g4GyyKAhAZnOEu7SxsmmqTTFs4N6JDzc/d71HSxPMfJS5I6VM3\nMprRfRP3OBhNR8cndx4rzke3Ke0rtKo4B0t+Ga2orSFScIc2pX6sgJGV363n\nsgmY52tdF9XzcPOhIqNYapm707tZ8+pI+S+ytOesSDycgIMFsJLUDUZfDoHO\n/QTq9fbj0HDJaPvBfP4hnkmChoWHzCqHilpoWJj2kFqYr0ngS7JKdMEHP+I+\nGayvFmtyOP5sURXcEx/1Wq8Hn64LQePFtPdUNRa1KIJthGqbSDAq7JU+morG\nlqU5\r\n=Pkcn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEKhoLbvTYakVvRO1M3hHeAcm6J5yseRPOc6mzCVNVgcAiBomOqZlUmda7sjraJ+KcqQ2w7Nee37ekwoT1KTv/l4kA=="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.47_1610301710271_0.1346931716796569"},"_hasShrinkwrap":false},"6.0.0-alpha.48":{"name":"turnstile","version":"6.0.0-alpha.48","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^1.0.20","interrupt":"11.0.0-alpha.16","perhaps":"0.0.6"},"devDependencies":{"destructible":"7.0.0-alpha.36","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"7d3d81c397fba319a09c7c6149ee5b9d1d012ab8","_id":"turnstile@6.0.0-alpha.48","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-D9nF0y5r5PhbKxNwFL+GKubUqM6Ewl6bUph/PJ1z59yFC6uZpUHWNFPVk+Hey/2NPRHRvtUCPKLTqlV2UJbDBg==","shasum":"ff843c4210e84cdcccd8ea315e055801f8213127","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.48.tgz","fileCount":7,"unpackedSize":14569,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+01MCRA9TVsSAnZWagAAAVMP/1LGyi6qZaiUMY7eSiCd\n/soqWhBGKiUanaQBpzS6x4pxom0wNgJ/EC5OANyckSxxgVEopBuIgBTEqKgg\nz9FsCCM0xuoEsnbAvU+h1YBjdjh4ggb8hihoEwj+uIyTGVPzAb0XlaHTV5z2\ndLKwPkT5L0bGOQh/AHgkMT1C6VsGDalwuFUyw2xWMkDcKccSO1fndUjRXYbP\n6ErbbzsXcFVY2qhPk7vIms975mRrI5Wif1Ot8mrqaBRqSz2bMb7+CyB00m6L\nVxaL/+G9Xe9cnWjDoLKcgjVhRgDIn2lq6NBABH3/7CYgbTs82K8kcFll+dAE\nnsEwUo+zfAovouset9863Tbe8zjfBNF3E4jgaz+LFcfLx+IuuEMHQmBr8dSP\nllaQFqaTZm/YM+sM2XU/K7ppwvf48bQozVyZCTRdp5TJ+xMBy8Tts0+S4Ori\nBHPH0UGTjvY3Gy1XtfxL7h/ZbMhOtfp/2VdSNcdPz7OMuphcaKwT0f2cWc5e\ndA6gbP66Ssrs7S2MKRAYp23bYa4ChkMrk0i38pKOuu7pw3QR919GUVv1sTik\ngHVV4BPn+3ks2Pa3LfUQNvbAmdb5feFL9nYeoB+Qe37Cp4k1dtR5XWnm7izO\noRFYkSu8sZ8b+zWVCXqhTUtAeyu+mwwG0SCfPgWl/z905069N8otzsplf9aU\nSAQA\r\n=lkzI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGhK0IwBej8xyzOhc04vdhfkOlID44nRPxbThptLSTBAAiEA14HcdPdvr4JbnC+pHA3HfrLi3+z9OuaGQ2CoXLhVA0k="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.48_1610304844267_0.7200850553209868"},"_hasShrinkwrap":false},"6.0.0-alpha.49":{"name":"turnstile","version":"6.0.0-alpha.49","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^1.0.20","interrupt":"11.0.0-alpha.16","perhaps":"0.0.6"},"devDependencies":{"destructible":"7.0.0-alpha.37","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"34a3bb3200e533b98e2c88705fab29b0a3ff7c09","_id":"turnstile@6.0.0-alpha.49","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-QZkblgf+OXQrkZ9jNLM/rLzPanwRjGoWaHNUbscdJ8vc8K5AfJIdxLyI30Yo2xLOo4iCN8pDFbop6UwB6mCWXg==","shasum":"975ccfbed4911e1f81ebac262134a7bf3a75372a","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.49.tgz","fileCount":7,"unpackedSize":14567,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/B4XCRA9TVsSAnZWagAAQ0oP/142UfV6gsUOoFt7oeoJ\nqdFdaL3SNMTgHX9t7NQIr/B0e/P8Mrus3gNkqf4owsMs8Ftbp7chj9nV9ooV\nufH9/wnAza99xV/tJvJGzkIpjgq1McfiE6s0rWUSpuw1uAafLa7Ftn9G+lJB\n/gd3EU2Q/mYZ10JJHKyZTO3Efw23qrtWNv6N8GF6wUssCBK+NTIzRiWp4uMP\ns+Zdv6m5s/3GkoYrgd7ly6yZkWPMelb3y/+qh5sd/xaN0tCYkBnNFEmunScI\n8YBb/mhvX8qOU6NCNG2EhxmP3wkF2FPNMFyTJmtJS1Zxn+qRvWRRtB6+khEa\n48KB083RRU55XTC/K7MIv8yZ0tzPN8UMb8RVd8kO5kYd7Za/iSZu9xSHwoz4\nIk6442n/1MNgwlr/ySPuulpvpd4K1k7qWsLIJtAGn+x4W79yrZAIi6cE4Jvm\nC0K6iIXAleBnK/taigqBwEM2fCM6RErHtfO4J6Jyn7abQHkPHdPdQQrRvnw7\nUDQO6DBder867jFalwUoY6Q7i5M9P86XWgrlBMo0AUtQhChQ83yTQUebh9E1\noF3i3UHwAcU/cLTMZJ9EyK39bstLI6hMcrENGVOrTOSJVrv0ip6mOslD86EC\ntPhAjQvTZPBE+x4Rp4Nc7DRlpso9GfsMT/U4FzWf6EJj36JYsgtiolqUzGWy\nI+DI\r\n=6/FH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG9vTF819myk4o579nl8xMt9PbUWC/Sp4kWOXLsxYjG0AiAgoKjcHxQ4NlQmGzp31PzCzG0iFJg0unnWEQJdcgHEBQ=="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.49_1610358295434_0.2841814021636835"},"_hasShrinkwrap":false},"6.0.0-alpha.50":{"name":"turnstile","version":"6.0.0-alpha.50","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^1.0.20","interrupt":"11.0.0-alpha.16","perhaps":"0.0.6"},"devDependencies":{"destructible":"7.0.0-alpha.38","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"6b20f9108eaff633f386f9512f4eddd27236da28","_id":"turnstile@6.0.0-alpha.50","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-tosshmLwZaUBAwJN+TrmAe9PbCHRMs9ogJIVzrfb6Cvn185Yrxdc0INPb4EOF4QdZaHfr9LisZfxIBkXNd4efQ==","shasum":"e355aeab3ed7a6c62f90c07f2cb7312e7335b98c","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.50.tgz","fileCount":7,"unpackedSize":14217,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/EWwCRA9TVsSAnZWagAAiFYP/RIpGJ2Cf9W9naTRTaZ1\nWvL1w+/shTnK6k2SAcZ1FgK/x2EhVwroVtmUUslvdp1C2g3/fZppPa+MOgMZ\nOEnvh0qAAb0PZ+ybnAxX4WyH/jg5iZDjuFdsekpDeEmjNcE8TYEWUqIaYXcq\nMtbeKtpu9g1AhnpgXqaLuOpN10LKGskn1cGejLoPLdGRvjm2CSqalBPKKKK7\njz7pMWTEzSZu57zvfDyRZ7ZzRWv2oFZjjrYwqQLv9xuy+ynffXalpJCxCcYA\nBSYYqbpUus3P2gUuSsrP0XQAFhY/543LgPx3V1WT8TuG1VExreEKNl3TNNrl\nLb4RKDBHCpcKQTIY5Ncip7aVyDFYyU4NSoOfcGN4MNzUauy5YO4rcepD3bmo\ng4dXtOFS2f4+UJBqethif0uwbEkRixbRUTYVB1sgVeYV5oN2xtA6usN/k6ne\nFO4aoF4sqGahK58oVMZlYL3437SxsLRWw72aH8ZfXcg/PbDDuawuIRSTjmE4\n6lXyFMM23Eqs59+0QUMmFo1cu6FXBf6DFn6dgYX8KwXGL6DU7yeiZUk3/Pqo\nIMJiGeubDSeyHV/AW6hSgqpR9QyqSBvhnC/4szlEJ3srwazTJbH7bqZiOiVu\niO02wsfyheUay+bjKq5NlSnGxcrTHkrkQB9gYELMbDXD+JZAKeWKm1qcM+Sy\nzKi3\r\n=FLix\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDATXxi3osiKRdiMlVdY8Z1ps7CWeuesHiyh+d8bJ/k6gIhAJfyBUgjrfjk0dWMncTWO6AAeh4umg5xUzQm+ipjQnRo"}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.50_1610368432176_0.08199939414271129"},"_hasShrinkwrap":false},"6.0.0-alpha.51":{"name":"turnstile","version":"6.0.0-alpha.51","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^1.0.20","interrupt":"11.0.0-alpha.16","perhaps":"0.0.6"},"devDependencies":{"destructible":"7.0.0-alpha.38","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"0a102ab93ab09fced546ed461776e13788d10573","_id":"turnstile@6.0.0-alpha.51","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-TNZy3+s44B/e4yRek2QsiaskMOfP5Yx88h2pGlZZLhFdNvaiD8VmGhFT0qVOCgTJwpT+NFVUNkIePgIWCUgPIw==","shasum":"7be52ed45bab84cf19e723ab2a23809c44bfdea7","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.51.tgz","fileCount":7,"unpackedSize":14180,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/UKnCRA9TVsSAnZWagAAadEP/2MyG+Xq7O3TZr2lp3Up\ner4HTXC7O1fImZXV7aOOhBV3LLEkXTb6wqsawqvnA/aJ+eWJaAxRMX9/EtlR\n0d26YE4mZcG5Zyn8FRwnWIldettl5HrVfgYqRniLg1n8CQj6/Us8vYEMfvru\nGGyv/nlWQwsL+F516jsk2mC2cvPNTH/H2/SokSvK6V9CHskiAh0T3u5HiDum\nWLbwT37fbHMBGuHnEmghz7cGwULtbkuD5Qp5C34duiJHy8tIvvCIj+eaL6Tc\nyQddvhFxp5DUIbi4szkLC9AQP1E3vik5oUt8kzTzSsiZj/NdZpVLPCvwxg8d\nAZMbeVKZuuiH4rkMjHx2f1A+Ro5TAITrybtk0trCtmJUdIBeoaDJrecX8klc\ncK4qdyYG/VZz5sSc03i7D7SldHj7Oo2mXUE3mjj6YqZpJ7dcazwgaikYv2Ah\nxOh0ZUvctsegYDceUBuiuwqhwyTAOXPHie0k1bD3ktgAye4ER6APG7Ic+kMA\ndQQbETsdA+sj2EyftcTrmyXrausTPXl86rQkkJUfOvrJtGhYAIFprBcdofVf\n4osvlCsppz2eSPVnpEqmKZq/kCgWdyt47Y+UUhpcTAe7aa+P6zBD1KS1LfLR\nhK/sZeoxebyXZ3x/34HjkJnODGk3OJBjs8sWe+/SiIC+xIDBgXK9mZpdE+/S\nRukP\r\n=VquT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC8wRTssLw0cwa1d2tklkmA0jbv7ORyNjnPmdfqtSuTygIgaspnUsVr+so1z9e9nDbXQ2LvKUeLVMrIIr/EldmsBUs="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.51_1610433190764_0.9727989251215261"},"_hasShrinkwrap":false},"6.0.0-alpha.52":{"name":"turnstile","version":"6.0.0-alpha.52","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^1.0.20","interrupt":"11.0.0-alpha.16","perhaps":"0.0.6"},"devDependencies":{"destructible":"7.0.0-alpha.38","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"92a016854e622a3e11f2271454227e54df495f6a","_id":"turnstile@6.0.0-alpha.52","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-9g7qEBXy2VVhr1VtBaItxGQybM6UjSFwh602jX57OpQnmjfYPfdlkpUBo/gV0PdQVolRX/Kf7e0Iulzc/lBlyA==","shasum":"7b0085cbd87c254fcf71776fedf5b1b683ccd7a2","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.52.tgz","fileCount":7,"unpackedSize":14180,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/WNOCRA9TVsSAnZWagAAnS4P/0P1W/aHrZb8R8/Ww9rP\ngfzGc6IgUdMrgZwbRBqIFpqDNKErSQw9HYZINTyOUbhkOOO9yLzO8lWg54cU\nEfoQ+P4PJWRL1FQFYHoUM1N9brbxNmldAzJcqGg2Y+1pzTJ3cikqx+b2XaUU\nzBwtbK+hKHL4nDEnbGtfOTBJL/b6w314gYofYGKTApNx9YZtVbtlU6OwwF9O\naz9Wbu5/xQXqwsk6kj8H2OlfJg89LscHN7M0HxDsFZPTXR+ppSEWgXmuEsqv\nRcl1ZytDIRJagUXx3t0XnEkoBzcOKZZEQgmR5NZROHuZvO7qaEYf/hEL0hN9\nlJZZQhjpmR/+3k6Pyk+ZXKitndPRE148QeXysBNjV8OZiG7kvrlP4k9enlMw\n4qTGJE0f7luBBvpD89gWqoXtamJDlJnTRCOGSVfOi7uBeZoE5YIkEmnHFOGN\n+M30JvoxR4dZBIDQwl47kaTQNDtaUPdHSbryfpuiIMZd4ag1I9TSYz6qbppH\nk9hXICvSEVAlH9kre93Ik8J/ZVRPaxIYAvKbAtO+wdo3uw5y9QdqYIsN+5f7\nRnveW7ZVRsAQMSUq1RWNMWhS0BU79XMFTSAemifIJxZEFIiTyxqLuk0GzoEu\n0tHyGYmk0Zr3xw+KTh4oG8pMlNYdC5c9iacQWzTOoKOQiQwoNjWZip4ASSII\npoi7\r\n=okP9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAiv/nEr7v6eMpHaskI6V0S1bczenj4RNFmhjuC1w4TQAiEAxPT3Mqw+oRQ69erAX8KDCoq6vvDzDogM7iQ2SGlt0Eg="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.52_1610441549885_0.3222113634996102"},"_hasShrinkwrap":false},"6.0.0-alpha.53":{"name":"turnstile","version":"6.0.0-alpha.53","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^1.0.20","interrupt":"11.0.0-alpha.16","perhaps":"0.0.6"},"devDependencies":{"destructible":"7.0.0-alpha.39","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"7cec565f60eedd3b164837665145fb61103856ba","_id":"turnstile@6.0.0-alpha.53","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-V5V3fRoHh7gGp8CV5j7ku1DeFbvgxX0dqBYGYEib/XsYJjkYriK3aMYupSsesc1pQfwLFUUFoMTqU93KUGz9SA==","shasum":"06c88e67ac7c8714622a5d0ff8f4022802e7690a","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.53.tgz","fileCount":7,"unpackedSize":14180,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/8qaCRA9TVsSAnZWagAAmkkP/iIpo2E3BFIjCoHlJp1x\nc3Oho8r8iYjfe+P9/x8o1USaDtARHS1ENmm+pyvoZV4/MI2mpiTPV/IESOJk\nk7gbdovDqMWRVGjdH486XD8PoMApuQjubBfDyz8SQIZVWn2ZHZRxpsTtDM7Y\nEU4ojysB7RJ873tkyWDGsgWHguhY0tL5q+CIuiNWbgKkSCPT5VLHkN7h/2x7\n1s9K3Xlz+T3wB6hOxZCs6cltIBuMAab9DdD/SOLUQSTqtXyyEP1RDAEHsBQ2\nGQ9rgTidHdyKj8AM3EpXSAqRoocerrN1Nnwnkzyg0U9mjqqYd8nauyiOk4/l\nQwYBzgX6ECMk+uH5K/oOViHT7e5ciVOigR0TmZwbEcaw0hy8l5A8f4QXIQ7w\n24M5SjtlR6T1kKKFfJRPn+6zOSD+I4tWujzKT0magkTFL8Ha9HWUqDvnyK1Q\nonsqel0QXG0H4lpYzVZoNPsw3V7wZi4yIqCUpCGeliQhMF/ejFSCjN9V2lnY\nTdE07MOlLASMKU20shhKRVFY0DwTKepCb2Gk49Ex4qo8mIjTI6etecnYrlc9\nO4l8f0CIy3ZLI3pffzEoIpp4ZeZblTzc3CAPPzvrp5v0EVuzxJj3RIWXOnTi\nObt+UBocMrxIYjSxxVogCd6SS/UdPRyKUDeWWFHVC+y8U31h9K8L2svrDrJI\ndR1F\r\n=cV3v\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBJ6xUrMsVoc3BF8dbgolS9nAjuZhyDBikB+XQTrgWOrAiAeNiI/K5bNuOKiYbDm4ZRM4QLK25NWDP4/QuSn8ouhDw=="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.53_1610599066004_0.9921981586088948"},"_hasShrinkwrap":false},"6.0.0-alpha.54":{"name":"turnstile","version":"6.0.0-alpha.54","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^1.0.20","interrupt":"11.0.0-alpha.16","perhaps":"0.0.6"},"devDependencies":{"destructible":"7.0.0-alpha.43","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"6bc8ea5513a55b3e72a27158ca96e508640b1a92","_id":"turnstile@6.0.0-alpha.54","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-n7mdKr9/ATFDC9/sEyVocvTYmMSUlUQV4ALGmAjghGvPrntslmhZmRQW8hYcZl+/oVtCQrbvpOZXj6EiJYYPXA==","shasum":"44e440cd550a00078710664417954206d005d30d","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.54.tgz","fileCount":7,"unpackedSize":15963,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBitpCRA9TVsSAnZWagAAE3wP/jVHxCdWjU7kG30LVKcE\nQ715yfTS8hY+bRpZ2+mgrtA56Mxu7yr8znhBzf9GA5YiN+n6wvZQC35XWe21\neZxiLtv5Tp/hvlrpWsW0t+q7b560lD71LYCV3Ifbh460vGP93NLd0bZ68pZM\nFYcGgfCpdnI37+VaDk92rq1+kWoeiBZ9qWk8/gUNTipz1fh1TpnDJZ6L6UBU\nwbnvkvUeTpaXY46V+aYsqvh9unNedQLm3EUQVApjo+OWk515SOr4x30DwDW2\nTiKivuVVMPL5N1eJI3NmrF8pLpgC+bAdIEBE9iek1iA6wn0QfeOHnDD131FB\nBFrwASln3R1YtxGhjt7xXM2uibCj9bsYqQpZgJza1pvun+U4ES+A1E5DwVMB\ndwHI/EMnREJbCasZC9MJ8Rj1isbr42gUvPbOd2r77WgdGPXM2vxfoCSabUxc\n1dq0Y2uzJNccQIfALv4yDDL+Dd29XLfIT1H2NluQyfXQNl+AR6xRIRRoj0xh\nckdAP5E3DW1rOwJ0PqMQvLOqzKDz+7Uxa9SDKxocd+wamSHKXQ4CuV+LKxW6\nBnL96My4NxT843qgf6XCUtNEWg35jwYnum2TWaDIpXul46lNRN+14ogD8ory\nN6yW7qZM0UvxNG5gOUvRnmJrenAJ4mxNrDDwRldvMhZLNf6xMUKvKMEQeQet\n+dxD\r\n=b4HR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCSN/WeIfSmUj4lYfrtuB4IVG/Zxvw8v52lbNf2kqOFmwIgfv1q0XSotgG431BKM9iyWzl3Ot1QMdAqhzvpSnkG2PI="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.54_1611017065236_0.44696806741492456"},"_hasShrinkwrap":false},"6.0.0-alpha.55":{"name":"turnstile","version":"6.0.0-alpha.55","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^1.0.20","interrupt":"11.0.0-alpha.16","perhaps":"0.0.6"},"devDependencies":{"destructible":"7.0.0-alpha.45","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"ef4cd634b8167f288e1497df2d758390503d2552","_id":"turnstile@6.0.0-alpha.55","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-uFQUtncqEPwHiS3QibKFWJx3PuAjfCuTjA+MKkBGgVo0PWSAxidlqPLVuzvySm/V+9aJzWcyQ73CuV6u1Mb4JA==","shasum":"37684eacad2ba54ccdf0fc620812a3778f841957","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.55.tgz","fileCount":7,"unpackedSize":15986,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBu1tCRA9TVsSAnZWagAAiNIP/15hs8NoXDFcMcZmshlA\nhvRWtG6nDG2PM/dq1zfcouCmVt1BwUtxtdKK/hyXKhEZeiQGZyg6Uxhd4KGM\n6vVnU408N4ZN5e/mwqLyHizZOdPLOeQID0tz/OFtVKo06uP5TdIKMm2qHzFA\nonY7++DZlxf4xDoXGN2pehIpu4cV22G3qbevIS+VLU5L32Ag8iz75EuhV0Sr\nZTNOI0y3AyBHsIvKYmP/HCx+gcNyk5cHjsBkmCV5IiSI1nYXolddTfpLyRLS\nOMjq7cf1K1snRX3xFCDjE/tsKC4ArsUeQMs2bkoK7LiV0wE8bxTrGRyLAp53\n/3KrNNXyTkvJH82A/MxaK0/Xl1OQO1fnGMpt9pp99zn1RZZI7YNx2QPV9yk/\n8yWvn2r5n0Fplonvs6Xh34m4LK2B3ZNBEt9gJErA/vzsTScShYY99StkEuJB\n7GUbI5FEMdiZ6+c/2CC06vBaUg++nmFF3qR9Pra5ZznTf2brg5F8Et2Wr6Fd\nFbNB8ZiWmEFA1syu4HeHoZdxKbsGwRNgiLBybaHOq/GWK387dmX5E4iXA3xZ\nokYgcKjRMuYb7as7jUx816/17mYCscCQj+4GCrbgS+GagZJqFz/eoK5ULO13\nJGcDyQiNo/H1CIRMVg5WUJw3FMuFE0FkGpAiTxd3Kx+Waf6CvO/2mq/T2FMB\nTg31\r\n=O64w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC2Nr4BkCs40SvtWR6xFgPXo2SKc3dxgXv0zoEFN5uJVAIhAJ1h5GqniPDaGf+/hXoOc8gPDsRuigpjeQU5+xuCAh3m"}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.55_1611066733485_0.3665897566877332"},"_hasShrinkwrap":false},"6.0.0-alpha.56":{"name":"turnstile","version":"6.0.0-alpha.56","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^1.0.20","interrupt":"11.0.0-alpha.16","perhaps":"0.0.6"},"devDependencies":{"destructible":"7.0.0-alpha.46","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"0136eb479de388017c99bfce62b15e4af48dd4d5","_id":"turnstile@6.0.0-alpha.56","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-MJnD1u+458UezsOEmhYowFr3TV59DDKvHSNAcIF+Z7+jhlZ0DiZQ2bPpvKN0WA4ZL5JFS8YqIEDBd76wDYaZaA==","shasum":"1a10a27fe087b15810a2d7db417526f17acea13f","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.56.tgz","fileCount":7,"unpackedSize":15986,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCZgLCRA9TVsSAnZWagAAhZUP/iS9ALMUodUlAPftXqTZ\nkcqQxvO7orzS1f8Hk3J/BMQ85dJYRkmtqgzT4gDZxljPbpAWVVlgxr1gz/WC\nEVg4AZnZKY2Ew1Rv5477IYJ+H4/is7LJopz1DaczL0OwB70F8lTO2Azca6qv\n0c+a9BUv+XHLhpo7JvLja/TWJSniATY7bQfybnZgMytUOUyfEBYUGZOgzj5h\nLeItaPf7gZqrCOnuTrhsT6ZHP3YvsGaf+LLEqVqTNsR6TvUCTgX0PK6+g7x9\nbSnVUv2+aTok2M3uoPc3762LbHn8k3OaX073TysVUIkN1tzfYQ8DTysAP+Nr\n7SkoDf/9xOBtYkrmnDGRy1H+0AP0rvLPIVpk6vZAUslSQsupzYyh55XLc8IJ\nAATVzDzGDCdBftleoVz4MbrjW+FnDRIWEDAEz0Cq6OdDg2ORiwcr4Kt3dwWC\nVmtrAxsaNq1VJqnak3mv6syfSifgUZObC+h1vetUrmGwLCGz3KAg4vxASrW8\nNVWd1aqlHIwcjWR3MfccKAdyIvHDYLLQSeLXrkVPGfBRXLVf5aRCKXaIRS2k\nLWdD8+gJ7FIIt19SxvY5UjZTiJcTKl9Z+ep8tPqi/1N3sbOwOupVR7u5tZ/0\nTG1y2IY/ea0c8krEzbA0tQ++NOCiEdFRDy4/YU0kI1OxrVcmU9/D9QGsYZdC\nE+Ew\r\n=Wuao\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC5A4DggPmjgzoQx8Rh/mjhOqUk75Hk8KB9f3E9KPEaJgIhAKpPL4VoOW7MQdkVL5hT0XgQvVPBbsVoufqg2o/Yb2BR"}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.56_1611241482776_0.08732506292351072"},"_hasShrinkwrap":false},"6.0.0-alpha.57":{"name":"turnstile","version":"6.0.0-alpha.57","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^2.0.0-alpha.0","interrupt":"11.0.0-alpha.18","perhaps":"0.0.6"},"devDependencies":{"destructible":"7.0.0-alpha.48","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"acbfd2c8e2c454ef4a50f1e1656682a6859f9b7b","_id":"turnstile@6.0.0-alpha.57","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-HvcErkD11fdJTWRTvd1qPTTfv8A6CJh60uMl2/PTDwMe70bWiy5BF67h9S0XAjY16SfOkPB/ZbTcTvbrn9+bkQ==","shasum":"73649cad984bcdf462c77cc07ce44c835211c104","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.57.tgz","fileCount":7,"unpackedSize":16009,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJMJhCRA9TVsSAnZWagAAWd0QAJpKlzo8dr54/Zz65pon\n3yXqXpfHDfJLID8yWMz3oHtwF4FYUmWMEGmRW8xv+f9LuUDH1uwuZe6UIYdn\nWD2A8/M38S/sHU1rsw/995bzanuCeSBbEWc0yGxNj22J1CinkVQ3h5HIHd+v\nWa7pnnaTRGSWe0PG89fny5OIodrn1g3DuzDrrdPGlvEpSgpyuoiGSTl51won\nGgLWegiM2Z0reTITsrn96za2GjinYOcPqotMNNwNxd3M8rTpjaqbprYLeNHD\ncRv8HRwbALkkpy0qvaKqe3JETSyOhGkluMFLhYZHusDHPfeV5GcSVRP5e/YH\nGchWRREJ8LVmV/O/ktTH589f2xpApL1eFH9kHZgiUZiFf78C8wYfzoJOFtow\nzxwyHMDfYJLJd7V+2S796NeQ5t86SMoGoZMNRy7/EAnaQoeI8uAwrfbmRoEM\nX5smOZCQmr8FTyiyDkMCjPTlL7ZTUAuKDa2s/P26T4vmo8NQFkhBnBKHKkHD\nErEXQDAI7ngtcqI7q6nXqtrNlCjhjDlbRqWywXdDHQT6sxOdZPRd/gZjhYEF\ni/0QGnI4nk/sKa462D0Akdx4MxRAeQXZM8/qL+LTIgK7Zg8wf9xd7TbIvTfR\nUw8TPQ/7D+EOqxfUeMdzCP5uUVUUIj2rrPjkrbXnjyuLagJ0Vb1zcVLlfAlU\nYyuG\r\n=vvW6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGGZpjXnj5uknVaCMmIb4nL3DC9rdUw0ZctHJtGqdPUEAiAuBJex/jcHHQXXzPgqOLlzOZ/U0arzRPYf0UMaA/JIQQ=="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.57_1613021792896_0.9331433567973151"},"_hasShrinkwrap":false},"6.0.0-alpha.58":{"name":"turnstile","version":"6.0.0-alpha.58","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^2.0.0-alpha.0","interrupt":"11.0.0-alpha.18","perhaps":"0.0.6"},"devDependencies":{"destructible":"7.0.0-alpha.49","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"56f6da493996e3fa9679f3f26fa69f19bc5270ce","_id":"turnstile@6.0.0-alpha.58","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-TUpudrVjr1RK5fnQm8lBKPMvyF6FLKsG5DE+kVWyynUlr+xDWzNO1hjqp3Y9mCEWkt0otwydgQ/uoZ7OmxNBKg==","shasum":"a4b50c260f1e10349e3bfd18d4fcc0a55df37408","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.58.tgz","fileCount":7,"unpackedSize":16009,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPu6oCRA9TVsSAnZWagAAxgEP/RKU987IgnAO606pY7kY\nlxSQXrmcVMI+bQX1OViVdJ5hjVIY1sC3QWcK6VheiN+yTBug2jG9nDf6pXHE\nh4R+ph0GUdGy6Tub2NEhhJtV1/QEOGSZRURxcbFKaXD1/XOUy+eIQIwevG2Z\nq75Y4Pqj6aP4x7XtBkDHtHVWW0HVQo3vCED/JzV46AAnLtiNBnjyZW+fmdoH\nGoklxKN73PCJKFTdZLEIn8rweofGnYTTQ3bd/YhZPDc+UJOdbQxWAZxEIvRg\nYibCzEzesZjBBFqJ+KOSH8WCc7U0ZoSuqT9VDnKLhyx+UugzDpUjOMob1/Yh\nebCwkhf54eaGALCZxUrhRShMQ3PEAan/3ps2hstmJEU1Wda7qUsDg5vTxyHn\nHLs4/pgFEYFed4p142NcyDD0xUg/sblaoTN3T8vCle/dPO2Z3cZZsWnnw8kl\nExlitqPT2Tas5k/tvnNjbGdIHdpUchtYgqori9Tbgzc3DTmw/eQSzgrloJLr\nKJTIryXe02TPHHwFAAkM8JJZ1+TM8QivbeipaMbEwYRz2oA5C5EqMf04+6Tx\n1F7jR618+lHOSl+wYg1DC64yHI5AYnnOtqMr2c9lwaYi84ifEyFsYWY2A6gF\nzodI2boWsZHHTt5FMFh0/gjX3aGD57Rs1NwAXa28Eg2g7Dw86vUsX6g2YdkS\naWrJ\r\n=2XOW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG1XvQSekHRG0RhLobDtg6I3UFkuFcMGqEgAd3324mraAiEAjVM7BLIGcSHQH4MNr2VdFzc5EYo0D/sZWDRlM4Fu1wc="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.58_1614737064301_0.5477874574292116"},"_hasShrinkwrap":false},"6.0.0-alpha.59":{"name":"turnstile","version":"6.0.0-alpha.59","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^2.0.0-alpha.0","interrupt":"11.0.0-alpha.18","perhaps":"0.0.6"},"devDependencies":{"destructible":"7.0.0-alpha.50","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"35aba62e6db4550d69137259d9edaca9bdb9e55f","_id":"turnstile@6.0.0-alpha.59","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-VqzRkkGOiq99Rktt0ai6uY18di2v5X6cB/E+Ngo68KaOfou+gltkIuKz32/zP02btbIkbCmKFBHLYRQpFZ34vQ==","shasum":"61611c766184a9b553f3c038d23be2a640b9e47e","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.59.tgz","fileCount":7,"unpackedSize":16009,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgP8n/CRA9TVsSAnZWagAATckQAIT5eRJquCDEqLX7/i5H\ngNWTxoOYL/wEJK+qF/wErRV+/Z0gCyqbEsOQU7847A0Pqdub/fBjjHN7yd6x\nbAQvdnKAMROU7TlTKJ4CJ8TGL9L5RH5Qo9bSYiA/AzOQ61ZEuZe6VYvsg24W\nUMqKQlh/mECuA/osV7p7d9gPpsKBXdGdiIrkUmJsPvz4DXL2v0edIFhtK9Pa\nMc4AGKdVs+PyJCMzKDaldbhOZKTo9tufNGHHbEeOUzrukn63OD/QfUV1Jtdb\n5Sxpm/u17frHH4/i7dkp0DcsfJv2TuHq1hvQAEKQxNv7yFc6nP6zK3fhXCZ2\nHYuDZwk3Cupy0h1lkX39hF7vzoa0jzNQOyLWn4TrNwv33DmqVFk+inrkm+Kq\nWsKnUqfjcei/ljttl1xgpmZqj8PxG3JWT/W8JlAYXjVcwd8pLR9WWsImNUwD\nNAZC0BBeS1Ha2jtzU0eTdQzpO1cBZtWLVhWwT3eA8VUPshSxORLECX8K0ZmB\ny8KdM6kQYieEbzdHSUcWDPHv3jRlOuPNnp3MJCHJi1fGZU8Tj6TC8GxSu/jP\n7gbr+xE0RBD/pJKR1mVH+DNJmw4LKgskWfBzVIm1+/jRFj7TcVELXxkSS3DC\nP/UrwakX7rie75oQLQ8m+5tNyvgqguX0M0DtHkZDiK61jUEaLBFtnf9WO/rL\n7N8a\r\n=aRlK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICjozI2rMcNJOUgSRbeeNpa1bQpACdr0KBvjoNssMKKcAiBdj3V/oIlxLl3iT2z6nWrPUC6tIZYVPPbImdKas9nh+w=="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.59_1614793214652_0.34458248066533925"},"_hasShrinkwrap":false},"6.0.0-alpha.60":{"name":"turnstile","version":"6.0.0-alpha.60","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^2.0.0-alpha.0","interrupt":"11.0.0-alpha.18","perhaps":"0.0.6"},"devDependencies":{"destructible":"7.0.0-alpha.50","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"016db811fc6bd6544f3e2c51a340cb1f99f0eb0b","_id":"turnstile@6.0.0-alpha.60","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-jvzJFXHQQ6+K6Duw0p+TZfwHiJGWVOnQlUj9QvX5DBM2DFliGCGcjWBn9FPlOiBkBP4yA5yl+E0/lgFDtVcPbQ==","shasum":"5845c34c1f2c430b3cef9582feb77c870f1b8351","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.60.tgz","fileCount":7,"unpackedSize":16009,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgP8pDCRA9TVsSAnZWagAAEAUP/0E+rNmFId/P4fnh2UHq\n2Lm2+n+/PbMkj8MNdlZgq2ex7jKHmkuXNVPShEMPhUahJ7yt7OgEG1TmLdv9\noOBZEO/dnk1GE3XRtw5inUZX63s1KxdwbuTQnidHjHqlXinQEgJmD37keGHs\nolimZQy65jc+0kHyT4SrsQeY8zYanYSkKvrReUDDuLbbwDKbDlOAioT9IF5t\nALHYLNM/GZ2YXBHBp5qMNeFeXxy8kgSwCmWIMy2JdQf1089vzT+CqwW4cpGn\noi3gBnnZPldFILZRoFG1JXMVR4UKnGVDNq0a7J3Lx08xx/yLiRWYPxClerbv\nZ4Cf3DfYvDWDUCtqCDdPbfWm+OLm/Bw7Y3E+sOlpQRAuZbME4X0Ot9j3v7vn\nSKBOh+SV1aSB8CbZEx9cRyUYrSHVxyOMz94rAON59mlOWOK4nQ2aLfuUZ/qd\njl+Jr9vCwADWr5/hC7RHMyt/9xFOfzTPdmLKWdbluyP9XBbSdpmMHhhQtJJD\nS6BAX/uph9LkP7bDchqqN38SRbpgBY0PPX5YwWpQFjLaWO8YLna6NWSeGRYx\njnDEy4mxr7SRwQcO7UkB5f2O9ttVRe+uh9d+FTXSNcaNCKlMAIh10Nnew+Tj\nzRiNmEdxqNBcb5AZB+H3e+R1oA005AXjbvNr8cI7rEo0B3rH9p/IrmeJeDAA\n3SdG\r\n=2mBW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCWdysoo0jALIjIZPPPDzlB5nIDP2BWJ5x1WqLHblksiQIhAIezQ84ctMDjMSLs5whevLcAs0Y3scn4FU3aOnsT+sxY"}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.60_1614793282662_0.2680267176100122"},"_hasShrinkwrap":false},"6.0.0-alpha.61":{"name":"turnstile","version":"6.0.0-alpha.61","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^2.0.0-alpha.0","interrupt":"11.0.0-alpha.18","perhaps":"0.0.6"},"devDependencies":{"destructible":"7.0.0-alpha.51","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"10b7378f512953ff1c9f4e46570795368e9c21ad","_id":"turnstile@6.0.0-alpha.61","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-X7Et4R5MtsNN6aZMtd5Bvn9mo92Df3ULNahb1r5lBBKOzYzHKy1b3ZAcRyZptdKFEodbQLKy9zE8F/+ULluIlA==","shasum":"de3176aae5734b92be586f2713d4c8f06b2897a0","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.61.tgz","fileCount":7,"unpackedSize":16009,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgStHDCRA9TVsSAnZWagAA/H4P/0B0M6QY9OWjaWlYN4f9\nXXfY/zVTJiW2b4CDK8uH5BvSHfhQre0rXHsE4NCQRWOr2UAbHVShgKPvtrMg\nUpNHT6nuJRT5JpkIWUHRC/94O8Drf5GCJQHYzzPYRGWq6JIQV+nsZ0E5F8nC\nhAKu3xuoAmVg7xepAFm91VBPDksHCtizCfCR9tk3bdgXSeQg5pGmE7Ipy+KV\n89BVT02PAvAsl7KvXcSVBuWRaUTnakcJeIvvE/yhI48R1HDQJRt8NaFa2IJ8\nQvj4n25gqNsfIvl/9p6bG/SI81KAuFUXa3Xk0V+oJRcdZoK+6SoMjwRKMnCv\n0oUe0FAooFkAfjIwnsl/6ElvEYg54OOQAqy/oVrfcazBsgRkpolEh7Qpf/+O\nRDOXyRe1o2UUmYmlfBCpI6ATw0sXRApouab6xoRPffk2jPABULqfR0mMo/vB\njDJapqfM8amolZ9Y3w06T/4qB/ptVSyZIoN3ng6SQ025KRKFuUmebG0akdSx\nkQbOvfLFMfEy1heZqJJlu8xXPNhe/lFNc5U3HP9K2P1QfwTTeTMh7CmvhnwC\nG+1JWlcwtsbM8HJ8m1iyKusbTZRsxhT8TR1gRhyHh7W32x17XrCUzw2fBCYm\naxVvFjLA2oK4unY32+U5+3lFCZ4+ubv19uBTipQbx82zBvmAFvCPCtNTTj+0\nl2Gl\r\n=GY+c\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCk/LNO6twiyb+w0yP1Ml29rGGRVlTE7wMe7Vaf29VVKwIhAIUxXU3Ei1hUoVkfOnKqg5VthOhOzNGJfownLvmwHump"}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.61_1615516099024_0.8443315079006517"},"_hasShrinkwrap":false},"6.0.0-alpha.62":{"name":"turnstile","version":"6.0.0-alpha.62","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^2.0.0-alpha.0","interrupt":"11.0.0-alpha.18","perhaps":"0.0.6"},"devDependencies":{"destructible":"7.0.0-alpha.51","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"75cb32af0f74130e2f9c5c724fc3d892ae890472","_id":"turnstile@6.0.0-alpha.62","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-dKtU5FtED1wF9y1iBoKK67LOFmn0O/iA72GkI0Q+u9/fPBbhnstG5X6KFchTRDCj3xOw032+vCF8ltBS6YwZlA==","shasum":"66e055368a156797b4db62bfd0c4a3446ef3fdf2","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.62.tgz","fileCount":7,"unpackedSize":16009,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgStILCRA9TVsSAnZWagAALf4P/0lITqlogguCSQEJGgfo\nVLZsUz71Qhg42YPAYMrdG6qscg0Wcx7KIpyoFfXz4FUPHYCyIWds+PtdEjQF\nR5r+iOhk9RBV3S/6EepyyNrKCkjZFWBPRuAYBIzzJeNMlHHnhwcF+dFYLpSq\n6nvonoXrgamizMKlVTldniwrcfqtkdKOARILdgVZUo9n8Eq5ik7rOD1m4W4l\nUqXxcaIUwSer2idUM7a/TpKKTBV8UnsLwFew9zCW2O0z8z2aP7o7SBg760Vr\nDXlT8NPS0qOjISX7207BS66ngTnlrwZ2450R0QJlTwHd5a5mOkVWZxFOhX6v\nQKwt7OAnsLyAFhG9egfXL5JcCNWdgLmO2poRLOivNi+lBGxcnhmeEq9pchmC\nmnZo0TNPU1BbWztHIiGLSl/g8SxN87V0WdWuNRvZ9ju8MKfYMajnXwnvdOGa\nY2VT83EP79LoG48A9kalL/aO2D4ldzerlneiMTS6l9qER6/aPlWnK74I43TY\nv+Sfmu/vJ6HRQ/vkL53UmZZUKrVw4x4Zo4djjqJvHI1UP/XTKXujqmAr0Dpl\njpbX5j1qql3iT46WP3d85TVMMpYJ2hz9XtxWAFfo6xfmBQXJDyJaOpmNxS1G\nzxCqF599ABYyo/RP266W6Rht0gf5fp7ATnBa9R4IJLg//VwIpv1IWdWGpsoU\n0bRw\r\n=gJGw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDbFdO4Azdm0FO51hlBknaykQV5NZlxtRw8cJSTfbUTzQIgZR8USnpP+cpK/vqAb9IHpr/XQdClGIDOu7Nd6STfl9U="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.62_1615516170559_0.010373463804394856"},"_hasShrinkwrap":false},"6.0.0-alpha.63":{"name":"turnstile","version":"6.0.0-alpha.63","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^2.0.0-alpha.0","interrupt":"11.0.0-alpha.18","perhaps":"0.0.6"},"devDependencies":{"destructible":"7.0.0-alpha.52","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"1e783b8af7f3a25da93c9e7cf06fc1db138b3a8b","_id":"turnstile@6.0.0-alpha.63","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-Vyu/EPrH0zOTikELj4bguzaeBTTrIt1uIz1tHaE1gWOD6PmjM8Rqv5vc0l/YEuTEddjEqBaJ3B18Th2cyF2zLg==","shasum":"149896c5dbfcac61e27e2330f713459c67226f2e","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.63.tgz","fileCount":7,"unpackedSize":16009,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgStUxCRA9TVsSAnZWagAA4HEP/jkW2jxw3xYlE1+umhDJ\nuTo2WYxBKTr4Zwjk4j5ldlprBNqtX4oKqIGzJ5jRU+u3/0oMpdDZ5r4Lgs7t\n8bRVmk3/rAHm9mbOP5yLEKGaaX1lqd9I+FeTPFrOMrpMMaoYVA45d2fSVgNI\nMAN5+gqjBmn99Fef+MgID4FcEksUr9zBSGrRQe4a84Nl+1mQ3IpvkfeVnwoc\nkrT1295BBBSvt1ueGnbWvThoXXXL7NcGze6AvsCTUPMv++qqBD1AzvKKafnd\nmCvzTpj4eS1dslqy7Y2D1swyXkNddwlI15YKvmB+iS/Z9CEIyJDMswsVnVxk\n9/lM0wq/bzZR7DDb/NyXF6Jh3Hye9DjFmdJfptEY8eN0ZZ3fqo5YBEQm0LYN\nxqd7nEcw3z7wcVKgoWZ0O3awQSLUxcsGsR8K6FRi7HJRghg4Gv59WX9J5yvL\nB3egMwFpnizWdwrNB/1dlvLPCMRWGodxYokbEwh7kKo7OyjRYbi3juxCXIw8\nqztKRGwPsNPJ9GjMoh6xuSEtnaxn9/snTElz6YgwjLHEy7TRy3YPEwdQvZB8\nVzFK60njnrT59etYmUG80yVInijTHvcP58hq6ms5F59KRV+kDFbF8SZNj6OC\nQCONtQ5BQgsfefsgURCN6vcdIIcp/9ghc0yE6gEQ7heyp5sNc23tP6Dri5BT\n+xb9\r\n=oKkc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDVPViYEgBUydSyl/fjFr8vkUJdKfeZgdVyKaU149ANZQIgBjKdcARoDSyNJ4rrVHDtwUckdkDJwHZ67ESZo6gp7Fg="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.63_1615516976380_0.13007919689929315"},"_hasShrinkwrap":false},"6.0.0-alpha.64":{"name":"turnstile","version":"6.0.0-alpha.64","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^2.0.0-alpha.0","interrupt":"11.0.0-alpha.19","perhaps":"0.0.6"},"devDependencies":{"destructible":"7.0.0-alpha.53","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"2e41f9d58a3a2f150d2d64b7fefaa7a50ec23773","_id":"turnstile@6.0.0-alpha.64","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-WLc2pECV/nmm0E8aaddpCBK8kW7zj7nstmRaAA1oY3KtLIQ7PRUZqxvZTN8F7WBvkXBAUm/oFzYAU8vz2xV9Hw==","shasum":"a54569f5b04371f62a0c2ade6f470268932c7c28","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.64.tgz","fileCount":7,"unpackedSize":16005,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSw62CRA9TVsSAnZWagAA5VoP/1gg/oGQfJchirNGubMi\n20mqWoqBGB67Bx/FC3Vc1Zaw3MKSKcVBFGT+NNe8+4A/tJsQC3GWadGvnazz\nn2gqV9JCX+d80UiUjje+KKJj+agy41RmQTANCv5VetZSWdK7beebyKFVG5lq\nlwdd5HraXDQ8rST5eLkqDenxj5qhOK+oSFdtBY+qRSLkwKrOAEyKVDPTnVl9\ndR1D87WMpwN8/V7ESJzuMznoUIBh0y/FIzd53PjdssTSmoPeVwoN9DeA+eps\nLaqzt54N1WPxJeP/hBjSE+3cMjZ0Zird40wfRk78BY60wF14eeFXLaOZRUKT\nXYwct8DKwtA1w3z3kmmwost7iRQaQmnegKEipc+tvt7ufUnNM6DAlB1hX/Wi\nWKc7Onj/1fgNRUVBmJbuvasEKGnJDspABciFCK1p+7xPV1e9jcEapNB6b5UK\nlkrsHOyQSBySSOTneeWNmfBb0Lj5eebVD/wxLTYnD9LVHBLEDEwobxmw9A8Y\nHWEbl292Du643+F8w54VlC0YPrrLtU2nP8rD8xGLAqSv4dywycig3f3KCcea\nsf6lVVAgwskl7U7rBsENd30VXpatSVFvyGdiPMdtaNYmyv2m37VKU85sqIFO\nT2YIK1SCEYdl/NzNdp+UWzUb3uM4vzboPNh3azDMn2weBmLXHKpiqbsWxzVS\nM5vY\r\n=0g7J\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG/nGkgb53HHgVH8wK78HFTE6poRzueiAeizpusndOEeAiBzjjWqe9wvuVk0Ep+xf8ZGZDkSmNvk0ibdxuIrzXJIyw=="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.64_1615531701950_0.7590258737328204"},"_hasShrinkwrap":false},"6.0.0-alpha.65":{"name":"turnstile","version":"6.0.0-alpha.65","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^2.0.0-alpha.0","interrupt":"11.0.0-alpha.20","perhaps":"0.0.6"},"devDependencies":{"destructible":"7.0.0-alpha.54","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"b9da472cc16c2e048ce1d8da814620b6c201d8ad","_id":"turnstile@6.0.0-alpha.65","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-Jd1r+RxJ+eybJJv+r/y1G5yM1t3YfBtfzXdP1SxN6aA/PYugJpSFna3fVsP0uV0B7WNYwz8no/XLE36zrOAmGQ==","shasum":"00089fcf6ee0d43ada8d69c38748ea162f7d2cf6","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.65.tgz","fileCount":7,"unpackedSize":16005,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgS1UOCRA9TVsSAnZWagAAFMIP/AuSbrzojlk37MvkPmdE\nES8QFRQFceOGKibS5ebj/GVfEWcRPeAkZ61+o4TTpSFE/l3vCTsRhk9ag2QM\n6vmmQulpdJQxzfjcsOwjuBmbH0uzJdMW1kXauAx/OBts1O1tvjpsy20CQ2OZ\neh+O9JrUL6EE/ezEGx1yeZ8pmHFIDyO6q1Sf1T5z4p8TECLWGf+vIHrV+M5y\nMizchpIn/DoWdnBAgHkPj1hZfnv+0m1AsBH30pwLbXJRerIqC5MnMpNkrWa8\ncPE9fVSPjrpL6oPnRf9Ny7YydHr+SgJcp757Hbf4p2RxaNtO69L+wN/p7hYo\ncwqhbiHFHH+wIwL6uOuEleE4foEhB4W6kkkDYCICfvWB9WMCu//FV01xeRCu\nuHyAFtMoxP4iMjk/Hb6RMDVvRM8iEj/O5EFl1I1uLAuEpIwoy6nH8SJslE1L\n6MPK+MEyKzSxpUqfuublFsF7skvv5OEuzXLhZJZP8X+7ZrSPqBjj6djNrr0p\n842HffQO4p8oiB9zY9yqlu5lpVKc07aYKSnuOdtBR0slAJ4iOJe/mlgAddU1\n0Cd3JVp2MXg0nHSbU1zEWr+hePqETTwAtIZzd02ZQ6mBpLBlyYnqigOhtcnp\nWgr0KsdxOQ6mRoJjaD1Ol+NGYuD3F5pHaMwNlGsu/lzTvPBtA1JWH9Bwbkb0\nffWo\r\n=wybY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHEnbEnD/8v8DcZf/SJRUc0jyX5pRyGWMesAGMZMVfOMAiEA/Yll0ujU6AWBb66rwFmpJsc4pBT8733cmVh7oLiHWQ8="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.65_1615549709897_0.5062748114688356"},"_hasShrinkwrap":false},"6.0.0-alpha.66":{"name":"turnstile","version":"6.0.0-alpha.66","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^2.0.0-alpha.0","interrupt":"11.0.0-alpha.20","perhaps":"0.0.6"},"devDependencies":{"destructible":"7.0.0-alpha.54","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"406ed4dc93958467baa93ba4d94484483b16bef1","_id":"turnstile@6.0.0-alpha.66","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-A8ZKdp0wTWY7J9zfeSQdqVu7M2lVPWJ2BZbIsl8seY/m35aqBmMGVP0wEuqKLTmkn5VeTV9x/EI+9+E41NWiaA==","shasum":"2be5bff822d4f53e143f64d66cfbf390d5c5e8d9","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.66.tgz","fileCount":7,"unpackedSize":15962,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTYW7CRA9TVsSAnZWagAAZusP/1J2QtelCg+KHNu9u0g2\nqM36oCW563qdwJGLW1vZQiE5NadJTx87Br38PvEmoXkJvNWHMcsm/spEb9Ck\nrTbhZErWMQ/m3sqn+Xzk7XlzkAXPYpwc4jSgzYGN8sPyB76BzQkq6UziJz/g\njW+nnRUP/WI5/j8lM/KRYFwH77hd5Hy3sq+sxWYP4onbfsswCrPUiULkVC5w\nCMvu0tkQHdiseROvGL11bo+VwI9OdzBEnF9jOTuCK3Fn6MbrIkrey1vVbEpO\nXkWUa1K9jK8coFZG7H8kARE/PmDKJdSELwyBfmVVss4NwrIpPB9iJzU9RcrW\n5j331TVb3o2DtcK2ctJoA4A5Yaq726ARkyfUOrl16kkYBr4j/Bgwr/0jSbUY\nXYvNKf1IhaiIviXSLrgOQogzoij24YkqmVXORzA246nUYPd2/8IGj9v2fEl2\neY0cnXAyQxmQo150DHBNM6C22AH/FC+PidyvQ6dBpsj67bdbTGKquUypeHYk\ny8rRxIK9hWR1NS5j768tZMIx9VmZna5vF3RMO0lgec05quwfyPz0SoMyfQGX\nfmO3nsRTfkloCqxLt1kcIU8u79spFnpE2p4orry9dRYSysNWvoeIgkFW0M3Z\nur4KDehZ81fQkgmR5LwJk27koQEcWMSl1pqpkcGKWG4rrSguz8hNSOfGnxvm\ngPiG\r\n=IM51\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDyaqvaibLfpdB7elOPaPSTmt3WwF/8otOaATS9fD3v5gIgMi6NRkv3rgt1uQ2mc8vOMdPWlDSaMTxA6r1K8oQV5I0="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.66_1615693243394_0.673046651099168"},"_hasShrinkwrap":false},"6.0.0-alpha.67":{"name":"turnstile","version":"6.0.0-alpha.67","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^2.0.0-alpha.0","interrupt":"11.0.0-alpha.20","perhaps":"0.0.6"},"devDependencies":{"destructible":"7.0.0-alpha.54","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"8ceba2ca0476786c15e85c10517556a45758c7d8","_id":"turnstile@6.0.0-alpha.67","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-pDJ+cK3hhNhAwjWXgfmP6HVe3UDMKW1kgV5QU+xTLm1wRhwO1ThYDYVPCGaluhOSoLMn8iE8KTI1Er3cIx2kNw==","shasum":"8c1054c5a7c48a9d4b8659a0539172b7b1d21ba6","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.67.tgz","fileCount":7,"unpackedSize":15849,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTaDtCRA9TVsSAnZWagAAnFUQAIz9foRSuL9pb2wiG1TF\ncJFoY8hm8IdEHYVwkFU1s7fqMTzKuGyYu8qKX8veHYYpIkxZXo1aTEBsmI9e\nbVmWNz+r4n4ULBaYDhRvzQMzKY/F+UMrI92brfyNwqT5n9MVuuPn8qF4S/rT\nztBNY9UP5SOvSqt5WK9rusSOLedbqhFmtAP9k3H4TKoq6UFUdIFktywooKcz\n1Lq2cwEzHkMcgoZYtQ5igA4hcM5BeIRXiult5zIQIXLnsdZ5/64DXpgYJbfd\neBcV21OC4Z4zOd+r9Zyup40DfKpYN59DxDfhW0z7TQmtfjkUS7k+n1Ivnn5x\nL0puLv9TFMWT51BVgXZ1fBda1iLZm/sShdyVGlb74W3oQgOySlNUKlbQJbFe\niD6U1CX8NtQeaUQFbRdAZeWVKZcKGM3jqRE1s5qm5mULQVQ6rOrA/Io3cJb0\nMn9YwW9T+t1HcffgDtHlJrVYg9EHNJrLFU/2BvqJ4X4+sJpaqq04Lto6XbFt\nKQInDSmQ+SJAplXTtqUQVWNWRRW9ecFiRXMsTnmvF6EEeTxwivEZ/eea3Ogl\n4/0cYfPgUaYX7KV5aJ3bcjPIuziQUOaGKNTOe8pXaOOCGRfzaR31qLlAxhKO\njSkr5L5HsWuMC9zElQspeqxCQ4FmGstLXjlHFhGU3FQ50uXipyDKSHS1sK3c\nzB9n\r\n=FKyt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDruxCvPg3VxrWkMRaoJS82ZTxED1UMWcVWY1Np2t3cpAIgEGJDGsjxOwL2SuU9B6Ds5/axe9PIhQ/o/7aYQAkbOOU="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.67_1615700204694_0.7775710377035812"},"_hasShrinkwrap":false},"6.0.0-alpha.68":{"name":"turnstile","version":"6.0.0-alpha.68","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^2.0.0-alpha.0","interrupt":"11.0.0-alpha.20","perhaps":"0.0.6"},"devDependencies":{"destructible":"7.0.0-alpha.56","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"815dc4f397035957e4fd7e56c425f8b5346319b8","_id":"turnstile@6.0.0-alpha.68","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-J2BwmacwEyLNS1giO9llIADO5JW7705SmxPYocLwTrPljR4rbUJ31PcrAkWGQZAt4wXcXsL0RGkbW2upNVcVvw==","shasum":"9736bc3c17dbf73f154272a038185b472697fe95","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.68.tgz","fileCount":7,"unpackedSize":15849,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTaG+CRA9TVsSAnZWagAA0kcP/Rhf4c+y6UXxT//9NFwc\n6kRv9xPMj1cGSHVta/iOewOeGYd5wnXonmVyFgxKsTr+bZTZld9MweVCz9aa\nDgn8UvKK3lPXiGNGB+pmtfKtuQY2NxkBp0plD0NIurZJQ8WOO92fDcDW8MwM\n+gK/fvsku13XDkUIlQTzb8XwV3sVAZfcPiWjFgTWXd0tN1yC+oHDvi827274\nFtMJw7hSmhDIt96zY7aclLwKXDgtfV/Jtg9G0DKi+Vg4EIEPK883Zubgvjaz\nyOsdhfwxpPqvb5ONjcrD7oVoV2i5/opmBfcSpKpIokwv5mX/YGNIPJCrX9E3\nndSI3kApJ8U1wuWt+D59agjxrgWCW94SondrQUPnZPHNuCuvlifaXxStNHF8\neunSQVfvQdDXJC2Ig9pUCG+G+sxuR1aH+SQJRmBJnoQd3nLrAqm2U+5z4OQM\n8c1AaBd2xApR+6VD+du+1iMUiRKMWtE4zVRcfypHoGt8g190qFPacI+6Uaad\ngonwoujQfI6DJuJ2nPUByuw+IU7CFzEV9MVsRdVUTYj566yO9SepucCmSacM\n9W3haGciKOVjc33ClJqoQMLll2HWl051jY4X9Bp0QhxofUkR8paX1h4hGA4Y\ntzpjEzi1K7QOWQ2Hdw/i0rZc5LZLrgJDg0h+HUGje3qOb+yMmZ+D1eNil4wt\nYyPV\r\n=QIOg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCvqz6HKJWW+eZWujbteOzEziSvl3NZxmQpD1jNu3jy4gIhAPt8caWNZcthJkVHESf6JfvPVFqQuFPztWy/jvFizbhE"}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.68_1615700414318_0.3523405900901917"},"_hasShrinkwrap":false},"6.0.0-alpha.69":{"name":"turnstile","version":"6.0.0-alpha.69","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^2.0.0-alpha.0","interrupt":"11.0.0-alpha.20","perhaps":"0.0.6"},"devDependencies":{"destructible":"7.0.0-alpha.56","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"498ecc7fb4feaa7e0875054662e24e7d947a0cc9","_id":"turnstile@6.0.0-alpha.69","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-KvXBngWWfPrQ9Gk3rSt5Efjl2fGSjPR+FCOpR7CACj8R4d8VAR+Nq8yem3RyjN/GZoJat5jTzbzyL6jefHygwg==","shasum":"6ec1e9db64700350b804d5f2199467db8b883085","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.69.tgz","fileCount":7,"unpackedSize":15884,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTaOmCRA9TVsSAnZWagAAybsQAJ9NxaWcUng7miTuyive\nneZ0lhi1SbGf4otAQn532l7PJhSgJjBzQe+qY+hukhYCj8oTEsvivbRiwO8G\nNS1pTacZY5jUNs8Sjr5YOjd9fkOqxyJgIYh7/sh3LXpSxb4Ny7Al3rIY99QI\nxcNLU+aXss0O8TirlQf5e1TgvsvUWhIedyPQuy+qVt/sfZoxGDoNYVo2UOtZ\naDnMiSrjJ+jxvxGUYwjTzHxC7VsH8uciLjtG2sq+aNTAIo+iqDqrp4CHSHaE\neyAj9ejAUSIQDf2NGnkfcZtkXZVVICaHsKGstoEkf7C39SENvEBYoo3h0tlJ\nl3FMhREEfoCYi1qFH/7MCNSoaOMYpQA5GUoTPQygEa6HcePV/KDGFmwIZjWZ\nYyvU2ZgEn8xzC+cSe95UFX7f6j2PFAIQoL7dNHTnpiFu+KsrBzcTt45AoYhl\n9kWacKkgDyU8oOynAQ4wkkGlWSQ6a59vxlUhMdNpfP1KabyIY3N94i2Ppmvs\nprFiFASUct2c/ehS7Zj8c9lcamydC7saO3swnsStaQwrx+WhXc6E2MXxBEsz\nlDPXRT8sJ8X7adGap6JGIbpEUk8ND28lQWsryQNADBguuNLeAwqlsnOMA7CG\nrUIGjFl2DF2soECGk+BTmcKysClVR/rWOYEylWqczCMUW2UJWo5Gcf0b1ppp\nDDQ4\r\n=/BJY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBT8vvz75Xe+ZBAtvhns/nQNVx6ANJ3iNbQnMcixYaQ9AiEA0biH+7WyYl5VBVyG0RiTbeHXQo/SFAokgW3amG+hyM8="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.69_1615700902325_0.6177335711458845"},"_hasShrinkwrap":false},"6.0.0-alpha.70":{"name":"turnstile","version":"6.0.0-alpha.70","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^2.0.0-alpha.0","interrupt":"11.0.0-alpha.20","perhaps":"0.0.6"},"devDependencies":{"destructible":"7.0.0-alpha.57","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"2d355859d6fa599f76c9f58ed36e1f0ca3f5b82e","_id":"turnstile@6.0.0-alpha.70","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-bnovtvGwMVdrw+0S8etLlAurpHLML+WZL+QUqjpBnPb3/Nr4ATMgwQklZH1TzAyc1d4kbO2pGcbAa/0V7YmklQ==","shasum":"a20bc9741f44dcc5430ca148421c6f704d857f63","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.70.tgz","fileCount":7,"unpackedSize":15884,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTb6GCRA9TVsSAnZWagAAic8P/jITtE2aKH/5WiUiPVUJ\nl6s6QA5cxx/2EKG/HU0VHi8G/SysLmRULdWHx0rzWaOiKO3GoHK/giZ1JMER\nXWTqZeXTLi0PIGbHexTJOCWjc6XJH7hq5a5UYbWP6RLaH3CttCCqZSo3E9wV\n384/2hzpW3sWbiIGrCNryYlBDgnp3QTt3AfE5jFv8ASSXnxbxDIvuPSCTNCd\nIUv+BVMmqp45gzY/7fGA3UN8ckD3UsBNk30vpIlBdUVQkTUmg5fixjs4DHnG\nj5tyqCKCqYHB0YAIvITFHldCQbiJa3gvvQpA/p/SMYAN28DSZ2V6ZcidjL02\nNxwGjqki/njakQZbe1g9v5+q32A2zveZ73VAKHnaTwY7rQq0DaqEJb4+0ySa\nteG6TfFHWsoyhMzKGOuz1s/v4+NAVq6T+BdI8KjDnmpLtW/NQFWOSL+uKhkY\n2abLfm8Erf8f3Q4u2w36+6gpkot+R+mz2c2N/lxxUo7WTlamv3EtSlNpA/7J\nC7KWTKfTQ/MZldagM/Cb+uGP1UG5SFQYYNBTf7hP4lkQrjZj30IPgrq85O3x\nzINv4hKNAMImmlLOaDj+wNmDKKltvs1yJQ3lXVv7ApTI6fusbdI3jN5t0Q0v\ncu12BWrymu/MjtHohrMiVQTAvwp4W6WcSvR1Aumvq0zl3eqYoYK6Cng267NK\n2gZi\r\n=5nQi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCVeisbS8unjMKSgqSQ00t4km6U9PUnaq/NJyWx0lxh/gIhAISEUmqVK/vsQLGv3Jn6gbJ0lSay6/ZOUd6C6mAmnV2c"}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.70_1615707781885_0.19984943756357887"},"_hasShrinkwrap":false},"6.0.0-alpha.71":{"name":"turnstile","version":"6.0.0-alpha.71","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^2.0.0-alpha.0","interrupt":"11.0.0-alpha.20","perhaps":"0.0.9"},"devDependencies":{"destructible":"7.0.0-alpha.60","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"cb2d981538057beef24f5013bd6a22aaf3bd5206","_id":"turnstile@6.0.0-alpha.71","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-vRt1nkb6L+GFk6FsMUjGtapHI8FfzrzPKGrk2NUDlaW6WRlzj7AoxXcv8zT9wXHhDBrVOZ9jS71sQKTLqxQRhQ==","shasum":"3874beaee6010a9bdbbf664ccca47f5c868962e4","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.71.tgz","fileCount":7,"unpackedSize":15884,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTpZ3CRA9TVsSAnZWagAAU30P/0uOqNRoOytlFi9KaSU5\nUO4alZbPbK1QsA551UmqnyAsQsChxunNmve3aIKUvgo6zsf+Cyh2WxtxS/LT\n+uaBQYQlFQS7iTnYNgDp85MI3e7TcSAQw8U5b6pNgWg1W2QqFS3dMSz3vwl5\nY7i47uyG8RhrNmEOtT6DWXbicF01dSD/qQjFAJ0jp6m3WNbizbW1K6rhNtv+\nPylUMsszgxfIMdIOPVI3reyOSMRLy350uGFMNoqJwuDAg05DAHRPp3xr9BHp\nvhPLktIO3oMoy+cAzZSi1aLkMtLYbLZBeKddv1naLQhHIak17jXqzQDiFh4h\ndZFr8B7vsYe7L61WacEG6sCbJJTfIbw6AXeEXTQDjhsglYfQ7pXQ00oIKLac\ncQFr/opHnY15pkpqUy7VLA4Eheiu5fTLztJue6CnyfrOgE6NsnRoXuImbsIr\nPpmrlyLAceqQTkPyLO/u4Zu+cRTITR7IUicR5rMrf9H68ty4h//5JNE/g9dC\neheUiWv357iRZK4DauZmqRIrL8wGvXW5gb35P20lgK0EEEXOa5HxmPKaPMAV\n1aqwhe+igSpbDF/oXOlcHeizIVBboXDt3rF2jz7VapzyBubf5t++JbsemZGD\nAJdtBC8icaea3alhTmTCLenL6le4HZOpW3rS5CjQvn9s5dBBvF0f89J+I0Mu\nI8rm\r\n=Bu3X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDl0dFSHIPMx5oBJKnOS3uVqAc0iygFZdMzL2/hvjnnxgIhAIkFSM6oXgWp68VGxCv6/hfHzknJMEobRRHAvdiBpzAZ"}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.71_1615763063018_0.008628392050479272"},"_hasShrinkwrap":false},"6.0.0-alpha.72":{"name":"turnstile","version":"6.0.0-alpha.72","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^2.0.0-alpha.0","interrupt":"11.0.0-alpha.20","perhaps":"0.0.9"},"devDependencies":{"destructible":"7.0.0-alpha.61","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"dcfc5af7361868dfd5bcee529ef925284b286351","_id":"turnstile@6.0.0-alpha.72","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-jhGhi59d4WuF2oQwNhfSHeRhrR+Ptpp4tOOjI6/bImHkjkU/dpvI9Q30wy8UIPIwDQWW8cS4gnVarljTr1Rmiw==","shasum":"60d0db48bba6c538f8024c4b218b9272eab5e69f","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.72.tgz","fileCount":7,"unpackedSize":15884,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTphcCRA9TVsSAnZWagAA2GEQAIZZMtvU1jb5/l/bDzBk\n7UGFO0aN/RNOQ+G+jE4x7sN49HU6ggbGPXEcyLIhKkzFuz7+SYXGdePll3yV\nxYZCu4RUVPhY9KEN6+25Y1I6ngGZdLX7Cwra14vAkcMMObhg9adOmgzuT/R9\n8HOMV0gnUflBkpxHc7abugxsGldrGO1OCrCJpMPt9X3kKT0rYESeTVAUVE6r\nr4lbyAtFiObT49OZ+MeX0HoHRSigGl3jWdOLbj5eilHDfD2El1PX/jn8wSSh\ndPdsKYNve6haKrlo7RiWLP7Dp30awmKQmzKFUr25L1Mx2zVX3Q6OMGKl7BoV\n3laW+kSvmpMb4b3Csp2pnIKQCHkeweDumoUpLjGv2peS1QgZay/ggRBnaGrG\nRmIGZOmFwYs+eOI2TmcpSsQmLzaqsY/zvNAkonfNRBC3X1exYdaNq/5QwNGV\nPVAuWIjL8PGKydYMVIB5t5idFoLYlIL+DhojZ+mQV53HRjDsOb+o7EoLtFTE\n4Zw1TyIyjocKDMybRJ75wFZP4qWDVE20ahoyVe5QVrgZ+NQhsIUzz6LR7Kpx\ny4faQL5s+g3qiKPSm72g+IO8AH8UC6GatvJ6ysONkzLWuV16S/an6vJzbv3V\ns7PcMdKoOoDHszC4l89ZqK4dGWXXE6dGSHb294FTpxcy3Pyv4YDy7anwt9h/\nPNHr\r\n=CxvY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDbz/5hhqvzs2QeNYZIIqXy1cHhmQm6VDCaLEf8KIlybQIgPkj3XjxWUelLmeJKXaGqqjiogM3gj6rIonLLcgDVF8c="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.72_1615763548094_0.5611121383491255"},"_hasShrinkwrap":false},"6.0.0-alpha.73":{"name":"turnstile","version":"6.0.0-alpha.73","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^2.0.0-alpha.0","interrupt":"11.0.0-alpha.20","perhaps":"0.0.9"},"devDependencies":{"destructible":"7.0.0-alpha.62","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"31668ccabe0b14916049b09a14037071369eae2d","_id":"turnstile@6.0.0-alpha.73","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-7KXpJscv0XQsanWceKh8nBZWi3im0KTAiTjgOwzfYCWQDtTNnzedZaeRc5VW5bhRI3GBxuixCAA97Qdw0lmGyQ==","shasum":"fd02a26ac1f9654a5e234042715bfd4b43c71a33","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.73.tgz","fileCount":7,"unpackedSize":15884,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTqCpCRA9TVsSAnZWagAAlVAP/iJggIcX5J/wqE/asujP\nuho/49a7bJIjLiGHe5r1sqBr3jrt0KbxCH71kq+sV+bRmUumCipoi2lEqRsm\ntCAiazE4Zr0xW7iubB3KYhRoTiMMgYySsnswtZ9Wj9DdyiiEIUuPGBAHS/a2\nZchvT2rzEqa/ND5E4EVtDT0oLF5y7Mte0qkbBoDJi8ICIOtTxl91olHgC1j1\nVzojaLFkb9afSaRdcbsUrsndq0RyTPL3voIiyVW7kTlD+gwXGT//raK9iHoq\nAhI9jWGsrnxChBkgUPqT8u8CWVsC067SKyvM3+GJhnmAKNmGzBvncwYZLXxT\nv5rooQqI0HMSNdVEcDqoWCVZVmYEh8CAV12G2pfjCcr/Q4CAnFMvEZSDvNAT\nK+fo1tqdXMLqQs4ZZWvJpXP6WTjeVPy5dZA5wX/gTNayAWZHVj6sTvoo7tdL\nVqm1onNRejmt0qDtcL4nxjIj3sZW8/YqoI8IiPVgLby9NVWC6RUiLa+9bm9b\ngGZYwcwOE8on93xT9zM5seJaW0MGHPXaBHG0jAmrFzF5WFfFZ+CAMsJLCs2M\nkJBhqksxhPvxgqDfeMJkDyQIYdmFrJne99ySUxfu6nNsLDCaOt0uie+LFYrg\nCH7NZiObalyt1EYwAeNc7iEJNczKyVy3qz6kNJMjQfDrqCNH8G9Ux0l4folm\n1Vt5\r\n=/t5V\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICz+9qPsdhawJobopJobhHKlyJsPzNCn/N3QI/H7zi/zAiEAjOxzA/opAQlmx/N1+XfMyunmZbOqJe/ENRF9OaKT00I="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.73_1615765672757_0.9685227911853234"},"_hasShrinkwrap":false},"6.0.0-alpha.74":{"name":"turnstile","version":"6.0.0-alpha.74","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^2.0.0-alpha.0","interrupt":"11.0.0-alpha.20","perhaps":"0.0.9"},"devDependencies":{"destructible":"7.0.0-alpha.63","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"bd5a229e1e4f7df9cee7bb10d6cabf48574e18ff","_id":"turnstile@6.0.0-alpha.74","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-GSYD/SV1S8lJqGy/2dyz45RCqCTVe9uGpEWgfDALXhwpKAvRDfrgFJlX6bUw3ZUSFz+J/Z2VE8pGGHZtTCkpog==","shasum":"14d63afe7f22f609c8bc599b58624df0aacc9a74","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.74.tgz","fileCount":7,"unpackedSize":15884,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWVvaCRA9TVsSAnZWagAAOQQP/jnEj6TPPNQ5SnQUTSCh\n3blrj3ArP4UW/8DLWj+hZpSwfJIoy9rO5JF4d1/2MWcpbKF1iRxTmrNa5q1P\n6ftoX/SOi1yKdsW3p18MMK+ytQsYvQa6XX4SVRu7Mlo1+qMsQIWKX/LkPBHl\nK59uzxUTqyGFh4A4TDK/KE2LhEhGfHKH5Nnes7PyA3/XIzE3jR/QEE9+megL\nncb5LCuLCZcG10XGJGiMH9u4OfL9QzKco2eEH4ZTe/7LAdUpmIJvM8PbmeZz\nnGjhx3aW1NcmfV9TZyGZIym73IvKazJjqyeuk1fXwd2oS7Tyd6DB9ViwVRcI\nBfVtbO1N9EJ015ban8PvEPcDp7l7cLx20DkLQYbkmHH6l8wBQG7EfJ292pVG\nMRjZZ9KC9zO2cLUJOpbMp/2wo6SOyB2kSDpsmW9mVqYT9RW68HoW/5XEGXfr\nz+MRgTJdbRGFeIkdQroKkFehkaz/YGKZhjocpTqFeq/KATZ9L6LsQAhyoZs2\nVGA3VWWJFrufhuaM+lpRT+O7RWfGGSTKPIH8PHppllTv+gHnjLJjiUnlKCb5\nzVmMepa+6rBFLV15seaVIrxQGqJJJHb8BZC5HCOGYTKI0bDb4JINOjg2Obwd\nFfY9wD7d7qMXxqV5nlX4tWbdHQnLEpJ2uRTP2L5BBxJ70vgi1MSRPquYG9Gj\ns1cI\r\n=ixJb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE2/pK0vy8dTMpX2DNCjslFR/004T3LUXoW56zcijcr2AiEAt8je/g3ETPiKOZYGkrwuuVKuKJLnLPTyaYBVH22F+yE="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.74_1616468954120_0.39757107376590195"},"_hasShrinkwrap":false},"6.0.0-alpha.75":{"name":"turnstile","version":"6.0.0-alpha.75","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^2.0.0-alpha.0","interrupt":"11.0.0-alpha.20","perhaps":"0.0.10"},"devDependencies":{"destructible":"7.0.0-alpha.64","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"5a7c1fef7831715b8b26a06579ba0b42e72c5fb6","_id":"turnstile@6.0.0-alpha.75","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-/U5YHYd+QBmapxRZqzK7r5zzzXUgAIZ7Bcdzw1ZeUp7rJSCP8j7YBwVg4Nwu1HtKDkUHCJ4BYC/idD4x5WuvHg==","shasum":"14727b4d7ec68d451fb2933517bb9eb9b47523d9","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.75.tgz","fileCount":7,"unpackedSize":15889,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgX1gTCRA9TVsSAnZWagAAc3EP/3ZMmWagK6tKUl8/nU60\nfr0r+8ob0wgcJHidoTHGCdLsgCTevs+x1JMnztkAQHkicCi3S6B1qZy6Lr0q\nYmk1Px1OZAxYSsDNPtad+13O/jPKWjA23iqf2qDw4Y4AQjx9fiAYnQz7vrJI\nKXQeLH3zTCpmGlAAAFAUnwg0UFbOvG/0vXoTUP3l6U4MQN3nSvjAHjwBkvpm\n1Nx5fU/SF6YjZChh0iPi777zGzZ/nZ/zpwOsz58DqchT6PYdvssiohtGDbKN\nN0NCib+BVw6lJOv9gqO19o5JAIU4ZmqE9cZeuiRxr+ooXlS+T9Lmh0yH1Qds\njCH/20YX/oFnSEGCX7SdOnG/lkqKwgQmDpzX4brkI7loY8mhd2EEJQ4swglZ\n3ELULG51g1wQMuX/Hq73wFeWPzkOaAGxpthMdiUYZ0dU2A05f4uyQvZ0eRsM\n/Hm34M9mYQMYqnssfr5xuiS9Xg5xRkn2LwphutZMnowaidBkRQBrn0mV1b89\nKTSeVmW+X47tgtVodOmFNshpF1L7ML2txr83EPlC8alsr/yYLe855ZPuNXu0\n+NlzEZxGOIuswxKCJWvZMxF0lzw6iyzWKUMb2RxE6QrMdLt5C7YfcMmysiFl\n5RCO60YkJyU6+UT3rJAAdsPaImgF223iKahdWdGBwaMbghrof4BZreKR/FVL\nFF6b\r\n=QogN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEkr5RtfVFCMomPOYjoObk5VO9cxTu4r0AfMhp/TJwAMAiEA+2fGdZ7wn6ULG6QDxSDIfWPt0zcNMmQ1xfKOOQTTPY4="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.75_1616861203402_0.18857538834794108"},"_hasShrinkwrap":false},"6.0.0-alpha.76":{"name":"turnstile","version":"6.0.0-alpha.76","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^2.0.0-alpha.0","interrupt":"11.0.0-alpha.20","perhaps":"0.0.10"},"devDependencies":{"destructible":"7.0.0-alpha.65","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"f54fb1cb5c10fe934b672d8934ab386bd6ca2a94","_id":"turnstile@6.0.0-alpha.76","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-d0eOQa5d+oR0xNy1RTMKy5K76lR1F6ZrJh1RGNciAufgQ1TTYnfo/O5A3E3HrUV57T7Q8qlMt/MmjtyXaKXjBg==","shasum":"fbed283e92bd5a4101b7074d00a74acc651bdb20","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.76.tgz","fileCount":7,"unpackedSize":15900,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmrE4CRA9TVsSAnZWagAAMe0P/0b99O+sxlJ4zwU9lcrE\nQsgXVlzLhlZ0/1kz+pT2idIXpHE90mgkMrWhd8IqZd+AZYfnDBCdh3YFT5NY\n8XeXWhi5po5oflBYxyePqDEp/0oNtHUhQUGy+2/9017EAVpOmGhMki3clHaB\nWZAUISQEjdLP3L57/uZOkXcUt7aMRWi90cTTQ4SGnm2FEhK3qGbf/FOyaLKV\nk0PR/uFChhoz+kuh+Skc3+wjj9tEui4iDom2LZPHgYx2RJE2vG7mwNtaE5CF\nXFkOlW7gBcuTKnEXu+XjvxikwOXTh6nl6JdHinq7rafIWK14GKLsFIvwWWVa\n2afg4PIH/mDgn5j96EbZymGti0rKs8fpPpamFCmuR33EvptvNRPrPWcxd4XU\nK0NST2y0ydIQevcv51sbuVPoCnh4xN41vO/9LwG91XgKsgJLrZza/iuKHAvr\nOes2xPi/oOoqWYLLZT60AyUFc8uWFiSPC8Eb2yX700zOGUWp0vh6DYb5w+yg\niGtCDjSGTwnkQbS51SDyydYsfed4JQhz3zbvwVBJjP9uJqrpyirfCQIp3x5M\nFd63rsRADhYoslX2JG98tTtZWBvWx4F658xIf2RpiXcKu2ToKBZQe/ExHul9\nJ+q6Mn25n1jHZGMxPmHEpIDqvePXQ+KznK7sH6QBI67L7fjkPgz9Z88e4Lgb\nrtQk\r\n=5P0Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCBQ//HxuyANHqUCpu/QW5cNnZk2gQomBEX3GFGE7dEmwIhAKxod2P8D23VWKGiDPUmTVZAqINBteHCSkOMAdmINY9Y"}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.76_1620750648299_0.8751251337772468"},"_hasShrinkwrap":false},"6.0.0-alpha.77":{"name":"turnstile","version":"6.0.0-alpha.77","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^2.0.0-alpha.0","interrupt":"11.0.0-alpha.21","perhaps":"0.0.11"},"devDependencies":{"destructible":"7.0.0-alpha.66","proof":"^9.0.2","semblance":"^2.0.2"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"c9d3a437c1912098702d36e2561040a0616dcad7","_id":"turnstile@6.0.0-alpha.77","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-ouFQqpfAmF0xvlmq50m7oon4hfXcrFweHV0mqGC6OSQZSIskeKFeeKmEhryXm1hKR+wsnBfeB0TPyQS6NGFneg==","shasum":"2dd90735be70d7d511fe91539c9de2ccba2f11b0","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.77.tgz","fileCount":7,"unpackedSize":15900,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+dNECRA9TVsSAnZWagAAIKsP/3yR8kxQqGnZ7xunh4kb\nVe8JP/mJRJ7nFkUBBkuGzavVjIPdoVOKPrj4HjCr2SkI3o8XzbOrTpVS3cF6\n6O8of/H+6VGFaaoCp2MyKZ7LQUbN49kX3qtvXkZZhgUxrwkxsFfoXEC47RPO\nfvXyo/zXfI42M1kGR6ICILwCOMJVPjT1dRgq519U5lnTXSlNGW46B+jRm8Hp\nYYQRY8/XhcsJbbq+U9lHsDdshyk1ASAY/WySdfWS9eYe9XoJeiNvpa/5yWRy\nxo2KsdlnOf3Lk78lgGTLA1AXIiWJ+qu2BPDF3Sh9ZJuCcXoXyr1ebCR7TyjJ\nX7r/pjmOptRRQmHU+FcQQauiy0+fXitgKWC1eCgfUolAoNDL8RNxcenReYZr\nPwNHd7daC5bNgqkTq9TkCbiwdZFvUFJS9zHMnAGisnjRMvBgmYaK+YuQ9X3d\nGIn1s0R3auXuHcapL5T82v6hPKuUvhj/1ctSUdYTVm0aRSk/PqumTTlFocd8\nTBG01qr4n36qEzRrO/8i3jmr6Ohni3yujExerGAAyOD5aseVgkJh7k5C3zwt\nJwMXyjCGi/HcyTRClmmndiy+jg8sB5Zbx82TA/yJUmRBoll7s3CitYzLMzQm\nDVtp+88iZSiDwLnTyE1KMuc86sQIWJZ3SBdu2T2IjESMC5ldH5tnhOm7mC41\nanS7\r\n=aJB9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCyl0pA8FidR16QKWFPn+3l7REcwcWRRpuFstwtHBJMiQIgLOxhc9xS/jJb/ivy6jRDPeILBB5ns3Fq7un1voyYiuM="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.77_1626985284118_0.11397154332747883"},"_hasShrinkwrap":false},"6.0.0-alpha.78":{"name":"turnstile","version":"6.0.0-alpha.78","description":"An evented event queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^2.0.0-alpha.2","interrupt":"11.0.0-alpha.23","perhaps":"0.0.11"},"devDependencies":{"destructible":"7.0.0-alpha.67","proof":"^9.0.2","semblance":"^3.0.0"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn `async`/`await` parallel work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"be37a27705a3578c19e1ffa9c48114390168b651","_id":"turnstile@6.0.0-alpha.78","_nodeVersion":"16.5.0","_npmVersion":"7.19.1","dist":{"integrity":"sha512-oxhv/Z/LDA/n3BQpYFfLO5VR4NxBy4pFDuEJ9XDXIgluD8FVTYFZFPYtD5O+1YuU97Nw8yWrQNjjfX0/Iu+Cuw==","shasum":"4277e6025691c6bca79c8037045284f46609bfb8","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.78.tgz","fileCount":7,"unpackedSize":15900,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+lM7CRA9TVsSAnZWagAAgQgP/3U8AimOSpo+QgIcKKdG\nqwL+yFyeRcLcgx0xayuGM9V8Aq7E4ncyAZpzzWEKh9/+Jx/MWvnJ9cb9FQYC\n1yjnsl7MJZJAHIRFHb6YwlxTFPvPQ6HMkYrgEj8FKRRL0q3b2sjaNXziGo7Y\neYgV2/ueRlGRhaSVDmGCXADVG85Cd+VUfHyY29VHBRrHlhVdEUGNF0nvaibk\nvfGkNa72oJ2G1yOZV4rsTiQM8TM1e05Co+lJ4JdEHUMXC5JTbl2NgiiFIcT9\nlca8HEyAVJ+4U/OXvff2eUMHIsLw7wBKwCJ+IEeYkU3u+tXXM+Z64evZB+nv\niNKrNVoeTzpeSP7qyisPBUwR0ezdwAdv2N9fFWl6bFZTkcL2CskHio6Xw6m1\ntIlpuaAjQA5E52K29Os8QUd+/UD/NoN0SKiJjwES+7DMTovlmvYZa+KwKGvb\nQTf0LIPP3KlqoSeO6ooLb2WGP7QdXWCf9TNv1/nADkgtnuNMGdUN3eETpVWs\nFQThQWWQd83UrdNY51+SHuU9N+tKOrZirs5cEoUK7HHvSXvpk3JbNz7KXrrV\nVyEHeVUR/cHX0SpJTSODCtqKgiUFVAN1LQ/v6ukdrVp/BwITTNNutgDiOknO\n9gSkjXeSKFEaFzKSPt2hHOPJOQ99EYVrenVefdv3Gl2rKFH38yAQldXobOp5\nPloo\r\n=ZBWf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGQassnLksnIHAC2aIL0B+61hlmW07V8QeNKsO9ZqSYGAiBGAuP4HG2L6AHIzd/CL6R63V6hNDpCN5pxf0i0LleRLw=="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.78_1627018043407_0.8411211720173493"},"_hasShrinkwrap":false},"6.0.0-alpha.79":{"name":"turnstile","version":"6.0.0-alpha.79","description":"An evented, throttled work queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^2.0.0-alpha.3","interrupt":"11.0.0-alpha.24","perhaps":"0.0.11"},"devDependencies":{"destructible":"7.0.0-alpha.68","proof":"^9.0.2","semblance":"^3.0.0"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn evented, throttled work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"763ac1a29f073774ba2f7a91105eaa82079a4112","_id":"turnstile@6.0.0-alpha.79","_nodeVersion":"16.4.2","_npmVersion":"7.18.1","dist":{"integrity":"sha512-zEHFHpa41LjlI5fcn2FcgR94htWSokMB+rSBAapLHvKMQ78AoyXTnepwWgTYRpTkJ4K+ebow9cmQWOQs6QiZeQ==","shasum":"e01b645ac5da20fc7b4e65efdc09d293f1ddfa79","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.79.tgz","fileCount":7,"unpackedSize":15904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhCQz+CRA9TVsSAnZWagAAaBQP+wcS9pj4StrfI68BBi/t\nSCe2ivMu2GNLgCVkyRqvq3EC8msJ0yuU5QikYT75IYKlFyHyemjWIIxjDS6D\niWyTNuRKKufymu3IvTjBM00CtPf+fEHK3RRej+vb7OUiLpcOUN/yQ2+auofr\ngg+EhfD/MikAT3zRaiUgcTshaA0nynNPwTK+RE5x3Cp99Mt85+vQh2ZkPigw\nLixyx6IynR06byUthzHIOMZ4hzw/yttj6hUFWJH3PgEobmMLoPslaS2FRF1r\nMFz9XwFTr1TazdT16c/ANxx6VX+ctbQgtOorwtIebdZKuvwErDmzxhK2PlMN\njZWl3RtYI35qtm1rs4bbTvG6H1AyGl1lpr61tCUhj4MZ5bq65L93iHewjbtD\nyBjVpTvt5DRSNrApWaDP1Lofrxhv3Gg2j0HX92FQHp7JrYDbNhgHDTZA+pJO\nNYJBqFTkWLQlZwBl5IytRxHuyMFoH91hqWOIUQEykv2Zm3uicwL2lcWf3wqe\nmCU6cbrq0PBPfRY1L8XM6VxRttyGjZiHSinDLdJmQZcEPE8p8shM6wZdkJ5n\nsBu2lha5MOmvVA4Zh6aOqx7QC1nfTcGC9sBcR71HjlK0lDEO0l+j7Lkgi/mf\nSPnXwirogELI48P7c9Y/xurxJP3rLxIQMW7t9xquaCR2PDztqdgjULzWjKC6\nl4xO\r\n=4C84\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGBMc68Wx1nXAXNSX6iiul/RcHybmK9QIO2evVjPmE1vAiEA5ExGIY8Qn+8UlrpaeE7CPSg0AilhHpPUfbYxQ+yjfDk="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.79_1627983101922_0.8159605726917625"},"_hasShrinkwrap":false},"6.0.0-alpha.80":{"name":"turnstile","version":"6.0.0-alpha.80","description":"An evented, throttled work queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^2.0.0-alpha.3","interrupt":"11.0.0-alpha.25","perhaps":"0.0.11"},"devDependencies":{"destructible":"7.0.0-alpha.69","proof":"^9.0.2","semblance":"^3.0.0"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn evented, throttled work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"e986c0ba14698a28b4263a237bcaa62ae448a89e","_id":"turnstile@6.0.0-alpha.80","_nodeVersion":"16.4.2","_npmVersion":"7.18.1","dist":{"integrity":"sha512-Qsi9sCuCC5h/jk5jYKqh8QyMjVSXfx4pqHCcmxJol7kGgh33gj87szaZpzooX+OGlT+dMBREux+aZbrzS0Q/3A==","shasum":"6d67e43141291729c097063bd539c35d6548d622","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.80.tgz","fileCount":7,"unpackedSize":15904,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCVLgeCRYpWKuKmmHRoX8SQEuoy/jvoJPj1Aoh7Yp+7TgIhALtD8isRUK2sCTdUq7XtNuOG1sFip2Cl0to0KTjAGZR5"}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.80_1632107625082_0.2966831105653849"},"_hasShrinkwrap":false},"6.0.0-alpha.81":{"name":"turnstile","version":"6.0.0-alpha.81","description":"An evented, throttled work queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^2.0.0-alpha.3","interrupt":"11.0.0-alpha.25","perhaps":"0.0.12"},"devDependencies":{"destructible":"7.0.0-alpha.70","proof":"^9.0.2","semblance":"^3.0.0"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn evented, throttled work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\n```\nnpm install turnstile\n```\n","readmeFilename":"README.md","gitHead":"e0f3b82ff2b7220ce36d6547b64183d0fd54bae8","_id":"turnstile@6.0.0-alpha.81","_nodeVersion":"16.4.2","_npmVersion":"7.18.1","dist":{"integrity":"sha512-QL6AJvRm+ML21VaAGmsEzsZkGn4eWCcp+TIdXscRVQ5pW3WzQa1Qfi7xQ0GdDq1LYC9XmBCM6HqQGdsZiUgoYg==","shasum":"432a41774c5151d923f4106f0985b34b120dd6e2","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.81.tgz","fileCount":7,"unpackedSize":15904,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCepAB6XUbXo0x6tz48+1bQhmfDXZsjcMyuaFVVZ3tDngIhAJFcPdt7mtqb617NxC+apr/MSgQUgWEqHDetQCvR0zXq"}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.81_1632163962883_0.5312579067729428"},"_hasShrinkwrap":false},"6.0.0-alpha.82":{"name":"turnstile","version":"6.0.0-alpha.82","description":"An evented, throttled work queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^2.0.0-alpha.3","interrupt":"11.0.0-alpha.25","perhaps":"0.0.12"},"devDependencies":{"destructible":"7.0.0-alpha.71","proof":"^9.0.2","semblance":"^3.0.0"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn evented, throttled work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\nTurnstile installs from NPM.\n\n```\nnpm install turnstile\n```\n\n## Living `README.md`\n\nThis `README.md` is also a unit test using the\n[Proof](https://github.com/bigeasy/proof) unit test framework. We'll use the\nProof `okay` function to assert out statements in the readme. A Proof unit test\ngenerally looks like this.\n\n```javascript\nrequire('proof')(4, async okay => {\n    okay('always okay')\n    okay(true, 'okay if true')\n    okay(1, 1, 'okay if equal')\n    okay({ value: 1 }, { value: 1 }, 'okay if deep strict equal')\n})\n```\n\nYou can run this unit test yourself to see the output from the various\ncode sections of the readme.\n\n```text\ngit clone git@github.com:bigeasy/turnstile.git\ncd turnstile\nnpm install --no-package-lock --no-save\nnode test/readme.t.js\n```\n\n## Overview\n\nRequired.\n\n```javascript\nconst Turnstile = require('turnstile')\n```\n\nAdditional requires.\n\n```javascript\nconst Destructible = require('destructible')\n```\n\nSimple example with a timeout.\n\n```javascript\nconst destructible = new Destructible('test/turnstile.t')\ndestructible.durable('run and timeout', async function () {\n    const test = []\n    let now = 0\n    const turnstile = new Turnstile(destructible.durable('turnstile'), {\n        strands: 1,\n        Date: { now: () => now },\n        timeout: 2\n    })\n    turnstile.enter({ value: 'a' }, async entry => {\n        test.push(entry)\n    })\n    now++\n    await turnstile.drain()\n    okay(test, [{\n        value: 'a',\n        when: 0,\n        waited: 1,\n        timedout: false,\n        destroyed: false,\n        canceled: false\n    }], 'simple run through turnstile')\n\n    test.length = 0\n    turnstile.enter({ value: 'b' }, async entry => {\n        test.push(entry)\n    })\n    now += 2\n    await turnstile.drain()\n    okay(test, [{\n        value: 'b',\n        when: 1,\n        waited: 2,\n        timedout: true,\n        destroyed: false,\n        canceled: true\n    }], 'timed out run through turnstile')\n    destructible.destroy()\n})\nawait destructible.promise\n```\n\nTimeout. Note that b arrives before a because it was cancelled using the\ncancellation strand.\n\n```javascript\nconst destructible = new Destructible($ => $(), 'test/turnstile.t')\ndestructible.ephemeral($ => $(), 'run and timeout', async function () {\n    let now = 0\n    const turnstile = new Turnstile(destructible.durable('turnstile'), {\n        strands: 1,\n        Date: { now: () => now },\n        timeout: 2\n    })\n    const test = []\n    function latch () {\n        let capture\n        return { promise: new Promise(resolve => capture = { resolve }), ...capture }\n    }\n    const work = { entered: latch(), blocked: latch() }\n    turnstile.enter({ ...work, value: 'a' }, async ({ entered, blocked, value, timedout }) => {\n        entered.resolve()\n        await blocked.promise\n        console.log('a')\n        test.push({ value, timedout })\n    })\n    await work.entered.promise\n    turnstile.enter({ value: 'b' }, async ({ value, timedout }) => {\n        console.log('b')\n        test.push({ value, timedout })\n    })\n    now += 2\n    turnstile.enter({ value: 'c' }, async ({ value, timedout }) => {\n        test.push({ value, timedout })\n    })\n    work.blocked.resolve()\n    await turnstile.drain()\n    destructible.destroy()\n    console.log(test)\n})\nawait destructible.promise\n```\n\nErrors come out of `Destructible`.\n\n```javascript\nconst destructible = new Destructible($ => $(), 'test/turnstile.t')\ndestructible.durable($ => $(), 'run and timeout', async function () {\n    let now = 0\n    const turnstile = new Turnstile(destructible.durable('turnstile'), {\n        turnstiles: 1,\n        Date: { now: () => now },\n        timeout: 2\n    })\n    const test = []\n    turnstile.enter($ => $(), { value: 'a' }, async ({ value, destroyed }) => {\n        test.push({ value, destroyed })\n    })\n    turnstile.enter($ => $(), { value: 'b' }, async ({ value, destroyed }) => {\n        throw new Error(value)\n    })\n    turnstile.enter($ => $(), { value: 'c' }, async ({ value, destroyed }) => {\n        test.push({ value, destroyed })\n    })\n    destructible.destroy()\n})\ntry {\n    await destructible.promise\n    throw new Error('no error')\n} catch (error) {\n    console.log(error.stack)\n}\n```\n\nThe deferrable construct.\n\n```javascript\nconst destructible = new Destructible($ => $(), 'test/turnstile.t')\ndestructible.ephemeral($ => $(), 'run and timeout', async function () {\n    let now = 0\n    const test = []\n    const turnstile = new Turnstile(destructible.durable($ => $(), 'turnstile'))\n    turnstile.deferrable.increment()\n    turnstile.enter($ => $(), { value: 'a' }, async ({ value, destroyed }) => {\n        test.push(value)\n    })\n    await turnstile.drain()\n    turnstile.deferrable.destruct(() => console.log('destructed'))\n    destructible.destroy()\n    turnstile.enter($ => $(), Date.now(), { value: 'b' }, async ({ value, destroyed }) => {\n        test.push(value)\n    })\n    await turnstile.drain()\n    turnstile.deferrable.decrement()\n    try {\n        turnstile.enter($ => $(), { value: 'c' }, async ({ value, destroyed }) => {\n            test.push(value)\n        })\n    } catch (error) {\n        okay(error.symbol, Destructible.Error.DESTROYED, 'turnstile was destroyed')\n    }\n    okay(test, [ 'a', 'b' ], 'deferrable')\n})\nawait destructible.promise\n```\n\nExample of unqueue.\n\n```javascript\nconst destructible = new Destructible($ => $(), 'test/turnstile.t')\nawait destructible.ephemeral($ => $(), 'run and timeout', async function () {\n    let now = 0\n    const test = []\n    const turnstile = new Turnstile(destructible.durable($ => $(), 'turnstile'))\n    const entry = turnstile.enter($ => $(), { value: 'a' }, async ({ value, destroyed }) => {\n        test.push(value)\n    })\n    turnstile.unqueue(entry)\n    await turnstile.drain()\n    turnstile.enter($ => $(), Date.now(), { value: 'b' }, async ({ value, destroyed }) => {\n        test.push(value)\n    })\n    await turnstile.drain()\n    okay(test, [ 'b' ], 'unqueue')\n    destructible.destroy()\n})\nawait destructible.promise\n```\n\nExample of `options` and `vargs` static methods.\n\n```javascript\nconst options = Turnstile.options([ { value: 1 }, async () => {} ])\nokay({\n    trace: options.trace,\n    when: options.when,\n    work: options.work,\n    worker: options.worker.toString(),\n    object: options.object\n}, {\n    trace: null,\n    when: null,\n    work: { value: 1 },\n    worker: 'async () => {}',\n    object: null\n}, 'options')\nconst vargs = Turnstile.vargs(options)\nokay([\n    vargs[0],\n    vargs[1].toString(),\n    vargs[2]\n], [\n    { value: 1 },\n    'async () => {}',\n    null\n], 'vargs')\nokay(vargs.length, 3, 'vargs length')\n```\n","readmeFilename":"README.md","gitHead":"ceac5a6b5df220505d96c58c5495d71036366e8d","_id":"turnstile@6.0.0-alpha.82","_nodeVersion":"16.4.2","_npmVersion":"7.18.1","dist":{"integrity":"sha512-Vhpu4RALAK1UGZarZ4AzZVWn2ajKHkp/4KR/t/nf/ignCmupLIOMfZAntmTVNMquB1s8pKce+2dfsPo0+XrY3A==","shasum":"7d45fcbc799c30757178b8353823626aea277539","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.82.tgz","fileCount":8,"unpackedSize":22619,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDX+o7mb5bJeE9Iu8VQKD4aNv0huvUgxzHaQmISX/oaXwIgCTYLTDoAyHYfMTSLgnlRyeFOcnoXWOCKQNS8mR/7flg="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.82_1634311483116_0.24915510533170337"},"_hasShrinkwrap":false},"6.0.0-alpha.83":{"name":"turnstile","version":"6.0.0-alpha.83","description":"An evented, throttled work queue.","keywords":["cadence","queue","events"],"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"homepage":"https://github.com/bigeasy/turnstile","bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"dependencies":{"extant":"^2.0.0-alpha.3","interrupt":"11.0.0-alpha.26","perhaps":"0.0.13"},"devDependencies":{"destructible":"7.0.0-alpha.72","proof":"^9.0.2","semblance":"^3.0.0"},"main":"turnstile","scripts":{"test":"proof test/*.t.js"},"readme":"[![Actions Status](https://github.com/bigeasy/turnstile/workflows/Node%20CI/badge.svg)](https://github.com/bigeasy/turnstile/actions)\n[![codecov](https://codecov.io/gh/bigeasy/turnstile/branch/master/graph/badge.svg)](https://codecov.io/gh/bigeasy/turnstile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAn evented, throttled work queue.\n\n| What          | Where                                         |\n| --- | --- |\n| Discussion    | https://github.com/bigeasy/turnstile/issues/1 |\n| Documentation | https://bigeasy.github.io/turnstile           |\n| Source        | https://github.com/bigeasy/turnstile          |\n| Issues        | https://github.com/bigeasy/turnstile/issues   |\n| CI            | https://travis-ci.org/bigeasy/turnstile       |\n| Coverage:     | https://codecov.io/gh/bigeasy/turnstile       |\n| License:      | MIT                                           |\n\n\nTurnstile installs from NPM.\n\n```\nnpm install turnstile\n```\n\n## Living `README.md`\n\nThis `README.md` is also a unit test using the\n[Proof](https://github.com/bigeasy/proof) unit test framework. We'll use the\nProof `okay` function to assert out statements in the readme. A Proof unit test\ngenerally looks like this.\n\n```javascript\nrequire('proof')(4, async okay => {\n    okay('always okay')\n    okay(true, 'okay if true')\n    okay(1, 1, 'okay if equal')\n    okay({ value: 1 }, { value: 1 }, 'okay if deep strict equal')\n})\n```\n\nYou can run this unit test yourself to see the output from the various\ncode sections of the readme.\n\n```text\ngit clone git@github.com:bigeasy/turnstile.git\ncd turnstile\nnpm install --no-package-lock --no-save\nnode test/readme.t.js\n```\n\n## Overview\n\nRequired.\n\n```javascript\nconst Turnstile = require('turnstile')\n```\n\nAdditional requires.\n\n```javascript\nconst Destructible = require('destructible')\n```\n\nSimple example with a timeout.\n\n```javascript\nconst destructible = new Destructible('test/turnstile.t')\ndestructible.durable('run and timeout', async function () {\n    const test = []\n    let now = 0\n    const turnstile = new Turnstile(destructible.durable('turnstile'), {\n        strands: 1,\n        Date: { now: () => now },\n        timeout: 2\n    })\n    turnstile.enter({ value: 'a' }, async entry => {\n        test.push(entry)\n    })\n    now++\n    await turnstile.drain()\n    okay(test, [{\n        value: 'a',\n        when: 0,\n        waited: 1,\n        timedout: false,\n        destroyed: false,\n        canceled: false\n    }], 'simple run through turnstile')\n\n    test.length = 0\n    turnstile.enter({ value: 'b' }, async entry => {\n        test.push(entry)\n    })\n    now += 2\n    await turnstile.drain()\n    okay(test, [{\n        value: 'b',\n        when: 1,\n        waited: 2,\n        timedout: true,\n        destroyed: false,\n        canceled: true\n    }], 'timed out run through turnstile')\n    destructible.destroy()\n})\nawait destructible.promise\n```\n\nTimeout. Note that b arrives before a because it was cancelled using the\ncancellation strand.\n\n```javascript\nconst destructible = new Destructible($ => $(), 'test/turnstile.t')\ndestructible.ephemeral($ => $(), 'run and timeout', async function () {\n    let now = 0\n    const turnstile = new Turnstile(destructible.durable('turnstile'), {\n        strands: 1,\n        Date: { now: () => now },\n        timeout: 2\n    })\n    const test = []\n    function latch () {\n        let capture\n        return { promise: new Promise(resolve => capture = { resolve }), ...capture }\n    }\n    const work = { entered: latch(), blocked: latch() }\n    turnstile.enter({ ...work, value: 'a' }, async ({ entered, blocked, value, timedout }) => {\n        entered.resolve()\n        await blocked.promise\n        console.log('a')\n        test.push({ value, timedout })\n    })\n    await work.entered.promise\n    turnstile.enter({ value: 'b' }, async ({ value, timedout }) => {\n        console.log('b')\n        test.push({ value, timedout })\n    })\n    now += 2\n    turnstile.enter({ value: 'c' }, async ({ value, timedout }) => {\n        test.push({ value, timedout })\n    })\n    work.blocked.resolve()\n    await turnstile.drain()\n    destructible.destroy()\n    console.log(test)\n})\nawait destructible.promise\n```\n\nErrors come out of `Destructible`.\n\n```javascript\nconst destructible = new Destructible($ => $(), 'test/turnstile.t')\ndestructible.durable($ => $(), 'run and timeout', async function () {\n    let now = 0\n    const turnstile = new Turnstile(destructible.durable('turnstile'), {\n        turnstiles: 1,\n        Date: { now: () => now },\n        timeout: 2\n    })\n    const test = []\n    turnstile.enter($ => $(), { value: 'a' }, async ({ value, destroyed }) => {\n        test.push({ value, destroyed })\n    })\n    turnstile.enter($ => $(), { value: 'b' }, async ({ value, destroyed }) => {\n        throw new Error(value)\n    })\n    turnstile.enter($ => $(), { value: 'c' }, async ({ value, destroyed }) => {\n        test.push({ value, destroyed })\n    })\n    destructible.destroy()\n})\ntry {\n    await destructible.promise\n    throw new Error('no error')\n} catch (error) {\n    console.log(error.stack)\n}\n```\n\nThe deferrable construct.\n\n```javascript\nconst destructible = new Destructible($ => $(), 'test/turnstile.t')\ndestructible.ephemeral($ => $(), 'run and timeout', async function () {\n    let now = 0\n    const test = []\n    const turnstile = new Turnstile(destructible.durable($ => $(), 'turnstile'))\n    turnstile.deferrable.increment()\n    turnstile.enter($ => $(), { value: 'a' }, async ({ value, destroyed }) => {\n        test.push(value)\n    })\n    await turnstile.drain()\n    turnstile.deferrable.destruct(() => console.log('destructed'))\n    destructible.destroy()\n    turnstile.enter($ => $(), Date.now(), { value: 'b' }, async ({ value, destroyed }) => {\n        test.push(value)\n    })\n    await turnstile.drain()\n    turnstile.deferrable.decrement()\n    try {\n        turnstile.enter($ => $(), { value: 'c' }, async ({ value, destroyed }) => {\n            test.push(value)\n        })\n    } catch (error) {\n        okay(error.symbol, Destructible.Error.DESTROYED, 'turnstile was destroyed')\n    }\n    okay(test, [ 'a', 'b' ], 'deferrable')\n})\nawait destructible.promise\n```\n\nExample of unqueue.\n\n```javascript\nconst destructible = new Destructible($ => $(), 'test/turnstile.t')\nawait destructible.ephemeral($ => $(), 'run and timeout', async function () {\n    let now = 0\n    const test = []\n    const turnstile = new Turnstile(destructible.durable($ => $(), 'turnstile'))\n    const entry = turnstile.enter($ => $(), { value: 'a' }, async ({ value, destroyed }) => {\n        test.push(value)\n    })\n    turnstile.unqueue(entry)\n    await turnstile.drain()\n    turnstile.enter($ => $(), Date.now(), { value: 'b' }, async ({ value, destroyed }) => {\n        test.push(value)\n    })\n    await turnstile.drain()\n    okay(test, [ 'b' ], 'unqueue')\n    destructible.destroy()\n})\nawait destructible.promise\n```\n\nExample of `options` and `vargs` static methods.\n\n```javascript\nconst options = Turnstile.options([ { value: 1 }, async () => {} ])\nokay({\n    trace: options.trace,\n    when: options.when,\n    work: options.work,\n    worker: options.worker.toString(),\n    object: options.object\n}, {\n    trace: null,\n    when: null,\n    work: { value: 1 },\n    worker: 'async () => {}',\n    object: null\n}, 'options')\nconst vargs = Turnstile.vargs(options)\nokay([\n    vargs[0],\n    vargs[1].toString(),\n    vargs[2]\n], [\n    { value: 1 },\n    'async () => {}',\n    null\n], 'vargs')\nokay(vargs.length, 3, 'vargs length')\n```\n","readmeFilename":"README.md","gitHead":"a74e03dd8a7b549e2ae5263af55a83a4c50ad999","_id":"turnstile@6.0.0-alpha.83","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-2nu1qgnBraAA2v4tebCmLdUfpGvSAZFwHKxHuIb/xiFYnRBpGkRoBSECLRlnAiXw6mLMrJVSO7nU1JVy8jsgGQ==","shasum":"e2d7027f0ca35f65a164e29c7974226705d114e8","tarball":"https://registry.npmjs.org/turnstile/-/turnstile-6.0.0-alpha.83.tgz","fileCount":8,"unpackedSize":22619,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiAMjQCRA9TVsSAnZWagAATygP/2YgBV+FOO9DbSgCXd/9\n4B4J9hEq8ahdYYzHVDfpeiAaR/OaFNiRNyWBrvPYmWNEPogjNJ0t/3iGkWXI\ncK3syAR6fpFwxxLLSzCNMo6kTu8WJOOwQz9VCNzCSqn4dReocJ0Yha1VyJYF\nmntVbwDPb2GSzjajRb8nB+Nr1uRnItaAj5nwP82SR9ZPAIGZWc2ryf1CpriD\nmMBtJ/cfMHg/8Zu5rSFr4xiG9JDPgpvEtFdWDu5aihS+XqscELr1chpnncVJ\nYBKQNyofjM7dyvqsPbQ+QE+KRYDvOzHE16PJa11gZEIx0AEGUer4MjjXtwhx\nTMMRzp1ugLgt3HjJ0tRyv0secXe6YzMO/Xm0r9Sn9JVKXXO222Ae+Elia8rV\nx/1H6Upyax3lVpu030khXH0r5MhX+cIBhyqKnHne13FcXllRX682sL+cK1O1\n780QHKwYeECPgmBkGK0Q7+EhNB41u+XB3fD/knHhmp7gLmV4q6yZxE0uStSi\ni0WG3i6N5OuKNRmhDw6jHGMNbaaCuBFy5wHFUmc2v8bRLDa0I5u/2yPC/smZ\n3SDh37GgPzigZ8/VAbK/dzZbqlQGx6I/QW3T+3Db9FNaRE736F8WN1BUSgmw\nCdrkhAY/MAxXlg+xO8JFG7P+DTwsfZBEgjU9R9YVggz6bW8DK0GkQ+TnvMzp\nqNS3\r\n=iY2V\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHow9TQpIc0jlkuc4oQHdLu+Ke0e2rjDKo/htiFWBxEcAiEA1fPDTzLuyxjQeQmAx2t6LTLcBLlohmqV0vi9W+oTeyY="}]},"_npmUser":{"name":"bigeasy","email":"alan@prettyrobots.com"},"directories":{},"maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/turnstile_6.0.0-alpha.83_1644218576195_0.044629263921653894"},"_hasShrinkwrap":false}},"readme":"","maintainers":[{"name":"bigeasy","email":"alan@prettyrobots.com"}],"time":{"modified":"2022-06-27T23:36:40.665Z","created":"2014-02-23T20:55:35.020Z","0.0.1":"2014-02-23T20:55:35.020Z","0.0.2":"2014-02-26T02:18:31.751Z","0.0.3":"2014-03-31T04:00:24.260Z","0.0.4":"2014-05-25T21:48:25.994Z","0.0.5":"2014-06-09T00:23:13.863Z","0.0.6":"2014-12-27T20:14:02.228Z","0.0.7":"2015-01-08T07:59:09.469Z","0.0.8":"2015-02-02T18:32:36.020Z","0.0.9":"2015-02-06T13:41:47.659Z","0.0.10":"2015-05-22T17:29:54.113Z","0.0.11":"2015-06-03T17:14:54.118Z","0.0.12":"2015-07-20T13:30:27.367Z","0.0.13":"2015-08-27T16:21:50.675Z","0.0.14":"2015-09-02T14:16:13.481Z","0.0.15":"2015-10-26T16:46:12.641Z","0.0.16":"2015-11-03T02:26:57.718Z","0.0.17":"2015-11-04T19:21:03.322Z","0.0.18":"2015-11-29T19:36:42.865Z","0.0.19":"2015-11-29T22:44:19.830Z","0.0.20":"2015-12-18T05:30:02.108Z","0.0.21":"2015-12-23T17:11:48.732Z","0.0.22":"2015-12-24T05:46:02.220Z","1.0.0":"2016-01-21T06:33:31.174Z","1.0.1":"2016-02-03T09:15:52.570Z","2.0.0":"2016-02-29T03:17:22.457Z","2.0.1":"2016-03-05T10:23:22.237Z","2.0.2":"2016-03-06T15:44:42.633Z","2.0.3":"2016-03-06T16:30:16.582Z","2.0.4":"2016-03-16T00:58:30.935Z","2.1.0":"2016-10-26T18:50:36.758Z","2.2.0":"2016-11-02T15:44:26.725Z","2.2.1":"2017-02-27T00:33:48.083Z","2.2.2":"2017-02-27T00:56:38.980Z","2.2.3":"2017-03-17T21:10:18.573Z","2.2.4":"2017-03-17T21:15:42.388Z","2.2.5":"2017-03-17T21:21:48.436Z","2.2.6":"2017-03-20T02:34:37.976Z","2.2.7":"2017-03-20T15:44:56.917Z","2.2.8":"2017-03-20T16:14:26.570Z","2.2.9":"2017-03-20T16:28:00.785Z","2.3.0":"2017-04-05T04:56:10.516Z","2.4.0":"2017-04-05T05:12:57.400Z","2.5.0":"2017-04-05T16:28:46.640Z","2.5.1":"2017-04-07T07:28:35.499Z","2.5.2":"2017-04-11T18:39:17.182Z","2.5.3":"2017-04-30T02:40:53.310Z","3.0.0":"2017-06-15T17:52:51.216Z","3.1.0":"2017-06-20T16:29:58.557Z","3.2.0":"2017-06-24T00:26:23.627Z","3.2.1":"2017-06-24T13:15:10.626Z","3.2.2":"2017-06-24T14:42:46.241Z","3.2.3":"2017-07-14T03:45:10.352Z","3.2.4":"2017-12-15T07:26:18.466Z","3.2.5":"2018-01-07T14:02:47.683Z","3.2.6":"2018-01-11T02:47:08.944Z","4.0.0":"2018-03-19T21:58:13.089Z","4.1.0":"2018-04-19T02:41:43.910Z","4.2.0":"2018-05-27T06:20:27.105Z","4.3.0":"2018-05-29T16:04:32.470Z","4.4.0":"2018-05-31T06:46:41.192Z","4.5.0":"2018-05-31T06:46:58.131Z","4.5.1":"2018-06-05T20:49:48.453Z","4.5.2":"2018-06-11T06:15:46.651Z","4.5.3":"2018-06-19T18:18:49.155Z","4.5.4":"2018-07-26T06:24:35.747Z","4.6.0":"2018-08-12T04:52:31.904Z","4.7.0":"2018-11-18T21:14:47.598Z","4.8.0":"2018-11-18T21:15:32.029Z","4.8.1":"2018-11-19T01:04:08.112Z","4.8.2":"2018-11-19T03:27:09.003Z","4.8.3":"2018-11-19T09:38:54.251Z","4.9.0":"2018-11-25T12:34:24.723Z","4.9.1":"2018-11-26T12:20:21.840Z","5.0.0":"2018-12-20T08:36:16.414Z","5.0.1":"2018-12-20T08:44:34.612Z","5.0.2":"2019-01-20T23:12:38.045Z","5.0.3":"2019-02-28T09:35:17.732Z","5.0.4":"2019-04-16T02:57:23.815Z","5.0.5":"2019-04-17T00:39:14.061Z","6.0.0-alpha.0":"2020-03-20T06:21:04.296Z","6.0.0-alpha.1":"2020-03-21T07:46:42.979Z","6.0.0-alpha.2":"2020-03-21T09:12:18.617Z","6.0.0-alpha.3":"2020-08-19T12:11:39.800Z","6.0.0-alpha.4":"2020-08-28T12:58:41.423Z","6.0.0-alpha.5":"2020-09-04T06:01:47.692Z","6.0.0-alpha.6":"2020-09-04T07:08:54.395Z","6.0.0-alpha.7":"2020-09-04T07:20:29.297Z","6.0.0-alpha.8":"2020-09-04T07:53:23.248Z","6.0.0-alpha.9":"2020-09-05T04:33:36.325Z","6.0.0-alpha.10":"2020-09-05T17:50:26.469Z","6.0.0-alpha.11":"2020-09-06T00:18:12.725Z","6.0.0-alpha.12":"2020-09-06T08:45:08.369Z","6.0.0-alpha.13":"2020-09-06T09:29:48.355Z","6.0.0-alpha.14":"2020-09-07T15:12:09.456Z","6.0.0-alpha.15":"2020-09-07T15:37:01.006Z","6.0.0-alpha.16":"2020-09-08T05:45:19.868Z","6.0.0-alpha.17":"2020-09-13T09:58:19.786Z","6.0.0-alpha.18":"2020-09-13T10:02:17.791Z","6.0.0-alpha.19":"2020-09-27T08:36:31.215Z","6.0.0-alpha.20":"2020-09-27T22:06:53.760Z","6.0.0-alpha.21":"2020-09-30T05:07:33.595Z","6.0.0-alpha.22":"2020-10-08T07:28:35.214Z","6.0.0-alpha.23":"2020-10-15T12:39:00.571Z","6.0.0-alpha.24":"2020-10-20T05:05:05.333Z","6.0.0-alpha.25":"2020-10-20T08:17:21.607Z","6.0.0-alpha.26":"2020-12-14T21:34:47.286Z","6.0.0-alpha.27":"2020-12-16T16:49:34.842Z","6.0.0-alpha.28":"2020-12-16T17:07:34.667Z","6.0.0-alpha.29":"2020-12-16T17:23:38.265Z","6.0.0-alpha.30":"2020-12-16T23:04:56.629Z","6.0.0-alpha.31":"2020-12-20T17:25:24.163Z","6.0.0-alpha.32":"2020-12-20T17:44:18.350Z","6.0.0-alpha.33":"2020-12-20T17:58:36.412Z","6.0.0-alpha.34":"2020-12-21T04:59:59.889Z","6.0.0-alpha.35":"2020-12-22T19:24:59.497Z","6.0.0-alpha.36":"2020-12-22T20:26:59.757Z","6.0.0-alpha.37":"2020-12-22T23:55:25.166Z","6.0.0-alpha.38":"2020-12-24T05:17:13.542Z","6.0.0-alpha.39":"2020-12-24T05:32:50.563Z","6.0.0-alpha.40":"2020-12-25T03:33:55.568Z","6.0.0-alpha.41":"2020-12-26T03:20:59.083Z","6.0.0-alpha.42":"2020-12-26T04:17:47.061Z","6.0.0-alpha.43":"2021-01-02T05:36:55.798Z","6.0.0-alpha.44":"2021-01-05T07:53:59.128Z","6.0.0-alpha.45":"2021-01-05T09:14:11.311Z","6.0.0-alpha.46":"2021-01-08T18:10:23.691Z","6.0.0-alpha.47":"2021-01-10T18:01:50.405Z","6.0.0-alpha.48":"2021-01-10T18:54:04.414Z","6.0.0-alpha.49":"2021-01-11T09:44:55.615Z","6.0.0-alpha.50":"2021-01-11T12:33:52.309Z","6.0.0-alpha.51":"2021-01-12T06:33:10.882Z","6.0.0-alpha.52":"2021-01-12T08:52:30.024Z","6.0.0-alpha.53":"2021-01-14T04:37:46.145Z","6.0.0-alpha.54":"2021-01-19T00:44:25.382Z","6.0.0-alpha.55":"2021-01-19T14:32:13.593Z","6.0.0-alpha.56":"2021-01-21T15:04:42.903Z","6.0.0-alpha.57":"2021-02-11T05:36:33.008Z","6.0.0-alpha.58":"2021-03-03T02:04:24.620Z","6.0.0-alpha.59":"2021-03-03T17:40:14.771Z","6.0.0-alpha.60":"2021-03-03T17:41:22.829Z","6.0.0-alpha.61":"2021-03-12T02:28:19.217Z","6.0.0-alpha.62":"2021-03-12T02:29:30.747Z","6.0.0-alpha.63":"2021-03-12T02:42:56.547Z","6.0.0-alpha.64":"2021-03-12T06:48:22.100Z","6.0.0-alpha.65":"2021-03-12T11:48:30.007Z","6.0.0-alpha.66":"2021-03-14T03:40:43.511Z","6.0.0-alpha.67":"2021-03-14T05:36:44.823Z","6.0.0-alpha.68":"2021-03-14T05:40:14.433Z","6.0.0-alpha.69":"2021-03-14T05:48:22.466Z","6.0.0-alpha.70":"2021-03-14T07:43:02.052Z","6.0.0-alpha.71":"2021-03-14T23:04:23.148Z","6.0.0-alpha.72":"2021-03-14T23:12:28.280Z","6.0.0-alpha.73":"2021-03-14T23:47:52.865Z","6.0.0-alpha.74":"2021-03-23T03:09:14.289Z","6.0.0-alpha.75":"2021-03-27T16:06:43.559Z","6.0.0-alpha.76":"2021-05-11T16:30:48.653Z","6.0.0-alpha.77":"2021-07-22T20:21:24.228Z","6.0.0-alpha.78":"2021-07-23T05:27:23.598Z","6.0.0-alpha.79":"2021-08-03T09:31:42.261Z","6.0.0-alpha.80":"2021-09-20T03:13:45.237Z","6.0.0-alpha.81":"2021-09-20T18:52:43.015Z","6.0.0-alpha.82":"2021-10-15T15:24:43.256Z","6.0.0-alpha.83":"2022-02-07T07:22:56.314Z"},"readmeFilename":"","homepage":"https://github.com/bigeasy/turnstile","keywords":["cadence","queue","events"],"repository":{"type":"git","url":"git+https://github.com/bigeasy/turnstile.git"},"author":{"name":"Alan Gutierrez","email":"alan@prettyrobots.com"},"bugs":{"url":"https://github.com/bigeasy/turnstile/issues"},"license":"MIT"}