JavaScript Standard Input/Output: Unspecified

This page summarizes the projects mentioned and recommended in the original post on /r/learnjavascript

Our great sponsors
  • SurveyJS - Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • proposal-common-minimum-api

  • Common I/O (stdin/stdout/stderr) module specification #47.

  • console

    Console Standard (by whatwg)

  • WHATWG's Console mentions stdout several times, does not mention stdin. Using console.log() in a Native Messaging host does not work, as we are not printing to a TTY. That W.I.P. is not applicable reading stdin at all.

  • SurveyJS

    Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App. With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.

    SurveyJS logo
  • node

    Node.js JavaScript runtime ✨🐢🚀✨

  • // Node.js Native Messaging host // guest271314, 10-9-2022 import {readSync} from 'node:fs'; // Node.js Native Messaging host constantly increases RSS during usage // https://github.com/nodejs/node/issues/43654 process.env.UV_THREADPOOL_SIZE = 1; // Process greater than 65535 length input // https://github.com/nodejs/node/issues/6456 // https://github.com/nodejs/node/issues/11568#issuecomment-282765300 process.stdout._handle.setBlocking(true); // https://github.com/denoland/deno/discussions/17236#discussioncomment-4566134 function readFullSync(fd, buf) { let offset = 0; while (offset < buf.byteLength) { offset += readSync(fd, buf, { offset }); } return buf; }

  • native-messaging-nodejs

    Node.js Native Messaging host

  • We can process asynchronous tasks without blocking reading stdin (e.g., full-duplex).

  • txiki.js

    A tiny JavaScript runtime

  • // https://github.com/denoland/deno/discussions/17236#discussioncomment-4566134 // https://github.com/saghul/txiki.js/blob/master/src/js/core/tjs/eval-stdin.js async function readFullAsync(length, buffer = new Uint8Array(65536)) { const data = []; while (data.length < length) { const input = await open("/dev/stdin"); let { bytesRead } = await input.read({ buffer }); await input.close(); if (bytesRead === 0) { break; } data.push(...buffer.subarray(0, bytesRead)); } return new Uint8Array(data); }

  • native-messaging

    Native Messaging Host Protocol for Browser Extensions

  • // Bun Native Messaging host // guest271314, 10-9-2022 async function getMessage() { const { promise, resolve } = Promise.withResolvers(); // https://github.com/simov/native-messaging/blob/8e99d2a345ae94426a502d05aa5d57b966f6bc78/protocol.js let messageLength = 0, bytesWritten = 0, input = [];

  • captureSystemAudio

    Capture system audio ("What-U-Hear")

  • Synchronous. Though non-blocking when we read the message from the browser, execute the command, then stream data output from the local application to the browser piped from QuickJS std.popen(), capture_system_audio.js

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts