Compare commits
	
		
			11 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 2dedfc50e6 | ||
|  | 9c5ae4a36f | ||
|  | a13644945f | ||
|  | 09b007e656 | ||
|  | 0c3ba0de9e | ||
|  | 0a95d2d63a | ||
|  | 4a0d9cd224 | ||
|  | 21d6d62615 | ||
|  | 5670628570 | ||
|  | a31335bfce | ||
|  | 2f335921ef | 
							
								
								
									
										191
									
								
								LICENSE
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										191
									
								
								LICENSE
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,191 @@ | |||||||
|  | Apache License | ||||||
|  | Version 2.0, January 2004 | ||||||
|  | http://www.apache.org/licenses/ | ||||||
|  | 
 | ||||||
|  | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION | ||||||
|  | 
 | ||||||
|  | 1. Definitions. | ||||||
|  | 
 | ||||||
|  | "License" shall mean the terms and conditions for use, reproduction, and | ||||||
|  | distribution as defined by Sections 1 through 9 of this document. | ||||||
|  | 
 | ||||||
|  | "Licensor" shall mean the copyright owner or entity authorized by the copyright | ||||||
|  | owner that is granting the License. | ||||||
|  | 
 | ||||||
|  | "Legal Entity" shall mean the union of the acting entity and all other entities | ||||||
|  | that control, are controlled by, or are under common control with that entity. | ||||||
|  | For the purposes of this definition, "control" means (i) the power, direct or | ||||||
|  | indirect, to cause the direction or management of such entity, whether by | ||||||
|  | contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the | ||||||
|  | outstanding shares, or (iii) beneficial ownership of such entity. | ||||||
|  | 
 | ||||||
|  | "You" (or "Your") shall mean an individual or Legal Entity exercising | ||||||
|  | permissions granted by this License. | ||||||
|  | 
 | ||||||
|  | "Source" form shall mean the preferred form for making modifications, including | ||||||
|  | but not limited to software source code, documentation source, and configuration | ||||||
|  | files. | ||||||
|  | 
 | ||||||
|  | "Object" form shall mean any form resulting from mechanical transformation or | ||||||
|  | translation of a Source form, including but not limited to compiled object code, | ||||||
|  | generated documentation, and conversions to other media types. | ||||||
|  | 
 | ||||||
|  | "Work" shall mean the work of authorship, whether in Source or Object form, made | ||||||
|  | available under the License, as indicated by a copyright notice that is included | ||||||
|  | in or attached to the work (an example is provided in the Appendix below). | ||||||
|  | 
 | ||||||
|  | "Derivative Works" shall mean any work, whether in Source or Object form, that | ||||||
|  | is based on (or derived from) the Work and for which the editorial revisions, | ||||||
|  | annotations, elaborations, or other modifications represent, as a whole, an | ||||||
|  | original work of authorship. For the purposes of this License, Derivative Works | ||||||
|  | shall not include works that remain separable from, or merely link (or bind by | ||||||
|  | name) to the interfaces of, the Work and Derivative Works thereof. | ||||||
|  | 
 | ||||||
|  | "Contribution" shall mean any work of authorship, including the original version | ||||||
|  | of the Work and any modifications or additions to that Work or Derivative Works | ||||||
|  | thereof, that is intentionally submitted to Licensor for inclusion in the Work | ||||||
|  | by the copyright owner or by an individual or Legal Entity authorized to submit | ||||||
|  | on behalf of the copyright owner. For the purposes of this definition, | ||||||
|  | "submitted" means any form of electronic, verbal, or written communication sent | ||||||
|  | to the Licensor or its representatives, including but not limited to | ||||||
|  | communication on electronic mailing lists, source code control systems, and | ||||||
|  | issue tracking systems that are managed by, or on behalf of, the Licensor for | ||||||
|  | the purpose of discussing and improving the Work, but excluding communication | ||||||
|  | that is conspicuously marked or otherwise designated in writing by the copyright | ||||||
|  | owner as "Not a Contribution." | ||||||
|  | 
 | ||||||
