Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

storage-typed

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

storage-typed

Web Storage wrapper that provides automatic JSON parsing/stringifying and type-specific features.

  • 1.0.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
0
Maintainers
1
Weekly downloads
 
Created
Source

storage-typed

Web Storage only accepts string value so you should write this verbose code everytime:

// get
try {
  const value = window.localStorage.getItem(key);
  return value ? JSON.parse(value) : null;
} catch (e) {
  /* ... */
}

// set
window.localStorage.setItem(key, JSON.stringify(value));

And it does not provide any type-specific operation. (e.g. increasing number value, push to array)

// increasing count
const count = JSON.parse(window.localStorage.getItem(key));
window.localStorage.setItem(key, JSON.stringify(count + 1));

// push to array
const arr = JSON.parse(window.localStorage.getItem(key));
window.localStorage.setItem(key, JSON.stringify([...arr, value]));

So storage-typed resolves all things above.

const count = TypedStorageFactory.create("count", 0); // NumberTypedStorage
count.increase();
count.get(); // 1

const arr = TypedStorageFactory.create("array", ["foo"]); // ArrayTypedStorage
arr.pop(); // "foo"
arr.push("bar");
arr.get(); // ["bar"]

/* and any other types... */

API References

  • TypedStorageFactory
  • TypedStorage
  • NumberTypedStorage
  • BooleanTypedStorage
  • ArrayTypedStorage

TypedStorageFactory

Creates TypedStorage by type of passed initial value. Note test code.

TypedStorageFactory.create<T>(key, initialValue, options);
  • create: (key, initialValue, options) => TypedStorage<T> | NumberTypedStorage | BooleanTypedStorage | ArrayTypedStorage<T[number]>
    • returns instanceof TypedStorage by type of passed initial value
    • parameters
      • key: string
        • required
        • unique key for value
      • initialValue: T
        • required
        • any value which TypedStorage will be initialized with
      • options: TypedStorageOptions<T>

TypedStorage

Provides JSON parsing/stringifying. Note test code.

const storage = new TypedStorage<T>(key, initialValue, options);
storage.get();
storage.set(value);
  • constructor: (key, initialValue, options) => TypedStorage<T>

    • returns instanceof TypedStorage by type of passed initial value
    • parameters
      • key: string
        • required
        • unique key for value
      • initialValue: T
        • required
        • any value which TypedStorage will be initialized with
      • options: TypedStorageOptions<T>
  • get: () => T

    • returns current value
  • set: (next) => void

    • sets current value to passed value
    • parameters
      • next: T
        • required
        • next value
TypedStorageOptions
interface TypedStorageOptions<T> {
  storage?: Storage;
}
  • storage: Storage
    • Storage which TypedStorage will use

NumberTypedStorage

Extends number-specific methods based on TypedStorage API. Note test code.

const storage = new NumberTypedStorage(key, initialValue, options);
storage.increase();
storage.decrease();
  • constructor: (key, initialValue, options) => TypedStorage<number>

    • returns instanceof TypedStorage by type of passed initial value
    • parameters
      • key: string
        • required
        • unique key for value
      • initialValue: number
        • required
        • any value which NumberTypedStorage will be initialized with
      • options: TypedStorageOptions<number>
  • increase: () => void

    • adds 1 to current value
  • decrease: () => void

    • subtracts 1 from current value

BooleanTypedStorage

Extends boolean-specific methods based on TypedStorage API. Note test code.

const storage = new BooleanTypedStorage(key, initialValue, options);
storage.toggle();
storage.true();
storage.false();
  • constructor: (key, initialValue, options) => TypedStorage<boolean>

    • returns instanceof TypedStorage by type of passed initial value
    • parameters
      • key: string
        • required
        • unique key for value
      • initialValue: boolean
        • required
        • any value which BooleanTypedStorage will be initialized with
      • options: TypedStorageOptions<boolean>
  • toggle: () => void

    • reverses current value
  • true: () => void

    • sets current value to true
  • false: () => void

    • sets current value to false

ArrayTypedStorage

Extends number-specific methods based on TypedStorage API. Note test code.

const storage = new ArrayTypedStorage<T>(key, initialValue, options);
storage.push(value);
storage.pop();
  • constructor: (key, initialValue, options) => TypedStorage<T[]>

    • returns instanceof TypedStorage by type of passed initial value
    • parameters
      • key: string
        • required
        • unique key for value
      • initialValue: T[]
        • required
        • any value which NumberTypedStorage will be initialized with
      • options: TypedStorageOptions<T[]>
  • push: (value: T) => void

    • appends value to the end of current array
  • pop: () => T | null

    • removes last value of current array. if it is empty, pop returns null.

Keywords

FAQs

Package last updated on 10 Jun 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc