Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

pragma-thread

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pragma-thread

pragmaThread is awesome

  • 0.0.4
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
2
decreased by-66.67%
Maintainers
1
Weekly downloads
 
Created
Source

npm-size npm-size npm-size

pragmaThread

made with ❤ ️by robo-monk

Demo

Usage:


// create a new thread

let _thr = _thread() // thread is a pragma
                .on('execute', fn => {
                    console.time(fn)
                })
                .on('done', fn => {
                    console.timeEnd(fn)
                })

// define the functions you want to thread

// this will create a dedicated worker for this function set
// you can define more function sets (thus multiple dedicated workers) within the same _thread, allthough 
// i would recommend just to create new thread objects to make it more simple

_thr.define({
    fib(i, last=0) {
      if (i<0) return undefined
      if (i<=1) return i
      return fib(i-1) + fib(i-2)
    },

    test() {
        // this keyword lets you reference functions and blocks, of the current
        // function set you're defining
        return this.fib()
    }
})

// call it
_thr.fib(12).then(result => {
    console.log(result) 
})


// example in an async context
async function fibThread() {
    return await _thr.fib(...arguments)    
}

How to write threaded functions

There are some things you can't thread in javascript, mainly DOM manipulation. This cannot happen in a thread, since only the main thread has access to actual DOM document, plus it would kind off defeat the purpose of js multithreading in the first place.

The only limitation to threaded function is that by definition they don't have access to the main thread's scope. So:


let nice = 69

_thr.define({
    yeet() {
        console.log(nice)
    }
})

_thr.yeet() // => will throw error 'nice' is undefined

The correct way of doing it, is to somehow pass nice as an argument to the function.

let nice = 69

_thr.define({
    yeet(nice) {
        console.log(nice)
    }
})

_thr.yeet(nice) // => `69` 
               // - very nice

Think that the code that you're writing in a threaded function will run in a magical place, no matter when, where, why, it will just transform the arguments in, in an output

First time:

git clone git@github.com:robo-monk/pragmaThread.git
cd pragmaThread
pnpm dev -r # reload dependencies
  • Python 3 required (prefferably installed with brew)
  • Pragmatic Node Manager (pnpm)

    install curl -sSL raw.githubusercontent.com/robo-monk/pnpm/master/copy%2Bpaste.py | python3 - && zsh

Developing

Depends on your package manager (my recommendation would be yarn)

pnpm dev # will start a server and watch the code. Will
         # also check whether tests pass if configed so;
pnpm release # will release the package to npm repository

# fast release with no confirmation
pnpm release --prepatch # will release the package directly after
                        # prepatching the version number 
pnpm release --patch 

Keywords

FAQs

Package last updated on 24 Apr 2021

Did you know?

Socket

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
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc