* Lock version of gruntify-eslint (and grunt-replace)
The current repository is compatible with gruntify-eslint 3.1.0.
`*` resolves to version 4.0.0., which bumps its eslint dependency
from 3.x to 4.x, which in turn causes linting errors.
To get the default check-out to pass, lock the dependencies to
known-compatible versions.
* Bump gruntify-eslint to 4.0.0 + fix lint error
Bump gruntify-eslint to 4.0.0, which depends on eslint ^4.0.0,
and fix the lint error that appeared.
This patch introduces on top of #17 some minor changes from the
review comments, in particular:
- do not replace require("../filename") to include the api-metadata.json
(restored the original '{/* include("...") */}' placeholder)
- raise an appropriate error message when the source file is used
by mistake (or the "dist/" file has not been built correctly).
- set the generated UMD wrapped module as the package.json main
entrypoint
- do not include api-metadata.json and src dir from the files included
in the published npm package
- run both build and test npm scripts on prepublish
This addresses [issue 7] by making it possible for users to run:
```sh
npm install webextension-polyfill
```
and download a module that they can use with a bundler as follows:
```js
import browser from 'webextension-polyfill';
```
Also, add a [prepublish script] so that users who clone the repo don't
need to run `grunt` manually. In addition, specify [files] in
package.json so that this module can be published to npm without
including miscellanea. This can be verified by running:
```sh
npm pack && tar -tvf webextension-polyfill-0.1.0.tgz
```
[issue 7]: https://github.com/mozilla/webextension-polyfill/issues/7
[files]: https://docs.npmjs.com/files/package.json#files
[prepublish script]: https://docs.npmjs.com/misc/scripts
- if the a browser global already exists, it should not be overridden
- use Object.defineProperty on the wrapped browser global
(and test "has" for cached properties)
- delete a property defined with Object.defineProperty
- methods that are not wrapped are proxied correctly
- the special onMessage wrapper should not wrap a listener that is not
a function
- test that a returned rejected Promise on the onMessage listener
is turned in the parameter of the sendResponse callback