Coder Social home page Coder Social logo

worklet-loader's Introduction

NOTE: This is a simple fork which adds an application/javascript mimetype to the Blob constructor in ./src/worklets/InlineWorklet.js, so that inline Blobs can be loaded and used as secure AudioWorklets in Chromium browsers.

Worklet Loader

This loader loads imported scripts as a URL pointing to (or containing) a compiled module. That URL can be used to add worklet modules.

NOTE! At the moment, this is basically just a fork of worker-loader and probably shouldn't be used. It's possible that, at some point, worker-loader will support worklets and this loader will be obsolete. It's also possible that there are worker-specific things that this package does that breaks worklets for one reason or another. So be careful!

Install

npm i -D worklet-loader

Inlined

App.js

import workletUrl from 'worklet-loader!./Worklet.js';

Config

webpack.config.js

{
  module: {
    rules: [
      {
        test: /\.worklet\.js$/,
        use: { loader: 'worklet-loader' }
      }
    ]
  }
}

App.js

import workletUrl from './file.worklet.js';

const audioCtx = new AudioContext();

audioCtx.audioWorklet.addModule(workletUrl).then(() => {
  // Do stuff with the now-registered processor
});

Options

Name Type Default Description
name {String} [hash].worklet.js Set a custom name for the output script
inline {Boolean} false Inline the worklet as a Blob
publicPath {String} null Override the path from which worklet scripts are downloaded

name

To set a custom name for the output script, use the name parameter. The name may contain the string [hash], which will be replaced with a content dependent hash for caching purposes. When using name alone [hash] is omitted.

webpack.config.js*

{
  loader: 'worklet-loader',
  options: { name: 'WorkerName.[hash].js' }
}

inline

Inline the worklet as a Blob with the inline parameter

webpack.config.js

{
  loader: 'worklet-loader',
  options: { inline: true }
}

publicPath

Overrides the path from which worklet scripts are downloaded. If not specified, the same public path used for other webpack assets is used

webpack.config.js

{
  loader: 'worklet-loader'
  options: { publicPath: '/scripts/worklets/' }
}

Examples

Integrating with TypeScript

You will need to define a custom module for the exports of your worklet files

typings/custom.d.ts

declare module "*.worklet.ts" {
  const exportString: string;
  export default exportString;
}

App.ts

import fooBarWorkletUrl from 'worlet-loader!./fooBar.worklet.ts'

const audioCtx = new AudioContext();

// @ts-ignore: AudioContext.audioWorklet is not available as a type yet
audioCtx.audioWorklet.addModule(fooBarWorkletUrl).then(() => {
  // Do stuff with the now-registered processor
});

worklet-loader's People

Contributors

dtinth avatar fb55 avatar frogthefrog avatar grind086 avatar hawkrives avatar joshwiens avatar jpage-godaddy avatar kevinzwhuang avatar kevzettler avatar lawrence-witt avatar michael-ciniawsky avatar ooflorent avatar rafi993 avatar reklawnos avatar renchap avatar simon04 avatar skipjack avatar sokra avatar spacek33z avatar tobek avatar tomlagier avatar trusktr avatar trysound avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.