npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@mornya/eventable-storage-libs

v2.3.0

Published

The project of Eventable & Expirable Storage library.

Downloads

66

Readme

Eventable Storage Libs

npm node types downloads license

The project of Eventable & Expirable Storage library.

This project has been created by Vessel CLI. For a simple and quick reference about it, click here.

About

웹스토리지(window.Storage)의 Storage 인터페이스를 구현한 localStorage, sessionStorage 사용시 저장된 데이터 변경에 따른 이벤트를 발생시켜준다.

Installation

해당 라이브러리를 사용 할 프로젝트에서는 아래와 같이 의존성 모듈로 설치한다.

$ npm install --save @mornya/eventable-storage-libs
or
$ yarn add @mornya/eventable-storage-libs

Usage

기본적인 사용방법은 아래와 같다. 타입스크립트 사용시 window.Storage에 대한 글로벌 타입 재선언이 필요하므로 먼저 tsconfig.tson 파일에 타입이 참조되도록 추가한다.

{
  ...
  "typeRoots": [
    "./node_modules/@mornya/eventable-storage-libs/dist"
  ],
  ...
}

애플리케이션 구동 초기에 활성화를 위해 아래와 같이 코드를 추가한다.

import { EventableStorage } from '@mornya/eventable-storage-libs';

if (!EventableStorage.isAvailableStorage('localStorage')) {
  console.error('window.localStorage를 사용 할 수 없습니다!');
} else {
  ...
  EventableStorage.initialize(true);
  ...
}

EventableStorage에서 발생되는 이벤트를 활용하기 위해서는 아래와 같은 방법을 사용한다.

import { EventableStorage } from '@mornya/eventable-storage-libs';

const eventHandler = (event) => {
  console.log(event.detail); // { action: 'set', key: 'foo', value: 'bar' }
};

window.addEventListener('eventableStorage', handler, false);

window.localStorage.setItem('foo', 'bar');

window.removeEventListener('eventableStorage', handler, false);

혹은 제공되는 메소드를 사용한다 (위와 동일한 실행이지만 리스너 등록 허용 갯수 제한이 있다).

import { EventableStorage } from '@mornya/eventable-storage-libs';

const eventHandler: EventableStorage.Listener = (detail: Detail) => {
  console.log(detail); // { action: 'set', key: 'foo', value: 'bar' }
};

EventableStorage.addListener(eventHandler);

window.localStorage.setItem('foo', 'bar');

EventableStorage.removeListener(eventHandler);

Storage methods

Storage 객체 내 제공되는 메소드들은 아래와 같다.

getItem

스토리지에 저장된 값을 얻어온다.

window.localStorage.getItem(key);
window.sessionStorage.getItem(key);

setItem

스토리지에 값을 저장한다. 만료일시(Date타입)를 지정할 수 있다. getItem으로 스토리지에 저장된 값을 읽어올 때 만료일시가 지났다면 해당 키로 저장된 값이 스토리지에서 제거되며, null이 반환된다.

window.localStorage.setItem(key, value[, expireDate]);
window.sessionStorage.setItem(key, value[, expireDate]);

removeItem

스토리지에 저장된 값을 제거한다.

window.localStorage.removeItem(key);
window.sessionStorage.removeItem(key);

clear

스토리지에 저장된 값을 모두 제거한다.

window.localStorage.clear();
window.sessionStorage.clear();

setExpire

존재하는 스토리지 값을 만료 가능한 상태로 만든다. isEventable 값이 true로 설정되면 생성시 이벤트를 발생한다.

window.localStorage.setExpire(key, expireDate[, isEventable]);
window.sessionStorage.setExpire(key, expireDate[, isEventable]);

keys

존재하는 스토리지 키 목록을 리턴한다. 스토리지 값 만료를 위해 생성되는 *.exp 형태의 키는 제외된다.

window.localStorage.keys();
window.sessionStorage.keys();

Modules in the package

본 패키지에는 아래와 같은 모듈들을 포함한다. 제공되는 모듈과 메소드 사용법 등은 코드 스니핏을 참고한다.

isAvailableStorage

window.Storage 객체 존재 여부 확인.

import { isAvailableStorage } from '@mornya/eventable-storage-libs';

const result = isAvailableStorage('localStorage');

console.log(result); // true or false

EventableStorage module

EventableStorage 모듈은 다음과 같은 메소드들을 제공한다.

EventableStorage.initialize

초기화를 위해 앱 실행시점(최초)에 실행한다. 여러 번 호출해도 1회만 실행된다. isActive 파라미터 값은 기본적으로 false 이므로, 바로 활성화 필요시 파라미터를 true로 주거나, EventableStorage.setActive(true) 메소드를 실행해야 한다.

function initialize (isActive: boolean): boolean {}

EventableStorage.isActive

EventableStorage 활성화 혹은 비활성화 여부를 리턴한다.

function isActive (): boolean {}

EventableStorage.setActive

EventableStorage 활성화 혹은 비활성화 처리한다.

function setActive (flag: boolean): void {}

EventableStorage.getMaxListeners

허용 가능한 이벤트 리스너 등록 갯수를 리턴한다.

function getMaxListeners (): number {}

EventableStorage.setMaxListeners

허용 가능한 이벤트 리스너 등록 갯수를 설정한다.

function setMaxListsners (max: number): void {}

EventableStorage.addListener

eventableStorage 리스너를 등록한다. 등록된 리스너의 갯수를 리턴한다.

function addListener (listener: Listener): number {}

리스너 등록은 아래와 같이 두 가지 방법 중 하나로 한다.

// 핸들러 선언
function myEventHandler () { ... }

EventableStorage.addListener(myEventHandler);
/* 혹은 */
window.addEventListener('eventableStorage', myEventHandler, false);

EventableStorage.removeListener

eventableStorage 리스너를 해제한다. 등록된 리스너의 갯수를 리턴한다.

function removeListener (listener: Listener): number {}

리스너 해제는 아래와 같이 두 가지 방법 중 하나로 한다.

// 핸들러 선언
function myEventHandler () { ... }

EventableStorage.removeListener(myEventHandler);
/* 혹은 */
window.removeEventListener('eventableStorage', myEventHandler);

Change Log

프로젝트 변경사항은 CHANGELOG.md 파일 참조.

License

프로젝트 라이센스는 LICENSE 파일 참조.