JSPM

storage-typed

1.0.1
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • 0
  • Score
    100M100P100Q20304F
  • License MIT

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

Package Exports

  • storage-typed
  • storage-typed/dst/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (storage-typed) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

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

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.