| const conversions = require('./conversions'); | 
| const route = require('./route'); | 
|   | 
| const convert = {}; | 
|   | 
| const models = Object.keys(conversions); | 
|   | 
| function wrapRaw(fn) { | 
|     const wrappedFn = function (...args) { | 
|         const arg0 = args[0]; | 
|         if (arg0 === undefined || arg0 === null) { | 
|             return arg0; | 
|         } | 
|   | 
|         if (arg0.length > 1) { | 
|             args = arg0; | 
|         } | 
|   | 
|         return fn(args); | 
|     }; | 
|   | 
|     // Preserve .conversion property if there is one | 
|     if ('conversion' in fn) { | 
|         wrappedFn.conversion = fn.conversion; | 
|     } | 
|   | 
|     return wrappedFn; | 
| } | 
|   | 
| function wrapRounded(fn) { | 
|     const wrappedFn = function (...args) { | 
|         const arg0 = args[0]; | 
|   | 
|         if (arg0 === undefined || arg0 === null) { | 
|             return arg0; | 
|         } | 
|   | 
|         if (arg0.length > 1) { | 
|             args = arg0; | 
|         } | 
|   | 
|         const result = fn(args); | 
|   | 
|         // We're assuming the result is an array here. | 
|         // see notice in conversions.js; don't use box types | 
|         // in conversion functions. | 
|         if (typeof result === 'object') { | 
|             for (let len = result.length, i = 0; i < len; i++) { | 
|                 result[i] = Math.round(result[i]); | 
|             } | 
|         } | 
|   | 
|         return result; | 
|     }; | 
|   | 
|     // Preserve .conversion property if there is one | 
|     if ('conversion' in fn) { | 
|         wrappedFn.conversion = fn.conversion; | 
|     } | 
|   | 
|     return wrappedFn; | 
| } | 
|   | 
| models.forEach(fromModel => { | 
|     convert[fromModel] = {}; | 
|   | 
|     Object.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels}); | 
|     Object.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels}); | 
|   | 
|     const routes = route(fromModel); | 
|     const routeModels = Object.keys(routes); | 
|   | 
|     routeModels.forEach(toModel => { | 
|         const fn = routes[toModel]; | 
|   | 
|         convert[fromModel][toModel] = wrapRounded(fn); | 
|         convert[fromModel][toModel].raw = wrapRaw(fn); | 
|     }); | 
| }); | 
|   | 
| module.exports = convert; |