Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2e4745b189 | |||
| 21098984f1 | |||
| b2fdf0aba2 | |||
| 7b459f1f87 |
51
README.md
51
README.md
@ -11,7 +11,7 @@ Bower (Browser)
|
||||
```bash
|
||||
bower install json-storage
|
||||
# or
|
||||
wget https://raw2.github.com/coolaj86/json-storage-js/master/json-storage.js
|
||||
wget https://git.coolaj86.com/coolaj86/json-storage.js/raw/branch/master/json-storage.js
|
||||
```
|
||||
|
||||
Node.JS (Server)
|
||||
@ -25,17 +25,19 @@ Usage
|
||||
|
||||
Made for Node.js and Bower (browser-side).
|
||||
|
||||
var localStorage = require('localStorage')
|
||||
, JsonStorage = require('json-storage').JsonStorage
|
||||
, store = JsonStorage.create(localStorage, 'my-widget-namespace', { stringify: true })
|
||||
, myValue = {
|
||||
foo: "bar"
|
||||
, baz: "quux"
|
||||
}
|
||||
;
|
||||
```javascript
|
||||
var localStorage = require('localStorage')
|
||||
, JsonStorage = require('json-storage').JsonStorage
|
||||
, store = JsonStorage.create(localStorage, 'my-widget-namespace', { stringify: true })
|
||||
, myValue = {
|
||||
foo: "bar"
|
||||
, baz: "quux"
|
||||
}
|
||||
;
|
||||
|
||||
store.set('myKey', myValue);
|
||||
myValue = store.get('myKey');
|
||||
store.set('myKey', myValue);
|
||||
myValue = store.get('myKey');
|
||||
```
|
||||
|
||||
NOTE: When using with Node and the `localStorage` module,
|
||||
you may wish to pass the `{ stringify: false }` option to prevent double stringification.
|
||||
@ -48,6 +50,8 @@ API
|
||||
* `namespace` is optional string which allows multiple non-conflicting storage containers. For example you could pass two widgets different storage containers and not worry about naming conflicts:
|
||||
* `Gizmos.create(JsonStorage.create(null, 'my-gizmos'))`
|
||||
* `Gadgets.create(JsonStorage.create(null, 'my-gadgets'))`
|
||||
* Namespacing can be turned off by explicitly setting `false`
|
||||
* `Gadgets.create(JsonStorage.create(null, false))`
|
||||
* `opts`
|
||||
* `stringify` set to `false` in `node` to avoid double stringifying
|
||||
* `store.get(key)`
|
||||
@ -82,15 +86,34 @@ To save `undefined`, use `null` instead.
|
||||
|
||||
Note that both values that exist as `null` and values that don't exist at all will return `null`.
|
||||
|
||||
store.set('existing-key', null);
|
||||
null === store.get('existing-key');
|
||||
null === store.get('non-existant-key');
|
||||
```javascript
|
||||
store.set('existing-key', null);
|
||||
null === store.get('existing-key');
|
||||
null === store.get('non-existant-key');
|
||||
```
|
||||
|
||||
|
||||
### `null` vs `"null"`
|
||||
|
||||
The special case of `null` as `"null"`, aka `"\"null\""`:
|
||||
|
||||
```
|
||||
typeof null // object
|
||||
typeof "null" // string
|
||||
typeof "\"null\"" // string
|
||||
```
|
||||
|
||||
`null`, and `"null"` both parse as `null` the "object", instead of one being the string (which would be `"\"null\""`).
|
||||
|
||||
```
|
||||
JSON.parse(null) // null (object)
|
||||
JSON.parse("null") // null (object)
|
||||
JSON.parse("\"null\"") // 'null' (string)
|
||||
```
|
||||
|
||||
Objects containing `null`, however, parse as expected `{ "foo": null, "bar": "null" }` will parse as `foo` being `null` but `bar` being `"null"`, much unlike the value `"null"` being parsed on its own.
|
||||
|
||||
```
|
||||
JSON.parse('{ "foo": null }') // { foo: null }
|
||||
JSON.parse('{ "foo": "null" }') // { foo: 'null' }
|
||||
```
|
||||
@ -52,6 +52,9 @@
|
||||
// complicated to figure it out
|
||||
this._namespace = delim;
|
||||
this._namespace += (namespace || 'jss');
|
||||
if (false === namespace) {
|
||||
this._namespace = '';
|
||||
}
|
||||
|
||||
this._store = w3cStorage;
|
||||
this._keysAreDirty = true;
|
||||
@ -107,7 +110,7 @@
|
||||
|
||||
delimAt = key.lastIndexOf(this._namespace);
|
||||
// test if this key belongs to this widget
|
||||
if (-1 !== delimAt) {
|
||||
if (!this._namespace || (-1 !== delimAt)) {
|
||||
this._keys.push(key.substr(0, delimAt));
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,10 +3,10 @@
|
||||
"name": "json-storage",
|
||||
"description": "A wrapper for storage engines which use the W3C Storage API",
|
||||
"keywords": ["dom", "storage", "json", "w3c", "localStorage", "sessionStorage", "globalStorage", "Storage"],
|
||||
"version": "2.0.1",
|
||||
"version": "2.1.2",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/coolaj86/json-storage-js.git"
|
||||
"url": "git://git.coolaj86.com/coolaj86/json-storage.js.git"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= v0.2.0"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user