-
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.
-
zip.js
JavaScript library to zip and unzip files supporting multi-core compression, compression streams, zip64, split files and encryption.
Nice! I've done similar experimental work related to multithreading here https://github.com/TimvanScherpenzeel/taskwork. It combines it with a frame scheduler and re-usable web workers that can execute arbitrary tasks.
I have an Angular based hobby project that does some weird stuff with JSZip to download a 6Mb zip file that it explodes into a 60MB JSON "database" that's critical to the rest of the site function. It's one of those "I didn't know better" approaches when I first started that actually works pretty well now so I've left it alone. JSZip's slow performance has been my main pain point (luckily I cache the JSON structure in indexedDB so frequent users hopefully don't get hit by this regularly).
Well, you can build zip.js with fflate if you want to, see https://github.com/gildas-lormeau/zip.js/blob/master/rollup-fflate.config.js. I wasn't saying that zip.js is faster than fflate or any other library. I'm just saying it can compress files in parallel.
There is a lot of complexity involved in representing arbitrary javascript objects inside an ArrayBuffer whilst making them thread-safe. I'd first point to a library like objectbuffer. There's also more fixed struct-like options such as Google's FlatBuffers or buffer-backed-object.
The new stage-3 Atomics.waitAsync proposal shipping in Chrome is worth a look for polling/signalling and the proposal has a fallback polyfill in terms of the current Atomics.wait