first commit
This commit is contained in:
		
							
								
								
									
										47
									
								
								node_modules/buffercursor/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								node_modules/buffercursor/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,47 @@ | ||||
| BufferCursor | ||||
| ============ | ||||
|  | ||||
| This is a simple module that allows you to traverse a Buffer iteratively. You | ||||
| can read and write different types and the cursor's position will update with | ||||
| the proper size, which you can see through `.tell()` you can also | ||||
| `.seek()` | ||||
|  | ||||
| ```javascript | ||||
| var bc = new BufferCursor(buffer); | ||||
| bc.readUInt16BE(); | ||||
| bc.readUInt8(); | ||||
| bc.readUInt32BE(); | ||||
| console.log(bc.tell()); | ||||
| ``` | ||||
|  | ||||
| Will output `7` | ||||
|  | ||||
| Methods | ||||
| ------- | ||||
|  | ||||
| For the most part `BufferCursor` and `Buffer` share the same methods, there's | ||||
| just a slight alteration in method signature, none of the methods take an | ||||
| offset. | ||||
|  | ||||
| So `.readUInt16LE(10)` in `Buffer` is equivalent to `bs.seek(10); bs.readUInt16LE();` | ||||
|  | ||||
| All `read[U]Int` and `write[U]Int` methods are reproduced, as are `toString`, | ||||
| `write`, `fill`, and `slice`. All of these methods will move the cursor through | ||||
| the stream and do not take an offset parameter, where an `end` parameter would | ||||
| normaly be used, here you supply a `length`. | ||||
|  | ||||
| The following are additional methods: | ||||
|  | ||||
|  * `seek(value)` -- Seek to an arbitrary position in the stream | ||||
|  * `tell()` -- Return the current location in the stream | ||||
|  * `eof()` -- Return true if at the end of the stream | ||||
|  * `toByteArray([method])` -- This is a special helper method which will return | ||||
| the *entire* stream (i.e. from the start) as an array of numbers. | ||||
|   - By default it will use `readUInt8` but you can pass in any | ||||
| `read[U]Int[8,16,32][LE,BE]` to change what the array is made of | ||||
|  | ||||
| Properties | ||||
| ---------- | ||||
|  | ||||
|  * `.buffer` -- Access to the raw buffer | ||||
|  * `.length` -- The size of the buffer | ||||
							
								
								
									
										388
									
								
								node_modules/buffercursor/buffercursor.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										388
									
								
								node_modules/buffercursor/buffercursor.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,388 @@ | ||||
