🚧 Changelog

1.4.1

Fixes

  • Fixed linking of modules with cyclic imports, allowing new Rust workers to be run with Miniflare. Closes issue #41, thanks @nuvanti.
  • Fixed handling of ArrayBufferViews as Response bodies

1.4.0

Features

  • Added Event and EventTarget to the sandbox. The global scope and WebSocket now inherit from EventTarget so removeEventListener is now supported. Closes issue #18, thanks @jayphelps.
  • Added workers' uncompressed size to logs, closes issue #23, thanks @ItsWendell
  • Switch to lighter dependencies, thanks @lukeed. There's still lots of work to do here for the next major release.

Fixes

1.3.3

Features

  • Added an option to disable default and named caches. When disabled, the caches will still be available in the sandbox, they just won't cache anything. Thanks @frandiox for the suggestion. See ✨ Cache for more details.
  • Added the corresponding wrangler.toml key for the --disable-updater flag: miniflare.disable_updater

Fixes

  • Fixed the package.json file path the update checker checked against

1.3.2

Features

  • Responses are now streamed when using the built-in HTTP(S) server
  • Return values of Durable Object transaction closures are now propagated as the return value of the transaction call

Fixes

1.3.1

Fixes

  • Upgraded html-rewriter-wasm to version 0.3.1, fixing the return type of Element.attributes

1.3.0

Features

Fixes

1.2.0

Features

Fixes

  • Fixed Windows support, closes issue #10
  • Fixed issue where scripts were not reloaded correctly when editing script path in wrangler.toml. Scripts are now always reloaded on options change. Miniflare.reloadScript() is now deprecated. You should use Miniflare.reloadOptions() instead.

1.1.0

Features

  • Added support for namespaced caches with caches.open. See ✨ Cache for more details.

1.0.1

Fixes

  • Fixed /usr/bin/env: 'node --experimental-vm-modules': No such file or directory error when running the CLI in Linux. See 💻 Using the CLI for more details.

1.0.0

Breaking Changes

  • The first and only argument to the Miniflare constructor is now an object. Scripts should be specified via the script option for strings and the scriptPath option for files:

    // Previous version
    import vm from "vm";
    import { Miniflare } from "miniflare";
    
    const mf1 = new Miniflare(
      new vm.Script(`addEventListener("fetch", (event) => { ... })`),
      { kvPersist: true }
    );
    const mf2 = new Miniflare("script.js", { kvPersist: true });
    
    // New version
    import { Miniflare } from "miniflare";
    
    const mf1 = new Miniflare({
      script: `addEventListener("fetch", (event) => { ... })`,
      kvPersist: true,
    });
    const mf2 = new Miniflare({
      scriptPath: "script.js",
      kvPersist: true,
    });
    
  • The Miniflare.getNamespace method has been renamed to Miniflare.getKVNamespace

  • Logged errors will now throw a MiniflareError if no log is provided

  • When using file system KV persistence, key names are now sanitised to replace special characters such as :, /, and \. Reading keys containing these characters may now return null if a value was stored in the previous version.

Features

Fixes

  • Fixed error if options object (containing type and cacheTtl properties) passed as second parameter to KV get method, closes issue #3
  • Fixed error if ArrayBuffer passed as data to crypto.subtle.digest("md5", data)
  • Fixed handling of ignoreMethod option for Cache match and delete
  • Disabled edge caching when using Workers Sites, files are now always loaded from disk
  • Provided Set and WeakSet from Miniflare's realm to sandbox, removing Promise, so (async () => {})() instanceof Promise evaluates to true

0.1.1

Fixes

  • Depend on @mrbbot/node-fetch from npm instead of GitHub, closes issue #2

0.1.0

Initial Release

Features