|  | "Contributor" shall mean Licensor and any individual or Legal Entity on behalf | ||||||
|  | of whom a Contribution has been received by Licensor and subsequently | ||||||
|  | incorporated within the Work. | ||||||
|  | 
 | ||||||
|  | 2. Grant of Copyright License. | ||||||
|  | 
 | ||||||
|  | Subject to the terms and conditions of this License, each Contributor hereby | ||||||
|  | grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, | ||||||
|  | irrevocable copyright license to reproduce, prepare Derivative Works of, | ||||||
|  | publicly display, publicly perform, sublicense, and distribute the Work and such | ||||||
|  | Derivative Works in Source or Object form. | ||||||
|  | 
 | ||||||
|  | 3. Grant of Patent License. | ||||||
|  | 
 | ||||||
|  | Subject to the terms and conditions of this License, each Contributor hereby | ||||||
|  | grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, | ||||||
|  | irrevocable (except as stated in this section) patent license to make, have | ||||||
|  | made, use, offer to sell, sell, import, and otherwise transfer the Work, where | ||||||
|  | such license applies only to those patent claims licensable by such Contributor | ||||||
|  | that are necessarily infringed by their Contribution(s) alone or by combination | ||||||
|  | of their Contribution(s) with the Work to which such Contribution(s) was | ||||||
|  | submitted. If You institute patent litigation against any entity (including a | ||||||
|  | cross-claim or counterclaim in a lawsuit) alleging that the Work or a | ||||||
|  | Contribution incorporated within the Work constitutes direct or contributory | ||||||
|  | patent infringement, then any patent licenses granted to You under this License | ||||||
|  | for that Work shall terminate as of the date such litigation is filed. | ||||||
|  | 
 | ||||||
|  | 4. Redistribution. | ||||||
|  | 
 | ||||||
|  | You may reproduce and distribute copies of the Work or Derivative Works thereof | ||||||
|  | in any medium, with or without modifications, and in Source or Object form, | ||||||
|  | provided that You meet the following conditions: | ||||||
|  | 
 | ||||||
|  | You must give any other recipients of the Work or Derivative Works a copy of | ||||||
|  | this License; and | ||||||
|  | You must cause any modified files to carry prominent notices stating that You | ||||||
|  | changed the files; and | ||||||
|  | You must retain, in the Source form of any Derivative Works that You distribute, | ||||||
|  | all copyright, patent, trademark, and attribution notices from the Source form | ||||||
|  | of the Work, excluding those notices that do not pertain to any part of the | ||||||
|  | Derivative Works; and | ||||||
|  | If the Work includes a "NOTICE" text file as part of its distribution, then any | ||||||
|  | Derivative Works that You distribute must include a readable copy of the | ||||||
|  | attribution notices contained within such NOTICE file, excluding those notices | ||||||
|  | that do not pertain to any part of the Derivative Works, in at least one of the | ||||||
|  | following places: within a NOTICE text file distributed as part of the | ||||||
|  | Derivative Works; within the Source form or documentation, if provided along | ||||||
|  | with the Derivative Works; or, within a display generated by the Derivative | ||||||
|  | Works, if and wherever such third-party notices normally appear. The contents of | ||||||
|  | the NOTICE file are for informational purposes only and do not modify the | ||||||
|  | License. You may add Your own attribution notices within Derivative Works that | ||||||
|  | You distribute, alongside or as an addendum to the NOTICE text from the Work, | ||||||
|  | provided that such additional attribution notices cannot be construed as | ||||||
|  | modifying the License. | ||||||
|  | You may add Your own copyright statement to Your modifications and may provide | ||||||
|  | additional or different license terms and conditions for use, reproduction, or | ||||||
|  | distribution of Your modifications, or for any such Derivative Works as a whole, | ||||||
|  | provided Your use, reproduction, and distribution of the Work otherwise complies | ||||||
|  | with the conditions stated in this License. | ||||||
|  | 
 | ||||||
|  | 5. Submission of Contributions. | ||||||
|  | 
 | ||||||
