git.iko.soy/purescript-indexed-DB
on master help sign in
remove error workaround and use plain error with new .name accessor
commitf7dcb46dc6529b61aa83fb93e8944327b82d1585 authorKtorZ <matthias.benkort@gmail.com> dateFri 28 Jul 2017, 11:30 (9 years ago) parent24fa04a
8 files changed+57−48
bower.json+1−1 src/Database/IndexedDB/IDBCursor.js+18−9 src/Database/IndexedDB/IDBDatabase.js+5−5 src/Database/IndexedDB/IDBFactory.js+3−3 src/Database/IndexedDB/IDBIndex.js+9−9 src/Database/IndexedDB/IDBObjectStore.js+8−8 src/Database/IndexedDB/IDBTransaction.js+4−4 test/Main.purs+9−9
bower.json+1−1
@@ -28,7 +28,7 @@
2828 "purescript-aff": "^3.1.0",
2929 "purescript-datetime": "^3.2.0",
3030 "purescript-eff": "^3.1.0",
31− "purescript-exceptions": "https://github.com/truqu/purescript-exceptions.git#3.1.0",
31+ "purescript-exceptions": "^3.1.0",
3232 "purescript-maybe": "^3.0.0",
3333 "purescript-prelude": "^3.1.0",
3434 "purescript-read": "^1.0.0"
src/Database/IndexedDB/IDBCursor.js+18−9
@@ -1,6 +1,6 @@
11const errorHandler = function errorHandler(cb) {
22 return function _handler(e) {
3− cb(new Error(e.target.error.name));
3+ cb(e.target.error);
44 };
55};
66
@@ -16,7 +16,7 @@ exports._advance = function _advance(cursor, count) {
1616 cursor.advance(count);
1717 success();
1818 } catch (e) {
19− error(new Error(e.name));
19+ error(e);
2020 }
2121 };
2222};
@@ -27,7 +27,7 @@ exports._continue = function _continue(cursor, key) {
2727 cursor.continue(key || undefined);
2828 success();
2929 } catch (e) {
30− error(new Error(e.name));
30+ error(e);
3131 }
3232 };
3333};
@@ -38,7 +38,7 @@ exports._continuePrimaryKey = function _continuePrimaryKey(cursor, key, primaryK
3838 cursor.continuePrimaryKey(key, primaryKey);
3939 success();
4040 } catch (e) {
41− error(new Error(e.name));
41+ error(e);
4242 }
4343 };
4444};
@@ -50,7 +50,7 @@ exports._delete = function _delete(cursor) {
5050 request.onsuccess = successHandler(success);
5151 request.onerror = errorHandler(error);
5252 } catch (e) {
53− error(new Error(e.name));
53+ error(e);
5454 }
5555 };
5656};
@@ -64,7 +64,7 @@ exports._key = function _key(cursor) {
6464 try {
6565 success(cursor.key);
6666 } catch (e) {
67− error(new Error(e.name));
67+ error(e);
6868 }
6969 };
7070};
@@ -74,7 +74,7 @@ exports._primaryKey = function _primaryKey(cursor) {
7474 try {
7575 success(cursor.primaryKey);
7676 } catch (e) {
77− error(new Error(e.name));
77+ error(e);
7878 }
7979 };
8080};
@@ -86,7 +86,16 @@ exports._source = function _source(IDBObjectStore, IDBIndex, cursor) {
8686 case 'IDBObjectStore':
8787 return IDBObjectStore(cursor.source);
8888 default:
89− throw new Error('UnexpectedCursorSource');
89+ throw Object.create(Error.prototype, {
90+ message: {
91+ enumerable: true,
92+ value: 'Unable to retrieve the cursor\'s source constructor.',
93+ },
94+ name: {
95+ enumerable: true,
96+ value: 'UnexpectedCursorSource',
97+ },
98+ });
9099 }
91100};
92101
@@ -97,7 +106,7 @@ exports._update = function _update(cursor, value) {
97106 request.onsuccess = successHandler(success);
98107 request.onerror = errorHandler(error);
99108 } catch (e) {
100− error(new Error(e.name));
109+ error(e);
101110 }
102111 };
103112};
src/Database/IndexedDB/IDBDatabase.js+5−5
@@ -17,7 +17,7 @@ exports._close = function _close(db) {
1717 db.close();
1818 success();
1919 } catch (e) {
20− error(new Error(e.name));
20+ error(e);
2121 }
2222 };
2323};
@@ -47,7 +47,7 @@ exports._createObjectStore = function _createObjectStore(db, name, opts) {
4747 });
4848 success(store);
4949 } catch (e) {
50− error(new Error(e.name));
50+ error(e);
5151 }
5252 };
5353};
@@ -58,7 +58,7 @@ exports._deleteObjectStore = function _deleteObjectStore(db, name) {
5858 db.deleteObjectStore(name);
5959 success();
6060 } catch (e) {
61− error(new Error(e.name));
61+ error(e);
6262 }
6363 };
6464};
@@ -92,7 +92,7 @@ exports._onClose = function _onClose(db, f) {
9292exports._onError = function _onError(db, f) {
9393 return function aff(success) {
9494 db.onerror = function onerror(e) {
95− f(new Error(e.target.error.name))();
95+ f(e.target.error)();
9696 };
9797 success();
9898 };
@@ -113,7 +113,7 @@ exports._transaction = function _transaction(db, stores, mode) {
113113 const transaction = db.transaction(stores, mode);
114114 success(transaction);
115115 } catch (e) {
116− error(new Error(e.name));
116+ error(e);
117117 }
118118 };
119119};
src/Database/IndexedDB/IDBFactory.js+3−3
@@ -1,6 +1,6 @@
11const errorHandler = function errorHandler(cb) {
22 return function _handler(e) {
3− cb(new Error(e.target.error.name));
3+ cb(e.target.error);
44 };
55};
66
@@ -26,7 +26,7 @@ exports._deleteDatabase = function _deleteDatabase(name) {
2626
2727 request.onerror = errorHandler(error);
2828 } catch (e) {
29− error(new Error(e.name));
29+ error(e);
3030 }
3131 };
3232};
@@ -51,7 +51,7 @@ exports._open = function _open(fromMaybe, name, mver, req) {
5151
5252 request.onerror = errorHandler(error);
5353 } catch (e) {
54− error(new Error(e.name));
54+ error(e);
5555 }
5656 };
5757};
src/Database/IndexedDB/IDBIndex.js+9−9
@@ -1,6 +1,6 @@
11const errorHandler = function errorHandler(cb) {
22 return function _handler(e) {
3− cb(new Error(e.target.error.name));
3+ cb(e.target.error);
44 };
55};
66
@@ -48,7 +48,7 @@ exports._count = function _count(index, query) {
4848 request.onsuccess = successHandler(success);
4949 request.onerror = errorHandler(error);
5050 } catch (e) {
51− error(new Error(e.name));
51+ error(e);
5252 }
5353 };
5454};
@@ -60,7 +60,7 @@ exports._get = function _get(index, range) {
6060 request.onsuccess = successHandler(success);
6161 request.onerror = errorHandler(error);
6262 } catch (e) {
63− error(new Error(e.name));
63+ error(e);
6464 }
6565 };
6666};
@@ -87,7 +87,7 @@ exports._getAllKeys = function _getAllKeys(index, range, count) {
8787 request.onsuccess = successHandler(success);
8888 request.onerror = errorHandler(error);
8989 } catch (e) {
90− error(new Error(e.name));
90+ error(e);
9191 }
9292 };
9393};
@@ -99,7 +99,7 @@ exports._getKey = function _getKey(index, range) {
9999 request.onsuccess = successHandler(success);
100100 request.onerror = errorHandler(error);
101101 } catch (e) {
102− error(new Error(e.name));
102+ error(e);
103103 }
104104 };
105105};
@@ -116,11 +116,11 @@ exports._openCursor = function _openCursor(index, query, dir, cb) {
116116 }
117117 };
118118 request.onerror = function onError(e) {
119− cb.onError(new Error(e.target.error.name));
119+ cb.onError(e.target.error);
120120 };
121121 success();
122122 } catch (e) {
123− error(new Error(e.name));
123+ error(e);
124124 }
125125 };
126126};
@@ -137,11 +137,11 @@ exports._openKeyCursor = function _openKeyCursor(index, query, dir, cb) {
137137 }
138138 };
139139 request.onerror = function onError(e) {
140− cb.onError(new Error(e.target.error.name));
140+ cb.onError(e.target.error);
141141 };
142142 success();
143143 } catch (e) {
144− error(new Error(e.name));
144+ error(e);
145145 }
146146 };
147147};
src/Database/IndexedDB/IDBObjectStore.js+8−8
@@ -1,6 +1,6 @@
11const errorHandler = function errorHandler(cb) {
22 return function _handler(e) {
3− cb(new Error(e.target.error.name));
3+ cb(e.target.error);
44 };
55};
66
@@ -22,7 +22,7 @@ exports._add = function _add(store, value, key) {
2222 request.onsuccess = successHandler(success);
2323 request.onerror = errorHandler(error);
2424 } catch (e) {
25− error(new Error(e.name));
25+ error(e);
2626 }
2727 };
2828};
@@ -38,7 +38,7 @@ exports._clear = function _clear(store) {
3838 request.onsuccess = successHandler(success);
3939 request.onerror = errorHandler(error);
4040 } catch (e) {
41− error(new Error(e.name));
41+ error(e);
4242 }
4343 };
4444};
@@ -64,7 +64,7 @@ exports._createIndex = function _createIndex(store, name, path, params) {
6464 const index = store.createIndex(name, keyPath, params);
6565 success(index);
6666 } catch (e) {
67− error(new Error(e.name));
67+ error(e);
6868 }
6969 };
7070};
@@ -75,7 +75,7 @@ exports._deleteIndex = function _deleteIndex(store, name) {
7575 store.deleteIndex(name);
7676 success();
7777 } catch (e) {
78− error(new Error(e.name));
78+ error(e);
7979 }
8080 };
8181};
@@ -87,7 +87,7 @@ exports._delete = function _delete(store, query) {
8787 request.onsuccess = successHandler(success);
8888 request.onerror = errorHandler(error);
8989 } catch (e) {
90− error(new Error(e.name));
90+ error(e);
9191 }
9292 };
9393};
@@ -98,7 +98,7 @@ exports._index = function _index(store, name) {
9898 const index = store.index(name);
9999 success(index);
100100 } catch (e) {
101− error(new Error(e.name));
101+ error(e);
102102 }
103103 };
104104};
@@ -132,7 +132,7 @@ exports._put = function _put(store, value, key) {
132132 request.onsuccess = successHandler(success);
133133 request.onerror = errorHandler(error);
134134 } catch (e) {
135− error(new Error(e.name));
135+ error(e);
136136 }
137137 };
138138};
src/Database/IndexedDB/IDBTransaction.js+4−4
@@ -4,7 +4,7 @@ exports._abort = function _abort(tx) {
44 tx.abort();
55 success();
66 } catch (e) {
7− error(new Error(e.name));
7+ error(e);
88 }
99 };
1010};
@@ -16,7 +16,7 @@ exports._db = function _db(tx) {
1616exports._error = function _error(tx) {
1717 return tx.error == null
1818 ? null
19− : new Error(tx.error.name);
19+ : tx.error;
2020};
2121
2222exports._mode = function _mode(ReadOnly, ReadWrite, VersionChange, tx) {
@@ -35,7 +35,7 @@ exports._objectStore = function _objectStore(tx, name) {
3535 const store = tx.objectStore(name);
3636 success(store);
3737 } catch (e) {
38− error(new Error(e.name));
38+ error(e);
3939 }
4040 };
4141};
@@ -65,7 +65,7 @@ exports._onComplete = function _onComplete(tx, f) {
6565exports._onError = function _onError(tx, f) {
6666 return function aff(success) {
6767 tx.onerror = function onerror(e) {
68− f(new Error(e.target.error.name))();
68+ f(e.target.error)();
6969 };
7070 success();
7171 };
test/Main.purs+9−9
@@ -7,7 +7,7 @@ import Control.Monad.Aff.AVar (AVAR, makeVar, makeVar', modifyVar, pe
77import Control.Monad.Aff.Console (log)
88import Control.Monad.Eff (Eff)
99import Control.Monad.Eff.Class (liftEff)
10−import Control.Monad.Eff.Exception (EXCEPTION, message)
10+import Control.Monad.Eff.Exception (EXCEPTION, name)
1111import Control.Monad.Eff.Now (NOW, now)
1212import Data.Date as Date
1313import Data.DateTime as DateTime
@@ -659,7 +659,7 @@ main = runMocha do
659659 cursor <- attempt $ IDBIndex.openKeyCursor index Nothing Next cb
660660 case cursor of
661661 Right _ -> fail "expected InvalidStateError"
662− Left err -> message err `shouldEqual` "InvalidStateError"
662+ Left err -> name err `shouldEqual` "InvalidStateError"
663663 }
664664 case res of
665665 Right _ -> fail "expected InvalidStateError"
@@ -687,7 +687,7 @@ main = runMocha do
687687 cursor <- attempt $ IDBIndex.openKeyCursor index Nothing Next cb
688688 case cursor of
689689 Right _ -> fail "expected TransactionInactiveError"
690− Left err -> message err `shouldEqual` "TransactionInactiveError"
690+ Left err -> name err `shouldEqual` "TransactionInactiveError"
691691
692692 tearDown db
693693
@@ -709,7 +709,7 @@ main = runMocha do
709709 cursor <- attempt $ IDBIndex.openKeyCursor index Nothing Next cb
710710 case cursor of
711711 Right _ -> fail "expected InvalidStateError"
712− Left err -> message err `shouldEqual` "InvalidStateError"
712+ Left err -> name err `shouldEqual` "InvalidStateError"
713713 }
714714
715715 tearDown db
@@ -733,7 +733,7 @@ main = runMocha do
733733 cursor <- attempt $ IDBIndex.openCursor index Nothing Next cb
734734 case cursor of
735735 Right _ -> fail "expected InvalidStateError"
736− Left err -> message err `shouldEqual` "InvalidStateError"
736+ Left err -> name err `shouldEqual` "InvalidStateError"
737737 }
738738 case res of
739739 Right _ -> fail "expected InvalidStateError"
@@ -761,7 +761,7 @@ main = runMocha do
761761 cursor <- attempt $ IDBIndex.openCursor index Nothing Next cb
762762 case cursor of
763763 Right _ -> fail "expected TransactionInactiveError"
764− Left err -> message err `shouldEqual` "TransactionInactiveError"
764+ Left err -> name err `shouldEqual` "TransactionInactiveError"
765765
766766 tearDown db
767767
@@ -783,7 +783,7 @@ main = runMocha do
783783 cursor <- attempt $ IDBIndex.openCursor index Nothing Next cb
784784 case cursor of
785785 Right _ -> fail "expected InvalidStateError"
786− Left err -> message err `shouldEqual` "InvalidStateError"
786+ Left err -> name err `shouldEqual` "InvalidStateError"
787787 }
788788
789789 tearDown db
@@ -920,7 +920,7 @@ main = runMocha do
920920 res <- attempt $ IDBCursor.continue cursor (Just 1)
921921 case res of
922922 Left err -> do
923− message err `shouldEqual` "DataError"
923+ name err `shouldEqual` "DataError"
924924 putVar vdone unit
925925 Right _ -> do
926926 fail "expected continue to fail"
@@ -1058,7 +1058,7 @@ main = runMocha do
10581058 res <- attempt $ IDBCursor.update cursor "patate"
10591059 case res of
10601060 Left err -> do
1061− message err `shouldEqual` "ReadOnlyError"
1061+ name err `shouldEqual` "ReadOnlyError"
10621062 putVar vdone unit
10631063 Right _ ->
10641064 fail $ "expected ReadOnlyError"