Skip to content
This repository has been archived by the owner on Feb 28, 2019. It is now read-only.

Commit

Permalink
Merge pull request #1 from petamoriken/feature/v0.1.0
Browse files Browse the repository at this point in the history
v0.1.0
  • Loading branch information
petamoriken authored Apr 22, 2018
2 parents 4672c1a + c0624d5 commit 3ff77ee
Show file tree
Hide file tree
Showing 7 changed files with 1,402 additions and 205 deletions.
11 changes: 5 additions & 6 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,19 @@ module.exports = {
// To give you an idea how to override rule options:
parser: "babel-eslint",
parserOptions: {
sourceType: "module"
sourceType: "module",
},
extends: ["eslint:recommended"],
env: {
"browser": true,
"node": true,
"es6": true,
"mocha": true,
},
rules: {
"quotes": [2, "double", "avoid-escape"],
"no-console": [0],
"semi": [2],
"no-unused-vars": [1, {"vars": "all", "args": "after-used"}],
"no-return-await": [1],
"eol-last": [0],
"no-mixed-requires": [0],
"no-underscore-dangle": [0]
}
};
};
167 changes: 137 additions & 30 deletions index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,86 +2,188 @@ export type SimpleIDBKey = string | number | Date | ArrayBuffer | SimpleIDBKeyAr
export type SimpleIDBInputKey = string | number | Date | ArrayBuffer | ArrayBufferView | SimpleIDBInputKeyArray;
export type SimpleIDBQuery = IDBKeyRange | null;
export type SimpleIDBCursorDirection = "next" | "nextunique" | "prev" | "prevunique";
export type SimpleIDBResult = SimpleIDBResultKey & SimpleIDBResultValue;

export interface SimpleIDBKeyArray extends Array<SimpleIDBKey> {}
export interface SimpleIDBInputKeyArray extends Array<SimpleIDBInputKey> {}

