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

post-any-message

v1.2.0

Published

Like browser postMessage(), but you can transfer functions and stuff

Downloads

5

Readme

post-any-message

Created with JavaScript Style Guide

Like browser postMessage(), but you can transfer functions and stuff

Use Case

There are many environments when you have to use postMessage() to communicate (like Web Workers, Service Workers, Chrome Extensions).

Posting messages let's you transfer data like numbers, strings, objects, and arrays. But what if you wanted to transfer a function? The goal of this package is to let you transfer anything.

Examples

You can find examples in the test directory in the git repo.

What can be transferred?

This is the list of things that can be transferred. If you want to transfer something that's not on the list, make an issue and it will probably be added to the list. One thing that could be added is transferring promises.

  • array
  • boolean
  • function (can transfer any parameters and return values that are on this list)
  • number
  • object
  • string

Note about transferring functions

A MessageChannel is used to tell one context to call the function. Since message responses are not called synchronously, all functions are turned into async functions. For example, if you are transferring the following code:

(a, b) => a + b

You would have to call it like this:

const decodedFnIsNowAsync = decode(transferredFunction)
await decodedFnIsNowAsync(5, 6)