# node-storage-shim

> Provides an in memory implementation of the webstorage Storage interface to be used as a shim for localStorage or sessionStorage for unit testing

Latest version **2.0.1** (published 2020-03-21) · ISC license · 0 weekly downloads

## Install

```sh
npm install node-storage-shim
pnpm add node-storage-shim
yarn add node-storage-shim
bun add node-storage-shim
```

## Health

**Score 35/100 (D)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: abandoned.

## Facts

| | |
|---|---|
| Version | 2.0.1 |
| Published | 2020-03-21 |
| First published | 2015-07-23 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | bundled |
| Module format | CommonJS |
| Node | >=6.14.4 |
| Dependencies | 0 |
| Unpacked size | 5.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 9 |
| Author | Michael Nahkies |
| Maintainers | mnahkies |

## Links

- npm: https://www.npmjs.com/package/node-storage-shim
- Repository: https://github.com/mnahkies/node-storage-shim
- Homepage: https://github.com/mnahkies/node-storage-shim#readme
- Issues: https://github.com/mnahkies/node-storage-shim/issues
- npm.io page: https://npm.io/package/node-storage-shim

## Recent versions

- 2.0.1 (latest) — 2020-03-21
- 2.0.0 — 2018-09-10
- 1.0.1 — 2015-08-01
- 1.0.0 — 2015-07-23

## README

# node-storage-shim

[![Build Status](https://travis-ci.org/mnahkies/node-storage-shim.svg)](https://travis-ci.org/mnahkies/node-storage-shim)
[![npm](https://img.shields.io/npm/v/node-storage-shim.svg)](https://www.npmjs.com/package/node-storage-shim)

node-storage-shim provides a simple shim conforming to the w3c Storage Interface
that can be used as a transient replacement for localStorage or sessionStorage
when running in environments that do not support these, eg: node. 

Note that this does not persist it's data to disk, and is primarily aimed at 
use in unit tests.

## Installation
The package can be installed from npm:

```shell script
npm install --save node-storage-shim
```


## Example Usage

```javascript
const StorageShim = require('node-storage-shim')

storage = new StorageShim()

storage.setItem("foo", "My Value")
console.log(storage.getItem("foo")
```
    
## Polyfill localStorage / sessionStorage
If you wish to polyfill the localStorage and sessionStorage globals that are available in 
web browsers, you can do something like this:

```javascript
const StorageShim = require('node-storage-shim')

global.window = global
global.localStorage = new StorageShim()
global.sessionStorage = new StorageShim()
```

    
## Running Unit Tests
The unit tests use mocha, and are setup to run by the standard npm test command.
This also runs a sanity test of the typescript declaration in the test-typescript-declarations directory

    npm install
    npm test

## Limitations
- You cannot use any of the method names as keys, this is a trade-off that is required to support for ... in iteration.

- storage event portion of the interface is not implemented.
    
## Change Log

### 2.0.1 (21-03-2020)
- Improve readme

### 2.0.0 (10-09-2018)
- Updated minimum NodeJS version and started using Proxy to fix limitations with respect to direct property access.
- Added typescript declaration

### 1.0.1 (08/01/2015)
- Initial release

## Further Reading

[w3c Storage Interface](https://w3c.github.io/webstorage/#storage-0)

[MDN Storage Documentation](https://developer.mozilla.org/en-US/docs/Web/API/Storage)

---
_Source: https://npm.io/package/node-storage-shim · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
