Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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: 28 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 (about 4 years ago)
- Default Branch: main
- Last Pushed: 2021-04-16T12:50:07.000Z (almost 4 years ago)
- Last Synced: 2025-01-06T22:54:58.445Z (30 days 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-sideThis 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`.