index.js 754 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. 'use strict';
  2. const stdin = process.stdin;
  3. module.exports = () => {
  4. let ret = '';
  5. return new Promise(resolve => {
  6. if (stdin.isTTY) {
  7. resolve(ret);
  8. return;
  9. }
  10. stdin.setEncoding('utf8');
  11. stdin.on('readable', () => {
  12. let chunk;
  13. while ((chunk = stdin.read())) {
  14. ret += chunk;
  15. }
  16. });
  17. stdin.on('end', () => {
  18. resolve(ret);
  19. });
  20. });
  21. };
  22. module.exports.buffer = () => {
  23. const ret = [];
  24. let len = 0;
  25. return new Promise(resolve => {
  26. if (stdin.isTTY) {
  27. resolve(Buffer.concat([]));
  28. return;
  29. }
  30. stdin.on('readable', () => {
  31. let chunk;
  32. while ((chunk = stdin.read())) {
  33. ret.push(chunk);
  34. len += chunk.length;
  35. }
  36. });
  37. stdin.on('end', () => {
  38. resolve(Buffer.concat(ret, len));
  39. });
  40. });
  41. };