1 const conversions = require('./conversions');
2 const route = require('./route');
6 const models = Object.keys(conversions);
9 const wrappedFn = function (...args) {
11 if (arg0 === undefined || arg0 === null) {
15 if (arg0.length > 1) {
22 // Preserve .conversion property if there is one
23 if ('conversion' in fn) {
24 wrappedFn.conversion = fn.conversion;
30 function wrapRounded(fn) {
31 const wrappedFn = function (...args) {
34 if (arg0 === undefined || arg0 === null) {
38 if (arg0.length > 1) {
42 const result = fn(args);
44 // We're assuming the result is an array here.
45 // see notice in conversions.js; don't use box types
46 // in conversion functions.
47 if (typeof result === 'object') {
48 for (let len = result.length, i = 0; i < len; i++) {
49 result[i] = Math.round(result[i]);
56 // Preserve .conversion property if there is one
57 if ('conversion' in fn) {
58 wrappedFn.conversion = fn.conversion;
64 models.forEach(fromModel => {
65 convert[fromModel] = {};
67 Object.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});
68 Object.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});
70 const routes = route(fromModel);
71 const routeModels = Object.keys(routes);
73 routeModels.forEach(toModel => {
74 const fn = routes[toModel];
76 convert[fromModel][toModel] = wrapRounded(fn);
77 convert[fromModel][toModel].raw = wrapRaw(fn);
81 module.exports = convert;