native-messaging-nodejs
txiki.js
native-messaging-nodejs | txiki.js | |
---|---|---|
20 | 8 | |
14 | 2,343 | |
- | - | |
6.0 | 9.1 | |
3 months ago | 2 days ago | |
JavaScript | C | |
Do What The F*ck You Want To Public License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
native-messaging-nodejs
-
Can you make your own JavaScript by implementing ECMAScript standard?
And/or control node and any other programming language from the browser using Native Messaging native-messaging-nodejs.
-
JavaScript Standard Input/Output: Unspecified
We can process asynchronous tasks without blocking reading stdin (e.g., full-duplex).
- Full-duplex streaming with fetch() to and from the browser using Native Messaging
- Browser <=> Node.js fetch() full duplex streaming (working public example using Deno Deploy)
-
I wish more developers understood the constant stream of malware that is posted to npm
WHat do you mean by "contribute"? I download only the node executable using download-node-nightly-executable to run native-messaging-nodejs, servers, or whatever else I decide to experiement on - without downloading any packages.
-
[AskJS] How would you fix this Node.js bug?
I re-wrote the original code substituting using readSync for process.stdin.on('readable', () => {}) and including process.stdout._handle.setBlocking(true) and readFullSync function contributed by a Deno user https://github.com/guest271314/native-messaging-nodejs/blob/main/nm_nodejs.mjs. I wanted to a) get the input message (up to 1MB at a time) echo'ed back to the client; and b) get away from using process.stdin.on('readable', () => {}), rather use an approach that did not include event listeners; c) get away from using CommonJS and package.json and instead use Ecmascript modules without package.json.
-
[AskJS] Cross-Platform Desktop/Web App (with same codebase) - NextJS and Electron?
If you want you can use a Node.js Native Messaging host https://github.com/guest271314/native-messaging-nodejs, Deno, QuickJS, txiki.js, Bun, C, C++, Python, WASI/WebAssembly or whatever language is built in, e.g., Bash.
-
Termino.js: Create command based apps on any website - great for games, chat-bots, animations and real world apps!
I just fetch the nightly node executable, get rid of everything else in the archive, use .mjs extension for import to work without package.json, then I can connect to the host https://github.com/guest271314/native-messaging-nodejs, and start subprocesses, e.g., raw PCM streams, where stdout is streamed to the client (browser), e.g, https://github.com/guest271314/captureSystemAudio/blob/master/native_messaging/capture_system_audio/capture_system_audio_node.js.
-
[AskJS] What is your preferred solution to share and execute Node.js scripts ?
Yes, utilizing Native Messaging https://github.com/guest271314/native-messaging-nodejs.
txiki.js
-
A list of JavaScript engines, runtimes, interpreters
txiki.js
-
JavaScript Standard Input/Output: Unspecified
// 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); }
- Node.js fetch() vs. Deno fetch(): Implementation details...
-
How to compile serveTls for import into QuickJS?
I've only dabbled with the shared libraries once, with the help of the owner of the lnked repository. I wound up solving the issue adjusting the code I was working on https://github.com/saghul/txiki.js/issues/294.
-
C++ to C string concatenation
I have written the same code in C++ https://github.com/guest271314/captureSystemAudio/blob/master/native_messaging/capture_system_audio/capture_system_audio.cpp, Python https://github.com/guest271314/captureSystemAudio/blob/master/native_messaging/capture_system_audio/capture_system_audio.py, and QuickJS (C source code) https://github.com/saghul/txiki.js/issues/294. QuickJS is the only implementation that winds up clipping the end of real-time audio capture.
-
QuickJS JavaScript Engine – Fabrice Bellard
QuickJS is awesome, simple to use and very easy to integrate.
Over the past few years I slowly built a small JS runtime using QuickJS as the engine and libuv as the platform layer, amongst other things, in case anyone wants to take a look: https://github.com/saghul/txiki.js
- GitHub - saghul/txiki.js: The tiny JavaScript runtime built with QuickJS, libuv
- GitHub - saghul/txiki.js: The tiny JavaScript runtime built with QuickJS, libuv and ❤️
What are some alternatives?
native-messaging-bun - Bun Native Messaging host
v8go - Execute JavaScript from Go
webcontainer-core - Dev environments. In your web app.
engine262 - An implementation of ECMA-262 in JavaScript
proposal-common-minimum-api
javascript-algorithms - 📝 Algorithms and data structures implemented in JavaScript with explanations and links to further readings
wasmedge-quickjs - A high-performance, secure, extensible, and OCI-complaint JavaScript runtime for WasmEdge.
AudioWorkletStream - fetch() => ReadableStream => AudioWorklet
espeak-ng - eSpeak NG is an open source speech synthesizer that supports more than hundred languages and accents.
v8-vulnerabilities - Corpus of public v8 vulnerability PoCs.
rayjs - Javascript bindings for raylib in a single ~3mb executable