Socket
Socket
Sign inDemoInstall

nice-threads

Package Overview
Dependencies
5
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    nice-threads

A promise wrapper for JavaScript Workers, batteries


Version published
Weekly downloads
68
increased by44.68%
Maintainers
1
Install size
378 kB
Created
Weekly downloads
 

Readme

Source

Nice Threads

A promise wrapper for JavaScript Workers, batteries included for Deno and Node.

Usage

Import using Deno, Node CJS require, or Node ESM import.

All executors and workers are of type module; use await import to dynamically import other modules at runtime. Using require will result in transpiling those statements to await import, so ensure that Node modules you want to use also provide ESM exports. This is also how TypeScript support "just works" when targeting CommonJS module syntax.

Then, you can start individual threads and manage them yourself:

const niceThread = new NiceThread(async function (input) {
	// Example only. Typically, you want some big work to do off the main thread.
	return input
});

const result = await niceThread.call(10); // Expected: '10'

Or use the provided round-robin thread pool:

const pool = new NiceThreadPool(async (size: number): string => {
	const myImport = await import('some_import');
	return await myImport(size);
});

pool.poolSize = 6;

const results = await pool.all(Array.from({ length: 20 }, () => 2048));

Accurate debugging and testing is now supported with a module-wide API.

// Example only.
import { mock, unmock } from 'https://deno.land/x/nice_threads/mod.ts' // or `from 'nice-threads'`

describe('My Test', () => {
	it('should give me real code coverage', async () => {
		mock()
		const niceThread = new NiceThread(async function (input) {
			return input
		});

		const result = await niceThread.call(10); // Expected: '10'
		unmock()
	})
})

For complete details of the library, please see the hosted documentation. In-line code examples will be added before a major version release.

Fixes old lib Promise Workers

This code base is a refactor of the promise-workers library. Nice Threads has a better name, and works in Node and Deno.

Most features of Promise Workers will be deprecated. A list of feature parity and reasoning will be forthcoming. The main driver is that Promise Workers was written with a lot of assumptions regarding Node 12 that no longer apply, and had major compatibility issues with Workers in Web and Deno. It was easier to get a clean break than to treat it as a new version of Promise Workers.

Keywords

FAQs

Last updated on 24 Mar 2023

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc