mirror of
				https://github.com/1disk/edp445.git
				synced 2024-08-14 22:47:02 +00:00 
			
		
		
		
	Changed alot of things.
This commit is contained in:
		
							parent
							
								
									a5a0523e5a
								
							
						
					
					
						commit
						3513d5390c
					
				
					 2016 changed files with 336930 additions and 9 deletions
				
			
		
							
								
								
									
										1
									
								
								node_modules/json-stringify-safe/.npmignore
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								node_modules/json-stringify-safe/.npmignore
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| /*.tgz | ||||
							
								
								
									
										14
									
								
								node_modules/json-stringify-safe/CHANGELOG.md
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								node_modules/json-stringify-safe/CHANGELOG.md
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,14 @@ | |||
| ## Unreleased | ||||
| - Fixes stringify to only take ancestors into account when checking | ||||
|   circularity.   | ||||
|   It previously assumed every visited object was circular which led to [false | ||||
|   positives][issue9].   | ||||
|   Uses the tiny serializer I wrote for [Must.js][must] a year and a half ago. | ||||
| - Fixes calling the `replacer` function in the proper context (`thisArg`). | ||||
| - Fixes calling the `cycleReplacer` function in the proper context (`thisArg`). | ||||
| - Speeds serializing by a factor of | ||||
|   Big-O(h-my-god-it-linearly-searched-every-object) it had ever seen. Searching | ||||
|   only the ancestors for a circular references speeds up things considerably. | ||||
| 
 | ||||
| [must]: https://github.com/moll/js-must | ||||
| [issue9]: https://github.com/isaacs/json-stringify-safe/issues/9 | ||||
							
								
								
									
										15
									
								
								node_modules/json-stringify-safe/LICENSE
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								node_modules/json-stringify-safe/LICENSE
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,15 @@ | |||
| The ISC License | ||||
| 
 | ||||
| Copyright (c) Isaac Z. Schlueter and Contributors | ||||
| 
 | ||||
| Permission to use, copy, modify, and/or distribute this software for any | ||||
| purpose with or without fee is hereby granted, provided that the above | ||||
| copyright notice and this permission notice appear in all copies. | ||||
| 
 | ||||
| THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||||
| WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||||
| MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||||
| ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||||
| WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||||
| ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR | ||||
| IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||
							
								
								
									
										35
									
								
								node_modules/json-stringify-safe/Makefile
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								node_modules/json-stringify-safe/Makefile
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,35 @@ | |||
| NODE_OPTS = | ||||
| TEST_OPTS = | ||||
| 
 | ||||
| love: | ||||
| 	@echo "Feel like makin' love." | ||||
| 
 | ||||
| test: | ||||
| 	@node $(NODE_OPTS) ./node_modules/.bin/_mocha -R dot $(TEST_OPTS) | ||||
| 
 | ||||
| spec: | ||||
| 	@node $(NODE_OPTS) ./node_modules/.bin/_mocha -R spec $(TEST_OPTS) | ||||
| 
 | ||||
| autotest: | ||||
| 	@node $(NODE_OPTS) ./node_modules/.bin/_mocha -R dot --watch $(TEST_OPTS) | ||||
| 
 | ||||
| autospec: | ||||
| 	@node $(NODE_OPTS) ./node_modules/.bin/_mocha -R spec --watch $(TEST_OPTS) | ||||
| 
 | ||||
| pack: | ||||
| 	@file=$$(npm pack); echo "$$file"; tar tf "$$file" | ||||
| 
 | ||||
| publish: | ||||
| 	npm publish | ||||
| 
 | ||||
| tag: | ||||
| 	git tag "v$$(node -e 'console.log(require("./package").version)')" | ||||
| 
 | ||||
| clean: | ||||
| 	rm -f *.tgz | ||||
| 	npm prune --production | ||||
| 
 | ||||
| .PHONY: love | ||||
| .PHONY: test spec autotest autospec | ||||
| .PHONY: pack publish tag | ||||
| .PHONY: clean | ||||
							
								
								
									
										52
									
								
								node_modules/json-stringify-safe/README.md
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								node_modules/json-stringify-safe/README.md
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,52 @@ | |||
| # json-stringify-safe | ||||
| 
 | ||||
| Like JSON.stringify, but doesn't throw on circular references. | ||||
| 
 | ||||
| ## Usage | ||||
| 
 | ||||
| Takes the same arguments as `JSON.stringify`. | ||||
| 
 | ||||
| ```javascript | ||||
| var stringify = require('json-stringify-safe'); | ||||
| var circularObj = {}; | ||||
| circularObj.circularRef = circularObj; | ||||
| circularObj.list = [ circularObj, circularObj ]; | ||||
| console.log(stringify(circularObj, null, 2)); | ||||
| ``` | ||||
| 
 | ||||
| Output: | ||||
| 
 | ||||
| ```json | ||||
| { | ||||
|   "circularRef": "[Circular]", | ||||
|   "list": [ | ||||
|     "[Circular]", | ||||
|     "[Circular]" | ||||
|   ] | ||||
| } | ||||
| ``` | ||||
| 
 | ||||
| ## Details | ||||
| 
 | ||||
| ``` | ||||
| stringify(obj, serializer, indent, decycler) | ||||
| ``` | ||||
| 
 | ||||
| The first three arguments are the same as to JSON.stringify.  The last | ||||
| is an argument that's only used when the object has been seen already. | ||||
| 
 | ||||
| The default `decycler` function returns the string `'[Circular]'`. | ||||
| If, for example, you pass in `function(k,v){}` (return nothing) then it | ||||
| will prune cycles.  If you pass in `function(k,v){ return {foo: 'bar'}}`, | ||||
| then cyclical objects will always be represented as `{"foo":"bar"}` in | ||||
| the result. | ||||
| 
 | ||||
| ``` | ||||
| stringify.getSerialize(serializer, decycler) | ||||
| ``` | ||||
| 
 | ||||
| Returns a serializer that can be used elsewhere.  This is the actual | ||||
| function that's passed to JSON.stringify. | ||||
| 
 | ||||
| **Note** that the function returned from `getSerialize` is stateful for now, so | ||||
| do **not** use it more than once. | ||||
							
								
								
									
										31
									
								
								node_modules/json-stringify-safe/package.json
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								node_modules/json-stringify-safe/package.json
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,31 @@ | |||
| { | ||||
|   "name": "json-stringify-safe", | ||||
|   "version": "5.0.1", | ||||
|   "description": "Like JSON.stringify, but doesn't blow up on circular refs.", | ||||
|   "keywords": [ | ||||
|     "json", | ||||
|     "stringify", | ||||
|     "circular", | ||||
|     "safe" | ||||
|   ], | ||||
|   "homepage": "https://github.com/isaacs/json-stringify-safe", | ||||
|   "bugs": "https://github.com/isaacs/json-stringify-safe/issues", | ||||
|   "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)", | ||||
|   "contributors": [ | ||||
|     "Andri Möll <andri@dot.ee> (http://themoll.com)" | ||||
|   ], | ||||
|   "license": "ISC", | ||||
|   "repository": { | ||||
|     "type": "git", | ||||
|     "url": "git://github.com/isaacs/json-stringify-safe" | ||||
|   }, | ||||
|   "main": "stringify.js", | ||||
|   "scripts": { | ||||
|     "test": "node test.js" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "mocha": ">= 2.1.0 < 3", | ||||
|     "must": ">= 0.12 < 0.13", | ||||
|     "sinon": ">= 1.12.2 < 2" | ||||
|   } | ||||
| } | ||||
							
								
								
									
										27
									
								
								node_modules/json-stringify-safe/stringify.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								node_modules/json-stringify-safe/stringify.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,27 @@ | |||
| exports = module.exports = stringify | ||||
| exports.getSerialize = serializer | ||||
| 
 | ||||
| function stringify(obj, replacer, spaces, cycleReplacer) { | ||||
|   return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces) | ||||
| } | ||||
| 
 | ||||
| function serializer(replacer, cycleReplacer) { | ||||
|   var stack = [], keys = [] | ||||
| 
 | ||||
|   if (cycleReplacer == null) cycleReplacer = function(key, value) { | ||||
|     if (stack[0] === value) return "[Circular ~]" | ||||
|     return "[Circular ~." + keys.slice(0, stack.indexOf(value)).join(".") + "]" | ||||
|   } | ||||
| 
 | ||||
|   return function(key, value) { | ||||
|     if (stack.length > 0) { | ||||
|       var thisPos = stack.indexOf(this) | ||||
|       ~thisPos ? stack.splice(thisPos + 1) : stack.push(this) | ||||
|       ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key) | ||||
|       if (~stack.indexOf(value)) value = cycleReplacer.call(this, key, value) | ||||
|     } | ||||
|     else stack.push(value) | ||||
| 
 | ||||
|     return replacer == null ? value : replacer.call(this, key, value) | ||||
|   } | ||||
| } | ||||
							
								
								
									
										2
									
								
								node_modules/json-stringify-safe/test/mocha.opts
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								node_modules/json-stringify-safe/test/mocha.opts
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,2 @@ | |||
| --recursive | ||||
| --require must | ||||
							
								
								
									
										246
									
								
								node_modules/json-stringify-safe/test/stringify_test.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										246
									
								
								node_modules/json-stringify-safe/test/stringify_test.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,246 @@ | |||
| var Sinon = require("sinon") | ||||
| var stringify = require("..") | ||||
| function jsonify(obj) { return JSON.stringify(obj, null, 2) } | ||||
| 
 | ||||
| describe("Stringify", function() { | ||||
|   it("must stringify circular objects", function() { | ||||
|     var obj = {name: "Alice"} | ||||
|     obj.self = obj | ||||
|     var json = stringify(obj, null, 2) | ||||
|     json.must.eql(jsonify({name: "Alice", self: "[Circular ~]"})) | ||||
|   }) | ||||
| 
 | ||||
|   it("must stringify circular objects with intermediaries", function() { | ||||
|     var obj = {name: "Alice"} | ||||
|     obj.identity = {self: obj} | ||||
|     var json = stringify(obj, null, 2) | ||||
|     json.must.eql(jsonify({name: "Alice", identity: {self: "[Circular ~]"}})) | ||||
|   }) | ||||
| 
 | ||||
|   it("must stringify circular objects deeper", function() { | ||||
|     var obj = {name: "Alice", child: {name: "Bob"}} | ||||
|     obj.child.self = obj.child | ||||
| 
 | ||||
|     stringify(obj, null, 2).must.eql(jsonify({ | ||||
|       name: "Alice", | ||||
|       child: {name: "Bob", self: "[Circular ~.child]"} | ||||
|     })) | ||||
|   }) | ||||
| 
 | ||||
|   it("must stringify circular objects deeper with intermediaries", function() { | ||||
|     var obj = {name: "Alice", child: {name: "Bob"}} | ||||
|     obj.child.identity = {self: obj.child} | ||||
| 
 | ||||
|     stringify(obj, null, 2).must.eql(jsonify({ | ||||
|       name: "Alice", | ||||
|       child: {name: "Bob", identity: {self: "[Circular ~.child]"}} | ||||
|     })) | ||||
|   }) | ||||
| 
 | ||||
|   it("must stringify circular objects in an array", function() { | ||||
|     var obj = {name: "Alice"} | ||||
|     obj.self = [obj, obj] | ||||
| 
 | ||||
|     stringify(obj, null, 2).must.eql(jsonify({ | ||||
|       name: "Alice", self: ["[Circular ~]", "[Circular ~]"] | ||||
|     })) | ||||
|   }) | ||||
| 
 | ||||
|   it("must stringify circular objects deeper in an array", function() { | ||||
|     var obj = {name: "Alice", children: [{name: "Bob"}, {name: "Eve"}]} | ||||
|     obj.children[0].self = obj.children[0] | ||||
|     obj.children[1].self = obj.children[1] | ||||
| 
 | ||||
|     stringify(obj, null, 2).must.eql(jsonify({ | ||||
|       name: "Alice", | ||||
|       children: [ | ||||
|         {name: "Bob", self: "[Circular ~.children.0]"}, | ||||
|         {name: "Eve", self: "[Circular ~.children.1]"} | ||||
|       ] | ||||
|     })) | ||||
|   }) | ||||
| 
 | ||||
|   it("must stringify circular arrays", function() { | ||||
|     var obj = [] | ||||
|     obj.push(obj) | ||||
|     obj.push(obj) | ||||
|     var json = stringify(obj, null, 2) | ||||
|     json.must.eql(jsonify(["[Circular ~]", "[Circular ~]"])) | ||||
|   }) | ||||
| 
 | ||||
|   it("must stringify circular arrays with intermediaries", function() { | ||||
|     var obj = [] | ||||
|     obj.push({name: "Alice", self: obj}) | ||||
|     obj.push({name: "Bob", self: obj}) | ||||
| 
 | ||||
|     stringify(obj, null, 2).must.eql(jsonify([ | ||||
|       {name: "Alice", self: "[Circular ~]"}, | ||||
|       {name: "Bob", self: "[Circular ~]"} | ||||
|     ])) | ||||
|   }) | ||||
| 
 | ||||
|   it("must stringify repeated objects in objects", function() { | ||||
|     var obj = {} | ||||
|     var alice = {name: "Alice"} | ||||
|     obj.alice1 = alice | ||||
|     obj.alice2 = alice | ||||
| 
 | ||||
|     stringify(obj, null, 2).must.eql(jsonify({ | ||||
|       alice1: {name: "Alice"}, | ||||
|       alice2: {name: "Alice"} | ||||
|     })) | ||||
|   }) | ||||
| 
 | ||||
|   it("must stringify repeated objects in arrays", function() { | ||||
|     var alice = {name: "Alice"} | ||||
|     var obj = [alice, alice] | ||||
|     var json = stringify(obj, null, 2) | ||||
|     json.must.eql(jsonify([{name: "Alice"}, {name: "Alice"}])) | ||||
|   }) | ||||
| 
 | ||||
|   it("must call given decycler and use its output", function() { | ||||
|     var obj = {} | ||||
|     obj.a = obj | ||||
|     obj.b = obj | ||||
| 
 | ||||
|     var decycle = Sinon.spy(function() { return decycle.callCount }) | ||||
|     var json = stringify(obj, null, 2, decycle) | ||||
|     json.must.eql(jsonify({a: 1, b: 2}, null, 2)) | ||||
| 
 | ||||
|     decycle.callCount.must.equal(2) | ||||
|     decycle.thisValues[0].must.equal(obj) | ||||
|     decycle.args[0][0].must.equal("a") | ||||
|     decycle.args[0][1].must.equal(obj) | ||||
|     decycle.thisValues[1].must.equal(obj) | ||||
|     decycle.args[1][0].must.equal("b") | ||||
|     decycle.args[1][1].must.equal(obj) | ||||
|   }) | ||||
| 
 | ||||
|   it("must call replacer and use its output", function() { | ||||
|     var obj = {name: "Alice", child: {name: "Bob"}} | ||||
| 
 | ||||
|     var replacer = Sinon.spy(bangString) | ||||
|     var json = stringify(obj, replacer, 2) | ||||
|     json.must.eql(jsonify({name: "Alice!", child: {name: "Bob!"}})) | ||||
| 
 | ||||
|     replacer.callCount.must.equal(4) | ||||
|     replacer.args[0][0].must.equal("") | ||||
|     replacer.args[0][1].must.equal(obj) | ||||
|     replacer.thisValues[1].must.equal(obj) | ||||
|     replacer.args[1][0].must.equal("name") | ||||
|     replacer.args[1][1].must.equal("Alice") | ||||
|     replacer.thisValues[2].must.equal(obj) | ||||
|     replacer.args[2][0].must.equal("child") | ||||
|     replacer.args[2][1].must.equal(obj.child) | ||||
|     replacer.thisValues[3].must.equal(obj.child) | ||||
|     replacer.args[3][0].must.equal("name") | ||||
|     replacer.args[3][1].must.equal("Bob") | ||||
|   }) | ||||
| 
 | ||||
|   it("must call replacer after describing circular references", function() { | ||||
|     var obj = {name: "Alice"} | ||||
|     obj.self = obj | ||||
| 
 | ||||
|     var replacer = Sinon.spy(bangString) | ||||
|     var json = stringify(obj, replacer, 2) | ||||
|     json.must.eql(jsonify({name: "Alice!", self: "[Circular ~]!"})) | ||||
| 
 | ||||
|     replacer.callCount.must.equal(3) | ||||
|     replacer.args[0][0].must.equal("") | ||||
|     replacer.args[0][1].must.equal(obj) | ||||
|     replacer.thisValues[1].must.equal(obj) | ||||
|     replacer.args[1][0].must.equal("name") | ||||
|     replacer.args[1][1].must.equal("Alice") | ||||
|     replacer.thisValues[2].must.equal(obj) | ||||
|     replacer.args[2][0].must.equal("self") | ||||
|     replacer.args[2][1].must.equal("[Circular ~]") | ||||
|   }) | ||||
| 
 | ||||
|   it("must call given decycler and use its output for nested objects", | ||||
|     function() { | ||||
|     var obj = {} | ||||
|     obj.a = obj | ||||
|     obj.b = {self: obj} | ||||
| 
 | ||||
|     var decycle = Sinon.spy(function() { return decycle.callCount }) | ||||
|     var json = stringify(obj, null, 2, decycle) | ||||
|     json.must.eql(jsonify({a: 1, b: {self: 2}})) | ||||
| 
 | ||||
|     decycle.callCount.must.equal(2) | ||||
|     decycle.args[0][0].must.equal("a") | ||||
|     decycle.args[0][1].must.equal(obj) | ||||
|     decycle.args[1][0].must.equal("self") | ||||
|     decycle.args[1][1].must.equal(obj) | ||||
|   }) | ||||
| 
 | ||||
|   it("must use decycler's output when it returned null", function() { | ||||
|     var obj = {a: "b"} | ||||
|     obj.self = obj | ||||
|     obj.selves = [obj, obj] | ||||
| 
 | ||||
|     function decycle() { return null } | ||||
|     stringify(obj, null, 2, decycle).must.eql(jsonify({ | ||||
|       a: "b", | ||||
|       self: null, | ||||
|       selves: [null, null] | ||||
|     })) | ||||
|   }) | ||||
| 
 | ||||
|   it("must use decycler's output when it returned undefined", function() { | ||||
|     var obj = {a: "b"} | ||||
|     obj.self = obj | ||||
|     obj.selves = [obj, obj] | ||||
| 
 | ||||
|     function decycle() {} | ||||
|     stringify(obj, null, 2, decycle).must.eql(jsonify({ | ||||
|       a: "b", | ||||
|       selves: [null, null] | ||||
|     })) | ||||
|   }) | ||||
| 
 | ||||
|   it("must throw given a decycler that returns a cycle", function() { | ||||
|     var obj = {} | ||||
|     obj.self = obj | ||||
|     var err | ||||
|     function identity(key, value) { return value } | ||||
|     try { stringify(obj, null, 2, identity) } catch (ex) { err = ex } | ||||
|     err.must.be.an.instanceof(TypeError) | ||||
|   }) | ||||
| 
 | ||||
|   describe(".getSerialize", function() { | ||||
|     it("must stringify circular objects", function() { | ||||
|       var obj = {a: "b"} | ||||
|       obj.circularRef = obj | ||||
|       obj.list = [obj, obj] | ||||
| 
 | ||||
|       var json = JSON.stringify(obj, stringify.getSerialize(), 2) | ||||
|       json.must.eql(jsonify({ | ||||
|         "a": "b", | ||||
|         "circularRef": "[Circular ~]", | ||||
|         "list": ["[Circular ~]", "[Circular ~]"] | ||||
|       })) | ||||
|     }) | ||||
| 
 | ||||
|     // This is the behavior as of Mar 3, 2015.
 | ||||
|     // The serializer function keeps state inside the returned function and
 | ||||
|     // so far I'm not sure how to not do that. JSON.stringify's replacer is not
 | ||||
|     // called _after_ serialization.
 | ||||
|     xit("must return a function that could be called twice", function() { | ||||
|       var obj = {name: "Alice"} | ||||
|       obj.self = obj | ||||
| 
 | ||||
|       var json | ||||
|       var serializer = stringify.getSerialize() | ||||
| 
 | ||||
|       json = JSON.stringify(obj, serializer, 2) | ||||
|       json.must.eql(jsonify({name: "Alice", self: "[Circular ~]"})) | ||||
| 
 | ||||
|       json = JSON.stringify(obj, serializer, 2) | ||||
|       json.must.eql(jsonify({name: "Alice", self: "[Circular ~]"})) | ||||
|     }) | ||||
|   }) | ||||
| }) | ||||
| 
 | ||||
| function bangString(key, value) { | ||||
|   return typeof value == "string" ? value + "!" : value | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue