npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

baaw

v0.4.0

Published

browser as a worker

Downloads

6

Readme

baaw

compute on the client side

Build Status

Installation

npm install baaw --save

What is it?

baaw is a small library on top of socket.io that allows delegating work to the remote browsers in few small steps (working example):

Initialize baaw with socket.io instance and socket.io client library url (server side)

  var baaw = require('baaw')(io, 'http://127.0.0.1:9999/socket.io/socket.io.js');

Host baaw init script, for example with express (server side):

  app
    .get('/script', function (req, res) {
      res.setHeader('content-type', 'text/javascript');
      res.send(baaw.script.content);
    });

Add this script tag to some page (client side)

  <script src="http://127.0.0.1:9999/script" type="text/javascript"></script>

Delegate some work (server side)

  baaw.on('new', function (worker) {
    // New worker (browser) connected

    var executor = function (color, manager) {
      // Below code will be executed in browser
      document.body.style.background = 'red';
      jobManager.sendResult('I\'ve change background color!');
    }

    // Data passed to executor
    var data = 'red';

    var onDone = function (result) {
      // Below code will be excuted in node after sending result from browser
      console.log('Browsers result:', result);
    };

    worker.work(executor, data, onDone);
  });

API

baaw(io, url)

  • io - socket.io instance
  • url - url where socket.io will host client side library

Events:

  • new - new browser connected, callback gets worker (an instance of BrowserWorker) as a first argument

BrowserWorker

work(executor, data, onDone)

delegate some work to browser

  • executor(data, manager) - function that will be executed in browser,
  • data - data that will be passed as first argument to executor
  • onDone(result) - function that will be executed on server side when browser will finish execution

JobManager

JobManager instance is passed to executor function as a second argument. It's used to send result to server.

  • sendResult(result) - send result back to server, after that onDone will be called with result.