Comparing version 0.2.0 to 1.0.0
@@ -1,2 +0,2 @@ | ||
// Generated by CoffeeScript 1.8.0 | ||
// Generated by CoffeeScript 1.10.0 | ||
var float_to_int, inport, osc, outport, sock, udp; | ||
@@ -21,6 +21,6 @@ | ||
float_to_int = function(message) { | ||
var arg, _i, _len, _ref; | ||
_ref = message.args; | ||
for (_i = 0, _len = _ref.length; _i < _len; _i++) { | ||
arg = _ref[_i]; | ||
var arg, i, len, ref; | ||
ref = message.args; | ||
for (i = 0, len = ref.length; i < len; i++) { | ||
arg = ref[i]; | ||
if (arg.type === "float") { | ||
@@ -34,3 +34,3 @@ arg.type = "integer"; | ||
sock = udp.createSocket("udp4", function(msg, rinfo) { | ||
var edited, error; | ||
var edited, error, error1; | ||
try { | ||
@@ -41,4 +41,4 @@ edited = osc.applyMessageTransform(msg, function(message) { | ||
return sock.send(edited, 0, edited.length, outport, "localhost"); | ||
} catch (_error) { | ||
error = _error; | ||
} catch (error1) { | ||
error = error1; | ||
return console.log("error redirecting: " + error); | ||
@@ -45,0 +45,0 @@ } |
@@ -1,2 +0,2 @@ | ||
// Generated by CoffeeScript 1.8.0 | ||
// Generated by CoffeeScript 1.10.0 | ||
var inport, osc, outport, sock, udp; | ||
@@ -28,3 +28,3 @@ | ||
sock = udp.createSocket("udp4", function(msg, rinfo) { | ||
var error, redirected; | ||
var error, error1, redirected; | ||
try { | ||
@@ -35,4 +35,4 @@ redirected = osc.applyAddressTransform(msg, function(address) { | ||
return sock.send(redirected, 0, redirected.length, outport, "localhost"); | ||
} catch (_error) { | ||
error = _error; | ||
} catch (error1) { | ||
error = error1; | ||
return console.log("error redirecting: " + error); | ||
@@ -39,0 +39,0 @@ } |
@@ -1,3 +0,3 @@ | ||
// Generated by CoffeeScript 1.8.0 | ||
var dgram, osc, outport, sendHeartbeat, udp; | ||
// Generated by CoffeeScript 1.10.0 | ||
var dgram, now, osc, outport, sendHeartbeat, udp; | ||
@@ -16,6 +16,10 @@ osc = require('osc-min'); | ||
now = function() { | ||
return (new Date()).getTime() / 1000; | ||
}; | ||
sendHeartbeat = function() { | ||
var buf; | ||
buf = osc.toBuffer({ | ||
timetag: 12345, | ||
timetag: now() + 0.05, | ||
elements: [ | ||
@@ -29,3 +33,3 @@ { | ||
}, { | ||
timetag: 34567, | ||
timetag: now() + 1, | ||
elements: [ | ||
@@ -32,0 +36,0 @@ { |
@@ -1,2 +0,2 @@ | ||
// Generated by CoffeeScript 1.8.0 | ||
// Generated by CoffeeScript 1.10.0 | ||
var dgram, osc, outport, sendHeartbeat, udp; | ||
@@ -3,0 +3,0 @@ |
@@ -1,2 +0,2 @@ | ||
// Generated by CoffeeScript 1.8.0 | ||
// Generated by CoffeeScript 1.10.0 | ||
var inport, osc, sock, udp; | ||
@@ -20,7 +20,7 @@ | ||
sock = udp.createSocket("udp4", function(msg, rinfo) { | ||
var error; | ||
var error, error1; | ||
try { | ||
return console.log(osc.fromBuffer(msg)); | ||
} catch (_error) { | ||
error = _error; | ||
} catch (error1) { | ||
error = error1; | ||
return console.log("invalid OSC packet"); | ||
@@ -27,0 +27,0 @@ } |
(function() { | ||
//~readme.out~ | ||
//[](http://travis-ci.org/russellmcc/node-osc-min) | ||
//[](http://travis-ci.org/russellmcc/node-osc-min) [](https://coveralls.io/r/russellmcc/node-osc-min?branch=master) [](https://david-dm.org/russellmcc/node-osc-min) | ||
//# osc-min | ||
@@ -31,2 +31,5 @@ // | ||
//~representation~ | ||
//---- | ||
//## License | ||
// Licensed under the terms found in COPYING (zlib license) | ||
@@ -80,3 +83,3 @@ //~representation~ | ||
// | ||
// + An _OSC Bundle_ is represented as a javascript object with the following layout | ||
// + An _OSC Bundle_ is represented as a javascript object with the following fields: | ||
// | ||
@@ -89,8 +92,20 @@ // { | ||
// | ||
// Where the timetag is a javascript-native numeric value of the timetag, | ||
// and elements is an array of either an _OSC Bundle_ or an _OSC Message_ | ||
// The `oscType` field is optional, but is always returned by api functions. | ||
// `oscType` "bundle" | ||
// | ||
// `timetag` is one of: | ||
// - `null` - meaning now, the current time. | ||
// By the time the bundle is received it will too late and depending | ||
// on the receiver may be discarded or you may be scolded for being late. | ||
// - `number` - relative seconds from now with millisecond accuracy. | ||
// - `Date` - a JavaScript Date object in your local time zone. | ||
// OSC timetags use UTC timezone, so do not try to adjust for timezones, | ||
// this is not needed. | ||
// - `Array` - `[numberOfSecondsSince1900, fractionalSeconds]` | ||
// Both values are `number`s. This gives full timing accuracy of 1/(2^32) seconds. | ||
// | ||
// `elements` is an `Array` of either _OSC Message_ or _OSC Bundle_ | ||
// | ||
// | ||
// [spec]: http://opensoundcontrol.org/spec-1_0 | ||
var utils, coffee; | ||
@@ -122,5 +137,7 @@ utils = require("./osc-utilities"); | ||
// | ||
// See "JavaScript representations of the OSC types" below. | ||
// | ||
//---- | ||
//### .toBuffer(address, args[], [strict]) | ||
// alternative syntax for above. Assumes this is an _OSC Message_ as defined below, | ||
// alternative syntax for above. Assumes this is an _OSC Message_ as defined below, | ||
// and `args` is an array of _OSC Arguments_ or single _OSC Argument_ | ||
@@ -173,2 +190,21 @@ exports.toBuffer = function(object, strict, opt) { | ||
//~api~ | ||
//---- | ||
//### .timetagToDate(ntpTimeTag) | ||
// Convert a timetag array to a JavaScript Date object in your local timezone. | ||
// | ||
// Received OSC bundles converted with `fromBuffer` will have a timetag array: | ||
// [secondsSince1970, fractionalSeconds] | ||
// This utility is useful for logging. Accuracy is reduced to milliseconds. | ||
exports.timetagToDate = utils.timetagToDate; | ||
//~api~ | ||
//---- | ||
//### .dateToTimetag(date) | ||
// Convert a JavaScript Date to a NTP timetag array [secondsSince1970, fractionalSeconds]. | ||
// | ||
// `toBuffer` already accepts Dates for timetags so you might not need this function. If you need to schedule bundles with finer than millisecond accuracy then you could use this to help assemble the NTP array. | ||
exports.dateToTimetag = utils.dateToTimetag; | ||
}).call(this); |
@@ -23,2 +23,10 @@ ~installation~ | ||
npm run-script coverage | ||
``` | ||
### For the browser | ||
If you want to use this library in a browser, you can build a browserified file (`build/osc-min.js`) with | ||
``` | ||
npm install --dev | ||
npm run-script browserify | ||
``` |
@@ -1,5 +0,5 @@ | ||
// Generated by CoffeeScript 1.8.0 | ||
// Generated by CoffeeScript 1.10.0 | ||
(function() { | ||
var IsArray, StrictError, binpack, getArrayArg, isOscBundleBuffer, mapBundleList, oscTypeCodes, padding, toOscTypeAndArgs, | ||
__hasProp = {}.hasOwnProperty; | ||
var IsArray, StrictError, TWO_POW_32, UNIX_EPOCH, binpack, getArrayArg, isOscBundleBuffer, makeTimetag, mapBundleList, oscTypeCodes, padding, toOscTypeAndArgs, | ||
hasProp = {}.hasOwnProperty; | ||
@@ -9,8 +9,8 @@ binpack = require("binpack"); | ||
exports.concat = function(buffers) { | ||
var buffer, copyTo, destBuffer, sumLength, _i, _j, _k, _len, _len1, _len2; | ||
var buffer, copyTo, destBuffer, j, k, l, len, len1, len2, sumLength; | ||
if (!IsArray(buffers)) { | ||
throw new Error("concat must take an array of buffers"); | ||
} | ||
for (_i = 0, _len = buffers.length; _i < _len; _i++) { | ||
buffer = buffers[_i]; | ||
for (j = 0, len = buffers.length; j < len; j++) { | ||
buffer = buffers[j]; | ||
if (!Buffer.isBuffer(buffer)) { | ||
@@ -21,4 +21,4 @@ throw new Error("concat must take an array of buffers"); | ||
sumLength = 0; | ||
for (_j = 0, _len1 = buffers.length; _j < _len1; _j++) { | ||
buffer = buffers[_j]; | ||
for (k = 0, len1 = buffers.length; k < len1; k++) { | ||
buffer = buffers[k]; | ||
sumLength += buffer.length; | ||
@@ -28,4 +28,4 @@ } | ||
copyTo = 0; | ||
for (_k = 0, _len2 = buffers.length; _k < _len2; _k++) { | ||
buffer = buffers[_k]; | ||
for (l = 0, len2 = buffers.length; l < len2; l++) { | ||
buffer = buffers[l]; | ||
buffer.copy(destBuffer, copyTo); | ||
@@ -38,3 +38,3 @@ copyTo += buffer.length; | ||
exports.toOscString = function(str, strict) { | ||
var i, nullIndex, _i, _ref; | ||
var i, j, nullIndex, ref; | ||
if (!(typeof str === "string")) { | ||
@@ -50,3 +50,3 @@ throw new Error("can't pack a non-string into an osc-string"); | ||
} | ||
for (i = _i = 0, _ref = padding(str); 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) { | ||
for (i = j = 0, ref = padding(str); 0 <= ref ? j < ref : j > ref; i = 0 <= ref ? ++j : --j) { | ||
str += "\u0000"; | ||
@@ -58,3 +58,3 @@ } | ||
exports.splitOscString = function(buffer, strict) { | ||
var i, nullIndex, rawStr, rest, splitPoint, str, _i, _ref; | ||
var i, j, nullIndex, rawStr, ref, ref1, rest, splitPoint, str; | ||
if (!Buffer.isBuffer(buffer)) { | ||
@@ -80,3 +80,3 @@ throw StrictError("Can't split something that isn't a buffer"); | ||
if (strict) { | ||
for (i = _i = _ref = Buffer.byteLength(str); _ref <= splitPoint ? _i < splitPoint : _i > splitPoint; i = _ref <= splitPoint ? ++_i : --_i) { | ||
for (i = j = ref = Buffer.byteLength(str), ref1 = splitPoint; ref <= ref1 ? j < ref1 : j > ref1; i = ref <= ref1 ? ++j : --j) { | ||
if (buffer[i] !== 0) { | ||
@@ -112,2 +112,87 @@ throw StrictError("Not enough or incorrect padding for osc-string"); | ||
exports.splitTimetag = function(buffer) { | ||
var a, b, bytes, c, d, fractional, rest, seconds, type; | ||
type = "Int32"; | ||
bytes = (binpack["pack" + type](0)).length; | ||
if (buffer.length < (bytes * 2)) { | ||
throw new Error("buffer is not big enough to contain a timetag"); | ||
} | ||
a = 0; | ||
b = bytes; | ||
seconds = binpack["unpack" + type](buffer.slice(a, b), "big"); | ||
c = bytes; | ||
d = bytes + bytes; | ||
fractional = binpack["unpack" + type](buffer.slice(c, d), "big"); | ||
rest = buffer.slice(d, buffer.length); | ||
return { | ||
timetag: [seconds, fractional], | ||
rest: rest | ||
}; | ||
}; | ||
UNIX_EPOCH = 2208988800; | ||
TWO_POW_32 = 4294967296; | ||
exports.dateToTimetag = function(date) { | ||
return exports.timestampToTimetag(date.getTime() / 1000); | ||
}; | ||
exports.timestampToTimetag = function(secs) { | ||
var fracSeconds, wholeSecs; | ||
wholeSecs = Math.floor(secs); | ||
fracSeconds = secs - wholeSecs; | ||
return makeTimetag(wholeSecs, fracSeconds); | ||
}; | ||
makeTimetag = function(unixseconds, fracSeconds) { | ||
var ntpFracs, ntpSecs; | ||
ntpSecs = unixseconds + UNIX_EPOCH; | ||
ntpFracs = Math.round(TWO_POW_32 * fracSeconds); | ||
return [ntpSecs, ntpFracs]; | ||
}; | ||
exports.timetagToDate = function(timetag) { | ||
var date, dd, fracs, fractional, seconds; | ||
seconds = timetag[0], fractional = timetag[1]; | ||
seconds = seconds - UNIX_EPOCH; | ||
fracs = exports.ntpToFractionalSeconds(fractional); | ||
date = new Date(); | ||
date.setTime((seconds * 1000) + (fracs * 1000)); | ||
dd = new Date(); | ||
dd.setUTCFullYear(date.getUTCFullYear()); | ||
dd.setUTCMonth(date.getUTCMonth()); | ||
dd.setUTCDate(date.getUTCDate()); | ||
dd.setUTCHours(date.getUTCHours()); | ||
dd.setUTCMinutes(date.getUTCMinutes()); | ||
dd.setUTCSeconds(date.getUTCSeconds()); | ||
dd.setUTCMilliseconds(fracs * 1000); | ||
return dd; | ||
}; | ||
exports.deltaTimetag = function(seconds, now) { | ||
var n; | ||
n = (now != null ? now : new Date()) / 1000; | ||
return exports.timestampToTimetag(n + seconds); | ||
}; | ||
exports.ntpToFractionalSeconds = function(fracSeconds) { | ||
return parseFloat(fracSeconds) / TWO_POW_32; | ||
}; | ||
exports.toTimetagBuffer = function(timetag) { | ||
var high, low, type; | ||
if (typeof timetag === "number") { | ||
timetag = exports.timestampToTimetag(timetag); | ||
} else if (typeof timetag === "object" && ("getTime" in timetag)) { | ||
timetag = exports.dateToTimetag(timetag); | ||
} else if (timetag.length !== 2) { | ||
throw new Error("Invalid timetag" + timetag); | ||
} | ||
type = "Int32"; | ||
high = binpack["pack" + type](timetag[0], "big"); | ||
low = binpack["pack" + type](timetag[1], "big"); | ||
return exports.concat([high, low]); | ||
}; | ||
exports.toIntegerBuffer = function(number, type) { | ||
@@ -162,5 +247,5 @@ if (type == null) { | ||
var split; | ||
split = exports.splitInteger(buffer, "UInt64"); | ||
split = exports.splitTimetag(buffer); | ||
return { | ||
value: split.integer, | ||
value: split.timetag, | ||
rest: split.rest | ||
@@ -170,6 +255,3 @@ }; | ||
toArg: function(value, strict) { | ||
if (typeof value !== "number") { | ||
throw new Error("expected number"); | ||
} | ||
return exports.toIntegerBuffer(value, "UInt64"); | ||
return exports.toTimetagBuffer(value); | ||
} | ||
@@ -210,4 +292,4 @@ }, | ||
split: function(buffer, strict) { | ||
var length, _ref; | ||
_ref = exports.splitInteger(buffer), length = _ref.integer, buffer = _ref.rest; | ||
var length, ref; | ||
ref = exports.splitInteger(buffer), length = ref.integer, buffer = ref.rest; | ||
return { | ||
@@ -287,4 +369,4 @@ value: buffer.slice(0, length), | ||
exports.oscTypeCodeToTypeString = function(code) { | ||
var _ref; | ||
return (_ref = oscTypeCodes[code]) != null ? _ref.representation : void 0; | ||
var ref; | ||
return (ref = oscTypeCodes[code]) != null ? ref.representation : void 0; | ||
}; | ||
@@ -295,3 +377,3 @@ | ||
for (code in oscTypeCodes) { | ||
if (!__hasProp.call(oscTypeCodes, code)) continue; | ||
if (!hasProp.call(oscTypeCodes, code)) continue; | ||
str = oscTypeCodes[code].representation; | ||
@@ -357,4 +439,4 @@ if (str === rep) { | ||
exports.fromOscMessage = function(buffer, strict) { | ||
var address, arg, args, arrayStack, built, type, typeString, types, _i, _len, _ref, _ref1; | ||
_ref = exports.splitOscString(buffer, strict), address = _ref.string, buffer = _ref.rest; | ||
var address, arg, args, arrayStack, built, j, len, ref, ref1, type, typeString, types; | ||
ref = exports.splitOscString(buffer, strict), address = ref.string, buffer = ref.rest; | ||
if (strict && address[0] !== '/') { | ||
@@ -369,3 +451,3 @@ throw StrictError('addresses must start with /'); | ||
} | ||
_ref1 = exports.splitOscString(buffer, strict), types = _ref1.string, buffer = _ref1.rest; | ||
ref1 = exports.splitOscString(buffer, strict), types = ref1.string, buffer = ref1.rest; | ||
if (types[0] !== ',') { | ||
@@ -383,4 +465,4 @@ if (strict) { | ||
arrayStack = [args]; | ||
for (_i = 0, _len = types.length; _i < _len; _i++) { | ||
type = types[_i]; | ||
for (j = 0, len = types.length; j < len; j++) { | ||
type = types[j]; | ||
if (type === '[') { | ||
@@ -428,8 +510,8 @@ arrayStack.push([]); | ||
exports.fromOscBundle = function(buffer, strict) { | ||
var bundleTag, convertedElems, timetag, _ref, _ref1; | ||
_ref = exports.splitOscString(buffer, strict), bundleTag = _ref.string, buffer = _ref.rest; | ||
var bundleTag, convertedElems, ref, ref1, timetag; | ||
ref = exports.splitOscString(buffer, strict), bundleTag = ref.string, buffer = ref.rest; | ||
if (bundleTag !== "\#bundle") { | ||
throw new Error("osc-bundles must begin with \#bundle"); | ||
} | ||
_ref1 = exports.splitInteger(buffer, "UInt64"), timetag = _ref1.integer, buffer = _ref1.rest; | ||
ref1 = exports.splitTimetag(buffer), timetag = ref1.timetag, buffer = ref1.rest; | ||
convertedElems = mapBundleList(buffer, function(buffer) { | ||
@@ -466,9 +548,9 @@ return exports.fromOscPacket(buffer, strict); | ||
toOscTypeAndArgs = function(argList, strict) { | ||
var arg, buff, oscargs, osctype, thisArgs, thisType, typeCode, value, _i, _len, _ref; | ||
var arg, buff, j, len, oscargs, osctype, ref, thisArgs, thisType, typeCode, value; | ||
osctype = ""; | ||
oscargs = []; | ||
for (_i = 0, _len = argList.length; _i < _len; _i++) { | ||
arg = argList[_i]; | ||
for (j = 0, len = argList.length; j < len; j++) { | ||
arg = argList[j]; | ||
if ((getArrayArg(arg)) != null) { | ||
_ref = toOscTypeAndArgs(getArrayArg(arg), strict), thisType = _ref[0], thisArgs = _ref[1]; | ||
ref = toOscTypeAndArgs(getArrayArg(arg), strict), thisType = ref[0], thisArgs = ref[1]; | ||
osctype += "[" + thisType + "]"; | ||
@@ -495,3 +577,3 @@ oscargs = oscargs.concat(thisArgs); | ||
exports.toOscMessage = function(message, strict) { | ||
var address, allArgs, args, old_arg, oscaddr, oscargs, osctype, _ref; | ||
var address, allArgs, args, old_arg, oscaddr, oscargs, osctype, ref; | ||
address = (message != null ? message.address : void 0) != null ? message.address : message; | ||
@@ -511,3 +593,3 @@ if (typeof address !== "string") { | ||
oscaddr = exports.toOscString(address, strict); | ||
_ref = toOscTypeAndArgs(args, strict), osctype = _ref[0], oscargs = _ref[1]; | ||
ref = toOscTypeAndArgs(args, strict), osctype = ref[0], oscargs = ref[1]; | ||
osctype = "," + osctype; | ||
@@ -520,8 +602,8 @@ allArgs = exports.concat(oscargs); | ||
exports.toOscBundle = function(bundle, strict) { | ||
var allElems, buff, e, elem, elements, elemstr, oscBundleTag, oscElems, oscTimeTag, size, timetag, _i, _len, _ref, _ref1; | ||
var allElems, buff, e, elem, elements, elemstr, error, j, len, oscBundleTag, oscElems, oscTimeTag, ref, ref1, size, timetag; | ||
if (strict && ((bundle != null ? bundle.timetag : void 0) == null)) { | ||
throw StrictError("bundles must have timetags."); | ||
} | ||
timetag = (_ref = bundle != null ? bundle.timetag : void 0) != null ? _ref : 0; | ||
elements = (_ref1 = bundle != null ? bundle.elements : void 0) != null ? _ref1 : []; | ||
timetag = (ref = bundle != null ? bundle.timetag : void 0) != null ? ref : new Date(); | ||
elements = (ref1 = bundle != null ? bundle.elements : void 0) != null ? ref1 : []; | ||
if (!IsArray(elements)) { | ||
@@ -533,6 +615,6 @@ elemstr = elements; | ||
oscBundleTag = exports.toOscString("\#bundle"); | ||
oscTimeTag = exports.toIntegerBuffer(timetag, "UInt64"); | ||
oscTimeTag = exports.toTimetagBuffer(timetag); | ||
oscElems = []; | ||
for (_i = 0, _len = elements.length; _i < _len; _i++) { | ||
elem = elements[_i]; | ||
for (j = 0, len = elements.length; j < len; j++) { | ||
elem = elements[j]; | ||
try { | ||
@@ -542,4 +624,4 @@ buff = exports.toOscPacket(elem, strict); | ||
oscElems.push(exports.concat([size, buff])); | ||
} catch (_error) { | ||
e = _error; | ||
} catch (error) { | ||
e = error; | ||
null; | ||
@@ -567,4 +649,4 @@ } | ||
return function(buffer) { | ||
var bundleTagBuffer, copyIndex, elem, elems, lengthBuff, outBuffer, string, timetagBuffer, totalLength, _i, _j, _len, _len1, _ref; | ||
_ref = exports.splitOscString(buffer), string = _ref.string, buffer = _ref.rest; | ||
var bundleTagBuffer, copyIndex, elem, elems, j, k, len, len1, lengthBuff, outBuffer, ref, string, timetagBuffer, totalLength; | ||
ref = exports.splitOscString(buffer), string = ref.string, buffer = ref.rest; | ||
if (string !== "\#bundle") { | ||
@@ -580,4 +662,4 @@ throw new Error("osc-bundles must begin with \#bundle"); | ||
totalLength = bundleTagBuffer.length + timetagBuffer.length; | ||
for (_i = 0, _len = elems.length; _i < _len; _i++) { | ||
elem = elems[_i]; | ||
for (j = 0, len = elems.length; j < len; j++) { | ||
elem = elems[j]; | ||
totalLength += 4 + elem.length; | ||
@@ -589,4 +671,4 @@ } | ||
copyIndex = bundleTagBuffer.length + timetagBuffer.length; | ||
for (_j = 0, _len1 = elems.length; _j < _len1; _j++) { | ||
elem = elems[_j]; | ||
for (k = 0, len1 = elems.length; k < len1; k++) { | ||
elem = elems[k]; | ||
lengthBuff = exports.toIntegerBuffer(elem.length); | ||
@@ -615,4 +697,4 @@ lengthBuff.copy(outBuffer, copyIndex); | ||
return function(buffer) { | ||
var rest, string, _ref; | ||
_ref = exports.splitOscString(buffer), string = _ref.string, rest = _ref.rest; | ||
var ref, rest, string; | ||
ref = exports.splitOscString(buffer), string = ref.string, rest = ref.rest; | ||
string = transform(string); | ||
@@ -650,8 +732,8 @@ return exports.concat([exports.toOscString(string), rest]); | ||
mapBundleList = function(buffer, func) { | ||
var e, elem, elems, nonNullElems, size, thisElemBuffer, _i, _len; | ||
var e, elem, elems, j, len, nonNullElems, size, thisElemBuffer; | ||
elems = (function() { | ||
var _ref, _results; | ||
_results = []; | ||
var error, ref, results; | ||
results = []; | ||
while (buffer.length) { | ||
_ref = exports.splitInteger(buffer), size = _ref.integer, buffer = _ref.rest; | ||
ref = exports.splitInteger(buffer), size = ref.integer, buffer = ref.rest; | ||
if (size > buffer.length) { | ||
@@ -663,13 +745,13 @@ throw new Error("Invalid bundle list: size of element is bigger than buffer"); | ||
try { | ||
_results.push(func(thisElemBuffer)); | ||
} catch (_error) { | ||
e = _error; | ||
_results.push(null); | ||
results.push(func(thisElemBuffer)); | ||
} catch (error) { | ||
e = error; | ||
results.push(null); | ||
} | ||
} | ||
return _results; | ||
return results; | ||
})(); | ||
nonNullElems = []; | ||
for (_i = 0, _len = elems.length; _i < _len; _i++) { | ||
elem = elems[_i]; | ||
for (j = 0, len = elems.length; j < len; j++) { | ||
elem = elems[j]; | ||
if (elem != null) { | ||
@@ -676,0 +758,0 @@ nonNullElems.push(elem); |
{ | ||
"name": "osc-min", | ||
"version": "0.2.0", | ||
"version": "1.0.0", | ||
"main": "lib/index", | ||
@@ -26,3 +26,3 @@ "author": { | ||
"mocha": "*", | ||
"docket": ">=0.0.3", | ||
"docket": "0.0.5", | ||
"coveralls": "*", | ||
@@ -46,2 +46,3 @@ "blanket": "*", | ||
}, | ||
"license": "Zlib", | ||
"engines": { | ||
@@ -48,0 +49,0 @@ "node": ">=0.10.0" |
@@ -40,3 +40,3 @@ [](http://travis-ci.org/russellmcc/node-osc-min) [](https://coveralls.io/r/russellmcc/node-osc-min?branch=master) [](https://david-dm.org/russellmcc/node-osc-min) | ||
### for browser | ||
### For the browser | ||
If you want to use this library in a browser, you can build a browserified file (`build/osc-min.js`) with | ||
@@ -55,7 +55,7 @@ | ||
sock = udp.createSocket("udp4", function(msg, rinfo) { | ||
var error; | ||
var error, error1; | ||
try { | ||
return console.log(osc.fromBuffer(msg)); | ||
} catch (_error) { | ||
error = _error; | ||
} catch (error1) { | ||
error = error1; | ||
return console.log("invalid OSC packet"); | ||
@@ -92,3 +92,3 @@ } | ||
sock = udp.createSocket("udp4", function(msg, rinfo) { | ||
var error, redirected; | ||
var error, error1, redirected; | ||
try { | ||
@@ -99,4 +99,4 @@ redirected = osc.applyAddressTransform(msg, function(address) { | ||
return sock.send(redirected, 0, redirected.length, outport, "localhost"); | ||
} catch (_error) { | ||
error = _error; | ||
} catch (error1) { | ||
error = error1; | ||
return console.log("error redirecting: " + error); | ||
@@ -128,5 +128,7 @@ } | ||
See "JavaScript representations of the OSC types" below. | ||
---- | ||
### .toBuffer(address, args[], [strict]) | ||
alternative syntax for above. Assumes this is an _OSC Message_ as defined below, | ||
alternative syntax for above. Assumes this is an _OSC Message_ as defined below, | ||
and `args` is an array of _OSC Arguments_ or single _OSC Argument_ | ||
@@ -167,2 +169,16 @@ | ||
---- | ||
### .timetagToDate(ntpTimeTag) | ||
Convert a timetag array to a JavaScript Date object in your local timezone. | ||
Received OSC bundles converted with `fromBuffer` will have a timetag array: | ||
[secondsSince1970, fractionalSeconds] | ||
This utility is useful for logging. Accuracy is reduced to milliseconds. | ||
---- | ||
### .dateToTimetag(date) | ||
Convert a JavaScript Date to a NTP timetag array [secondsSince1970, fractionalSeconds]. | ||
`toBuffer` already accepts Dates for timetags so you might not need this function. If you need to schedule bundles with finer than millisecond accuracy then you could use this to help assemble the NTP array. | ||
---- | ||
## Javascript representations of the OSC types. | ||
@@ -214,3 +230,3 @@ See the [spec][spec] for more information on the OSC types. | ||
+ An _OSC Bundle_ is represented as a javascript object with the following layout | ||
+ An _OSC Bundle_ is represented as a javascript object with the following fields: | ||
@@ -223,10 +239,22 @@ { | ||
Where the timetag is a javascript-native numeric value of the timetag, | ||
and elements is an array of either an _OSC Bundle_ or an _OSC Message_ | ||
The `oscType` field is optional, but is always returned by api functions. | ||
`oscType` "bundle" | ||
`timetag` is one of: | ||
- `null` - meaning now, the current time. | ||
By the time the bundle is received it will too late and depending | ||
on the receiver may be discarded or you may be scolded for being late. | ||
- `number` - relative seconds from now with millisecond accuracy. | ||
- `Date` - a JavaScript Date object in your local time zone. | ||
OSC timetags use UTC timezone, so do not try to adjust for timezones, | ||
this is not needed. | ||
- `Array` - `[numberOfSecondsSince1900, fractionalSeconds]` | ||
Both values are `number`s. This gives full timing accuracy of 1/(2^32) seconds. | ||
`elements` is an `Array` of either _OSC Message_ or _OSC Bundle_ | ||
[spec]: http://opensoundcontrol.org/spec-1_0 | ||
---- | ||
## License | ||
<a href="http://www.boost.org/LICENSE_1_0.txt" rel="license">Boost Software License v1.0</a> | ||
Licensed under the terms found in COPYING (zlib license) |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
120411
23
1210
1
253