Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tgorka/node-window-polyfill
Polyfill for the problem 'window is not defined' in node.js
https://github.com/tgorka/node-window-polyfill
es6 javascript nodejs polyfill typescript websocket window yarn
Last synced: about 1 month ago
JSON representation
Polyfill for the problem 'window is not defined' in node.js
- Host: GitHub
- URL: https://github.com/tgorka/node-window-polyfill
- Owner: tgorka
- License: mit
- Created: 2018-04-23T10:18:01.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-01-07T04:15:19.000Z (almost 2 years ago)
- Last Synced: 2024-11-04T04:03:41.653Z (about 2 months ago)
- Topics: es6, javascript, nodejs, polyfill, typescript, websocket, window, yarn
- Language: TypeScript
- Size: 817 KB
- Stars: 7
- Watchers: 3
- Forks: 2
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# node-window-polyfill
[![Version npm](https://img.shields.io/npm/v/node-window-polyfill.svg)](https://www.npmjs.com/package/node-window-polyfill)
Polyfill for the problem `window is not defined` in node.js.
It's inserting window object on globals
and inputing all needed sub-elements
with requiring web sockets dependency.## Installation
Yarn
```
yarn add node-window-polyfill
```Npm
```
npm install node-window-polyfill
```### Requirements
Minimum ES5.To use it in different environment it's required to clone and build it with the proper flag.
## Usage
Import it in global file, or in every file
where the source code requires the `window` object.```typescript
import nodeWindowPolyfill from "node-window-polyfill";nodeWindowPolyfill.register();
```For shorter import that will call register directrly
```typescript
import "node-window-polyfill/register";
```If you don't want to import 'ws' module and just create empty objects:
```typescript
import nodeWindowPolyfill from "node-window-polyfill";nodeWindowPolyfill.register(false);
```And the version previous ES versions:
```javascript
require('node-window-polyfill').register();
```## What is polyfilled?
- usage of `window` in the code or libraries
- `window.setTimeout` - default `setTimeout` node function
- `window.clearTimeout` - default `clearTimeout` node function
- `window.WebSocket` - version from global object
- `window.ArrayBuffer` - version from global object only
- `window.addEventListener` - empty void function
- `window.navigator` - `{ onLine: true }`
- `window.isNodeJS` - to check if polyfills were aplied
- `window.localStorage` - in memory storage
- `window.Date` - version from global object
- `global.WebSocket` - using [ws](https://www.npmjs.com/package/ws) if the right flag is not set
- if the above functions/properties are already set in the `global` object then they will be taken into the account## Configure
To configure development environment and run the tests,
first clone the repository:```
git clone https://github.com/tgorka/node-window-polyfill.git
```then (once you have `yarn` and node installed) install dependencies
```
yarn
```## Build
To build the distribution and types
```
yarn build
```The distribution is in the `dist` folder and types in the `types` folder.
To change defauld ES standard use `--target` flag. Ex.:
```
yarn build -target es3
```## Test
After configuring we can run tests.
```
yarn test
```We can use debug information logging with setting up env variable
```
DEBUG=nodeWindowPolyfill-* yarn test
```## Author
Tomasz Górka## License
© 2018 Tomasz GórkaMIT licensed.