|  | Unless You explicitly state otherwise, any Contribution intentionally submitted | ||||||
|  | for inclusion in the Work by You to the Licensor shall be under the terms and | ||||||
|  | conditions of this License, without any additional terms or conditions. | ||||||
|  | Notwithstanding the above, nothing herein shall supersede or modify the terms of | ||||||
|  | any separate license agreement you may have executed with Licensor regarding | ||||||
|  | such Contributions. | ||||||
|  | 
 | ||||||
|  | 6. Trademarks. | ||||||
|  | 
 | ||||||
|  | This License does not grant permission to use the trade names, trademarks, | ||||||
|  | service marks, or product names of the Licensor, except as required for | ||||||
|  | reasonable and customary use in describing the origin of the Work and | ||||||
|  | reproducing the content of the NOTICE file. | ||||||
|  | 
 | ||||||
|  | 7. Disclaimer of Warranty. | ||||||
|  | 
 | ||||||
|  | Unless required by applicable law or agreed to in writing, Licensor provides the | ||||||
|  | Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, | ||||||
|  | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, | ||||||
|  | including, without limitation, any warranties or conditions of TITLE, | ||||||
|  | NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are | ||||||
|  | solely responsible for determining the appropriateness of using or | ||||||
|  | redistributing the Work and assume any risks associated with Your exercise of | ||||||
|  | permissions under this License. | ||||||
|  | 
 | ||||||
|  | 8. Limitation of Liability. | ||||||
|  | 
 | ||||||
|  | In no event and under no legal theory, whether in tort (including negligence), | ||||||
|  | contract, or otherwise, unless required by applicable law (such as deliberate | ||||||
|  | and grossly negligent acts) or agreed to in writing, shall any Contributor be | ||||||
|  | liable to You for damages, including any direct, indirect, special, incidental, | ||||||
|  | or consequential damages of any character arising as a result of this License or | ||||||
|  | out of the use or inability to use the Work (including but not limited to | ||||||
|  | damages for loss of goodwill, work stoppage, computer failure or malfunction, or | ||||||
|  | any and all other commercial damages or losses), even if such Contributor has | ||||||
|  | been advised of the possibility of such damages. | ||||||
|  | 
 | ||||||
|  | 9. Accepting Warranty or Additional Liability. | ||||||
|  | 
 | ||||||
|  | While redistributing the Work or Derivative Works thereof, You may choose to | ||||||
|  | offer, and charge a fee for, acceptance of support, warranty, indemnity, or | ||||||
|  | other liability obligations and/or rights consistent with this License. However, | ||||||
|  | in accepting such obligations, You may act only on Your own behalf and on Your | ||||||
|  | sole responsibility, not on behalf of any other Contributor, and only if You | ||||||
|  | agree to indemnify, defend, and hold each Contributor harmless for any liability | ||||||
|  | incurred by, or claims asserted against, such Contributor by reason of your | ||||||
|  | accepting any such warranty or additional liability. | ||||||
|  | 
 | ||||||
|  | END OF TERMS AND CONDITIONS | ||||||
|  | 
 | ||||||
|  | APPENDIX: How to apply the Apache License to your work | ||||||
|  | 
 | ||||||
