1- var Abstract = require ( 'abstract- random-access' )
1+ var Abstract = require ( 'random-access-storage ' )
22var inherits = require ( 'inherits' )
33var nextTick = require ( 'next-tick' )
44var once = require ( 'once' )
@@ -11,11 +11,11 @@ var DELIM = '\0'
1111module . exports = function ( dbname , xopts ) {
1212 if ( ! xopts ) xopts = { }
1313 var idb = xopts . idb || ( typeof window !== 'undefined'
14- ? window . indexedDB || window . mozIndexedDB
15- || window . webkitIndexedDB || window . msIndexedDB
14+ ? window . indexedDB || window . mozIndexedDB || window . webkitIndexedDB || window . msIndexedDB
1615 : null )
1716 if ( ! idb ) throw new Error ( 'indexedDB not present and not given' )
18- var db = null , dbqueue = [ ]
17+ var db = null
18+ var dbqueue = [ ]
1919 if ( typeof idb . open === 'function' ) {
2020 var req = idb . open ( dbname )
2121 req . addEventListener ( 'upgradeneeded' , function ( ) {
@@ -63,73 +63,73 @@ Store.prototype._blocks = function (i, j) {
6363 return blocks ( this . size , i , j )
6464}
6565
66- Store . prototype . _read = function ( offset , length , cb ) {
66+ Store . prototype . _read = function ( req ) {
6767 var self = this
68- cb = once ( cb )
6968 var buffers = [ ]
7069 self . _store ( 'readonly' , function ( err , store ) {
71- if ( ( self . length || 0 ) < offset + length ) {
72- return cb ( new Error ( 'Could not satisfy length' ) )
70+ if ( ( self . length || 0 ) < req . offset + req . size ) {
71+ return req . callback ( new Error ( 'Could not satisfy length' ) , null )
7372 }
74- if ( err ) return cb ( err )
75- var offsets = self . _blocks ( offset , offset + length )
73+ if ( err ) return req . callback ( err )
74+ var offsets = self . _blocks ( req . offset , req . offset + req . size )
7675 var pending = offsets . length + 1
7776 var firstBlock = offsets . length > 0 ? offsets [ 0 ] . block : 0
78- var j = 0
7977 for ( var i = 0 ; i < offsets . length ; i ++ ) ( function ( o ) {
8078 var key = self . name + DELIM + o . block
8179 backify ( store . get ( key ) , function ( err , ev ) {
82- if ( err ) return cb ( err )
83- buffers [ o . block - firstBlock ] = ev . target . result
84- ? bufferFrom ( ev . target . result . subarray ( o . start , o . end ) )
85- : bufferAlloc ( o . end - o . start )
86- if ( -- pending === 0 ) cb ( null , Buffer . concat ( buffers ) )
80+ if ( err ) return req . callback ( err )
81+ buffers [ o . block - firstBlock ] = ev . target . result
82+ ? bufferFrom ( ev . target . result . subarray ( o . start , o . end ) )
83+ : bufferAlloc ( o . end - o . start )
84+ if ( -- pending === 0 ) req . callback ( null , Buffer . concat ( buffers ) )
8785 } )
8886 } ) ( offsets [ i ] )
89- if ( -- pending === 0 ) cb ( null , Buffer . concat ( buffers ) )
87+ if ( -- pending === 0 ) req . callback ( null , Buffer . concat ( buffers ) )
9088 } )
9189}
9290
93- Store . prototype . _write = function ( offset , buf , cb ) {
91+ Store . prototype . _write = function ( req ) {
9492 var self = this
95- cb = once ( cb )
9693 self . _store ( 'readwrite' , function ( err , store ) {
97- if ( err ) return cb ( err )
98- var offsets = self . _blocks ( offset , offset + buf . length )
94+ if ( err ) return req . callback ( err )
95+ var offsets = self . _blocks ( req . offset , req . offset + req . data . length )
9996 var pending = 1
10097 var buffers = { }
101- for ( var i = 0 ; i < offsets . length ; i ++ ) ( function ( o , i ) {
102- if ( o . end - o . start === self . size ) return
98+ for ( var i = 0 ; i < offsets . length ; i ++ ) ( function ( o , i ) {
99+ if ( o . end - o . start === self . size ) return
103100 pending ++
104101 var key = self . name + DELIM + o . block
105102 backify ( store . get ( key ) , function ( err , ev ) {
106- if ( err ) return cb ( err )
103+ if ( err ) return req . callback ( err )
107104 buffers [ i ] = bufferFrom ( ev . target . result || bufferAlloc ( self . size ) )
108105 if ( -- pending === 0 ) write ( store , offsets , buffers )
109106 } )
110- } ) ( offsets [ i ] , i )
107+ } ) ( offsets [ i ] , i )
111108 if ( -- pending === 0 ) write ( store , offsets , buffers )
112109 } )
110+
113111 function write ( store , offsets , buffers ) {
112+ var block
114113 for ( var i = 0 , j = 0 ; i < offsets . length ; i ++ ) {
115114 var o = offsets [ i ]
116115 var len = o . end - o . start
117116 if ( len === self . size ) {
118- block = buf . slice ( j , j + len )
117+ block = req . data . slice ( j , j + len )
119118 } else {
120119 block = buffers [ i ]
121- buf . copy ( block , o . start , j , j + len )
120+ req . data . copy ( block , o . start , j , j + len )
122121 }
123- store . put ( block , self . name + DELIM + o . block )
122+ store . put ( block , self . name + DELIM + o . block )
124123 j += len
125124 }
126- var length = Math . max ( self . length || 0 , offset + buf . length )
127- store . put ( length , self . name + DELIM + "length" )
125+
126+ var length = Math . max ( self . length || 0 , req . offset + req . data . length )
127+ store . put ( length , self . name + DELIM + 'length' )
128128 store . transaction . addEventListener ( 'complete' , function ( ) {
129129 self . length = length
130- cb ( null )
130+ req . callback ( null )
131131 } )
132- store . transaction . addEventListener ( 'error' , cb )
132+ store . transaction . addEventListener ( 'error' , req . callback )
133133 }
134134}
135135
@@ -144,13 +144,15 @@ Store.prototype._store = function (mode, cb) {
144144 } )
145145}
146146
147- Store . prototype . _open = function ( cb ) {
147+ Store . prototype . _open = function ( req ) {
148148 var self = this
149- this . _getdb ( function ( db ) {
149+ this . _getdb ( function ( db ) {
150150 self . _store ( 'readonly' , function ( err , store ) {
151- backify ( store . get ( self . name + DELIM + "length" ) , function ( err , ev ) {
151+ if ( err ) return req . callback ( err )
152+ backify ( store . get ( self . name + DELIM + 'length' ) , function ( err , ev ) {
153+ if ( err ) return req . callback ( err )
152154 self . length = ev . target . result || 0
153- cb ( null )
155+ req . callback ( null )
154156 } )
155157 } )
156158 } )
0 commit comments