UNPKG

2.02 kBJavaScriptView Raw
1#!/usr/bin/env node
2
3// @ts-check
4
5// Native
6const fs = require('fs');
7const path = require('path');
8
9// Vendor
10const csv = require('csvtojson');
11const moment = require('moment');
12
13function getRendererData(type, renderers) {
14 const data = renderers.filter(renderer => renderer.field2 === type);
15
16 return data.map((renderer) => {
17 const name = renderer.field1;
18 const amount = renderer.field4;
19
20 return `${amount} - ${name}`;
21 });
22}
23
24function parseAnalytics(file) {
25 return new Promise((resolve, reject) => {
26 csv({ noheader: true })
27 .fromFile(file)
28 .then((data) => {
29 // Remove static header and footer information
30 const dateEntry = data.slice(3, 4);
31 const dateRange = dateEntry[0].field1.replace('# ', '').split('-');
32 const timeSpan = moment.duration(moment(dateRange[1]).diff(moment(dateRange[0]))).asDays();
33 const entries = data.slice(6, data.length - (timeSpan + 4));
34
35 const mobileData = getRendererData('mobile', entries);
36 const tabletData = getRendererData('tablet', entries);
37 const desktopData = getRendererData('desktop', entries);
38
39 resolve({
40 mobileData,
41 tabletData,
42 desktopData,
43 });
44 })
45 .catch((error) => {
46 reject(error);
47 });
48 });
49}
50
51parseAnalytics(path.resolve('./data/analytics.csv')).then((result) => {
52 const output = './test/renderers.js';
53 const data = `
54 export const RENDERER_DESKTOP = [
55 ${result.desktopData.map(entry => `\n\'${entry.replace(',', '')}\'`)}
56 ];
57
58 export const RENDERER_TABLET = [
59 ${result.tabletData.map(entry => `\n\'${entry.replace(',', '')}\'`)}
60 ];
61
62 export const RENDERER_MOBILE = [
63 ${result.mobileData.map(entry => `\n\'${entry.replace(',', '')}\'`)}
64 ];
65 `;
66
67 fs.writeFile(path.resolve(output), data, (error) => {
68 if (!error) {
69 console.log(`Written file to ${output}`);
70 } else {
71 console.error(error);
72 }
73 });
74});