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

federated-worker

v1.2.2

Published

Class to abstract instantiation of web worker that can load federated modules or any remote script

Downloads

6

Readme

⚠️ This is Experimental! ⚠️

Welcome to Federated-Workers

Why?

This package is for those who want to move their federated modules to execute off of the main theread. This was required to be flexible enough that it could load in any package. It was designed to work with federated modules, however, it will most likely work with any webpack build package (this is untested).

Examples

import { FederatedWorker } from "federated-worker";

async function exampleWorker () {
  // This will spin up the base worker and connect the listeners
  const worker = new FederatedWorker();

  // Load a federated module/package -> Promise<ModuleReturn>
  const someModule = await worker.addModule({
    module: ["Exposed Module"]
    scope: ["Name of Federated Module"]
    url: ["URL to Package/Module"]
  })

  // A and T default to unknown
  // To execute method from imported module
  // -> Promise<T | ModuleReturn | void>
  const result = await worker.runMethod<A, T>({
    method: ["Function name"]
    module?: ["Module Name"] // If this is excluded then method executed off of worker global scope
    args?: A                 // Set the args for type checking :)
  }, async?: boolean)

  return result
}

Constructor Options

There is now a method to fallback to the client to run your federated modules with the added benefit that modules will not have to be redownloaded again no matter where they are imported.

const worker = new FederatedWorker({
  debug: boolean,
  useClient: boolean,
  clientMethods: WorkerEventHandlers, // Hooks into Worker Lifecycles ([NOT been tested!]
});

Theorectical Uses

  • Composed Workers
    • The way this is designed is that when the module is executed after the get successfully downloads and links dependencies. If the module has globalThis or self in for the methods they will automatically be added to the worker's global scope.
  • Import normal packages
    • There will likely need to be some changes to the addModule method or just a new method.
    • NOTE: The worker is exposed as worker.worker and in theory you can send the IMPORT_SCRIPT_END job manually and this will import a regular script into the worker.