Comparing version 0.13.0-beta.2 to 0.13.0-beta.3
106
lib/index.js
@@ -7,10 +7,17 @@ 'use strict'; | ||
var defaultOptions = { | ||
storage: defaultStorage, | ||
writeOnChange: true | ||
}; | ||
// const defaultOptions = { | ||
// storage: defaultStorage, | ||
// writeOnChange: true | ||
// } | ||
function low(source) { | ||
var options = arguments.length <= 1 || arguments[1] === undefined ? defaultOptions : arguments[1]; | ||
var _ref = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; | ||
var _ref$storage = _ref.storage; | ||
var storage = _ref$storage === undefined ? defaultStorage : _ref$storage; | ||
var _ref$format = _ref.format; | ||
var format = _ref$format === undefined ? null : _ref$format; | ||
var _ref$writeOnChange = _ref.writeOnChange; | ||
var writeOnChange = _ref$writeOnChange === undefined ? true : _ref$writeOnChange; | ||
// Create a fresh copy of lodash | ||
@@ -22,51 +29,45 @@ var _ = lodash.runInContext(); | ||
if (source) { | ||
if (options.storage) { | ||
(function () { | ||
var storage = options.storage; | ||
if (storage) { | ||
if (storage.read) { | ||
db.read = function () { | ||
var s = arguments.length <= 0 || arguments[0] === undefined ? source : arguments[0]; | ||
var res = storage.read(s, db.deserialize); | ||
var init = function init(obj) { | ||
db.__wrapped__ = obj; | ||
db._checksum = JSON.stringify(db.__wrapped__); | ||
}; | ||
if (storage.read) { | ||
db.read = function () { | ||
var s = arguments.length <= 0 || arguments[0] === undefined ? source : arguments[0]; | ||
if (isPromise(res)) { | ||
return res.then(function (obj) { | ||
init(obj); | ||
return db; | ||
}); | ||
} | ||
var res = storage.read(s, db.deserialize); | ||
var init = function init(obj) { | ||
db.__wrapped__ = obj; | ||
db._checksum = JSON.stringify(db.__wrapped__); | ||
}; | ||
init(res); | ||
return db; | ||
}; | ||
} | ||
if (isPromise(res)) { | ||
return res.then(function (obj) { | ||
init(obj); | ||
return db; | ||
}); | ||
} | ||
init(res); | ||
return db; | ||
}; | ||
} | ||
if (storage.write) { | ||
db.write = function () { | ||
var dest = arguments.length <= 0 || arguments[0] === undefined ? source : arguments[0]; | ||
return storage.write(dest, db.__wrapped__, db.serialize); | ||
}; | ||
} | ||
})(); | ||
if (storage.write) { | ||
db.write = function () { | ||
var dest = arguments.length <= 0 || arguments[0] === undefined ? source : arguments[0]; | ||
return storage.write(dest, db.__wrapped__, db.serialize); | ||
}; | ||
} | ||
} | ||
if (options.format) { | ||
var format = options.format; | ||
if (format) { | ||
var _options = options; | ||
var _format = _options.format; | ||
db.serialize = format.serialize; | ||
db.deserialize = format.deserialize; | ||
db.serialize = _format.serialize; | ||
db.deserialize = _format.deserialize; | ||
} | ||
} | ||
// Modify value function to call save before returning result | ||
_.prototype.value = _.wrap(_.prototype.value, function (value) { | ||
var v = value.apply(this); | ||
if (db.source && db.write && options.writeOnChange) { | ||
// Persist database state | ||
function persist() { | ||
if (db.source && db.write && writeOnChange) { | ||
var str = JSON.stringify(db.__wrapped__); | ||
@@ -79,3 +80,8 @@ | ||
} | ||
} | ||
// Modify value function to call save before returning result | ||
_.prototype.value = _.wrap(_.prototype.value, function (value) { | ||
var v = value.apply(this); | ||
persist(); | ||
return v; | ||
@@ -85,9 +91,9 @@ }); | ||
// Get or set database state | ||
db.state = function (obj) { | ||
if (obj) { | ||
db.__wrapped__ = obj; | ||
} else { | ||
return db.__wrapped__; | ||
} | ||
db.getState = function () { | ||
return db.__wrapped__; | ||
}; | ||
db.setState = function (state) { | ||
db.__wrapped__ = state; | ||
persist(); | ||
}; | ||
@@ -94,0 +100,0 @@ db._ = _; |
{ | ||
"name": "lowdb", | ||
"version": "0.13.0-beta.2", | ||
"version": "0.13.0-beta.3", | ||
"description": "JSON database for Node and the browser powered by lodash", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
@@ -77,3 +77,3 @@ # Lowdb [![NPM version](https://badge.fury.io/js/lowdb.svg)](http://badge.fury.io/js/lowdb) [![Build Status](https://travis-ci.org/typicode/lowdb.svg?branch=master)](https://travis-ci.org/typicode/lowdb) | ||
* `source` string or null, will be passed to storage | ||
* `source` string or null, will be passed to storage | ||
* `options` object | ||
@@ -103,3 +103,3 @@ * `storage` object, by default `lowdb/lib/file-sync` or `lowdb/lib/browser`. | ||
// read-only | ||
// read-only | ||
const fileSync = require('lowdb/lib/file-sync') | ||
@@ -135,16 +135,17 @@ low('db.json', { | ||
__db.state()__ | ||
__db.getState()__ | ||
Use whenever you want to access or modify the underlying database object. | ||
Use whenever you want to access the database state. | ||
```js | ||
db.state() // { posts: [ ... ] } | ||
db.getState() // { posts: [ ... ] } | ||
``` | ||
You can use it to drop database or replace it with a new object | ||
__db.setState()__ | ||
You can use it to drop database or replace it with a new object. New state will be automatically persisted. | ||
```js | ||
const newState = {} | ||
db.state(newState) | ||
db.write() | ||
db.setState(newState) | ||
``` | ||
@@ -151,0 +152,0 @@ |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
616275
15
15797
328