| // Copyright 2012 Timothy J Fontaine <tjfontaine@gmail.com> | ||||
| // | ||||
| // Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| // of this software and associated documentation files (the "Software"), to deal | ||||
| // in the Software without restriction, including without limitation the rights | ||||
| // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| // copies of the Software, and to permit persons to whom the Software is | ||||
| // furnished to do so, subject to the following conditions: | ||||
| // | ||||
| // The above copyright notice and this permission notice shall be included in | ||||
| // all copies or substantial portions of the Software. | ||||
| // | ||||
| // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||
| // THE SOFTWARE | ||||
|  | ||||
| var util = require('util'); | ||||
| var VError = require('verror'); | ||||
|  | ||||
| var BufferCursor = module.exports = function(buff, noAssert) { | ||||
|   if (!(this instanceof BufferCursor)) | ||||
|     return new BufferCursor(buff, noAssert); | ||||
|  | ||||
|   this._pos = 0; | ||||
|  | ||||
|   this._noAssert = noAssert; | ||||
|  | ||||
|   if (this._noAssert === undefined) | ||||
|     this._noAssert = true; | ||||
|  | ||||
|   this.buffer = buff; | ||||
|   this.length = buff.length; | ||||
| }; | ||||
|  | ||||
| var BCO = BufferCursor.BufferCursorOverflow = function(length, pos, size) { | ||||
|   this.kind = 'BufferCursorOverflow'; | ||||
|   this.length = length; | ||||
|   this.position = pos; | ||||
|   this.size = size; | ||||
|   VError.call(this, | ||||
|               'BufferCursorOverflow: length %d, position %d, size %d', | ||||
|               length, | ||||
|               pos, | ||||
|               size); | ||||
| }; | ||||
| util.inherits(BCO, VError); | ||||
|  | ||||
| BufferCursor.prototype._move = function(step) { | ||||
|   this._checkWrite(step); | ||||
|   this._pos += step; | ||||
| }; | ||||
|  | ||||
| BufferCursor.prototype._checkWrite = function(size) { | ||||
|   var shouldThrow = false; | ||||
|  | ||||
|   var length = this.length; | ||||
|   var pos = this._pos; | ||||
|  | ||||
|   if (size > length) | ||||
|     shouldThrow = true; | ||||
|  | ||||
|   if (length - pos < size) | ||||
|     shouldThrow = true; | ||||
|  | ||||
|   if (shouldThrow) { | ||||
|     var bco = new BCO(length, | ||||
|                       pos, | ||||
|                       size); | ||||
|     throw bco; | ||||
|   } | ||||
| } | ||||
|  | ||||
| BufferCursor.prototype.seek = function(pos) { | ||||
|   if (pos < 0) | ||||
|     throw new VError(new RangeError('Cannot seek before start of buffer'), | ||||
|                      'Negative seek values not allowed: %d', pos); | ||||
|  | ||||
|   if (pos > this.length) | ||||
|     throw new VError(new RangeError('Trying to seek beyond buffer'), | ||||
|                      'Requested %d position is beyond length %d', | ||||
|                      pos, this.length); | ||||
|  | ||||
|   this._pos = pos; | ||||
|   return this; | ||||
| }; | ||||
|  | ||||
| BufferCursor.prototype.eof = function() { | ||||
|   return this._pos == this.length; | ||||
| }; | ||||
|  | ||||
| BufferCursor.prototype.toByteArray = function(method) { | ||||
|   var arr = [], i, part, count; | ||||
|  | ||||
|   if (!method) { | ||||
|     method = 'readUInt8'; | ||||
|     part = 1; | ||||
|   } | ||||
|  | ||||
|   if (method.indexOf('16') > 0) | ||||
|     part = 2; | ||||
|   else if (method.indexOf('32') > 0) | ||||
|     part = 4; | ||||
|  | ||||
|   count = this.length / part; | ||||
|  | ||||
|   for (i = 0; i < this.buffer.length; i += part) { | ||||
|     arr.push(this.buffer[method](i)); | ||||
|   } | ||||
|   return arr; | ||||
| }; | ||||
|  | ||||
| BufferCursor.prototype.tell = function() { | ||||
|   return this._pos; | ||||
| }; | ||||
|  | ||||
| BufferCursor.prototype.slice = function(length) { | ||||
|   var end, b; | ||||
|  | ||||
|   if (length === undefined) { | ||||
|     end = this.length; | ||||
|   } else { | ||||
|     end = this._pos + length; | ||||
|   } | ||||
|  | ||||
|   b = new BufferCursor(this.buffer.slice(this._pos, end)); | ||||
|   this.seek(end); | ||||
|  | ||||
|   return b; | ||||
| }; | ||||
|  | ||||
| BufferCursor.prototype.toString = function(encoding, length) { | ||||
|   var end, ret; | ||||
|  | ||||
|   if (length === undefined) { | ||||
|     end = this.length; | ||||
|   } else { | ||||
|     end = this._pos + length; | ||||
|   } | ||||
|  | ||||
|   if (!encoding) { | ||||
|     encoding = 'utf8'; | ||||
|   } | ||||
|  | ||||
|   ret = this.buffer.toString(encoding, this._pos, end); | ||||
|   this.seek(end); | ||||
|   return ret; | ||||
| }; | ||||
|  | ||||
| // This method doesn't need to _checkWrite because Buffer implicitly truncates | ||||
| // to the length of the buffer, it's the only method in Node core that behaves | ||||
| // this way by default | ||||
| BufferCursor.prototype.write = function(value, length, encoding) { | ||||
|   var end, ret; | ||||
|  | ||||
|   ret = this.buffer.write(value, this._pos, length, encoding); | ||||
|   this._move(ret); | ||||
|   return this; | ||||
| }; | ||||
|  | ||||
| BufferCursor.prototype.fill = function(value, length) { | ||||
|   var end; | ||||
|  | ||||
|   if (length === undefined) { | ||||
|     end = this.length; | ||||
|   } else { | ||||
|     end = this._pos + length; | ||||
|   } | ||||
|  | ||||
|   this._checkWrite(end - this._pos); | ||||
|  | ||||
|   this.buffer.fill(value, this._pos, end); | ||||
|   this.seek(end); | ||||
|   return this; | ||||
| }; | ||||
|  | ||||
| // This prototype is not entirely like the upstream Buffer.copy, instead it | ||||
| // is the target buffer, and accepts the source buffer -- since the target | ||||
| // buffer knows its starting position | ||||
| BufferCursor.prototype.copy = function copy(source, sourceStart, sourceEnd) { | ||||
|   var sBC = source instanceof BufferCursor; | ||||
|  | ||||
|   if (isNaN(sourceEnd)) | ||||
|     sourceEnd = source.length; | ||||
|  | ||||
|   if (isNaN(sourceStart)) { | ||||
|     if (sBC) | ||||
|       sourceStart = source._pos; | ||||
|     else | ||||
|       sourceStart = 0; | ||||
|   } | ||||
|  | ||||
|   var length = sourceEnd - sourceStart; | ||||
|  | ||||
|   this._checkWrite(length); | ||||
|  | ||||
|   var buf = sBC ? source.buffer : source; | ||||
|  | ||||
|   buf.copy(this.buffer, this._pos, sourceStart, sourceEnd); | ||||
|  | ||||
|   this._move(length); | ||||
|   return this; | ||||
| }; | ||||
|  | ||||
| BufferCursor.prototype.readUInt8 = function() { | ||||
|   var ret = this.buffer.readUInt8(this._pos, this._noAssert); | ||||
|   this._move(1); | ||||
|   return ret; | ||||
| }; | ||||
|  | ||||
| BufferCursor.prototype.readInt8 = function() { | ||||
|   var ret = this.buffer.readInt8(this._pos, this._noAssert); | ||||
|   this._move(1); | ||||
|   return ret; | ||||
| }; | ||||
|  | ||||
| BufferCursor.prototype.readInt16BE = function() { | ||||
|   var ret = this.buffer.readInt16BE(this._pos, this._noAssert); | ||||
|   this._move(2); | ||||
|   return ret; | ||||
| }; | ||||
|  | ||||
| BufferCursor.prototype.readInt16LE = function() { | ||||
|   var ret = this.buffer.readInt16LE(this._pos, this._noAssert); | ||||
|   this._move(2); | ||||
|   return ret; | ||||
| }; | ||||
|  | ||||
| BufferCursor.prototype.readUInt16BE = function() { | ||||
|   var ret = this.buffer.readUInt16BE(this._pos, this._noAssert); | ||||
|   this._move(2); | ||||
|   return ret; | ||||
| }; | ||||
|  | ||||
| BufferCursor.prototype.readUInt16LE = function() { | ||||
|   var ret = this.buffer.readUInt16LE(this._pos, this._noAssert); | ||||
|   this._move(2); | ||||
|   return ret; | ||||
| }; | ||||
|  | ||||
| BufferCursor.prototype.readUInt32LE = function() { | ||||
|   var ret = this.buffer.readUInt32LE(this._pos, this._noAssert); | ||||
|   this._move(4); | ||||
|   return ret; | ||||
| }; | ||||
|  | ||||
| BufferCursor.prototype.readUInt32BE = function() { | ||||
|   var ret = this.buffer.readUInt32BE(this._pos, this._noAssert); | ||||
|   this._move(4); | ||||
|   return ret; | ||||
| }; | ||||
|  | ||||
| BufferCursor.prototype.readInt32LE = function() { | ||||
|   var ret = this.buffer.readInt32LE(this._pos, this._noAssert); | ||||
|   this._move(4); | ||||
|   return ret; | ||||
| }; | ||||
|  | ||||
| BufferCursor.prototype.readInt32BE = function() { | ||||
|   var ret = this.buffer.readInt32BE(this._pos, this._noAssert); | ||||
|   this._move(4); | ||||
|   return ret; | ||||
| }; | ||||
|  | ||||
| BufferCursor.prototype.readFloatBE = function() { | ||||
|   var ret = this.buffer.readFloatBE(this._pos, this._noAssert); | ||||
|   this._move(4); | ||||
|   return ret; | ||||
| }; | ||||
|  | ||||
| BufferCursor.prototype.readFloatLE = function() { | ||||
|   var ret = this.buffer.readFloatLE(this._pos, this._noAssert); | ||||
|   this._move(4); | ||||
|   return ret; | ||||
| }; | ||||
|  | ||||
| BufferCursor.prototype.readDoubleBE = function() { | ||||
|   var ret = this.buffer.readDoubleBE(this._pos, this._noAssert); | ||||
|   this._move(8); | ||||
|   return ret; | ||||
| }; | ||||
|  | ||||
| BufferCursor.prototype.readDoubleLE = function() { | ||||
|   var ret = this.buffer.readDoubleLE(this._pos, this._noAssert); | ||||
|   this._move(8); | ||||
|   return ret; | ||||
| }; | ||||
|  | ||||
| BufferCursor.prototype.writeUInt8 = function(value) { | ||||
|   this._checkWrite(1); | ||||
|   this.buffer.writeUInt8(value, this._pos, this._noAssert); | ||||
|   this._move(1); | ||||
|   return this; | ||||
| }; | ||||
|  | ||||
| BufferCursor.prototype.writeInt8 = function(value) { | ||||
|   this._checkWrite(1); | ||||
|   this.buffer.writeInt8(value, this._pos, this._noAssert); | ||||
|   this._move(1); | ||||
|   return this; | ||||
| }; | ||||
|  | ||||
| BufferCursor.prototype.writeUInt16BE = function(value) { | ||||
|   this._checkWrite(2); | ||||
|   this.buffer.writeUInt16BE(value, this._pos, this._noAssert); | ||||
|   this._move(2); | ||||
|   return this; | ||||
| }; | ||||
|  | ||||
| BufferCursor.prototype.writeUInt16LE = function(value) { | ||||
|   this._checkWrite(2); | ||||
|   this.buffer.writeUInt16LE(value, this._pos, this._noAssert); | ||||
|   this._move(2); | ||||
|   return this; | ||||
| }; | ||||
|  | ||||
| BufferCursor.prototype.writeInt16BE = function(value) { | ||||
|   this._checkWrite(2); | ||||
|   this.buffer.writeInt16BE(value, this._pos, this._noAssert); | ||||
|   this._move(2); | ||||
|   return this; | ||||
| }; | ||||
|  | ||||
| BufferCursor.prototype.writeInt16LE = function(value) { | ||||
|   this._checkWrite(2); | ||||
|   this.buffer.writeInt16LE(value, this._pos, this._noAssert); | ||||
|   this._move(2); | ||||
|   return this; | ||||
| }; | ||||
|  | ||||
| BufferCursor.prototype.writeUInt32BE = function(value) { | ||||
|   this._checkWrite(4); | ||||
|   this.buffer.writeUInt32BE(value, this._pos, this._noAssert); | ||||
|   this._move(4); | ||||
|   return this; | ||||
| }; | ||||
|  | ||||
| BufferCursor.prototype.writeUInt32LE = function(value) { | ||||
|   this._checkWrite(4); | ||||
|   this.buffer.writeUInt32LE(value, this._pos, this._noAssert); | ||||
|   this._move(4); | ||||
|   return this; | ||||
| }; | ||||
|  | ||||
| BufferCursor.prototype.writeInt32BE = function(value) { | ||||
|   this._checkWrite(4); | ||||
|   this.buffer.writeInt32BE(value, this._pos, this._noAssert); | ||||
|   this._move(4); | ||||
|   return this; | ||||
| }; | ||||
|  | ||||
| BufferCursor.prototype.writeInt32LE = function(value) { | ||||
|   this._checkWrite(4); | ||||
|   this.buffer.writeInt32LE(value, this._pos, this._noAssert); | ||||
|   this._move(4); | ||||
|   return this; | ||||
| }; | ||||
|  | ||||
| BufferCursor.prototype.writeFloatBE = function(value) { | ||||
|   this._checkWrite(4); | ||||
|   this.buffer.writeFloatBE(value, this._pos, this._noAssert); | ||||
|   this._move(4); | ||||
|   return this; | ||||
| }; | ||||
|  | ||||
| BufferCursor.prototype.writeFloatLE = function(value) { | ||||
|   this._checkWrite(4); | ||||
|   this.buffer.writeFloatLE(value, this._pos, this._noAssert); | ||||
|   this._move(4); | ||||
|   return this; | ||||
| }; | ||||
|  | ||||
| BufferCursor.prototype.writeDoubleBE = function(value) { | ||||
|   this._checkWrite(8); | ||||
|   this.buffer.writeDoubleBE(value, this._pos, this._noAssert); | ||||
|   this._move(8); | ||||
|   return this; | ||||
| }; | ||||
|  | ||||
| BufferCursor.prototype.writeDoubleLE = function(value) { | ||||
|   this._checkWrite(8); | ||||
|   this.buffer.writeDoubleLE(value, this._pos, this._noAssert); | ||||
|   this._move(8); | ||||
|   return this; | ||||
| }; | ||||
							
								
								
									
										26
									
								
								node_modules/buffercursor/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								node_modules/buffercursor/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,26 @@ | ||||
| { | ||||
|   "name": "buffercursor", | ||||
|   "version": "0.0.12", | ||||
|   "author": "Timothy J Fontaine <tjfontaine@gmail.com> (http://atxconsulting.com)", | ||||
|   "description": "A simple way to traverse a Buffer like a cursor, updating position along the way", | ||||
|   "keywords": [ | ||||
|     "buffer", | ||||
|     "cursor", | ||||
|     "stream" | ||||
|   ], | ||||
|   "homepage": "http://github.com/tjfontaine/node-buffercursor", | ||||
|   "bugs": { | ||||
|     "url": "http://github.com/tjfontaine/node-buffercursor/issues" | ||||
|   }, | ||||
|   "repository": { | ||||
|     "type": "git", | ||||
|     "url": "http://github.com/tjfontaine/node-buffercursor.git" | ||||
|   }, | ||||
|   "main": "buffercursor.js", | ||||
|   "engines": { | ||||
|     "node": ">= 0.5.0" | ||||
|   }, | ||||
|   "dependencies": { | ||||
|     "verror": "^1.4.0" | ||||
|   } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user