From 1a1e3e3810238266a1cb85f8a4cb61ad81427051 Mon Sep 17 00:00:00 2001 From: KtorZ Date: Fri, 30 Jun 2017 23:44:05 +0200 Subject: [PATCH] rework README --- .github/browserstack.png | Bin 0 -> 10604 bytes README.md | 304 +++++---------------------------------- 2 files changed, 37 insertions(+), 267 deletions(-) create mode 100644 .github/browserstack.png diff --git a/.github/browserstack.png b/.github/browserstack.png new file mode 100644 index 0000000000000000000000000000000000000000..080beda5b44d5648aa53a36484faa7882b309d6e GIT binary patch literal 10604 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 literal 0 HcmV?d00001 diff --git a/README.md b/README.md index ecc097c..053cccd 100644 --- a/README.md +++ b/README.md @@ -1,283 +1,53 @@ -## API +PureScript IndexedDB [![](https://img.shields.io/badge/doc-pursuit-60b5cc.svg)](http://pursuit.purescript.org/packages/purescript-indexeddb) [![Build Status](https://travis-ci.org/truqu/purescript-indexeddb.svg?branch=master)](https://travis-ci.org/truqu/purescript-indexeddb) +===== -This document is a general grooming of the current state of the IndexedDB API. It covers only -the features specified in the official specs. +This package offers complete bindings and type-safety upon the [IndexedDB API](https://w3c.github.io/IndexedDB). -### Remarks +## Overview -- Better define a 'all' range instead of using Maybe `IDBKeyRange` in function -signatures (Nothing meaning 'all'). +```purescript +main :: Eff (idb :: IDB, exception :: EXCEPTION, console :: CONSOLE) Unit +main = launchAff' do + db <- IDBFactory.open "db" Nothing { onBlocked : Nothing + , onUpgradeNeeded : Just onUpgradeNeeded + } -- Some errors (like TypeError or DataError) can be avoided via static typing + tx <- IDBDatabase.transaction db ["store"] ReadOnly + store <- IDBTransaction.objectStore tx "store" + (val :: Maybe String) <- IDBObjectStore.get store (IDBKeyRange.only 1) + log $ maybe "not found" id val -- The `IDBRequest` is mostly a callback result holding an error or a value. We probably want to - use a typed Except or ExceptT instead. +onUpgradeNeeded :: forall e. Database -> Transaction -> Eff (idb :: IDB, exception :: EXCEPTION | e) Unit +onUpgradeNeeded db _ = launchAff' do + store <- IDBDatabase.createObjectStore db "store" IDBObjectStore.defaultParameters + _ <- IDBObjectStore.add store "patate" (Just 1) + _ <- IDBObjectStore.add store { property: 42 } (Just 2) + _ <- IDBObjectStore.createIndex store "index" ["property"] IDBIndex.defaultParameters + pure unit +``` -### Table of Contents +## Changelog -- [IDBCursor](#idbcursor) -- [IDBCursorWithValue](#idbcursorwithvalue) -- [IDBCursorDirection](#idbcursordirection) -- [IDBDatabase](#idbdatabase) -- [IDBError](#idberror) -- [IDBFactory](#idbfactory) -- [IDBIndex](#idbindex) -- [IDBKeyRange](#idbkeyrange) -- [IDBRequest](#idbrequest) -- [IDBOpenDBRequest](#idbopendbrequest) -- [IDBObjectStore](#idbobjectstore) -- [IDBTransaction](#idbtransaction) -- [IDBTransactionMode](#idbtransactionmode) +- Release incoming +#### TODO ---- +- Add support for `index.getAll` method +- Complete the specifications with the [official tests list](https://github.com/w3c/web-platform-tests/blob/master/IndexedDB/README.md) provided by W3C +## Documentation -#### IDBCursor -> https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor +Module documentation is [published on Pursuit](http://pursuit.purescript.org/packages/purescript-indexeddb). -- source :: [IDBIndex](#idbindex), [IDBObjectStore](#idbobjectstore) -- direction :: [IDBCursorDirection](#idbcursordirection) -- key :: [IDBKey](#idbkey) -- primaryKey :: [IDBKey](#idbkey) -- value :: Any -- advance :: [IDBCursor](#idbcursor) -> Int -> () - > `throw` TransactionInactiveError, TypeError, InvalidStateError -- continue :: [IDBCursor](#idbcursor) -> Maybe [IDBKey](#idbkey) -> () - > `throw` TransactionInactivError, DataError, InvalidStateError -- continuePrimaryKey :: [IDBCursor](#idbcursor) -> [IDBKey](#idbkey) -> [IDBKey](#idbkey) -> () - > `throw` TransactionInactiveError, DataError, InvalidStateError, InvalidAccessError +## Testing +Tested in the cloud on multiple browsers and operating systems thanks to [BrowserStack](https://www.browserstack.com) ---- +| IE / Edge | Chrome | Firefox | Safari | Opera | Android | iOS Safari | +| ----------| ------ | ------- | ------- | ----- | ------- | ---------- | +| - | >= 56 | >= 51 | >= 10.1 | >= 43 | >= 4.4 | >= 10.3 | - -#### IDBCursorWithValue -> https://developer.mozilla.org/en-US/docs/Web/API/IDBCursorwithValue - -Inherit from [IDBCursor](#idbcursor) - -- delete :: [IDBCursor](#idbcursor) -> [IDBRequest](#idbrequest) () - > `throw` TransactionInactiveError, ReadOnlyError, InvalidStateError -- update :: [IDBCursor](#idbcursor) -> a -> [IDBRequest](#idbrequest) a - > `throw` TransactionInactiveError, ReadOnlyError, InvalidStateError, DataError, DataCloneError - - ---- - - -#### IDBCursorDirection -> https://www.w3.org/TR/IndexedDB/#idl-def-IDBCursorDirection - -data [IDBCursorDirection](#idbcursordirection) - = Next - | NextUnique - | Prev - | PrevUnique - - ---- - - -#### IDBDatabase -> https://www.w3.org/TR/IndexedDB/#idl-def-IDBDatabase - -- name :: String -- version :: Long -- objectStoreNames :: [String] -- close :: [IDBDatabase](#idbdatabase) -> () -- createObjectStore :: [IDBDatabase](#idbdatabase) -> String -> { keyPath :: String, autoIncrement :: Bool } -> [IDBObjectStore](#idbobjectstore) - > `throw` InvalidStateError, TransactionInactiveError, ConstraintError, InvalidAccessError -- deleteObjectStore :: [IDBDatabase](#idbdatabase) -> String -> () - > `throw` InvalidSateError, TransactionInactiveError, NotFoundError -- transaction :: [IDBDatabase](#idbdatabase) -> [String] -> [IDBTransactionMode](#idbtransactionmode) -> [IDBTransaction](#idbtransaction) - > `throw` InvalidStateError, NotFoundError, TypeError, InvalidAccessError - -##### Events -- onabort -- onerror -- onversionchange - - ---- - - -#### IDBError -> https://www.w3.org/TR/IndexedDB/#exceptions - -data IDBError - = AbortError - | ConstraintError - | QuotaExceededError - | UnknownError - | NoError - | VersionError - - ---- - - -#### IDBFactory -> https://www.w3.org/TR/IndexedDB/#idl-def-IDBFactory - -The method `cmp` isn't included; instead, we consider [IDBKey](#idbkey) to be comparable. - -- open :: String -> Maybe Long -> [IDBOpenDBRequest](#idbopendbrequest) () -- deleteDatabase :: String -> [IDBOpenDBRequest](#idbopendbrequest) () - - ---- - - -#### IDBIndex -> https://www.w3.org/TR/IndexedDB/#index-concept -> https://www.w3.org/TR/IndexedDB/#index - -- name :: String -- objectStore :: [IDBObjectStore](#idbobjectstore) -- keyPath :: String -- multiEntry :: Bool -- unique :: Bool -- count :: [IDBIndex](#idbindex) -> Maybe [IDBKeyRange](#idbkeyrange) -> [IDBRequest](#idbrequest) Int - > `throw` TransactionInactiveError, DataError, InvalidStateError -- get :: [IDBIndex](#idbindex) -> [IDBKeyRange](#idbkeyrange) -> [IDBRequest](#idbrequest) a - > `throw` TransactionInactiveError, DataError, InvalidStateError -- getKey :: [IDBIndex](#idbindex) -> [IDBKeyRange](#idbkeyrange) -> [IDBRequest](#idbrequest) [IDBKey](#idbkey) - > `throw` TransactionInactiveError, DataError, InvalidStateError -- openCursor :: [IDBIndex](#idbindex) -> Maybe [IDBKeyRange](#idbkeyrange) -> Maybe Direction -> [IDBRequest](#idbrequest) CursorWithValue - > `throw` TransactionInactiveError, DataError, TypeError, InvalidStateError -- openKeyCursor :: [IDBIndex](#idbindex) -> Maybe [IDBKeyRange](#idbkeyrange)-> Maybe Direction -> [IDBRequest](#idbrequest) Cursor - > `throw` TransactionInactiveError, DataError, TypeError, InvalidStateError - - ---- - - -#### IDBKey -> https://www.w3.org/TR/IndexedDB/#key-construct - -Should be comparable / derive Ord - -data IDBKey - = Int Int - | Float Float - | String String - | Date Date - | Array [[IDBKey](#idbkey)] - - ---- - - -#### IDBKeyRange -> https://www.w3.org/TR/IndexedDB/#idl-def-IDBKeyRange - -- lower :: [IDBKey](#idbkey) -- upper :: [IDBKey](#idbkey) -- lowerOpen :: Boolean -- upperOpen :: Boolean -- bound :: [IDBKey](#idbkey) -> [IDBKey](#idbkey) -> Bool -> Bool -> [IDBKeyRange](#idbkeyrange) - > `throw` DataError -- only :: [IDBKey](#idbkey) -> [IDBKeyRange](#idbkeyrange) - > `throw` DataError -- lowerBound :: [IDBKey](#idbkey) -> Bool -> [IDBKeyRange](#idbkeyrange) - > `throw` DataError -- upperBound :: [IDBKey](#idbkey) -> Bool -> [IDBKeyRange](#idbkeyrange) - > `throw` DataError -- includes :: [IDBKey](#idbkey) -> Boolean - > `throw` DataError - - ---- - - -#### IDBRequest -> https://www.w3.org/TR/IndexedDB/#idl-def-IDBRequest - -- error :: [IDBError](#idberror) -- result :: a -- source :: [IDBIndex](#idbindex) | [IDBObjectStore](#idbobjectstore) | [IDBCursor](#idbcursor) -- readyState :: Bool -- transaction :: Maybe [IDBTransaction](#idbtransaction) - -##### Events -- onerror -- onsuccess - - ---- - - -#### IDBOpenDBRequest -> https://www.w3.org/TR/IndexedDB/#idl-def-IDBRequest - -Inherit from [IDBRequest](#idbrequest) - -##### Events - - onblocked - - onupgradeneeded - - ---- - - -#### IDBObjectStore -> https://www.w3.org/TR/IndexedDB/#idl-def-IDBObjectStore - -- indexNames:: [String] -- keyPath :: String -- name :: String -- transaction :: [IDBTransaction](#idbtransaction) -- autoIncrement :: Bool -- add :: [IDBObjectStore](#idbobjectstore) -> Value -> Maybe [IDBKey](#idbkey) -> [IDBRequest](#idbrequest) () - > `throw` ReadOnlyError, TransactionInactiveError, DataError, InvalidStateError, DataCloneError -- clear :: [IDBObjectStore](#idbobjectstore) -> [IDBRequest](#idbrequest) () - > `throw` ReadOnlyError, TransactionInactiveError -- count :: [IDBObjectStore](#idbobjectstore) -> [IDBKeyRange](#idbkeyrange) -> [IDBRequest](#idbrequest) Int - > `throw` InvalidStateError, TransactionInactiveError, DataError -- createIndex :: [IDBObjectStore](#idbobjectstore) -> String -> String -> { unique :: Bool, multiEntry :: true } -> [IDBIndex](#idbindex) - > `throw` ConstraintError, InvalidAccessError, InvalidStateError, SyntaxError, TransactionInactiveError -- delete :: [IDBObjectStore](#idbobjectstore) -> [IDBKeyRange](#idbkeyrange) -> [IDBRequest](#idbrequest) () - > `throw` TransactionInactiveError, ReadOnlyError, InvalidStateError, DataError -- deleteIndex :: [IDBObjectStore](#idbobjectstore) -> String -> () - > `throw` InvalidStateError, TransactionInactiveError, NotFoundError -- get :: [IDBObjectStore](#idbobjectstore) -> [IDBKeyRange](#idbkeyrange) -> [IDBRequest](#idbrequest) a - > `throw` InvalidStateError, TransactionInactiveError, DataError -- index :: [IDBObjectStore](#idbobjectstore) -> String -> [IDBIndex](#idbindex) - > `throw` InvalidStateError, NotfoundError -- openCursor :: [IDBObjectStore](#idbobjectstore) -> Maybe [IDBKeyRange](#idbkeyrange) -> Maybe [IDBCursorDirection](#idbcursordirection) -> [IDBRequest](#idbrequest) [IDBCursorWithValue](#idbcursorwithvalue) - > `throw` TransactionInactiveError, InvalidStateError, DataError -- put :: [IDBObjectStore](#idbobjectstore) -> a -> [IDBKey](#idbkey) -> [IDBRequest](#idbrequest) () - > `throw` ReadOnlyError, TransactionInactiveError, DataError, InvalidStateError, DataCloneError - - ---- - - -#### IDBTransaction -> https://www.w3.org/TR/IndexedDB/#idl-def-IDBTransaction - -- db :: [IDBDatabase](#idbdatabase) -- error :: [IDBError](#idberror) -- mode :: [IDBTransactionMode](#idbtransactionmode) -- abort :: [IDBTransaction](#idbtransaction) -> () - > `throw` InvalidStateError -- objectStore :: [IDBTransaction](#idbtransaction) -> String -> [IDBObjectStore](#idbobjectstore) - > `throw` InvalidStateError, NotFoundError - -##### Events -- onabort -- oncomplete -- onerror - ---- - - -#### IDBTransactionMode -> https://www.w3.org/TR/IndexedDB/#idl-def-IDBTransactionMode - -data IDBTransactionMode - = ReadOnly - | ReadWrite - | VersionChange +

+ browserstack +