https://github.com/mitchellcash/node-storage-polyfill
A Web Storage API polyfill for Node.js environments
https://github.com/mitchellcash/node-storage-polyfill
localstorage polyfill sessionstorage storage webstorage
Last synced: 19 days ago
JSON representation
A Web Storage API polyfill for Node.js environments
- Host: GitHub
- URL: https://github.com/mitchellcash/node-storage-polyfill
- Owner: MitchellCash
- License: mit
- Created: 2021-01-15T14:35:12.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2021-04-16T12:50:07.000Z (about 5 years ago)
- Last Synced: 2025-02-18T08:44:41.530Z (over 1 year ago)
- Topics: localstorage, polyfill, sessionstorage, storage, webstorage
- Language: TypeScript
- Homepage:
- Size: 21.5 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# node-storage-polyfill
A Web Storage API polyfill for both `window.localStorage` and `window.sessionStorage` for Node.js
environments.
## Motivation
There are certain situations where you need to access the Web Storage browser APIs, but they aren't
available in Node.js environments, such as:
- Running tests locally in a Node.js environment that make calls to the Web Storage browser APIs
- Using a Server-Side Rendering (SSR) framework that won't compile because the browser APIs aren't
available server-side
This module provides fully compatible APIs and exposes both `localStorage` and `sessionStorage`
globally as if you were working in a browser context where the APIs would be fully available.
## Installation
```sh
npm install node-storage-polyfill
```
## Usage
```js
// CommonJS
require('node-storage-polyfill');
// ES Module
import 'node-storage-polyfill';
```
This exposes `global.localStorage` and `global.sessionStorage` to your codebase to interact with.
## Example
```js
import 'node-storage-polyfill';
sessionStorage.setItem('KEY_1', 'VALUE_1');
console.log(sessionStorage.getItem('KEY_1'));
// Output: 'VALUE_1'
```
## Limitations
The `localStorage` API that is exposed does not differ from `sessionStorage` and only holds the
data in-memory. This differs from the browser based `localStorage` API which stores data between
sessions.
## Recognition
I would like to thank [capaj](https://github.com/capaj) and his work on
[localstorage-polyfill](https://github.com/capaj/localstorage-polyfill) which was working for me
until I needed a `sessionStorage` polyfill, and a new project to spend some time on. Most of the
logic and tests are based on their module, but rewritten in TypeScript and adds support for
`sessionStorage` as well as `localStorage`.