jvilk / BrowserFS

BrowserFS is an in-browser filesystem that emulates the Node JS filesystem API and supports storing and retrieving files from various backends.
Other
3.06k stars 215 forks source link

Normalize `null` options correctly #254

Closed corhere closed 5 years ago

corhere commented 5 years ago

Fixes #227.

The first version of Node where FS functions accepted an options object was version 0.10. Between Node 0.10 and Node 6 inclusive, all falsy values (including the empty string) and functions are replaced with the default options. Only truthy values which are not strings, objects or functions throw a TypeError.

Node 7 introduced a breaking change: only null, undefined and functions get replaced with the default options, and any values which are not strings or objects throw a TypeError. https://github.com/nodejs/node/pull/7165

It is not clear which version of the Node FS API is emulated by BrowserFS, so I have elected to implement the Node 7 behaviour.

jvilk commented 5 years ago

The next major version of BrowserFS will clearly track a specific version of the NodeJS FS API. When starting this project (before Node hit 1.0), I had not anticipated that the fs API would continually evolve.

I'll merge this in for now, while acknowledging that there are likely other Node 7-incompatible behaviors.