mirror of
https://github.com/zhigang1992/DefinitelyTyped.git
synced 2026-06-01 03:20:46 +08:00
Added support fot the custom EventEmitter. Added jsdoc comments.
This commit is contained in:
107
types/node-localstorage/index.d.ts
vendored
107
types/node-localstorage/index.d.ts
vendored
@@ -4,13 +4,14 @@
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
// TypeScript Version: 2.2
|
||||
|
||||
export class LocalStorage {
|
||||
/**
|
||||
* Creates a new LocalStorage instance
|
||||
* @param location The location in which the local storage resides
|
||||
* @param quota The partitioned size of the local storage
|
||||
*/
|
||||
constructor(location: string, quota?: number);
|
||||
import { EventEmitter } from 'events';
|
||||
|
||||
/**
|
||||
* A drop-in substitute for the browser native localStorage API that runs on node.js.
|
||||
* Copyright (c) 2012, Lawrence S. Maccherone, Jr. -- https://github.com/lmaccherone/node-localstorage
|
||||
* (MIT License)
|
||||
*/
|
||||
export class LocalStorage extends EventEmitter {
|
||||
/**
|
||||
* The number of keys in the local storage.
|
||||
*/
|
||||
@@ -35,29 +36,91 @@ export class LocalStorage {
|
||||
*/
|
||||
removeItem(key: string): void;
|
||||
/**
|
||||
*
|
||||
* Stores a `key` and it's `value` in to the local store.
|
||||
* @param key Unique identifier for the new local storage item
|
||||
* @param value The value of the item
|
||||
*/
|
||||
setItem(key: string, value: string): void;
|
||||
}
|
||||
export class JSONStorage extends LocalStorage {
|
||||
/**
|
||||
* Internal event `storage` is fired on the `removeItem`, `setItem` and `clear` methods, if subscribed.
|
||||
* @param eventName The only `eventName` that is supported is `storage`.
|
||||
* @param callback The call back type is of `StorageEvent`.
|
||||
*/
|
||||
on(eventName: 'storage', callback: (event: StorageEvent) => void): this;
|
||||
/**
|
||||
* Creates a new LocalStorage instance
|
||||
* @param location The location in which the local storage resides
|
||||
* @param quota The partitioned size of the local storage
|
||||
*/
|
||||
constructor(location: string, quota?: number);
|
||||
/**
|
||||
* Gets the value of the given [key]
|
||||
* @param key The key whose value you want to retrieve.
|
||||
* @returns `Array of Objects` or an `Object`. This `getItem` method performs a `JSON.parse` on the value before returning it.
|
||||
*/
|
||||
getItem(key: string): any | null;
|
||||
/**
|
||||
*
|
||||
* @param key Unique identifier for the new local storage item
|
||||
* @param value The value associated with the `key`. This `setItem` method performs a `JSON.stringify` on the value before storing it. The `value` *must* be a valid `JSON` object.
|
||||
*/
|
||||
setItem(key: string, value: string | [] | object): void;
|
||||
}
|
||||
export class JSONStorage extends LocalStorage {
|
||||
/**
|
||||
* Gets the value of the given `key`. This method performs a `JSON.parse` on the `value` before returning it.
|
||||
* @param key The key whose value you want to retrieve.
|
||||
* @returns `Array of Objects` or an `Object`. This `getItem` method performs a `JSON.parse` on the `value` before returning it.
|
||||
*/
|
||||
getItem(key: string): any;
|
||||
/**
|
||||
* Stores a `key` and it's `value` in to the local store. The given `value` will have `JSON.stringify` performed on it prior to storing.
|
||||
* @param key Unique identifier for the new local storage item
|
||||
* @param value The value associated with the `key`. This `setItem` method performs a `JSON.stringify` on the value before storage. The `value` *must* be a valid `JSON` object.
|
||||
*/
|
||||
setItem(key: string, value: any): void;
|
||||
/**
|
||||
* Creates a new LocalStorage instance
|
||||
* @param location The location in which the local storage resides
|
||||
* @param quota The partitioned size of the local storage
|
||||
*/
|
||||
constructor(location: string, quota?: number);
|
||||
}
|
||||
|
||||
/**
|
||||
* Contains information regarding a `storage` event.
|
||||
*/
|
||||
export class StorageEvent {
|
||||
/**
|
||||
* Affected `key`.
|
||||
*/
|
||||
key: string;
|
||||
/**
|
||||
* Previous `value` associated with the `key`.
|
||||
*/
|
||||
oldValue: string;
|
||||
/**
|
||||
* Current `value` associated with the `key`.
|
||||
*/
|
||||
newValue: string;
|
||||
/**
|
||||
* The current `process.pid` for the calling process.
|
||||
*/
|
||||
url: string;
|
||||
/**
|
||||
* The location of the storage area. Defaults to `localStorage`.
|
||||
*/
|
||||
storageArea: string;
|
||||
/**
|
||||
* Creates an object containing information regarding a `storage` event.
|
||||
* @param key Affected `key`.
|
||||
* @param oldValue Previous `value` associated with the `key`.
|
||||
* @param newValue Current `value` associated with the `key`.
|
||||
* @param url The current `process.pid` for the calling process.
|
||||
* @param storageArea The location of the storage area. Defaults to `localStorage`.
|
||||
*/
|
||||
constructor(key: string, oldValue: string, newValue: string, url: string, storageArea: string);
|
||||
}
|
||||
|
||||
/**
|
||||
* Provides a specific `Error` object for **Quota Exceeded Errors**.
|
||||
*/
|
||||
export class QUOTA_EXCEEDED_ERR extends Error {
|
||||
/**
|
||||
* Message explaining the error.
|
||||
*/
|
||||
message: string;
|
||||
/**
|
||||
* Creates a specific `Error` object for **Quota Exceeded Errors**.
|
||||
* @param message Message explaining the error.
|
||||
*/
|
||||
constructor(message: string);
|
||||
}
|
||||
|
||||
@@ -3,8 +3,14 @@ import { LocalStorage, JSONStorage } from 'node-localstorage';
|
||||
const jsonStore = new JSONStorage('./jsonStore');
|
||||
const textStore = new LocalStorage('./textStore');
|
||||
|
||||
const mjkModel = {
|
||||
firstName: 'Maynard',
|
||||
interface Person {
|
||||
givenName: string;
|
||||
middleName: string;
|
||||
familyName: string;
|
||||
}
|
||||
|
||||
const mjkModel: Person = {
|
||||
givenName: 'Maynard',
|
||||
middleName: 'James',
|
||||
familyName: 'Keenan',
|
||||
};
|
||||
@@ -12,6 +18,18 @@ const mjkModel = {
|
||||
textStore.clear();
|
||||
jsonStore.clear();
|
||||
|
||||
textStore.on('storage', (event) => {
|
||||
if (textStore.getItem(event.key) !== event.newValue) {
|
||||
throw new Error('textStore: An error occurred with the event handler.');
|
||||
}
|
||||
});
|
||||
|
||||
jsonStore.on('storage', (event) => {
|
||||
if (jsonStore.getItem(event.key) !== event.newValue) {
|
||||
throw new Error('jsonStore: An error occurred with the event handler.');
|
||||
}
|
||||
});
|
||||
|
||||
textStore.setItem('tool', '46&2');
|
||||
|
||||
if (textStore.getItem('tool') !== '46&2') {
|
||||
@@ -20,10 +38,14 @@ if (textStore.getItem('tool') !== '46&2') {
|
||||
|
||||
jsonStore.setItem('mjk', mjkModel);
|
||||
|
||||
const mjkTest = jsonStore.getItem('mjk');
|
||||
if (jsonStore.getItem('mjk') === null) {
|
||||
throw new Error('.getItem failed.');
|
||||
}
|
||||
|
||||
if (mjkTest === null || mjkTest.firstName !== mjkModel.firstName || mjkTest.middleName !== mjkModel.middleName || mjkTest.familyName !== mjkModel.familyName) {
|
||||
throw new Error('.setJson method is not working!');
|
||||
const mjkTest: Person = jsonStore.getItem('mjk');
|
||||
|
||||
if (mjkTest === null || mjkTest.givenName !== mjkModel.givenName || mjkTest.middleName !== mjkModel.middleName || mjkTest.familyName !== mjkModel.familyName) {
|
||||
throw new Error('.setItem method is not working!');
|
||||
}
|
||||
|
||||
const keyCheck = textStore.key(0);
|
||||
|
||||
Reference in New Issue
Block a user