@@ -20,7 +20,7 @@ var EventEmitter = require('events').EventEmitter
20
20
, ReadStream = require ( './read-stream' )
21
21
, util = require ( './util' )
22
22
, Batch = require ( './batch' )
23
- , codec = require ( './ codec' )
23
+ , Codec = require ( 'level- codec' )
24
24
25
25
, getOptions = util . getOptions
26
26
, defaultOptions = util . defaultOptions
@@ -75,9 +75,9 @@ function LevelUP (location, options, callback) {
75
75
throw error
76
76
}
77
77
78
- options = getOptions ( this , options )
78
+ options = getOptions ( options )
79
79
this . options = extend ( defaultOptions , options )
80
- this . _codec = options . codec || codec
80
+ this . _codec = new Codec ( this . options )
81
81
this . _status = 'new'
82
82
// set this.location as enumerable but not configurable or writable
83
83
prr ( this , 'location' , location , 'e' )
@@ -205,10 +205,10 @@ LevelUP.prototype.get = function (key_, options, callback) {
205
205
return readError ( this
206
206
, 'get() requires key and callback arguments' , callback )
207
207
208
- options = util . getOptions ( this , options )
208
+ options = util . getOptions ( options )
209
209
key = this . _codec . encodeKey ( key_ , options )
210
210
211
- options . asBuffer = this . _codec . isValueAsBuffer ( options )
211
+ options . asBuffer = this . _codec . valueAsBuffer ( options )
212
212
213
213
this . db . get ( key , options , function ( err , value ) {
214
214
if ( err ) {
@@ -244,7 +244,7 @@ LevelUP.prototype.put = function (key_, value_, options, callback) {
244
244
if ( maybeError ( this , options , callback ) )
245
245
return
246
246
247
- options = getOptions ( this , options )
247
+ options = getOptions ( options )
248
248
key = this . _codec . encodeKey ( key_ , options )
249
249
value = this . _codec . encodeValue ( value_ , options )
250
250
@@ -271,7 +271,7 @@ LevelUP.prototype.del = function (key_, options, callback) {
271
271
if ( maybeError ( this , options , callback ) )
272
272
return
273
273
274
- options = getOptions ( this , options )
274
+ options = getOptions ( options )
275
275
key = this . _codec . encodeKey ( key_ , options )
276
276
277
277
this . db . del ( key , options , function ( err ) {
@@ -292,7 +292,7 @@ LevelUP.prototype.batch = function (arr_, options, callback) {
292
292
, arr
293
293
294
294
if ( ! arguments . length )
295
- return new Batch ( this , codec )
295
+ return new Batch ( this , this . _codec )
296
296
297
297
callback = getCallback ( options , callback )
298
298
@@ -302,38 +302,8 @@ LevelUP.prototype.batch = function (arr_, options, callback) {
302
302
if ( maybeError ( this , options , callback ) )
303
303
return
304
304
305
- options = getOptions ( this , options )
306
- keyEnc = options . keyEncoding
307
- valueEnc = options . valueEncoding
308
-
309
- arr = arr_ . map ( function ( e ) {
310
- if ( e . type === undefined || e . key === undefined )
311
- return { }
312
-
313
- // inherit encoding
314
- var kEnc = e . keyEncoding || keyEnc
315
- , vEnc = e . valueEncoding || e . encoding || valueEnc
316
- , o
317
-
318
- // If we're not dealing with plain utf8 strings or plain
319
- // Buffers then we have to do some work on the array to
320
- // encode the keys and/or values. This includes JSON types.
321
-
322
- if ( kEnc != 'utf8' && kEnc != 'binary'
323
- || vEnc != 'utf8' && vEnc != 'binary' ) {
324
- o = {
325
- type : e . type
326
- , key : self . _codec . encodeKey ( e . key , options , e )
327
- }
328
-
329
- if ( e . value !== undefined )
330
- o . value = self . _codec . encodeValue ( e . value , options , e )
331
-
332
- return o
333
- } else {
334
- return e
335
- }
336
- } )
305
+ options = getOptions ( options )
306
+ arr = self . _codec . encodeBatch ( arr_ , options )
337
307
338
308
this . db . batch ( arr , options , function ( err ) {
339
309
if ( err ) {
@@ -354,14 +324,14 @@ LevelUP.prototype.approximateSize = function (start_, end_, options, callback) {
354
324
355
325
callback = getCallback ( options , callback )
356
326
357
- options = getOptions ( options , callback )
327
+ options = getOptions ( options )
358
328
359
329
if ( start_ === null || start_ === undefined
360
330
|| end_ === null || end_ === undefined || 'function' !== typeof callback )
361
331
return readError ( this , 'approximateSize() requires start, end and callback arguments' , callback )
362
332
363
- start = this . _codec . encodeKey ( start_ , this . options )
364
- end = this . _codec . encodeKey ( end_ , this . options )
333
+ start = this . _codec . encodeKey ( start_ , options )
334
+ end = this . _codec . encodeKey ( end_ , options )
365
335
366
336
this . db . approximateSize ( start , end , function ( err , size ) {
367
337
if ( err ) {
@@ -381,37 +351,37 @@ LevelUP.prototype.createReadStream = function (options) {
381
351
options . valueEncoding = options . valueEncoding || options . encoding
382
352
383
353
if ( isDefined ( options . start ) )
384
- options . start = this . _codec . encodeKey ( options . start , options )
354
+ options . start = this . _codec . encodeKey ( options . start , [ options ] )
385
355
if ( isDefined ( options . end ) )
386
- options . end = this . _codec . encodeKey ( options . end , options )
356
+ options . end = this . _codec . encodeKey ( options . end , [ options ] )
387
357
if ( isDefined ( options . gte ) )
388
- options . gte = this . _codec . encodeKey ( options . gte , options )
358
+ options . gte = this . _codec . encodeKey ( options . gte , [ options ] )
389
359
if ( isDefined ( options . gt ) )
390
- options . gt = this . _codec . encodeKey ( options . gt , options )
360
+ options . gt = this . _codec . encodeKey ( options . gt , [ options ] )
391
361
if ( isDefined ( options . lte ) )
392
- options . lte = this . _codec . encodeKey ( options . lte , options )
362
+ options . lte = this . _codec . encodeKey ( options . lte , [ options ] )
393
363
if ( isDefined ( options . lt ) )
394
- options . lt = this . _codec . encodeKey ( options . lt , options )
364
+ options . lt = this . _codec . encodeKey ( options . lt , [ options ] )
395
365
if ( 'number' !== typeof options . limit )
396
366
options . limit = - 1
397
367
398
- options . keyAsBuffer = this . _codec . isKeyAsBuffer ( options )
399
- options . valueAsBuffer = this . _codec . isValueAsBuffer ( options )
368
+ options . keyAsBuffer = this . _codec . keyAsBuffer ( [ options ] )
369
+ options . valueAsBuffer = this . _codec . valueAsBuffer ( [ options ] )
400
370
401
371
var makeData = options . keys && options . values
402
372
? function ( key , value ) {
403
373
return {
404
- key : self . _codec . decodeKey ( key , options )
405
- , value : self . _codec . decodeValue ( value , options )
374
+ key : self . _codec . decodeKey ( key , [ options ] )
375
+ , value : self . _codec . decodeValue ( value , [ options ] )
406
376
}
407
377
}
408
378
: options . keys
409
379
? function ( key ) {
410
- return self . _codec . decodeKey ( key , options )
380
+ return self . _codec . decodeKey ( key , [ options ] )
411
381
}
412
382
: options . values
413
383
? function ( _ , value ) {
414
- return self . _codec . decodeValue ( value , options )
384
+ return self . _codec . decodeValue ( value , [ options ] )
415
385
}
416
386
: function ( ) { }
417
387
@@ -449,7 +419,7 @@ function utilStatic (name) {
449
419
}
450
420
451
421
module . exports = LevelUP
452
- module . exports . errors = require ( './errors' ) ;
422
+ module . exports . errors = require ( './errors' )
453
423
// DEPRECATED: prefer accessing LevelDOWN for this: require('leveldown').destroy()
454
424
module . exports . destroy = utilStatic ( 'destroy' )
455
425
// DEPRECATED: prefer accessing LevelDOWN for this: require('leveldown').repair()
0 commit comments