An open API service indexing awesome lists of open source software.

https://github.com/phucbm/pia

Leverage the use of localStorage and sessionStorage
https://github.com/phucbm/pia

Last synced: 3 months ago
JSON representation

Leverage the use of localStorage and sessionStorage

Awesome Lists containing this project

README

          

# PiaJS

[![npm version](https://badgen.net/npm/v/piajs?activeTab=versions?icon=npm)](https://www.npmjs.com/package/piajs?activeTab=versions)
[![npm downloads](https://badgen.net/npm/dm/piajs?activeTab=versions?icon=npm)](https://www.npmjs.com/package/piajs?activeTab=versions)
[![npm dependents](https://badgen.net/npm/dependents/piajs?activeTab=versions?icon=npm)](https://www.npmjs.com/package/piajs?activeTab=versions)
[![github stars](https://badgen.net/github/stars/phucbm/pia?icon=github)](https://github.com/phucbm/pia/)
[![jsdelivr hits](https://badgen.net/jsdelivr/hits/gh/phucbm/pia?icon=jsdelivr)](https://www.jsdelivr.com/package/gh/phucbm/pia)
[![jsdelivr npm rank](https://badgen.net/jsdelivr/rank/npm/piajs?activeTab=versions?icon=npm)](https://www.npmjs.com/package/piajs?activeTab=versions)
[![github license](https://badgen.net/github/license/phucbm/pia?icon=github)](https://github.com/phucbm/pia/blob/main/LICENSE)
[![Made in Vietnam](https://raw.githubusercontent.com/webuild-community/badge/master/svg/made.svg)](https://webuild.community)

> A simple, lightweight JavaScript API for handling browser storage

- Automatically switch between `localStorage` and `sessionStorage` depends on your expires setting
- Accepts any value type
- No dependency

## Cookies vs. Local Storage vs. Session Storage

| | Cookies | Local Storage | Session Storage |
|------------------------|--------------------|-----------------------------------|-----------------|
| **Capacity** | 4kb | 10mb | 5mb |
| **Accessible from** | Any window | Any window | Same tab |
| **Expires** | Manually set | Never (_Manually set with PiaJS_) | On tab close |
| **Storage location** | Browser and server | Browser only | Browser only |
| **Sent with requests** | Yes | No | No |

## Installation

Using package manager:

```shell
npm i piajs
```

Import

```js
import "piajs";
```

Using CDN:

```html

```

## Usage

### Create record

Create a record, valid across the entire browser.

```js
Pia.set('key', 1); // number
Pia.set('key', [1, 2]); // array
Pia.set('key', "string"); // string
Pia.set('key', {value: "123"}); // object
Pia.set('key', true); // boolean
```

Unlike normal `localStorage` or `sessionStorage`, PiaJS uses `JSON.stringify()`
to convert the value to a string, so it would accept any type of value.

> **Warning**
> Prototypes of an _Object_ will be treated as a plain string value. So you can't store instances with Pia.

### Set expires

```js
Pia.set('key', 'your value', {expires: 'session'}); // valid in the current browser tab only
Pia.set('key', 'your value', {expires: 7}); // valid for 7 days
Pia.set('key', 'your value', {expires: '1 day'}); // valid for 1 day
Pia.set('key', 'your value', {expires: '2 days'}); // valid for 2 days
Pia.set('key', 'your value', {expires: '48 hours'}); // valid for 48 hours
```

> **Note**
> If you leave `expires` empty or something unrecognized, it will never expire.

### Read record

```js
Pia.get('key');
Pia.get('key', true); // => full value object
Pia.get('nothing'); // => null
```

### Delete record

```js
Pia.remove('key');
```

### Test record

Run this in the console

```js
Pia.test()
```

Log the info about a record

```js
console.log(Pia.test('key'));

const info = {
"leftover": [
"2 day(s) left",
"created 134 second(s) ago",
"created 2 minute(s) ago",
"created 0 hour(s) ago",
"created 0 day(s) ago"
],
"record": {
"key": "pia-day",
"valueType": "string",
"value": "test update",
"raw_expires": 2,
"expires": 2,
"unit": "day",
"storageType": "localStorage",
"arguments": {
"0": "pia-day",
"1": "test day",
"2": {
"expires": 2
}
},
"createdDate": "Thu Jun 29 2023 10:44:25 GMT+0700 (Indochina Time)"
}
};
```

Test quickly in the console panel

![test pia](https://github.com/phucbm/pia/assets/14942380/28d16d27-9fe6-4262-8781-80a023dcab3e)

## Deployment

```shell
# Install packages
npm i

# Run dev server
npm run dev

# Build prod files
npm run prod
```