{"ast":null,"code":"var conversions = require('./conversions');\n\nvar route = require('./route');\n\nvar convert = {};\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n  var wrappedFn = function (args) {\n    if (args === undefined || args === null) {\n      return args;\n    }\n\n    if (arguments.length > 1) {\n      args = Array.prototype.slice.call(arguments);\n    }\n\n    return fn(args);\n  }; // preserve .conversion property if there is one\n\n\n  if ('conversion' in fn) {\n    wrappedFn.conversion = fn.conversion;\n  }\n\n  return wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n  var wrappedFn = function (args) {\n    if (args === undefined || args === null) {\n      return args;\n    }\n\n    if (arguments.length > 1) {\n      args = Array.prototype.slice.call(arguments);\n    }\n\n    var result = fn(args); // we're assuming the result is an array here.\n    // see notice in conversions.js; don't use box types\n    // in conversion functions.\n\n    if (typeof result === 'object') {\n      for (var len = result.length, i = 0; i < len; i++) {\n        result[i] = Math.round(result[i]);\n      }\n    }\n\n    return result;\n  }; // preserve .conversion property if there is one\n\n\n  if ('conversion' in fn) {\n    wrappedFn.conversion = fn.conversion;\n  }\n\n  return wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n  convert[fromModel] = {};\n  Object.defineProperty(convert[fromModel], 'channels', {\n    value: conversions[fromModel].channels\n  });\n  Object.defineProperty(convert[fromModel], 'labels', {\n    value: conversions[fromModel].labels\n  });\n  var routes = route(fromModel);\n  var routeModels = Object.keys(routes);\n  routeModels.forEach(function (toModel) {\n    var fn = routes[toModel];\n    convert[fromModel][toModel] = wrapRounded(fn);\n    convert[fromModel][toModel].raw = wrapRaw(fn);\n  });\n});\nmodule.exports = convert;","map":null,"metadata":{},"sourceType":"script"}