Compare commits
	
		
			No commits in common. "master" and "atob-v1.0.0" have entirely different histories.
		
	
	
		
			master
			...
			atob-v1.0.
		
	
		
| @ -1,2 +1,5 @@ | |||||||
| # Moved | Goals | ||||||
| ### [node-browser-compat](https://git.daplie.com/coolaj86/node-browser-compat) is now at [git.daplie.com/coolaj86/node-browser-compat](https://git.daplie.com/coolaj86/node-browser-compat) | === | ||||||
|  | 
 | ||||||
|  |   * reserve the names of W3C modules ('geolocation', 'locacStorage', etc) on npm | ||||||
|  |   * implement W3C modules for node | ||||||
|  | |||||||
| @ -1,4 +0,0 @@ | |||||||
| MOVED |  | ||||||
| ==== |  | ||||||
| 
 |  | ||||||
| Now at https://github.com/node-browser-compat/atob |  | ||||||
							
								
								
									
										9
									
								
								atob/index.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								atob/index.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,9 @@ | |||||||
|  | (function () { | ||||||
|  |   "use strict"; | ||||||
|  | 
 | ||||||
|  |   function atob(str) { | ||||||
|  |     return new Buffer(str, 'base64').toString('utf8'); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   module.exports = atob; | ||||||
|  | }()); | ||||||
							
								
								
									
										18
									
								
								atob/package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								atob/package.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,18 @@ | |||||||
|  | { | ||||||
|  |   "name"          : "atob", | ||||||
|  |   "homepage"      : "https://github.com/coolaj86/node-browser-compat", | ||||||
|  |   "description"   : "atob for Node.JS (it's a one-liner)", | ||||||
|  |    "repository"   : { | ||||||
|  |                       "type": "git", | ||||||
|  |                       "url": "git://github.com/coolaj86/node-browser-compat.git" | ||||||
|  |                     }, | ||||||
|  |   "keywords"      : ["atob", "browser"], | ||||||
|  |   "author"        : "AJ ONeal <coolaj86@gmail.com> (http://coolaj86.info)", | ||||||
|  |   "engines"       : { | ||||||
|  |                       "node": ">= 0.4.0" | ||||||
|  |                     }, | ||||||
|  |   "dependencies"  : { | ||||||
|  |                     }, | ||||||
|  |   "main"          : "index", | ||||||
|  |   "version"       : "1.0.0" | ||||||
|  | } | ||||||
							
								
								
									
										15
									
								
								atob/test.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								atob/test.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | |||||||
|  | (function () { | ||||||
|  |   "use strict"; | ||||||
|  | 
 | ||||||
|  |   var atob = require('./index') | ||||||
|  |     , encoded = "SGVsbG8gV29ybGQ=" | ||||||
|  |     , unencoded = "Hello World" | ||||||
|  |     , result | ||||||
|  |     ; | ||||||
|  | 
 | ||||||
|  |   if (unencoded !== atob(encoded)) { | ||||||
|  |     return; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   console.log('[PASS] all tests pass'); | ||||||
|  | }()); | ||||||
| @ -1,4 +0,0 @@ | |||||||
| MOVED |  | ||||||
| ==== |  | ||||||
| 
 |  | ||||||
| Now at https://github.com/node-browser-compat/btoa |  | ||||||
							
								
								
									
										9
									
								
								btoa/index.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								btoa/index.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,9 @@ | |||||||
|  | (function () { | ||||||
|  |   "use strict"; | ||||||
|  | 
 | ||||||
|  |   function btoa(str) { | ||||||
|  |     return new Buffer(str, 'utf8').toString('base64'); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   module.exports = btoa; | ||||||
|  | }()); | ||||||
							
								
								
									
										18
									
								
								btoa/package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								btoa/package.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,18 @@ | |||||||
|  | { | ||||||
|  |   "name"          : "btoa", | ||||||
|  |   "homepage"      : "https://github.com/coolaj86/node-browser-compat", | ||||||
|  |   "description"   : "btoa for Node.JS (it's a one-liner)", | ||||||
|  |    "repository"   : { | ||||||
|  |                       "type": "git", | ||||||
|  |                       "url": "git://github.com/coolaj86/node-browser-compat.git" | ||||||
|  |                     }, | ||||||
|  |   "keywords"      : ["btoa", "browser"], | ||||||
|  |   "author"        : "AJ ONeal <coolaj86@gmail.com> (http://coolaj86.info)", | ||||||
|  |   "engines"       : { | ||||||
|  |                       "node": ">= 0.4.0" | ||||||
|  |                     }, | ||||||
|  |   "dependencies"  : { | ||||||
|  |                     }, | ||||||
|  |   "main"          : "index", | ||||||
|  |   "version"       : "1.0.0" | ||||||
|  | } | ||||||
							
								
								
									
										15
									
								
								btoa/test.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								btoa/test.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | |||||||
|  | (function () { | ||||||
|  |   "use strict"; | ||||||
|  | 
 | ||||||
|  |   var btoa = require('./index') | ||||||
|  |     , encoded = "SGVsbG8gV29ybGQ=" | ||||||
|  |     , unencoded = "Hello World" | ||||||
|  |     , result | ||||||
|  |     ; | ||||||
|  | 
 | ||||||
|  |   if (encoded !== btoa(unencoded)) { | ||||||
|  |     return; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   console.log('[PASS] all tests pass'); | ||||||
|  | }()); | ||||||
| @ -1,4 +1,56 @@ | |||||||
| MOVED | localStorage | ||||||
| ===== | === | ||||||
| 
 | 
 | ||||||
| Now at https://github.com/node-browser-compat/dom-storage | 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 | ||||||
|  | |||||||
							
								
								
									
										54
									
								
								localStorage/lib/localStorage.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								localStorage/lib/localStorage.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,54 @@ | |||||||
|  | // http://www.rajdeepd.com/articles/chrome/localstrg/LocalStorageSample.htm
 | ||||||
|  | 
 | ||||||
|  | // NOTE:
 | ||||||
|  | // this varies from actual localStorage in some subtle ways
 | ||||||
|  | 
 | ||||||
|  | // also, there is no persistence
 | ||||||
|  | // TODO persist
 | ||||||
|  | (function () { | ||||||
|  |   "use strict"; | ||||||
|  | 
 | ||||||
|  |   var db; | ||||||
|  | 
 | ||||||
|  |   function LocalStorage() { | ||||||
|  |   } | ||||||
|  |   db = LocalStorage; | ||||||
|  | 
 | ||||||
|  |   db.prototype.getItem = function (key) { | ||||||
|  |     if (key in this) { | ||||||
|  |       return String(this[key]); | ||||||
|  |     } | ||||||
|  |     return null; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   db.prototype.setItem = function (key, val) { | ||||||
|  |     this[key] = String(val); | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   db.prototype.removeItem = function (key) { | ||||||
|  |     delete this[key]; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   db.prototype.clear = function () { | ||||||
|  |     var self = this; | ||||||
|  |     Object.keys(self).forEach(function (key) { | ||||||
|  |       self[key] = undefined; | ||||||
|  |       delete self[key]; | ||||||
|  |     }); | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   db.prototype.key = function (i) { | ||||||
|  |     i = i || 0; | ||||||
|  |     return Object.keys(this)[i]; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   db.prototype.__defineGetter__('length', function () { | ||||||
|  |     return Object.keys(this).length; | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|  |   if (global.localStorage) { | ||||||
|  |     module.exports = localStorage; | ||||||
|  |   } else { | ||||||
|  |     module.exports = new LocalStorage(); | ||||||
|  |   } | ||||||
|  | }()); | ||||||
							
								
								
									
										16
									
								
								localStorage/lib/package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								localStorage/lib/package.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,16 @@ | |||||||
|  | { | ||||||
|  |   "author": "AJ ONeal <coolaj86@gmail.com> (http://coolaj86.info)", | ||||||
|  |   "name": "localStorage", | ||||||
|  |   "description": "W3C localStorage for Node.JS", | ||||||
|  |   "version": "1.0.0", | ||||||
|  |   "repository": { | ||||||
|  |     "type": "git", | ||||||
|  |     "url": "git://github.com/coolaj86/node-localStorage.git" | ||||||
|  |   }, | ||||||
|  |   "engines": { | ||||||
|  |     "node": ">= v0.2.0" | ||||||
|  |   }, | ||||||
|  |   "main": "localStorage.js", | ||||||
|  |   "dependencies": {}, | ||||||
|  |   "devDependencies": {} | ||||||
|  | } | ||||||
							
								
								
									
										34
									
								
								localStorage/tests/test.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								localStorage/tests/test.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,34 @@ | |||||||
|  | (function () { | ||||||
|  |   "use strict"; | ||||||
|  | 
 | ||||||
|  |   var assert = require('assert') | ||||||
|  |     , localStorage = require('localStorage') | ||||||
|  |     ; | ||||||
|  | 
 | ||||||
|  |   // can't make assuptions about key positioning
 | ||||||
|  |   localStorage.setItem('a', 1); | ||||||
|  |   assert.strictEqual(localStorage.key(0), 'a'); | ||||||
|  | 
 | ||||||
|  |   localStorage.setItem('b', '2'); | ||||||
|  |   assert.strictEqual(localStorage.getItem('a'), '1'); | ||||||
|  |   assert.strictEqual(localStorage.getItem('b'), '2'); | ||||||
|  |   assert.strictEqual(localStorage.length, 2); | ||||||
|  | 
 | ||||||
|  |   assert.strictEqual(localStorage['c'], undefined); | ||||||
|  |   assert.strictEqual(localStorage.getItem('c'), null); | ||||||
|  | 
 | ||||||
|  |   localStorage.setItem('c'); | ||||||
|  |   assert.strictEqual(localStorage.getItem('c'), "undefined"); | ||||||
|  |   assert.strictEqual(localStorage.length, 3); | ||||||
|  | 
 | ||||||
|  |   localStorage.removeItem('c'); | ||||||
|  |   assert.strictEqual(localStorage.getItem('c'), null); | ||||||
|  |   assert.strictEqual(localStorage.length, 2); | ||||||
|  | 
 | ||||||
|  |   localStorage.clear(); | ||||||
|  |   assert.strictEqual(localStorage.getItem('a'), null); | ||||||
|  |   assert.strictEqual(localStorage.getItem('b'), null); | ||||||
|  |   assert.strictEqual(localStorage.length, 0); | ||||||
|  | 
 | ||||||
|  |   console.log('All tests passed'); | ||||||
|  | }()); | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user