# istorage

> 缓存应用库，并且可以设置过期时间与数据加解密 适用于 `Nodejs` 和 `Web`端。`Web`端封装 `localStorage | sessionStorage | indexedDB`。

Latest version **1.0.4** (published 2022-06-17) · ISC license · 0 weekly downloads

## Install

```sh
npm install istorage
pnpm add istorage
yarn add istorage
bun add istorage
```

## Health

**Score 30/100 (F)** — status: abandoned.

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

Warnings: low downloads.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.4 |
| Published | 2022-06-17 |
| First published | 2022-06-17 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 1 |
| Unpacked size | 94 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Maintainers | yang132 |
| Keywords | indexedDB, localStorage, sessionStorage, storage, js, db, istorage |

## Links

- npm: https://www.npmjs.com/package/istorage
- npm.io page: https://npm.io/package/istorage

## Dependencies (1)

- [crypto-js](https://npm.io/package/crypto-js.md) ^4.1.1

## Alternatives

- [@mapbox/jsonlint-lines-primitives](https://npm.io/package/@mapbox/jsonlint-lines-primitives.md) — 5.3M weekly downloads
- [reftools](https://npm.io/package/reftools.md) — 3.5M weekly downloads
- [@hey-api/openapi-ts](https://npm.io/package/@hey-api/openapi-ts.md) — 3.5M weekly downloads
- [@mapbox/geojson-rewind](https://npm.io/package/@mapbox/geojson-rewind.md) — 2.4M weekly downloads
- [turbo-stream](https://npm.io/package/turbo-stream.md) — 1.7M weekly downloads

## Recent versions

- 1.0.4 (latest) — 2022-06-17
- 1.0.3 — 2022-06-17
- 1.0.2 — 2022-06-17
- 1.0.1 — 2022-06-17
- 1.0.0 — 2022-06-17

## README

# istorage

缓存应用库，并且可以设置过期时间与数据加解密
适用于 `Nodejs` 和 `Web`端。`Web`端封装 `localStorage | sessionStorage | indexedDB`。

#### Nodejs
```js
const IStorage = require('istorage');

const storage = new IStorage({expires: 6 * 1000});
storage.set('name', 'John');
storage.set('age', '30');
storage.set('fn', function () {});
storage.set('obj', { name: 'John' });
// console.log(storage.keys());
console.log(storage.values());
storage.update('age', '31');
console.log(storage.values());

let i = 0
let x = setInterval(() => {
    i++
    console.log(i);
    if (i > 6) {
        console.log(i, storage.all());
        clearInterval(x)
    }
}, 1000);
```

#### localStorage | sessionStorage
```js
const IStorage = require('istorage');

const storage = new IStorage({type: "localStorage", expires: 6 * 1000});
storage.set('name', 'John');
storage.set('age', '30');
storage.set('fn', function () {});
storage.set('obj', { name: 'John' });
// console.log(storage.keys());
console.log(storage.values());
storage.update('age', '31');
console.log(storage.values());

let i = 0
let x = setInterval(() => {
    i++
    console.log(i);
    if (i > 6) {
        console.log(i, storage.all());
        clearInterval(x)
    }
}, 1000);
```

#### indexedDB(使用indexedDB的时候要注意它是异步的，它是异步的，它是异步的)
```html
<button id="set">set</button>
<button id="set1">set1</button>
<button id="get">get</button>
<button id="all">all</button>
<button id="remove">remove</button>
<button id="clear">clear</button>
<script>
    // const storage = new IStorage({type: "indexedDB", expires: 6 * 1000});
    const storage = new IStorage({type: "indexedDB"});
    storage.use('11111111111111111111111111111111111111111111')

    document.getElementById("set").addEventListener("click", () => {
        storage.set("test", {
            name: "test",
            age: 18
        })
    });
    document.getElementById("set1").addEventListener("click", () => {
        storage.set("test1", function() {
            return {
                name: "test1",
                age: 18
            }
        })
    });

    document.getElementById("all").addEventListener("click", async () => {
        const data = await storage.all()
        console.log(data)
    });

    document.getElementById("clear").addEventListener("click", () => {
        storage.clear()
    });

    document.getElementById('get').addEventListener('click', () => {
        console.log(storage.get('test1'))
    })

    document.getElementById('remove').addEventListener('click', () => {
        storage.remove('test1')
    })

</script>
```

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