57 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			57 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|  | localStorage | ||
|  | === | ||
|  | 
 | ||
|  | An inefficient, but as W3C-compliant as possible using only pure JavaScript, `localStorage` implementation. | ||
|  | 
 | ||
|  | Purpose | ||
|  | ---- | ||
|  | 
 | ||
|  | This is meant for the purpose of being able to run unit-tests and such for browser-y modules in node. | ||
|  | 
 | ||
|  | Usage | ||
|  | ---- | ||
|  | 
 | ||
|  |     var localStorage = require('localStorage') | ||
|  |       , myValue = { foo: 'bar', baz: 'quux' } | ||
|  |       ; | ||
|  | 
 | ||
|  |     localStorage.setItem('myKey', JSON.stringify(myValue)); | ||
|  |     myValue = localStorage.getItem('myKey'); | ||
|  | 
 | ||
|  | API | ||
|  | --- | ||
|  | 
 | ||
|  |   * getItem(key) | ||
|  |   * setItem(key, value) | ||
|  |   * removeItem(key) | ||
|  |   * clear() | ||
|  |   * key(n) | ||
|  |   * length | ||
|  | 
 | ||
|  | Tests | ||
|  | --- | ||
|  | 
 | ||
|  |     0 === localStorage.length; | ||
|  |     null === localStorage.getItem('doesn't exist'); | ||
|  |     undefined === localStorage['doesn't exist']; | ||
|  | 
 | ||
|  |     localStorage.setItem('myItem'); | ||
|  |     "undefined" === localStorage.getItem('myItem'); | ||
|  |     1 === localStorage.length; | ||
|  | 
 | ||
|  |     localStorage.setItem('myItem', 0); | ||
|  |     "0" === localStorage.getItem('myItem'); | ||
|  | 
 | ||
|  |     localStorage.removeItem('myItem', 0); | ||
|  |     0 === localStorage.length; | ||
|  | 
 | ||
|  |     localStorage.clear(); | ||
|  |     0 === localStorage.length; | ||
|  | 
 | ||
|  | TODO / Bugs | ||
|  | --- | ||
|  | 
 | ||
|  |   * Does not persist. | ||
|  |     * could use `fs.readFileSync` at load and an occasional `fs.writeFile` to write-out localStorage.json | ||
|  |   * Doesn't not emit `Storage` events |