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;
							 |