{"_id":"process-streams","_rev":"3290927","name":"process-streams","description":"Wrapper for piping data into and out of child processes","dist-tags":{"latest":"1.0.1"},"maintainers":[{"name":"knappi","email":"npm@knappi.org"}],"time":{"modified":"2024-05-23T06:51:42.000Z","created":"2014-11-20T23:20:59.149Z","1.0.1":"2015-02-17T21:42:00.228Z","1.0.0":"2015-02-15T16:16:19.223Z","0.4.5":"2015-02-15T16:13:31.581Z","0.4.4":"2014-12-15T07:25:28.116Z","0.4.3":"2014-12-14T13:52:25.881Z","0.4.2":"2014-12-13T09:03:03.245Z","0.4.1":"2014-12-08T01:19:39.603Z","0.4.0":"2014-12-08T01:17:00.211Z","0.3.1":"2014-11-28T22:16:09.782Z","0.2.0":"2014-11-27T20:31:53.251Z","0.1.0":"2014-11-23T22:15:53.783Z","0.0.4":"2014-11-21T23:41:38.039Z","0.0.3":"2014-11-21T23:37:33.649Z","0.0.2":"2014-11-20T23:24:25.003Z","0.0.1":"2014-11-20T23:20:59.149Z"},"users":{},"author":{"name":"Nils Knappmeier","email":"npm@knappi.org","url":"http://www.knappi.org"},"repository":{"type":"git","url":"git://github.com/nknapp/process-streams.git"},"versions":{"1.0.1":{"name":"process-streams","version":"1.0.1","description":"Wrapper for piping data into and out of child processes","homepage":"http://github.com/nknapp/process-streams","repository":{"type":"git","url":"git://github.com/nknapp/process-streams.git"},"dependencies":{"duplex-maker":"^1.0.0","quotemeta":"0.0.0","tempfile":"^1.1.0"},"main":"src/process-streams.js","scripts":{"test":"./node_modules/nodeunit/bin/nodeunit testsrc/"},"devDependencies":{"clarify":"^1.0.5","event-stream":"^3.2.2","nodeunit":"^0.9.0","request":"^2.51.0","tar":"^1.0.3","trace":"^1.1.0","video-testdata-loader":"^1.0.0"},"author":{"name":"Nils Knappmeier","email":"npm@knappi.org","url":"http://www.knappi.org"},"license":"MIT","gitHead":"5b97df64c432aa5b7a88e596be893985e34c8f25","bugs":{"url":"https://github.com/nknapp/process-streams/issues"},"_id":"process-streams@1.0.1","_shasum":"e22c2aadbf788ef0c5754ea5e057e985c87dd691","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"knappi","email":"npm@knappi.org"},"maintainers":[{"name":"knappi","email":"npm@knappi.org"}],"dist":{"shasum":"e22c2aadbf788ef0c5754ea5e057e985c87dd691","size":7585,"noattachment":false,"key":"/process-streams/-/process-streams-1.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/process-streams/download/process-streams-1.0.1.tgz"},"directories":{},"_cnpmcore_publish_time":"2021-12-21T22:44:02.158Z","publish_time":1424209320228,"_cnpm_publish_time":1424209320228},"1.0.0":{"name":"process-streams","version":"1.0.0","description":"Wrapper for piping data into and out of child processes","homepage":"http://github.com/nknapp/process-streams","repository":{"type":"git","url":"git://github.com/nknapp/process-streams.git"},"dependencies":{"duplexer2":"0.0.2","quotemeta":"0.0.0","tempfile":"^1.1.0"},"main":"src/process-streams.js","scripts":{"test":"./node_modules/nodeunit/bin/nodeunit testsrc/"},"devDependencies":{"event-stream":"^3.2.2","long-stack-traces":"^0.1.2","nodeunit":"^0.9.0","request":"^2.51.0","tar":"^1.0.3","video-testdata":"^1"},"author":{"name":"Nils Knappmeier","email":"npm@knappi.org","url":"http://www.knappi.org"},"license":"MIT","gitHead":"762f5f8ab35390ce00dc27a2fa8837d05cf43865","bugs":{"url":"https://github.com/nknapp/process-streams/issues"},"_id":"process-streams@1.0.0","_shasum":"8eb9e1be02a10246d2b8a2e91abec0deb2bb6da7","_from":".","_npmVersion":"2.4.1","_nodeVersion":"0.10.33","_npmUser":{"name":"knappi","email":"npm@knappi.org"},"maintainers":[{"name":"knappi","email":"npm@knappi.org"}],"dist":{"shasum":"8eb9e1be02a10246d2b8a2e91abec0deb2bb6da7","size":7567,"noattachment":false,"key":"/process-streams/-/process-streams-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/process-streams/download/process-streams-1.0.0.tgz"},"directories":{},"_cnpmcore_publish_time":"2021-12-21T22:44:01.296Z","publish_time":1424016979223,"_cnpm_publish_time":1424016979223},"0.4.5":{"name":"process-streams","version":"0.4.5","description":"Wrapper for piping data into and out of child processes","homepage":"http://github.com/nknapp/process-streams","repository":{"type":"git","url":"git://github.com/nknapp/process-streams.git"},"dependencies":{"duplexer2":"0.0.2","quotemeta":"0.0.0","tempfile":"^1.1.0"},"main":"src/process-streams.js","scripts":{"test":"./node_modules/nodeunit/bin/nodeunit testsrc/"},"devDependencies":{"event-stream":"^3.2.2","long-stack-traces":"^0.1.2","nodeunit":"^0.9.0","request":"^2.51.0","tar":"^1.0.3","video-testdata":"^1"},"author":{"name":"Nils Knappmeier","email":"npm@knappi.org","url":"http://www.knappi.org"},"license":"MIT","gitHead":"a911ac7b8ed02e2bfb38ab32ee3ac199b8934931","bugs":{"url":"https://github.com/nknapp/process-streams/issues"},"_id":"process-streams@0.4.5","_shasum":"48326d4b3112d692eba7dc5d558352d13c7b1403","_from":".","_npmVersion":"2.4.1","_nodeVersion":"0.10.33","_npmUser":{"name":"knappi","email":"npm@knappi.org"},"maintainers":[{"name":"knappi","email":"npm@knappi.org"}],"dist":{"shasum":"48326d4b3112d692eba7dc5d558352d13c7b1403","size":7476,"noattachment":false,"key":"/process-streams/-/process-streams-0.4.5.tgz","tarball":"http://registry.cnpm.dingdandao.com/process-streams/download/process-streams-0.4.5.tgz"},"directories":{},"_cnpmcore_publish_time":"2021-12-21T22:44:00.419Z","publish_time":1424016811581,"_cnpm_publish_time":1424016811581},"0.4.4":{"name":"process-streams","version":"0.4.4","description":"wrapper for piping data into and out of child processes","homepage":"http://github.com/nknapp/process-streams","repository":{"type":"git","url":"git://github.com/nknapp/process-streams.git"},"dependencies":{"duplexer2":"0.0.2","quotemeta":"0.0.0","tempfile":"^1.1.0"},"main":"src/process-streams.js","scripts":{"test":"./node_modules/nodeunit/bin/nodeunit testsrc/"},"devDependencies":{"long-stack-traces":"^0.1.2","nodeunit":"^0.9.0","request":"^2.51.0"},"author":{"name":"Nils Knappmeier","email":"npm@knappi.org","url":"http://www.knappi.org"},"license":"MIT","gitHead":"6f9154f59dfbdddae403c71a298d1f9021a1e669","bugs":{"url":"https://github.com/nknapp/process-streams/issues"},"_id":"process-streams@0.4.4","_shasum":"3461d2fa48a8eb9f88b4c763d78c4dc372bc7d71","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"knappi","email":"npm@knappi.org"},"maintainers":[{"name":"knappi","email":"npm@knappi.org"}],"dist":{"shasum":"3461d2fa48a8eb9f88b4c763d78c4dc372bc7d71","size":7227,"noattachment":false,"key":"/process-streams/-/process-streams-0.4.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/process-streams/download/process-streams-0.4.4.tgz"},"directories":{},"_cnpmcore_publish_time":"2021-12-21T22:43:59.549Z","publish_time":1418628328116,"_cnpm_publish_time":1418628328116},"0.4.3":{"name":"process-streams","version":"0.4.3","description":"wrapper for piping data into and out of child processes","homepage":"http://github.com/nknapp/process-streams","repository":{"type":"git","url":"git://github.com/nknapp/process-streams.git"},"dependencies":{"duplexer2":"0.0.2","quotemeta":"0.0.0","tempfile":"^1.1.0"},"main":"src/process-streams.js","scripts":{"test":"./node_modules/nodeunit/bin/nodeunit testsrc/"},"devDependencies":{"long-stack-traces":"^0.1.2","nodeunit":"^0.9.0","request":"^2.51.0"},"author":{"name":"Nils Knappmeier","email":"npm@knappi.org","url":"http://www.knappi.org"},"gitHead":"51d94e49c923a8bfdaa4ee1182670908e356ceca","bugs":{"url":"https://github.com/nknapp/process-streams/issues"},"_id":"process-streams@0.4.3","_shasum":"36b92d1b5f06ffa903b3f8a836b6e76ad6737bbd","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"knappi","email":"npm@knappi.org"},"maintainers":[{"name":"knappi","email":"npm@knappi.org"}],"dist":{"shasum":"36b92d1b5f06ffa903b3f8a836b6e76ad6737bbd","size":7204,"noattachment":false,"key":"/process-streams/-/process-streams-0.4.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/process-streams/download/process-streams-0.4.3.tgz"},"directories":{},"_cnpmcore_publish_time":"2021-12-21T22:43:58.672Z","publish_time":1418565145881,"_cnpm_publish_time":1418565145881},"0.4.2":{"name":"process-streams","version":"0.4.2","description":"wrapper for piping data into and out of child processes","homepage":"http://github.com/nknapp/process-streams","repository":{"type":"git","url":"git://github.com/nknapp/process-streams.git"},"dependencies":{"duplexer2":"0.0.2","quotemeta":"0.0.0","tempfile":"^1.1.0"},"main":"src/process-streams.js","scripts":{"test":"./node_modules/nodeunit/bin/nodeunit testsrc/"},"devDependencies":{"long-stack-traces":"^0.1.2","nodeunit":"^0.9.0","request":"^2.51.0"},"author":{"name":"Nils Knappmeier","email":"npm@knappi.org","url":"http://www.knappi.org"},"gitHead":"b6cede9447c3c8df669d4800163f2fd2fb74a195","bugs":{"url":"https://github.com/nknapp/process-streams/issues"},"_id":"process-streams@0.4.2","_shasum":"95b965879e1983921597ef59c6dfcd874b59a381","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"knappi","email":"npm@knappi.org"},"maintainers":[{"name":"knappi","email":"npm@knappi.org"}],"dist":{"shasum":"95b965879e1983921597ef59c6dfcd874b59a381","size":7073,"noattachment":false,"key":"/process-streams/-/process-streams-0.4.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/process-streams/download/process-streams-0.4.2.tgz"},"directories":{},"_cnpmcore_publish_time":"2021-12-21T22:43:57.790Z","publish_time":1418461383245,"_cnpm_publish_time":1418461383245},"0.4.1":{"name":"process-streams","version":"0.4.1","description":"wrapper for piping data into and out of child processes","homepage":"http://github.com/nknapp/process-streams","repository":{"type":"git","url":"git://github.com/nknapp/process-streams.git"},"dependencies":{"duplexer2":"0.0.2","quotemeta":"0.0.0","tempfile":"^1.1.0"},"main":"src/process-streams.js","scripts":{"test":"./node_modules/nodeunit/bin/nodeunit testsrc/"},"devDependencies":{"long-stack-traces":"^0.1.2","nodeunit":"^0.9.0"},"author":{"name":"Nils Knappmeier","email":"npm@knappi.org","url":"http://www.knappi.org"},"gitHead":"1660664342d47265d61a7aeee99da10153ecd461","bugs":{"url":"https://github.com/nknapp/process-streams/issues"},"_id":"process-streams@0.4.1","_shasum":"eb8cf5216cfca09163d14fb3f3241a59e7929b94","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"knappi","email":"npm@knappi.org"},"maintainers":[{"name":"knappi","email":"npm@knappi.org"}],"dist":{"shasum":"eb8cf5216cfca09163d14fb3f3241a59e7929b94","size":6413,"noattachment":false,"key":"/process-streams/-/process-streams-0.4.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/process-streams/download/process-streams-0.4.1.tgz"},"directories":{},"_cnpmcore_publish_time":"2021-12-21T22:43:56.910Z","publish_time":1418001579603,"_cnpm_publish_time":1418001579603},"0.4.0":{"name":"process-streams","version":"0.4.0","description":"wrapper for piping data into and out of child processes","homepage":"http://github.com/nknapp/process-streams","repository":{"type":"git","url":"git://github.com/nknapp/process-streams.git"},"dependencies":{"duplexer2":"0.0.2","quotemeta":"0.0.0","tempfile":"^1.1.0"},"main":"src/process-streams.js","scripts":{"test":"./node_modules/nodeunit/bin/nodeunit testsrc/"},"devDependencies":{"long-stack-traces":"^0.1.2","nodeunit":"^0.9.0"},"author":{"name":"Nils Knappmeier","email":"npm@knappi.org","url":"http://www.knappi.org"},"gitHead":"30c46b2987c1a148c7153b41d0330387a7ad367f","bugs":{"url":"https://github.com/nknapp/process-streams/issues"},"_id":"process-streams@0.4.0","_shasum":"52947e692ca1a9577b96ea6d835d4dc86c4d8e2d","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"knappi","email":"npm@knappi.org"},"maintainers":[{"name":"knappi","email":"npm@knappi.org"}],"dist":{"shasum":"52947e692ca1a9577b96ea6d835d4dc86c4d8e2d","size":6420,"noattachment":false,"key":"/process-streams/-/process-streams-0.4.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/process-streams/download/process-streams-0.4.0.tgz"},"directories":{},"_cnpmcore_publish_time":"2021-12-21T22:43:56.044Z","publish_time":1418001420211,"_cnpm_publish_time":1418001420211},"0.3.1":{"name":"process-streams","version":"0.3.1","description":"wrapper for piping data into and out of child processes","homepage":"http://github.com/nknapp/process-streams","repository":{"type":"git","url":"git://github.com/nknapp/process-streams.git"},"dependencies":{"duplexer2":"0.0.2","quotemeta":"0.0.0","tempfile":"^1.1.0"},"main":"src/process-streams.js","scripts":{"test":"./node_modules/nodeunit/bin/nodeunit testsrc/"},"devDependencies":{"long-stack-traces":"^0.1.2","nodeunit":"^0.9.0"},"author":{"name":"Nils Knappmeier","email":"npm@knappi.org","url":"http://www.knappi.org"},"gitHead":"9c76973643c5b66be73d408799659c5986413d25","bugs":{"url":"https://github.com/nknapp/process-streams/issues"},"_id":"process-streams@0.3.1","_shasum":"110384c8b6f6b29165f9c4c0d04ef114aa1d4851","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"knappi","email":"npm@knappi.org"},"maintainers":[{"name":"knappi","email":"npm@knappi.org"}],"dist":{"shasum":"110384c8b6f6b29165f9c4c0d04ef114aa1d4851","size":5292,"noattachment":false,"key":"/process-streams/-/process-streams-0.3.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/process-streams/download/process-streams-0.3.1.tgz"},"directories":{},"_cnpmcore_publish_time":"2021-12-21T22:43:55.097Z","publish_time":1417212969782,"_cnpm_publish_time":1417212969782},"0.2.0":{"name":"process-streams","version":"0.2.0","description":"wrapper for piping data into and out of child processes","homepage":"http://github.com/nknapp/process-streams","repository":{"type":"git","url":"git://github.com/nknapp/process-streams.git"},"dependencies":{"duplexer2":"0.0.2","quotemeta":"0.0.0","tempfile":"^1.1.0"},"main":"src/process-streams.js","scripts":{"test":"./node_modules/nodeunit/bin/nodeunit testsrc/"},"devDependencies":{"long-stack-traces":"^0.1.2","nodeunit":"^0.9.0"},"author":{"name":"Nils Knappmeier","email":"npm@knappi.org","url":"http://www.knappi.org"},"gitHead":"7ff67642308fee29fb8b11d9ec5769883a68344e","bugs":{"url":"https://github.com/nknapp/process-streams/issues"},"_id":"process-streams@0.2.0","_shasum":"1cfec1be9fe7aead2d923d7ed19c83b3fbd8bd00","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"knappi","email":"npm@knappi.org"},"maintainers":[{"name":"knappi","email":"npm@knappi.org"}],"dist":{"shasum":"1cfec1be9fe7aead2d923d7ed19c83b3fbd8bd00","size":4533,"noattachment":false,"key":"/process-streams/-/process-streams-0.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/process-streams/download/process-streams-0.2.0.tgz"},"directories":{},"_cnpmcore_publish_time":"2021-12-21T22:43:54.233Z","publish_time":1417120313251,"_cnpm_publish_time":1417120313251},"0.1.0":{"name":"process-streams","version":"0.1.0","description":"wrapper for piping data into and out of child processes","homepage":"http://github.com/nknapp/process-streams","repository":{"type":"git","url":"git://github.com/nknapp/process-streams.git"},"dependencies":{"duplexer2":"0.0.2","quotemeta":"0.0.0","tempfile":"^1.1.0"},"main":"src/process-streams.js","scripts":{"test":"./node_modules/nodeunit/bin/nodeunit testsrc/"},"devDependencies":{"long-stack-traces":"^0.1.2","nodeunit":"^0.9.0"},"author":{"name":"Nils Knappmeier","email":"npm@knappi.org","url":"http://www.knappi.org"},"gitHead":"ee9715eb621eae5c66a062614395f3e3029b5ff0","bugs":{"url":"https://github.com/nknapp/process-streams/issues"},"_id":"process-streams@0.1.0","_shasum":"e0e82fedc0c8a9c8e57af67ea9dd8a2b425c1161","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"knappi","email":"npm@knappi.org"},"maintainers":[{"name":"knappi","email":"npm@knappi.org"}],"dist":{"shasum":"e0e82fedc0c8a9c8e57af67ea9dd8a2b425c1161","size":3965,"noattachment":false,"key":"/process-streams/-/process-streams-0.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/process-streams/download/process-streams-0.1.0.tgz"},"directories":{},"_cnpmcore_publish_time":"2021-12-21T22:43:53.351Z","publish_time":1416780953783,"_cnpm_publish_time":1416780953783},"0.0.4":{"name":"process-streams","version":"0.0.4","description":"wrapper for piping data into and out of child processes","homepage":"http://github.com/nknapp/process-stream","repository":{"type":"git","url":"git://github.com/nknapp/process-stream.git"},"dependencies":{"duplexer2":"0.0.2","tempfile":"^1.1.0"},"main":"src/index.js","scripts":{"test":"./node_modules/nodeunit/bin/nodeunit testsrc/"},"devDependencies":{"nodeunit":"^0.9.0"},"author":{"name":"Nils Knappmeier","email":"npm@knappi.org","url":"http://www.knappi.org"},"gitHead":"0871f67506dca189622a74624f52e4e81f2bc469","bugs":{"url":"https://github.com/nknapp/process-stream/issues"},"_id":"process-streams@0.0.4","_shasum":"947d24ad0719cc4b25bc2b4110c2bb0bbe2c2840","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"knappi","email":"npm@knappi.org"},"maintainers":[{"name":"knappi","email":"npm@knappi.org"}],"dist":{"shasum":"947d24ad0719cc4b25bc2b4110c2bb0bbe2c2840","size":2497,"noattachment":false,"key":"/process-streams/-/process-streams-0.0.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/process-streams/download/process-streams-0.0.4.tgz"},"directories":{},"_cnpmcore_publish_time":"2021-12-21T22:43:52.490Z","publish_time":1416613298039,"_cnpm_publish_time":1416613298039},"0.0.3":{"name":"process-streams","version":"0.0.3","description":"wrapper for piping data into and out of child processes","homepage":"http://github.com/nknapp/process-streams","repository":{"type":"git","url":"git://github.com/nknapp/process-streams.git"},"dependencies":{"duplexer2":"0.0.2","tempfile":"^1.1.0"},"main":"src/index.js","scripts":{"test":"./node_modules/nodeunit/bin/nodeunit testsrc/"},"devDependencies":{"nodeunit":"^0.9.0"},"author":{"name":"Nils Knappmeier","email":"npm@knappi.org","url":"http://www.knappi.org"},"gitHead":"2b0870f3a3e8fd9b7f6276a4d092a06472725586","bugs":{"url":"https://github.com/nknapp/process-streams/issues"},"_id":"process-streams@0.0.3","_shasum":"51da8e5a080a31f3764791ec26f788ad3ac9e2b2","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"knappi","email":"npm@knappi.org"},"maintainers":[{"name":"knappi","email":"npm@knappi.org"}],"dist":{"shasum":"51da8e5a080a31f3764791ec26f788ad3ac9e2b2","size":2488,"noattachment":false,"key":"/process-streams/-/process-streams-0.0.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/process-streams/download/process-streams-0.0.3.tgz"},"directories":{},"_cnpmcore_publish_time":"2021-12-21T22:43:51.587Z","publish_time":1416613053649,"_cnpm_publish_time":1416613053649},"0.0.2":{"name":"process-streams","version":"0.0.2","dependencies":{"duplexer2":"0.0.2","tempfile":"^1.1.0"},"gitHead":"403bac88246d286a3e72e48027b187b5a6ecb422","description":"Usage","_id":"process-streams@0.0.2","scripts":{},"_shasum":"095712bf0964ee9cdc5f2f95a8b46af6ec61be75","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"knappi","email":"npm@knappi.org"},"maintainers":[{"name":"knappi","email":"npm@knappi.org"}],"dist":{"shasum":"095712bf0964ee9cdc5f2f95a8b46af6ec61be75","size":1552,"noattachment":false,"key":"/process-streams/-/process-streams-0.0.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/process-streams/download/process-streams-0.0.2.tgz"},"directories":{},"_cnpmcore_publish_time":"2021-12-21T22:43:50.710Z","publish_time":1416525865003,"_cnpm_publish_time":1416525865003},"0.0.1":{"name":"process-streams","version":"0.0.1","dependencies":{"duplex-combination":"^1.2.0","duplexer":"^0.1.1","duplexer2":"0.0.2","tempfile":"^1.1.0"},"gitHead":"bdc27c26beca313b61d4e00d58f3835ff3274948","description":"Usage","_id":"process-streams@0.0.1","scripts":{},"_shasum":"7004f484d7cc487ecdd5db5d209f60738cb13aea","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"knappi","email":"npm@knappi.org"},"maintainers":[{"name":"knappi","email":"npm@knappi.org"}],"dist":{"shasum":"7004f484d7cc487ecdd5db5d209f60738cb13aea","size":1576,"noattachment":false,"key":"/process-streams/-/process-streams-0.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/process-streams/download/process-streams-0.0.1.tgz"},"directories":{},"_cnpmcore_publish_time":"2021-12-21T22:43:49.837Z","publish_time":1416525659149,"_cnpm_publish_time":1416525659149}},"readme":"Motivation\n----------\n\nThe goal of this small package is to provide a interface for streaming data to\nand from child-processes. It may be possible to stream data to a process via stdout\nand read the result from stdin, but it may also be necessary to store the data in a\ntemporary file and provide the filename to the process as argument.\n\nA concrete example is ffmpeg: It is possible to encode webm-videos to a stream,\nbut h264 must always be stored in a temporary file first. On the other hand in some cases\n[it is not possible to stream data into ffmpeg](http://superuser.com/questions/822500/pipe-issue-with-ffmpeg),\nso data must be stored in a temporary file prior to calling ffmpeg.\n\n\n\nOverview\n--------\n\nProcessStreams provides the methods `exec`, `execFile` and `spawn` from the `child_process` with the same arguments.\nThe return value however is always a through-stream. The command line arguments are examined for occurences of\nthe strings `<INPUT>` and `<OUTPUT>`.\n\n * If `<INPUT>` is present, the stream input is piped into a temporary file and `<INPUT>` is replaced by its filename.\n * If `<OUTPUT>` is present, it is replaced by the name of a temporary file and the contents of this file is\n used as stream output for the resulting stream.\n * If `<INPUT>` or `<OUTPUT>` are not present, the stream input is directly piped to the child processes stdin\n (or the child processes stdout is piped to the stream output).\n\nTemporary files are always deleted when no longer needed.\n\nFunctions\n---------\n\n#### `ps.spawn(command, [args], [options])`\n\nFor details about function arguments please refer to the api documentation of\n[child_process.spawn(command, [args], [options])](http://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options)\n\n\n#### `ps.exec(command, [options], callback)`\n\nFor details about function arguments please refer to the api documentation of\n[child_process.exec(command, [options], callback)](http://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback)\n\n\n#### `ps.execFile(file, [args], [options], [callback])`\n\nFor details about function arguments please refer to the api documentation of\n[child_process.execFile(file, [args], [options], [callback])](http://nodejs.org/api/child_process.html#child_process_child_process_execfile_file_args_options_callback)\n\n#### `ps.factory(useTmpIn, useTmpOut, callback)`\n\nThis function uses the provided callback to connect input and output of the resulting stream. `useTmpIn` and `useTmpOut` are booleans that define which\nparts of the stream temp should use temp files.\n`callback` has the signature `function(input, output, callback)`. \"input\" and \"output\" are either streams of paths of temporary files. The callback must\nbe called when data is available for output. If \"tmpUseOut\" is `false`, this can be called immediately. It \"tmpUseOut\" is `true` it must be called, when the\noutput tempfile has completely been written to.\n\nSimple Examples\n--------\n\nThe following examples actually only pipe data from stdin to stdout, but via child processes with different temp-file options.\n\n``` js\n   var ProcessStream = require(\"process-streams\");\n   var ps = new ProcessStream();\n   // Temporary files for input and output\n   process.stdin.pipe(ps.exec(\"cp <INPUT> <OUTPUT>\")).pipe(process.stdout);\n   process.stdin.pipe(ps.spawn(\"cp\",[\"<INPUT>\",\"<OUTPUT>\"])).pipe(process.stdout);\n   process.stdin.pipe(ps.execFile(\"cp\",[\"<INPUT>\",\"<OUTPUT>\"])).pipe(process.stdout);\n\n   // Stream input, use temp-file for output\n   process.stdin.pipe(ps.spawn(\"tee\",[\"<OUTPUT>\"])).pipe(process.stdout);\n\n   // Temp-file for input, Stream for output\n   process.stdin.pipe(ps.spawn(\"cat \",[\"<INPUT>\"])).pipe(process.stdout);\n\n   // Pipe both sides\n   process.stdin.pipe(ps.spawn(\"cat\")).pipe(process.stdout);\n```\n\nChanging the placeholder tokens\n-------------------------------\nThe tokens `<INPUT>` and `<OUTPUT>` can be changed:\n\n``` js\n   var ProcessStream = require(\"process-streams\");\n   var ps = new ProcessStream('[IN]','[OUT]');\n   process.stdin.pipe(ps.exec(\"cp [IN] [OUT]\")).pipe(process.stdout);\n```\n\nEvents\n------\nProcess errors (such as not finding the executable file) are emitted on the resulting stream as `'error'` event.\nThe `'started'` event is emitted when the is started. Its first argument is the child-process object, second and\nthird arguments are the `command` and `args` passed to `ps.exec`, `ps.spawn` or `ps.execFile`), but with the\nplaceholders resolved to the their actual temporary files.\n\n``` js\n    var ProcessStream = require(\"process-streams\");\n    var ps = new ProcessStream('[IN]','[OUT]');\n    process.stdin.pipe(ps.spawn(\"cp\", [\"[IN]\",\"[OUT]\"])).on(\"error\", function(err) {\n        // Handle errors\n    }).on(\"input-closed\", function(err) {\n       // Handle ECONNRESET and EPIPE processe's stdin\n    }).on(\"started\", function(process, command, args) {\n       // If \"ps.exec\" is called, 'command' contains the whole resolved command and 'args' is undefined.\n    }).on(\"exit\", function(code, signel) {\n      // see the 'child_process' documentation for the 'exit'-event.\n    }).pipe(process.stdout);\n```\n\n*As of version 1.0.0 the API will only be changed in accordance to semver. Feedback is welcome, although I cannot guarantee any response times at the moment.*\n\n\nChanges\n--------\n#### 1.0.1\n\n  * Testcase-fixes for iojs 1.2 and node 0.12\n  * Changed some dependencies to stable versions of other packages\n\n#### 1.0.0\n\n  * There are no API changes in this version, but I have decided that the API should be stable now. Thus, version 1.0.0\n\n#### 0.4.5\n\n  * All testcases should now run after `npm install`. All test-data is provided in dependencies (even for testECONRESET.js).\n    `package.json` is now complete, the README updated.\n\n#### 0.4.4\n\n  * Added license information to package.json\n\n#### 0.4.3\n\n  * Fixed error handling for `exec` and `execFile`\n  * Callback for `exec` and `execFile` is now forwarded to `child_process`\n    at the correct location, so that callbacks actually get called.\n\n#### 0.4.2\n  * When using no in-tempfile, it may happen that the command (e.g. 'head -2') close the input stream before it is\n    completely read. This may result in a `EPIPE` or `ECONNRESET` but is not an actual error, since the output is\n    still correct. This error does not cause an `error`-event anymore, but an `input-closed` event.\n\n","_attachments":{},"homepage":"http://github.com/nknapp/process-streams","bugs":{"url":"https://github.com/nknapp/process-streams/issues"},"license":"MIT"}