mirror of
https://github.com/musix-org/musix-oss
synced 2025-06-16 22:06:01 +00:00
Modules
This commit is contained in:
4
node_modules/typedarray/.travis.yml
generated
vendored
Normal file
4
node_modules/typedarray/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- "0.8"
|
||||
- "0.10"
|
35
node_modules/typedarray/LICENSE
generated
vendored
Normal file
35
node_modules/typedarray/LICENSE
generated
vendored
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
Copyright (c) 2010, Linden Research, Inc.
|
||||
Copyright (c) 2012, Joshua Bell
|
||||
|
||||
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.
|
||||
$/LicenseInfo$
|
||||
*/
|
||||
|
||||
// Original can be found at:
|
||||
// https://bitbucket.org/lindenlab/llsd
|
||||
// Modifications by Joshua Bell inexorabletash@gmail.com
|
||||
// https://github.com/inexorabletash/polyfill
|
||||
|
||||
// ES3/ES5 implementation of the Krhonos Typed Array Specification
|
||||
// Ref: http://www.khronos.org/registry/typedarray/specs/latest/
|
||||
// Date: 2011-02-01
|
||||
//
|
||||
// Variations:
|
||||
// * Allows typed_array.get/set() as alias for subscripts (typed_array[])
|
4
node_modules/typedarray/example/tarray.js
generated
vendored
Normal file
4
node_modules/typedarray/example/tarray.js
generated
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
var Uint8Array = require('../').Uint8Array;
|
||||
var ua = new Uint8Array(5);
|
||||
ua[1] = 256 + 55;
|
||||
console.log(ua[1]);
|
630
node_modules/typedarray/index.js
generated
vendored
Normal file
630
node_modules/typedarray/index.js
generated
vendored
Normal file
@ -0,0 +1,630 @@
|
||||
var undefined = (void 0); // Paranoia
|
||||
|
||||
// Beyond this value, index getters/setters (i.e. array[0], array[1]) are so slow to
|
||||
// create, and consume so much memory, that the browser appears frozen.
|
||||
var MAX_ARRAY_LENGTH = 1e5;
|
||||
|
||||
// Approximations of internal ECMAScript conversion functions
|
||||
var ECMAScript = (function() {
|
||||
// Stash a copy in case other scripts modify these
|
||||
var opts = Object.prototype.toString,
|
||||
ophop = Object.prototype.hasOwnProperty;
|
||||
|
||||
return {
|
||||
// Class returns internal [[Class]] property, used to avoid cross-frame instanceof issues:
|
||||
Class: function(v) { return opts.call(v).replace(/^\[object *|\]$/g, ''); },
|
||||
HasProperty: function(o, p) { return p in o; },
|
||||
HasOwnProperty: function(o, p) { return ophop.call(o, p); },
|
||||
IsCallable: function(o) { return typeof o === 'function'; },
|
||||
ToInt32: function(v) { return v >> 0; },
|
||||
ToUint32: function(v) { return v >>> 0; }
|
||||
};
|
||||
}());
|
||||
|
||||
// Snapshot intrinsics
|
||||
var LN2 = Math.LN2,
|
||||
abs = Math.abs,
|
||||
floor = Math.floor,
|
||||
log = Math.log,
|
||||
min = Math.min,
|
||||
pow = Math.pow,
|
||||
round = Math.round;
|
||||
|
||||
// ES5: lock down object properties
|
||||
function configureProperties(obj) {
|
||||
if (getOwnPropNames && defineProp) {
|
||||
var props = getOwnPropNames(obj), i;
|
||||
for (i = 0; i < props.length; i += 1) {
|
||||
defineProp(obj, props[i], {
|
||||
value: obj[props[i]],
|
||||
writable: false,
|
||||
enumerable: false,
|
||||
configurable: false
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// emulate ES5 getter/setter API using legacy APIs
|
||||
// http://blogs.msdn.com/b/ie/archive/2010/09/07/transitioning-existing-code-to-the-es5-getter-setter-apis.aspx
|
||||
// (second clause tests for Object.defineProperty() in IE<9 that only supports extending DOM prototypes, but
|
||||
// note that IE<9 does not support __defineGetter__ or __defineSetter__ so it just renders the method harmless)
|
||||
var defineProp
|
||||
if (Object.defineProperty && (function() {
|
||||
try {
|
||||
Object.defineProperty({}, 'x', {});
|
||||
return true;
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
})()) {
|
||||
defineProp = Object.defineProperty;
|
||||
} else {
|
||||
defineProp = function(o, p, desc) {
|
||||
if (!o === Object(o)) throw new TypeError("Object.defineProperty called on non-object");
|
||||
if (ECMAScript.HasProperty(desc, 'get') && Object.prototype.__defineGetter__) { Object.prototype.__defineGetter__.call(o, p, desc.get); }
|
||||
if (ECMAScript.HasProperty(desc, 'set') && Object.prototype.__defineSetter__) { Object.prototype.__defineSetter__.call(o, p, desc.set); }
|
||||
if (ECMAScript.HasProperty(desc, 'value')) { o[p] = desc.value; }
|
||||
return o;
|
||||
};
|
||||
}
|
||||
|
||||
var getOwnPropNames = Object.getOwnPropertyNames || function (o) {
|
||||
if (o !== Object(o)) throw new TypeError("Object.getOwnPropertyNames called on non-object");
|
||||
var props = [], p;
|
||||
for (p in o) {
|
||||
if (ECMAScript.HasOwnProperty(o, p)) {
|
||||
props.push(p);
|
||||
}
|
||||
}
|
||||
return props;
|
||||
};
|
||||
|
||||
// ES5: Make obj[index] an alias for obj._getter(index)/obj._setter(index, value)
|
||||
// for index in 0 ... obj.length
|
||||
function makeArrayAccessors(obj) {
|
||||
if (!defineProp) { return; }
|
||||
|
||||
if (obj.length > MAX_ARRAY_LENGTH) throw new RangeError("Array too large for polyfill");
|
||||
|
||||
function makeArrayAccessor(index) {
|
||||
defineProp(obj, index, {
|
||||
'get': function() { return obj._getter(index); },
|
||||
'set': function(v) { obj._setter(index, v); },
|
||||
enumerable: true,
|
||||
configurable: false
|
||||
});
|
||||
}
|
||||
|
||||
var i;
|
||||
for (i = 0; i < obj.length; i += 1) {
|
||||
makeArrayAccessor(i);
|
||||
}
|
||||
}
|
||||
|
||||
// Internal conversion functions:
|
||||
// pack<Type>() - take a number (interpreted as Type), output a byte array
|
||||
// unpack<Type>() - take a byte array, output a Type-like number
|
||||
|
||||
function as_signed(value, bits) { var s = 32 - bits; return (value << s) >> s; }
|
||||
function as_unsigned(value, bits) { var s = 32 - bits; return (value << s) >>> s; }
|
||||
|
||||
function packI8(n) { return [n & 0xff]; }
|
||||
function unpackI8(bytes) { return as_signed(bytes[0], 8); }
|
||||
|
||||
function packU8(n) { return [n & 0xff]; }
|
||||
function unpackU8(bytes) { return as_unsigned(bytes[0], 8); }
|
||||
|
||||
function packU8Clamped(n) { n = round(Number(n)); return [n < 0 ? 0 : n > 0xff ? 0xff : n & 0xff]; }
|
||||
|
||||
function packI16(n) { return [(n >> 8) & 0xff, n & 0xff]; }
|
||||
function unpackI16(bytes) { return as_signed(bytes[0] << 8 | bytes[1], 16); }
|
||||
|
||||
function packU16(n) { return [(n >> 8) & 0xff, n & 0xff]; }
|
||||
function unpackU16(bytes) { return as_unsigned(bytes[0] << 8 | bytes[1], 16); }
|
||||
|
||||
function packI32(n) { return [(n >> 24) & 0xff, (n >> 16) & 0xff, (n >> 8) & 0xff, n & 0xff]; }
|
||||
function unpackI32(bytes) { return as_signed(bytes[0] << 24 | bytes[1] << 16 | bytes[2] << 8 | bytes[3], 32); }
|
||||
|
||||
function packU32(n) { return [(n >> 24) & 0xff, (n >> 16) & 0xff, (n >> 8) & 0xff, n & 0xff]; }
|
||||
function unpackU32(bytes) { return as_unsigned(bytes[0] << 24 | bytes[1] << 16 | bytes[2] << 8 | bytes[3], 32); }
|
||||
|
||||
function packIEEE754(v, ebits, fbits) {
|
||||
|
||||
var bias = (1 << (ebits - 1)) - 1,
|
||||
s, e, f, ln,
|
||||
i, bits, str, bytes;
|
||||
|
||||
function roundToEven(n) {
|
||||
var w = floor(n), f = n - w;
|
||||
if (f < 0.5)
|
||||
return w;
|
||||
if (f > 0.5)
|
||||
return w + 1;
|
||||
return w % 2 ? w + 1 : w;
|
||||
}
|
||||
|
||||
// Compute sign, exponent, fraction
|
||||
if (v !== v) {
|
||||
// NaN
|
||||
// http://dev.w3.org/2006/webapi/WebIDL/#es-type-mapping
|
||||
e = (1 << ebits) - 1; f = pow(2, fbits - 1); s = 0;
|
||||
} else if (v === Infinity || v === -Infinity) {
|
||||
e = (1 << ebits) - 1; f = 0; s = (v < 0) ? 1 : 0;
|
||||
} else if (v === 0) {
|
||||
e = 0; f = 0; s = (1 / v === -Infinity) ? 1 : 0;
|
||||
} else {
|
||||
s = v < 0;
|
||||
v = abs(v);
|
||||
|
||||
if (v >= pow(2, 1 - bias)) {
|
||||
e = min(floor(log(v) / LN2), 1023);
|
||||
f = roundToEven(v / pow(2, e) * pow(2, fbits));
|
||||
if (f / pow(2, fbits) >= 2) {
|
||||
e = e + 1;
|
||||
f = 1;
|
||||
}
|
||||
if (e > bias) {
|
||||
// Overflow
|
||||
e = (1 << ebits) - 1;
|
||||
f = 0;
|
||||
} else {
|
||||
// Normalized
|
||||
e = e + bias;
|
||||
f = f - pow(2, fbits);
|
||||
}
|
||||
} else {
|
||||
// Denormalized
|
||||
e = 0;
|
||||
f = roundToEven(v / pow(2, 1 - bias - fbits));
|
||||
}
|
||||
}
|
||||
|
||||
// Pack sign, exponent, fraction
|
||||
bits = [];
|
||||
for (i = fbits; i; i -= 1) { bits.push(f % 2 ? 1 : 0); f = floor(f / 2); }
|
||||
for (i = ebits; i; i -= 1) { bits.push(e % 2 ? 1 : 0); e = floor(e / 2); }
|
||||
bits.push(s ? 1 : 0);
|
||||
bits.reverse();
|
||||
str = bits.join('');
|
||||
|
||||
// Bits to bytes
|
||||
bytes = [];
|
||||
while (str.length) {
|
||||
bytes.push(parseInt(str.substring(0, 8), 2));
|
||||
str = str.substring(8);
|
||||
}
|
||||
return bytes;
|
||||
}
|
||||
|
||||
function unpackIEEE754(bytes, ebits, fbits) {
|
||||
|
||||
// Bytes to bits
|
||||
var bits = [], i, j, b, str,
|
||||
bias, s, e, f;
|
||||
|
||||
for (i = bytes.length; i; i -= 1) {
|
||||
b = bytes[i - 1];
|
||||
for (j = 8; j; j -= 1) {
|
||||
bits.push(b % 2 ? 1 : 0); b = b >> 1;
|
||||
}
|
||||
}
|
||||
bits.reverse();
|
||||
str = bits.join('');
|
||||
|
||||
// Unpack sign, exponent, fraction
|
||||
bias = (1 << (ebits - 1)) - 1;
|
||||
s = parseInt(str.substring(0, 1), 2) ? -1 : 1;
|
||||
e = parseInt(str.substring(1, 1 + ebits), 2);
|
||||
f = parseInt(str.substring(1 + ebits), 2);
|
||||
|
||||
// Produce number
|
||||
if (e === (1 << ebits) - 1) {
|
||||
return f !== 0 ? NaN : s * Infinity;
|
||||
} else if (e > 0) {
|
||||
// Normalized
|
||||
return s * pow(2, e - bias) * (1 + f / pow(2, fbits));
|
||||
} else if (f !== 0) {
|
||||
// Denormalized
|
||||
return s * pow(2, -(bias - 1)) * (f / pow(2, fbits));
|
||||
} else {
|
||||
return s < 0 ? -0 : 0;
|
||||
}
|
||||
}
|
||||
|
||||
function unpackF64(b) { return unpackIEEE754(b, 11, 52); }
|
||||
function packF64(v) { return packIEEE754(v, 11, 52); }
|
||||
function unpackF32(b) { return unpackIEEE754(b, 8, 23); }
|
||||
function packF32(v) { return packIEEE754(v, 8, 23); }
|
||||
|
||||
|
||||
//
|
||||
// 3 The ArrayBuffer Type
|
||||
//
|
||||
|
||||
(function() {
|
||||
|
||||
/** @constructor */
|
||||
var ArrayBuffer = function ArrayBuffer(length) {
|
||||
length = ECMAScript.ToInt32(length);
|
||||
if (length < 0) throw new RangeError('ArrayBuffer size is not a small enough positive integer');
|
||||
|
||||
this.byteLength = length;
|
||||
this._bytes = [];
|
||||
this._bytes.length = length;
|
||||
|
||||
var i;
|
||||
for (i = 0; i < this.byteLength; i += 1) {
|
||||
this._bytes[i] = 0;
|
||||
}
|
||||
|
||||
configureProperties(this);
|
||||
};
|
||||
|
||||
exports.ArrayBuffer = exports.ArrayBuffer || ArrayBuffer;
|
||||
|
||||
//
|
||||
// 4 The ArrayBufferView Type
|
||||
//
|
||||
|
||||
// NOTE: this constructor is not exported
|
||||
/** @constructor */
|
||||
var ArrayBufferView = function ArrayBufferView() {
|
||||
//this.buffer = null;
|
||||
//this.byteOffset = 0;
|
||||
//this.byteLength = 0;
|
||||
};
|
||||
|
||||
//
|
||||
// 5 The Typed Array View Types
|
||||
//
|
||||
|
||||
function makeConstructor(bytesPerElement, pack, unpack) {
|
||||
// Each TypedArray type requires a distinct constructor instance with
|
||||
// identical logic, which this produces.
|
||||
|
||||
var ctor;
|
||||
ctor = function(buffer, byteOffset, length) {
|
||||
var array, sequence, i, s;
|
||||
|
||||
if (!arguments.length || typeof arguments[0] === 'number') {
|
||||
// Constructor(unsigned long length)
|
||||
this.length = ECMAScript.ToInt32(arguments[0]);
|
||||
if (length < 0) throw new RangeError('ArrayBufferView size is not a small enough positive integer');
|
||||
|
||||
this.byteLength = this.length * this.BYTES_PER_ELEMENT;
|
||||
this.buffer = new ArrayBuffer(this.byteLength);
|
||||
this.byteOffset = 0;
|
||||
} else if (typeof arguments[0] === 'object' && arguments[0].constructor === ctor) {
|
||||
// Constructor(TypedArray array)
|
||||
array = arguments[0];
|
||||
|
||||
this.length = array.length;
|
||||
this.byteLength = this.length * this.BYTES_PER_ELEMENT;
|
||||
this.buffer = new ArrayBuffer(this.byteLength);
|
||||
this.byteOffset = 0;
|
||||
|
||||
for (i = 0; i < this.length; i += 1) {
|
||||
this._setter(i, array._getter(i));
|
||||
}
|
||||
} else if (typeof arguments[0] === 'object' &&
|
||||
!(arguments[0] instanceof ArrayBuffer || ECMAScript.Class(arguments[0]) === 'ArrayBuffer')) {
|
||||
// Constructor(sequence<type> array)
|
||||
sequence = arguments[0];
|
||||
|
||||
this.length = ECMAScript.ToUint32(sequence.length);
|
||||
this.byteLength = this.length * this.BYTES_PER_ELEMENT;
|
||||
this.buffer = new ArrayBuffer(this.byteLength);
|
||||
this.byteOffset = 0;
|
||||
|
||||
for (i = 0; i < this.length; i += 1) {
|
||||
s = sequence[i];
|
||||
this._setter(i, Number(s));
|
||||
}
|
||||
} else if (typeof arguments[0] === 'object' &&
|
||||
(arguments[0] instanceof ArrayBuffer || ECMAScript.Class(arguments[0]) === 'ArrayBuffer')) {
|
||||
// Constructor(ArrayBuffer buffer,
|
||||
// optional unsigned long byteOffset, optional unsigned long length)
|
||||
this.buffer = buffer;
|
||||
|
||||
this.byteOffset = ECMAScript.ToUint32(byteOffset);
|
||||
if (this.byteOffset > this.buffer.byteLength) {
|
||||
throw new RangeError("byteOffset out of range");
|
||||
}
|
||||
|
||||
if (this.byteOffset % this.BYTES_PER_ELEMENT) {
|
||||
// The given byteOffset must be a multiple of the element
|
||||
// size of the specific type, otherwise an exception is raised.
|
||||
throw new RangeError("ArrayBuffer length minus the byteOffset is not a multiple of the element size.");
|
||||
}
|
||||
|
||||
if (arguments.length < 3) {
|
||||
this.byteLength = this.buffer.byteLength - this.byteOffset;
|
||||
|
||||
if (this.byteLength % this.BYTES_PER_ELEMENT) {
|
||||
throw new RangeError("length of buffer minus byteOffset not a multiple of the element size");
|
||||
}
|
||||
this.length = this.byteLength / this.BYTES_PER_ELEMENT;
|
||||
} else {
|
||||
this.length = ECMAScript.ToUint32(length);
|
||||
this.byteLength = this.length * this.BYTES_PER_ELEMENT;
|
||||
}
|
||||
|
||||
if ((this.byteOffset + this.byteLength) > this.buffer.byteLength) {
|
||||
throw new RangeError("byteOffset and length reference an area beyond the end of the buffer");
|
||||
}
|
||||
} else {
|
||||
throw new TypeError("Unexpected argument type(s)");
|
||||
}
|
||||
|
||||
this.constructor = ctor;
|
||||
|
||||
configureProperties(this);
|
||||
makeArrayAccessors(this);
|
||||
};
|
||||
|
||||
ctor.prototype = new ArrayBufferView();
|
||||
ctor.prototype.BYTES_PER_ELEMENT = bytesPerElement;
|
||||
ctor.prototype._pack = pack;
|
||||
ctor.prototype._unpack = unpack;
|
||||
ctor.BYTES_PER_ELEMENT = bytesPerElement;
|
||||
|
||||
// getter type (unsigned long index);
|
||||
ctor.prototype._getter = function(index) {
|
||||
if (arguments.length < 1) throw new SyntaxError("Not enough arguments");
|
||||
|
||||
index = ECMAScript.ToUint32(index);
|
||||
if (index >= this.length) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
var bytes = [], i, o;
|
||||
for (i = 0, o = this.byteOffset + index * this.BYTES_PER_ELEMENT;
|
||||
i < this.BYTES_PER_ELEMENT;
|
||||
i += 1, o += 1) {
|
||||
bytes.push(this.buffer._bytes[o]);
|
||||
}
|
||||
return this._unpack(bytes);
|
||||
};
|
||||
|
||||
// NONSTANDARD: convenience alias for getter: type get(unsigned long index);
|
||||
ctor.prototype.get = ctor.prototype._getter;
|
||||
|
||||
// setter void (unsigned long index, type value);
|
||||
ctor.prototype._setter = function(index, value) {
|
||||
if (arguments.length < 2) throw new SyntaxError("Not enough arguments");
|
||||
|
||||
index = ECMAScript.ToUint32(index);
|
||||
if (index >= this.length) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
var bytes = this._pack(value), i, o;
|
||||
for (i = 0, o = this.byteOffset + index * this.BYTES_PER_ELEMENT;
|
||||
i < this.BYTES_PER_ELEMENT;
|
||||
i += 1, o += 1) {
|
||||
this.buffer._bytes[o] = bytes[i];
|
||||
}
|
||||
};
|
||||
|
||||
// void set(TypedArray array, optional unsigned long offset);
|
||||
// void set(sequence<type> array, optional unsigned long offset);
|
||||
ctor.prototype.set = function(index, value) {
|
||||
if (arguments.length < 1) throw new SyntaxError("Not enough arguments");
|
||||
var array, sequence, offset, len,
|
||||
i, s, d,
|
||||
byteOffset, byteLength, tmp;
|
||||
|
||||
if (typeof arguments[0] === 'object' && arguments[0].constructor === this.constructor) {
|
||||
// void set(TypedArray array, optional unsigned long offset);
|
||||
array = arguments[0];
|
||||
offset = ECMAScript.ToUint32(arguments[1]);
|
||||
|
||||
if (offset + array.length > this.length) {
|
||||
throw new RangeError("Offset plus length of array is out of range");
|
||||
}
|
||||
|
||||
byteOffset = this.byteOffset + offset * this.BYTES_PER_ELEMENT;
|
||||
byteLength = array.length * this.BYTES_PER_ELEMENT;
|
||||
|
||||
if (array.buffer === this.buffer) {
|
||||
tmp = [];
|
||||
for (i = 0, s = array.byteOffset; i < byteLength; i += 1, s += 1) {
|
||||
tmp[i] = array.buffer._bytes[s];
|
||||
}
|
||||
for (i = 0, d = byteOffset; i < byteLength; i += 1, d += 1) {
|
||||
this.buffer._bytes[d] = tmp[i];
|
||||
}
|
||||
} else {
|
||||
for (i = 0, s = array.byteOffset, d = byteOffset;
|
||||
i < byteLength; i += 1, s += 1, d += 1) {
|
||||
this.buffer._bytes[d] = array.buffer._bytes[s];
|
||||
}
|
||||
}
|
||||
} else if (typeof arguments[0] === 'object' && typeof arguments[0].length !== 'undefined') {
|
||||
// void set(sequence<type> array, optional unsigned long offset);
|
||||
sequence = arguments[0];
|
||||
len = ECMAScript.ToUint32(sequence.length);
|
||||
offset = ECMAScript.ToUint32(arguments[1]);
|
||||
|
||||
if (offset + len > this.length) {
|
||||
throw new RangeError("Offset plus length of array is out of range");
|
||||
}
|
||||
|
||||
for (i = 0; i < len; i += 1) {
|
||||
s = sequence[i];
|
||||
this._setter(offset + i, Number(s));
|
||||
}
|
||||
} else {
|
||||
throw new TypeError("Unexpected argument type(s)");
|
||||
}
|
||||
};
|
||||
|
||||
// TypedArray subarray(long begin, optional long end);
|
||||
ctor.prototype.subarray = function(start, end) {
|
||||
function clamp(v, min, max) { return v < min ? min : v > max ? max : v; }
|
||||
|
||||
start = ECMAScript.ToInt32(start);
|
||||
end = ECMAScript.ToInt32(end);
|
||||
|
||||
if (arguments.length < 1) { start = 0; }
|
||||
if (arguments.length < 2) { end = this.length; }
|
||||
|
||||
if (start < 0) { start = this.length + start; }
|
||||
if (end < 0) { end = this.length + end; }
|
||||
|
||||
start = clamp(start, 0, this.length);
|
||||
end = clamp(end, 0, this.length);
|
||||
|
||||
var len = end - start;
|
||||
if (len < 0) {
|
||||
len = 0;
|
||||
}
|
||||
|
||||
return new this.constructor(
|
||||
this.buffer, this.byteOffset + start * this.BYTES_PER_ELEMENT, len);
|
||||
};
|
||||
|
||||
return ctor;
|
||||
}
|
||||
|
||||
var Int8Array = makeConstructor(1, packI8, unpackI8);
|
||||
var Uint8Array = makeConstructor(1, packU8, unpackU8);
|
||||
var Uint8ClampedArray = makeConstructor(1, packU8Clamped, unpackU8);
|
||||
var Int16Array = makeConstructor(2, packI16, unpackI16);
|
||||
var Uint16Array = makeConstructor(2, packU16, unpackU16);
|
||||
var Int32Array = makeConstructor(4, packI32, unpackI32);
|
||||
var Uint32Array = makeConstructor(4, packU32, unpackU32);
|
||||
var Float32Array = makeConstructor(4, packF32, unpackF32);
|
||||
var Float64Array = makeConstructor(8, packF64, unpackF64);
|
||||
|
||||
exports.Int8Array = exports.Int8Array || Int8Array;
|
||||
exports.Uint8Array = exports.Uint8Array || Uint8Array;
|
||||
exports.Uint8ClampedArray = exports.Uint8ClampedArray || Uint8ClampedArray;
|
||||
exports.Int16Array = exports.Int16Array || Int16Array;
|
||||
exports.Uint16Array = exports.Uint16Array || Uint16Array;
|
||||
exports.Int32Array = exports.Int32Array || Int32Array;
|
||||
exports.Uint32Array = exports.Uint32Array || Uint32Array;
|
||||
exports.Float32Array = exports.Float32Array || Float32Array;
|
||||
exports.Float64Array = exports.Float64Array || Float64Array;
|
||||
}());
|
||||
|
||||
//
|
||||
// 6 The DataView View Type
|
||||
//
|
||||
|
||||
(function() {
|
||||
function r(array, index) {
|
||||
return ECMAScript.IsCallable(array.get) ? array.get(index) : array[index];
|
||||
}
|
||||
|
||||
var IS_BIG_ENDIAN = (function() {
|
||||
var u16array = new(exports.Uint16Array)([0x1234]),
|
||||
u8array = new(exports.Uint8Array)(u16array.buffer);
|
||||
return r(u8array, 0) === 0x12;
|
||||
}());
|
||||
|
||||
// Constructor(ArrayBuffer buffer,
|
||||
// optional unsigned long byteOffset,
|
||||
// optional unsigned long byteLength)
|
||||
/** @constructor */
|
||||
var DataView = function DataView(buffer, byteOffset, byteLength) {
|
||||
if (arguments.length === 0) {
|
||||
buffer = new exports.ArrayBuffer(0);
|
||||
} else if (!(buffer instanceof exports.ArrayBuffer || ECMAScript.Class(buffer) === 'ArrayBuffer')) {
|
||||
throw new TypeError("TypeError");
|
||||
}
|
||||
|
||||
this.buffer = buffer || new exports.ArrayBuffer(0);
|
||||
|
||||
this.byteOffset = ECMAScript.ToUint32(byteOffset);
|
||||
if (this.byteOffset > this.buffer.byteLength) {
|
||||
throw new RangeError("byteOffset out of range");
|
||||
}
|
||||
|
||||
if (arguments.length < 3) {
|
||||
this.byteLength = this.buffer.byteLength - this.byteOffset;
|
||||
} else {
|
||||
this.byteLength = ECMAScript.ToUint32(byteLength);
|
||||
}
|
||||
|
||||
if ((this.byteOffset + this.byteLength) > this.buffer.byteLength) {
|
||||
throw new RangeError("byteOffset and length reference an area beyond the end of the buffer");
|
||||
}
|
||||
|
||||
configureProperties(this);
|
||||
};
|
||||
|
||||
function makeGetter(arrayType) {
|
||||
return function(byteOffset, littleEndian) {
|
||||
|
||||
byteOffset = ECMAScript.ToUint32(byteOffset);
|
||||
|
||||
if (byteOffset + arrayType.BYTES_PER_ELEMENT > this.byteLength) {
|
||||
throw new RangeError("Array index out of range");
|
||||
}
|
||||
byteOffset += this.byteOffset;
|
||||
|
||||
var uint8Array = new exports.Uint8Array(this.buffer, byteOffset, arrayType.BYTES_PER_ELEMENT),
|
||||
bytes = [], i;
|
||||
for (i = 0; i < arrayType.BYTES_PER_ELEMENT; i += 1) {
|
||||
bytes.push(r(uint8Array, i));
|
||||
}
|
||||
|
||||
if (Boolean(littleEndian) === Boolean(IS_BIG_ENDIAN)) {
|
||||
bytes.reverse();
|
||||
}
|
||||
|
||||
return r(new arrayType(new exports.Uint8Array(bytes).buffer), 0);
|
||||
};
|
||||
}
|
||||
|
||||
DataView.prototype.getUint8 = makeGetter(exports.Uint8Array);
|
||||
DataView.prototype.getInt8 = makeGetter(exports.Int8Array);
|
||||
DataView.prototype.getUint16 = makeGetter(exports.Uint16Array);
|
||||
DataView.prototype.getInt16 = makeGetter(exports.Int16Array);
|
||||
DataView.prototype.getUint32 = makeGetter(exports.Uint32Array);
|
||||
DataView.prototype.getInt32 = makeGetter(exports.Int32Array);
|
||||
DataView.prototype.getFloat32 = makeGetter(exports.Float32Array);
|
||||
DataView.prototype.getFloat64 = makeGetter(exports.Float64Array);
|
||||
|
||||
function makeSetter(arrayType) {
|
||||
return function(byteOffset, value, littleEndian) {
|
||||
|
||||
byteOffset = ECMAScript.ToUint32(byteOffset);
|
||||
if (byteOffset + arrayType.BYTES_PER_ELEMENT > this.byteLength) {
|
||||
throw new RangeError("Array index out of range");
|
||||
}
|
||||
|
||||
// Get bytes
|
||||
var typeArray = new arrayType([value]),
|
||||
byteArray = new exports.Uint8Array(typeArray.buffer),
|
||||
bytes = [], i, byteView;
|
||||
|
||||
for (i = 0; i < arrayType.BYTES_PER_ELEMENT; i += 1) {
|
||||
bytes.push(r(byteArray, i));
|
||||
}
|
||||
|
||||
// Flip if necessary
|
||||
if (Boolean(littleEndian) === Boolean(IS_BIG_ENDIAN)) {
|
||||
bytes.reverse();
|
||||
}
|
||||
|
||||
// Write them
|
||||
byteView = new exports.Uint8Array(this.buffer, byteOffset, arrayType.BYTES_PER_ELEMENT);
|
||||
byteView.set(bytes);
|
||||
};
|
||||
}
|
||||
|
||||
DataView.prototype.setUint8 = makeSetter(exports.Uint8Array);
|
||||
DataView.prototype.setInt8 = makeSetter(exports.Int8Array);
|
||||
DataView.prototype.setUint16 = makeSetter(exports.Uint16Array);
|
||||
DataView.prototype.setInt16 = makeSetter(exports.Int16Array);
|
||||
DataView.prototype.setUint32 = makeSetter(exports.Uint32Array);
|
||||
DataView.prototype.setInt32 = makeSetter(exports.Int32Array);
|
||||
DataView.prototype.setFloat32 = makeSetter(exports.Float32Array);
|
||||
DataView.prototype.setFloat64 = makeSetter(exports.Float64Array);
|
||||
|
||||
exports.DataView = exports.DataView || DataView;
|
||||
|
||||
}());
|
87
node_modules/typedarray/package.json
generated
vendored
Normal file
87
node_modules/typedarray/package.json
generated
vendored
Normal file
@ -0,0 +1,87 @@
|
||||
{
|
||||
"_args": [
|
||||
[
|
||||
"typedarray@0.0.6",
|
||||
"C:\\Users\\matia\\Musix"
|
||||
]
|
||||
],
|
||||
"_from": "typedarray@0.0.6",
|
||||
"_id": "typedarray@0.0.6",
|
||||
"_inBundle": false,
|
||||
"_integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
|
||||
"_location": "/typedarray",
|
||||
"_optional": true,
|
||||
"_phantomChildren": {},
|
||||
"_requested": {
|
||||
"type": "version",
|
||||
"registry": true,
|
||||
"raw": "typedarray@0.0.6",
|
||||
"name": "typedarray",
|
||||
"escapedName": "typedarray",
|
||||
"rawSpec": "0.0.6",
|
||||
"saveSpec": null,
|
||||
"fetchSpec": "0.0.6"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"/concat-stream"
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
|
||||
"_spec": "0.0.6",
|
||||
"_where": "C:\\Users\\matia\\Musix",
|
||||
"author": {
|
||||
"name": "James Halliday",
|
||||
"email": "mail@substack.net",
|
||||
"url": "http://substack.net"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/substack/typedarray/issues"
|
||||
},
|
||||
"description": "TypedArray polyfill for old browsers",
|
||||
"devDependencies": {
|
||||
"tape": "~2.3.2"
|
||||
},
|
||||
"homepage": "https://github.com/substack/typedarray",
|
||||
"keywords": [
|
||||
"ArrayBuffer",
|
||||
"DataView",
|
||||
"Float32Array",
|
||||
"Float64Array",
|
||||
"Int8Array",
|
||||
"Int16Array",
|
||||
"Int32Array",
|
||||
"Uint8Array",
|
||||
"Uint8ClampedArray",
|
||||
"Uint16Array",
|
||||
"Uint32Array",
|
||||
"typed",
|
||||
"array",
|
||||
"polyfill"
|
||||
],
|
||||
"license": "MIT",
|
||||
"main": "index.js",
|
||||
"name": "typedarray",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/substack/typedarray.git"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "tape test/*.js test/server/*.js"
|
||||
},
|
||||
"testling": {
|
||||
"files": "test/*.js",
|
||||
"browsers": [
|
||||
"ie/6..latest",
|
||||
"firefox/16..latest",
|
||||
"firefox/nightly",
|
||||
"chrome/22..latest",
|
||||
"chrome/canary",
|
||||
"opera/12..latest",
|
||||
"opera/next",
|
||||
"safari/5.1..latest",
|
||||
"ipad/6.0..latest",
|
||||
"iphone/6.0..latest",
|
||||
"android-browser/4.2..latest"
|
||||
]
|
||||
},
|
||||
"version": "0.0.6"
|
||||
}
|
61
node_modules/typedarray/readme.markdown
generated
vendored
Normal file
61
node_modules/typedarray/readme.markdown
generated
vendored
Normal file
@ -0,0 +1,61 @@
|
||||
# typedarray
|
||||
|
||||
TypedArray polyfill ripped from [this
|
||||
module](https://raw.github.com/inexorabletash/polyfill).
|
||||
|
||||
[](http://travis-ci.org/substack/typedarray)
|
||||
|
||||
[](https://ci.testling.com/substack/typedarray)
|
||||
|
||||
# example
|
||||
|
||||
``` js
|
||||
var Uint8Array = require('typedarray').Uint8Array;
|
||||
var ua = new Uint8Array(5);
|
||||
ua[1] = 256 + 55;
|
||||
console.log(ua[1]);
|
||||
```
|
||||
|
||||
output:
|
||||
|
||||
```
|
||||
55
|
||||
```
|
||||
|
||||
# methods
|
||||
|
||||
``` js
|
||||
var TA = require('typedarray')
|
||||
```
|
||||
|
||||
The `TA` object has the following constructors:
|
||||
|
||||
* TA.ArrayBuffer
|
||||
* TA.DataView
|
||||
* TA.Float32Array
|
||||
* TA.Float64Array
|
||||
* TA.Int8Array
|
||||
* TA.Int16Array
|
||||
* TA.Int32Array
|
||||
* TA.Uint8Array
|
||||
* TA.Uint8ClampedArray
|
||||
* TA.Uint16Array
|
||||
* TA.Uint32Array
|
||||
|
||||
# install
|
||||
|
||||
With [npm](https://npmjs.org) do:
|
||||
|
||||
```
|
||||
npm install typedarray
|
||||
```
|
||||
|
||||
To use this module in the browser, compile with
|
||||
[browserify](http://browserify.org)
|
||||
or download a UMD build from browserify CDN:
|
||||
|
||||
http://wzrd.in/standalone/typedarray@latest
|
||||
|
||||
# license
|
||||
|
||||
MIT
|
19
node_modules/typedarray/test/server/undef_globals.js
generated
vendored
Normal file
19
node_modules/typedarray/test/server/undef_globals.js
generated
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
var test = require('tape');
|
||||
var vm = require('vm');
|
||||
var fs = require('fs');
|
||||
var src = fs.readFileSync(__dirname + '/../../index.js', 'utf8');
|
||||
|
||||
test('u8a without globals', function (t) {
|
||||
var c = {
|
||||
module: { exports: {} },
|
||||
};
|
||||
c.exports = c.module.exports;
|
||||
vm.runInNewContext(src, c);
|
||||
var TA = c.module.exports;
|
||||
var ua = new(TA.Uint8Array)(5);
|
||||
|
||||
t.equal(ua.length, 5);
|
||||
ua[1] = 256 + 55;
|
||||
t.equal(ua[1], 55);
|
||||
t.end();
|
||||
});
|
10
node_modules/typedarray/test/tarray.js
generated
vendored
Normal file
10
node_modules/typedarray/test/tarray.js
generated
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
var TA = require('../');
|
||||
var test = require('tape');
|
||||
|
||||
test('tiny u8a test', function (t) {
|
||||
var ua = new(TA.Uint8Array)(5);
|
||||
t.equal(ua.length, 5);
|
||||
ua[1] = 256 + 55;
|
||||
t.equal(ua[1], 55);
|
||||
t.end();
|
||||
});
|
Reference in New Issue
Block a user