federated-worker
TypeScript icon, indicating that this package has built-in type declarations

1.2.2 • Public • Published

⚠️ 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.

Readme

Keywords

none

Package Sidebar

Install

npm i federated-worker

Weekly Downloads

4

Version

1.2.2

License

MIT

Unpacked Size

15.8 kB

Total Files

10

Last publish

Collaborators

  • shafferchance