export interface SimpleIDBKeyAndValue {
export interface SimpleIDBResultKey {
key: SimpleIDBKey,
primaryKey: SimpleIDBKey,
}

export interface SimpleIDBResultValue {
value: any,
}

export interface SimpleIDBQueryOptions {
indexName?: string,
query?: SimpleIDBQuery,
count?: number,
direction?: SimpleIDBCursorDirection,
}

export declare class SimpleIDB {
constructor(name: string, version: number, onupgradeneeded: (this: IDBOpenDBRequest, event: IDBVersionChangeEvent) => any);
/**
* @param name データベースの名前
*/
static deleteDatabase(name: string): Promise<void>;

/**
* データベースの名前
*/
readonly name: string;

/**
* データベースのバージョン
*/
readonly version: number;

/**
* IndexedDB を開き、成功したら自身を返す
* @param name データベースの名前
* @param version データベースのバージョン. ObjectStore や Index の変更時に増やしていく
* @param onupgradeneeded ObjectStore や Index の初期化, 変更を行う函数
*/
constructor(name: string, version: number, onupgradeneeded: (this: SimpleIDB, db: IDBDatabase, transaction: IDBTransaction, oldVersion: number, newVersion: number) => any);

/**
* IndexedDB を開き, 成功したら自身を返す
*/
ready(): Promise<this>;

/**
* ObjectStore に値を追加する。追加された key を返す
* ObjectStore に値を追加する. 追加されたプライマリキーを返す
* @param storeName ObjectStore の名前
* @param value 追加する値
* @param key 追加する値のキー。ObjectStore が autoIncrement の場合は省略可能
* @param primaryKey 追加する値のプライマリキー. ObjectStore が autoIncrement の場合は省略可能
*/
add(storeName: string, value: any, key?: SimpleIDBInputKey): Promise<SimpleIDBKey>;
add(storeName: string, value: any, primaryKey?: SimpleIDBInputKey): Promise<SimpleIDBKey>;

/**
* ObjectStore の値を追加もしくは更新する。追加もしくは更新された key を返す
* ObjectStore の値を追加もしくは更新する. 追加もしくは更新されたプライマリキーを返す
* @param storeName ObjectStore の名前
* @param value 追加もしくは更新する値
* @param key 追加もしくは更新する値のキー
* @param primaryKey 追加もしくは更新する値のプライマリキー
*/
put(storeName: string, value: any, key: SimpleIDBInputKey): Promise<SimpleIDBKey>;
put(storeName: string, value: any, primaryKey: SimpleIDBInputKey): Promise<SimpleIDBKey>;

/**
* ObjectStore の値を取得する
* @param storeName ObjectStore の名前
* @param key 取得する値のキー
* @param primaryKey 取得する値のプライマリキー
*/
get(storeName: string, key: SimpleIDBInputKey): Promise<any>;
get(storeName: string, primaryKey: SimpleIDBInputKey): Promise<any>;

/**
* ObjectStore の値を更新する. 存在しない場合更新を行う函数は呼ばれない
* @param storeName ObjectStore の名前
* @param primaryKey 更新する値のプライマリキー
* @param mapFn 更新を行う函数
*/
update(storeName: string, primaryKey: SimpleIDBInputKey, mapFn: (this: this, value: any) => any): Promise<void>;

/**
* ObjectStore の値を削除する
* @param storeName ObjectStore の名前
* @param key 削除する値のキー
* @param primaryKey 削除する値のプライマリキー
*/
delete(storeName: string, primaryKey: SimpleIDBInputKey): Promise<void>;

/**
* ObjectStore の値を取得し, 同時に削除する
* @param storeName ObjectStore の名前
* @param primaryKey 取得, 削除する値のプライマリキー
*/
delete(storeName: string, key: SimpleIDBInputKey): Promise<void>;
take(storeName: string, primaryKey: SimpleIDBInputKey): Promise<any>;

/**
* ObjectStore の値を取得し、同時に削除する
* ObjectStore に値を複数追加する. 追加されたプライマリキーを返す
* @param storeName ObjectStore の名前
* @param key 取得、削除する値のキー
* @param keyAndValues 追加するプライマリキーと値のペア. プライマリキーはObjectStore が autoIncrement の場合は省略可能
*/
getAndDelete(storeName: string, key: SimpleIDBInputKey): Promise<any>;
addAll(storeName: string, values: {value: any, primaryKey?: SimpleIDBInputKey}[]): Promise<SimpleIDBKey[]>;

/**
* ObjectStore に値を複数追加もしくは更新する. 追加もしくは更新されたキーを返す
* @param storeName ObjectStore の名前
* @param keyAndValues 追加するプライマリキーと値のペア
*/
putAll(storeName: string, keyAndValues: {value: any, primaryKey: SimpleIDBInputKey}[]): Promise<SimpleIDBKey[]>;

/**
* ObjectStore の値を複数取得する
* @param storeName ObjectStore の名前
* @param query 取得する際のクエリ。null の場合全件取得する
* @param count 取得する値の個数の上限値
* @param direction 昇順、降順
* @param options 取得する際のオプション
* @param options.indexName ObjectStore の Index の名前
* @param options.query 取得する際のクエリ
* @param options.count 取得する値の個数の上限値
* @param options.direction 昇順, 降順
*/
getAll(storeName: string, options?: SimpleIDBQueryOptions): Promise<SimpleIDBResult[]>;

/**
* ObjectStore のキーのみを複数取得する. 値を取らない分効率的
* @param storeName ObjectStore の名前
* @param options 取得する際のオプション
* @param options.indexName ObjectStore の Index の名前
* @param options.query 取得する際のクエリ
* @param options.count 取得する値の個数の上限値
* @param options.direction 昇順, 降順
*/
getAllKeys(storeName: string, options?: SimpleIDBQueryOptions): Promise<SimpleIDBResultKey[]>;

/**
* ObjectStore の値のみを複数取得する. キーを取らない分効率的
* @param storeName ObjectStore の名前
* @param options 取得する際のオプション
* @param options.indexName ObjectStore の Index の名前
* @param options.query 取得する際のクエリ
* @param options.count 取得する値の個数の上限値
* @param options.direction 昇順, 降順
*/
getAll(storeName: string, query?: SimpleIDBQuery, count?: number, direction?: SimpleIDBCursorDirection): Promise<SimpleIDBKeyAndValue[]>;
getAllValues(storeName: string, options?: SimpleIDBQueryOptions): Promise<SimpleIDBResultKey[]>;

/**
* ObjectStore の値を複数更新する
* @param storeName ObjectStore の名前
* @param mapFn 更新を行う函数
* @param options 削除する際のオプション
* @param options.indexName ObjectStore の Index の名前
* @param options.query 更新する際のクエリ
* @param options.count 更新する値の個数の上限値
* @param options.direction 昇順, 降順
*/
updateAll(storeName: string, mapFn: (this: this, value: any, key: SimpleIDBKey, primaryKey: SimpleIDBKey) => any, options: SimpleIDBQueryOptions): Promise<void>;

/**
* ObjectStore の値を複数削除する
* @param storeName ObjectStore の名前
* @param query 削除する際のクエリ。null の場合全件を表す
* @param count 削除する値の個数の上限値
* @param direction 昇順、降順
* @param options 削除する際のオプション
* @param options.indexName ObjectStore の Index の名前
* @param options.query 削除する際のクエリ
* @param options.count 削除する値の個数の上限値
* @param options.direction 昇順, 降順
*/
deleteAll(storeName: string, query?: SimpleIDBQuery, count?: number, direction?: SimpleIDBCursorDirection): Promise<void>;
deleteAll(storeName: string, options: SimpleIDBQueryOptions): Promise<void>;

/**
* ObjectStore の値を複数取得し同時に削除する
* ObjectStore の値を複数取得し, 同時に削除する
* @param storeName ObjectStore の名前
* @param query 取得、削除する際のクエリ。null の場合全件を表す
* @param count 取得、削除する値の個数の上限値
* @param direction 昇順、降順
* @param options 取得, 削除する際のオプション
* @param options.indexName ObjectStore の Index の名前
* @param options.query 取得, 削除する際のクエリ
* @param options.count 取得, 削除する値の個数の上限値
* @param options.direction 昇順, 降順
*/
getAndDeleteAll(storeName: string, query?: SimpleIDBQuery, count?: number, direction?: SimpleIDBCursorDirection): Promise<SimpleIDBKeyAndValue[]>;
takeAll(storeName: string, options?: SimpleIDBQueryOptions): Promise<SimpleIDBResult[]>;

/**
* ObjectStore の値の個数を数える
* @param storeName ObjectStore の名前
* @param indexName ObjectStore の Index の名前. null の場合は直接 ObjectStore から取得する
* @param query 取得する際のクエリ
*/
count(storeName: string, options?: {indexName?: string, query?: SimpleIDBQuery}): number;

/**
* ObjectStore の値を全件削除する
Expand All @@ -90,11 +192,16 @@ export declare class SimpleIDB {
clear(storeName: string): Promise<void>;

/**
* ObjectStore を直接入手する複雑なクエリを使う必要がある時に用いる
* ObjectStore を直接入手する. 複雑なクエリを使う必要がある時に用いる
* @param storeNames ObjectStore の名前の配列
* @param mode IDBTransaction のモード
* @param oncomplete IDBTransaction が完了したときに呼ばれる callback
* @param onerror IDBTransaction が失敗したときに呼ばれる callback
*/
getObjectStores(storeName: string[], mode?: "readonly" | "readwrite", oncomplete?: ((this: SimpleIDB) => any) | null, onerror?: ((this: SimpleIDB, error: DOMException) => any) | null): IDBObjectStore[];

/**
* データベースとのコネクションを閉じる
*/
close(): void;
}
8 changes: 7 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,18 @@
"scripts": {
"build": "babel src -d lib",
"lint": "eslint src",
"test": "mocha",
"prepublishOnly": "yarn run lint && yarn run build"
},
"devDependencies": {
"babel-cli": "^6.26.0",
"babel-eslint": "^8.2.1",
"babel-preset-env": "^1.6.1",
"eslint": "^4.15.0"
"eslint": "^4.15.0",
"fake-indexeddb": "^2.0.4",
"faker": "^4.1.0",
"intelli-espower-loader": "^1.0.1",
"mocha": "^5.0.5",
"power-assert": "^1.5.0"
}
}
Loading

0 comments on commit 3ff77ee

Please sign in to comment.