New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

frame-worker

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

frame-worker

Run Worker Script inside an Iframe

latest
Source
npmnpm
Version
0.3.0
Version published
Maintainers
1
Created
Source

Frame-Worker

Run Web Worker Script with an IFrame

features

  • default export detection
  • url shortening
  • blob url revocation
  • raw unencoded strings
  • CommonJS code

install

via script tag

<script src="https://unpkg.com/frame-worker"></script>

via npm

npm install frame-worker

basic usage

import FrameWorker from "frame-worker";

// initialize from url
new FrameWorker("./square.worker.js");

// intialize from blob url
new FrameWorker("blob:http://localhost:8080/bf331630-1275-4b3d-9b65-22512egdb592");

// initialize from data url
new FrameWorker("data:application/javascript;base64,Cm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbigpIHsKICByZXR1cm4gMTIzNDsKfQ==");

// listen to messages
worker.addEventListener("message", function (event) {
  console.log("received": event.data);
});

advanced usage

context

You can pass an extra context object to the worker. FrameWorker will assign the entries in the object to the global window and self inside the iframe. In the example below, we pass a validate function to the FrameWorker.

new FrameWorker(workerScript, undefined, { 
  context: {
    validate: function() { ... }
  }
});

cjs

You can pass in a CommonJS module and have it automatically interpreted as a Web Worker script. If there is no self.onmessage defined in the input script, FrameWorker will automatically look for and call module.exports or module.exports.default function.

const code = `
  module.exports = function() {
    return 1234;
  }
`;
new FrameWorker(code, undefined, {
  cjs: true, // code is a basic CommonJS file
  raw: true // code is not encoded in a Data URL or Blob URL
});

debug

You can set debug to true for extra helpful log messages

new FrameWorker(workerScript, undefined, { debug: true });

id

You can specify an id to give to the created iframe. If id is not a string, it will be ignored.

new FrameWorker(workerScript, undefined, { id: "special" });

raw

You can pass in raw unencoded JavaScript.

new FrameWorker("console.log('hello, world')", undefined, { raw: true });

revoke

If you initialize a FrameWorker with a "blob:..." url, you can have the url automatically revoked after the worker is initialized.

const url = "blob:http://localhost:8080/bf331630-1275-4b3d-9b65-22512egdb592";
new FrameWorker(url, undefined, { revoke: true });

Keywords

frame

FAQs

Package last updated on 06 Aug 2023

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