|  | To apply the Apache License to your work, attach the following boilerplate | ||||||
|  | notice, with the fields enclosed by brackets "[]" replaced with your own | ||||||
|  | identifying information. (Don't include the brackets!) The text should be | ||||||
|  | enclosed in the appropriate comment syntax for the file format. We also | ||||||
|  | recommend that a file or class name and description of purpose be included on | ||||||
|  | the same "printed page" as the copyright notice for easier identification within | ||||||
|  | third-party archives. | ||||||
|  | 
 | ||||||
|  |    Copyright [yyyy] [name of copyright owner] | ||||||
|  | 
 | ||||||
|  |    Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  |    you may not use this file except in compliance with the License. | ||||||
|  |    You may obtain a copy of the License at | ||||||
|  | 
 | ||||||
|  |      http://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  | 
 | ||||||
|  |    Unless required by applicable law or agreed to in writing, software | ||||||
|  |    distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  |    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  |    See the License for the specific language governing permissions and | ||||||
|  |    limitations under the License. | ||||||
							
								
								
									
										39
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										39
									
								
								README.md
									
									
									
									
									
								
							| @ -1,6 +1,13 @@ | |||||||
| sessionStorage & localStorage for NodeJS | sessionStorage & localStorage for NodeJS | ||||||
| === | === | ||||||
| 
 | 
 | ||||||
|  | | **dom-storage** | ||||||
|  | | [atob](https://git.coolaj86.com/coolaj86/atob.js) | ||||||
|  | | [btoa](https://git.coolaj86.com/coolaj86/btoa.js) | ||||||
|  | | [unibabel.js](https://git.coolaj86.com/coolaj86/unibabel.js) | ||||||
|  | | Sponsored by [ppl](https://ppl.family) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| An inefficient, but as W3C-compliant as possible using only pure JavaScript, `DOMStorage` implementation. | An inefficient, but as W3C-compliant as possible using only pure JavaScript, `DOMStorage` implementation. | ||||||
| 
 | 
 | ||||||
| Purpose | Purpose | ||||||
| @ -12,16 +19,15 @@ Usage | |||||||
| ---- | ---- | ||||||
| 
 | 
 | ||||||
| ```javascript | ```javascript | ||||||
| var Storage = require('dom-storage') | var Storage = require('dom-storage'); | ||||||
| 
 | 
 | ||||||
|     // in-file, doesn't call `String(val)` on values (default) | // in-file, doesn't call `String(val)` on values (default) | ||||||
|   , localStorage = new Storage('./db.json', { strict: false, ws: '  ' }) | var localStorage = new Storage('./db.json', { strict: false, ws: '  ' }); | ||||||
| 
 | 
 | ||||||
|     // in-memory, does call `String(val)` on values (i.e. `{}` becomes `'[object Object]'` | // in-memory, does call `String(val)` on values (i.e. `{}` becomes `'[object Object]'` | ||||||
|   , sessionStorage = new Storage(null, { strict: true }) | var sessionStorage = new Storage(null, { strict: true }); | ||||||
| 
 | 
 | ||||||
|   , myValue = { foo: 'bar', baz: 'quux' } | var myValue = { foo: 'bar', baz: 'quux' }; | ||||||
|   ; |  | ||||||
| 
 | 
 | ||||||
| localStorage.setItem('myKey', myValue); | localStorage.setItem('myKey', myValue); | ||||||
| myValue = localStorage.getItem('myKey'); | myValue = localStorage.getItem('myKey'); | ||||||
| @ -51,15 +57,15 @@ Tests | |||||||
| 
 | 
 | ||||||
| ```javascript | ```javascript | ||||||
| 0 === localStorage.length; | 0 === localStorage.length; | ||||||
| null === localStorage.getItem('doesn't exist'); | null === localStorage.getItem('doesn\'t exist'); | ||||||
| undefined === localStorage['doesn't exist']; | undefined === localStorage['doesn\'t exist']; | ||||||
| 
 | 
 | ||||||
| localStorage.setItem('myItem'); | localStorage.setItem('myItem'); | ||||||
| "undefined" === localStorage.getItem('myItem'); | 'undefined' === localStorage.getItem('myItem'); | ||||||
| 1 === localStorage.length; | 1 === localStorage.length; | ||||||
| 
 | 
 | ||||||
| localStorage.setItem('myItem', 0); | localStorage.setItem('myItem', 0); | ||||||
| "0" === localStorage.getItem('myItem'); | '0' === localStorage.getItem('myItem'); | ||||||
| 
 | 
 | ||||||
| localStorage.removeItem('myItem', 0); | localStorage.removeItem('myItem', 0); | ||||||
| 0 === localStorage.length; | 0 === localStorage.length; | ||||||
| @ -74,3 +80,14 @@ Notes | |||||||
|   * db is read in synchronously |   * db is read in synchronously | ||||||
|   * No callback when db is saved |   * No callback when db is saved | ||||||
|   * Doesn't not emit `Storage` events (not sure how to do) |   * Doesn't not emit `Storage` events (not sure how to do) | ||||||
|  | 
 | ||||||
|  | License | ||||||
|  | ------- | ||||||
|  | 
 | ||||||
|  | Code copyright 2012-2018 AJ ONeal | ||||||
|  | 
 | ||||||
|  | Dual-licensed MIT and Apache-2.0 | ||||||
|  | 
 | ||||||
|  | Docs copyright 2012-2018 AJ ONeal | ||||||
|  | 
 | ||||||
|  | Docs released under Creative Commons. | ||||||
|  | |||||||
							
								
								
									
										17
									
								
								lib/index.js
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								lib/index.js
									
									
									
									
									
								
							| @ -8,13 +8,11 @@ | |||||||
| (function () { | (function () { | ||||||
|   "use strict"; |   "use strict"; | ||||||
| 
 | 
 | ||||||
|   var fs = require('fs') |   var fs = require('fs'); | ||||||
|     ; |  | ||||||
| 
 | 
 | ||||||
|   function Storage(path, opts) { |   function Storage(path, opts) { | ||||||
|     opts = opts || {}; |     opts = opts || {}; | ||||||
|     var db |     var db; | ||||||
|       ; |  | ||||||
| 
 | 
 | ||||||
|     Object.defineProperty(this, '___priv_bk___', { |     Object.defineProperty(this, '___priv_bk___', { | ||||||
|       value: { |       value: { | ||||||
| @ -88,13 +86,14 @@ | |||||||
|     return Object.keys(this)[i]; |     return Object.keys(this)[i]; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   Storage.prototype.__defineGetter__('length', function () { |   Object.defineProperty(Storage.prototype, 'length', { | ||||||
|     return Object.keys(this).length; |     get: function() { | ||||||
|  |       return Object.keys(this).length; | ||||||
|  |     } | ||||||
|   }); |   }); | ||||||
| 
 | 
 | ||||||
|   Storage.prototype.___save___ = function () { |   Storage.prototype.___save___ = function () { | ||||||
|     var self = this |     var self = this; | ||||||
|       ; |  | ||||||
| 
 | 
 | ||||||
|     if (!this.___priv_bk___.path) { |     if (!this.___priv_bk___.path) { | ||||||
|       return; |       return; | ||||||
| @ -113,6 +112,8 @@ | |||||||
|     , function (e) { |     , function (e) { | ||||||
|       self.___priv_bk___.lock = false; |       self.___priv_bk___.lock = false; | ||||||
|       if (e) { |       if (e) { | ||||||
|  |         console.error('Could not write to database', self.___priv_bk___.path); | ||||||
|  |         console.error(e); | ||||||
|         return; |         return; | ||||||
|       } |       } | ||||||
|       if (self.___priv_bk___.wait) { |       if (self.___priv_bk___.wait) { | ||||||
|  | |||||||
							
								
								
									
										10
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								package.json
									
									
									
									
									
								
							| @ -1,16 +1,18 @@ | |||||||
| { | { | ||||||
|   "author": "AJ ONeal <coolaj86@gmail.com> (http://coolaj86.info)", |   "author": "AJ ONeal <coolaj86@gmail.com> (https://coolaj86.com)", | ||||||
|  |   "homepage": "https://git.coolaj86.com/coolaj86/dom-storage.js", | ||||||
|   "name": "dom-storage", |   "name": "dom-storage", | ||||||
|   "description": "W3C DOM Storage (localStorage and sessionStorage) for Node.JS", |   "description": "W3C DOM Storage (localStorage and sessionStorage) for node.js", | ||||||
|   "version": "2.0.1", |   "version": "2.1.0", | ||||||
|   "repository": { |   "repository": { | ||||||
|     "type": "git", |     "type": "git", | ||||||
|     "url": "git://github.com/coolaj86/node-dom-storage.git" |     "url": "git://git.coolaj86.com/coolaj86/dom-storage.js.git" | ||||||
|   }, |   }, | ||||||
|   "engines": { |   "engines": { | ||||||
|     "node": "*" |     "node": "*" | ||||||
|   }, |   }, | ||||||
|   "main": "lib/index.js", |   "main": "lib/index.js", | ||||||
|   "dependencies": {}, |   "dependencies": {}, | ||||||
|  |   "license": "(MIT or Apache-2.0)", | ||||||
|   "devDependencies": {} |   "devDependencies": {} | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user