Compare commits
	
		
			No commits in common. "master" and "btoa-v1.0.0" have entirely different histories.
		
	
	
		
			master
			...
			btoa-v1.0.
		
	
		
| @ -1,2 +1,5 @@ | ||||
| # Moved | ||||
| ### [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) | ||||
| Goals | ||||
| === | ||||
| 
 | ||||
|   * 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 | ||||
							
								
								
									
										10
									
								
								atob/bin/atob.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								atob/bin/atob.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | ||||
| #!/usr/bin/env node
 | ||||
| /*jshint strict:true node:true es5:true onevar:true laxcomma:true laxbreak:true eqeqeq:true immed:true latedef:true*/ | ||||
| (function () { | ||||
|   "use strict"; | ||||
| 
 | ||||
|   var atob = require('../index') | ||||
|     ; | ||||
| 
 | ||||
|   console.log(atob(process.argv[2])); | ||||
| }()); | ||||
							
								
								
									
										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; | ||||
| }()); | ||||
							
								
								
									
										22
									
								
								atob/package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								atob/package.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,22 @@ | ||||
| { | ||||
|   "name": "atob", | ||||
|   "homepage": "https://github.com/coolaj86/node-browser-compat", | ||||
|   "description": "atob for Node.JS and Linux / Mac / Windows CLI (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" | ||||
|   }, | ||||
|   "main": "index", | ||||
|   "bin": { | ||||
|     "atob": "bin/atob.js" | ||||
|   }, | ||||
|   "version": "1.0.1" | ||||
| } | ||||
							
								
								
									
										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