diff --git a/package.json b/package.json index 3f7dbb5..e5628f5 100755 --- a/package.json +++ b/package.json @@ -23,8 +23,8 @@ "test:docs": "npm run docs && concurrently \"npm run docs:serve\" \"npm run test:cafe\" --success first --kill-others --raw", "test": "npm run test:export && npm run test:preview && npm run test:docs && npm run test:e2e", "export": "concurrently \"npm run dev\" \"npm run pdf\" --success first --kill-others --raw", - "lint": "eslint --ext .js,.vue src", - "lint:fix": "eslint --ext .js,.vue src --fix" + "lint": "eslint --ext .js,.vue src scripts", + "lint:fix": "eslint --ext .js,.vue src scripts --fix" }, "dependencies": { "font-awesome": "4.7.0", diff --git a/scripts/export.js b/scripts/export.js index 6bbf756..c4fc33d 100755 --- a/scripts/export.js +++ b/scripts/export.js @@ -1,82 +1,93 @@ const puppeteer = require('puppeteer'); const fs = require('fs'); const path = require('path'); -const Rx = require('rxjs/Rx'); const http = require('http'); const config = require('../config'); +const { + interval +} = require('rxjs'); +const { + filter, + first, + mergeMap +} = require('rxjs/operators'); + const fetchResponse = () => { - return new Promise((res, rej) => { - try { - const req = http.request(`http://localhost:${config.dev.port}/#/`, response => res(response.statusCode)); - req.on('error', (err) => rej(err)); - req.end(); - } catch (err) { - rej(err); - } - }); + return new Promise((res, rej) => { + try { + const req = http.request(`http://localhost:${config.dev.port}/#/`, response => res(response.statusCode)); + req.on('error', (err) => rej(err)); + req.end(); + } catch (err) { + rej(err); + } + }); }; const waitForServerReachable = () => { - return Rx.Observable - .interval(1000) - .mergeMap(async () => { - try { - const statusCode = await fetchResponse(); - if (statusCode === 200) return true; - } catch (err) {} - return false; - }) - .filter(ok => !!ok); + return interval(1000).pipe( + mergeMap(async () => { + try { + const statusCode = await fetchResponse(); + if (statusCode === 200) return true; + } catch (err) {} + return false; + }), + filter(ok => !!ok) + ); }; - +/* const timedOut = timeout => { - return new Promise(res => { - setTimeout(res, timeout); - }); -}; - -const convert = async () => { - await waitForServerReachable().first().toPromise(); - console.log('Connected to server ...'); - console.log('Exporting ...'); - try { - const directories = getResumesFromDirectories(); - directories.forEach(async (dir) => { - const browser = await puppeteer.launch({ - args: ['--no-sandbox'] - }); - const page = await browser.newPage(); - await page.goto(`http://localhost:${config.dev.port}/#/resume/` + dir.name, { - waitUntil: 'networkidle2' - }); - await page.pdf({ - path: path.join(__dirname, '../pdf/' + dir.name + '.pdf'), - format: 'A4' - }); - await browser.close(); + return new Promise(res => { + setTimeout(res, timeout); }); - } catch (err) { - throw new Error(err); - } - console.log('Finished exports.'); +}; +*/ +const convert = async () => { + await waitForServerReachable().pipe( + first() + ).toPromise(); + + console.log('Connected to server ...'); + console.log('Exporting ...'); + try { + const directories = getResumesFromDirectories(); + directories.forEach(async (dir) => { + const browser = await puppeteer.launch({ + args: ['--no-sandbox'] + }); + const page = await browser.newPage(); + await page.goto(`http://localhost:${config.dev.port}/#/resume/` + dir.name, { + waitUntil: 'networkidle2' + }); + await page.pdf({ + path: path.join(__dirname, '../pdf/' + dir.name + '.pdf'), + format: 'A4' + }); + await browser.close(); + }); + } catch (err) { + throw new Error(err); + } + console.log('Finished exports.'); }; const getResumesFromDirectories = () => { - const directories = getDirectories(); - return directories + const directories = getDirectories(); + return directories .map(dir => { - let fileName = dir.replace('.vue', ''); - return { - path: fileName, - name: fileName - }; + const fileName = dir.replace('.vue', ''); + return { + path: fileName, + name: fileName + }; }); }; const getDirectories = () => { - const srcpath = path.join(__dirname, '../src/resumes'); - return fs.readdirSync(srcpath) + const srcpath = path.join(__dirname, '../src/resumes'); + return fs.readdirSync(srcpath) .filter(file => file !== 'resumes.js' && file !== 'template.vue' && file !== 'options.js'); }; diff --git a/scripts/preview.js b/scripts/preview.js index 60bd990..a6c2813 100755 --- a/scripts/preview.js +++ b/scripts/preview.js @@ -4,30 +4,30 @@ const path = require('path'); const fs = require('fs'); const getDirectories = () => { - const srcpath = path.join(__dirname, '../pdf'); - return fs.readdirSync(srcpath); + const srcpath = path.join(__dirname, '../pdf'); + return fs.readdirSync(srcpath); }; const getTemplateName = PDF => { - return PDF.replace('.pdf', ''); + return PDF.replace('.pdf', ''); }; const convert = async (PDF) => { - const pdfImage = new PDFImage(path.join(__dirname, '../pdf/' + PDF)); - await pdfImage.convertPage(0); + const pdfImage = new PDFImage(path.join(__dirname, '../pdf/' + PDF)); + await pdfImage.convertPage(0); }; const directories = getDirectories(); directories.forEach(async (dir) => { - try { - await convert(dir); - } catch (e) { - console.dir(e); - } - const source = path.join(__dirname, '../pdf/' + getTemplateName(dir) + '-0.png'); - const output = path.join(__dirname, '../src/assets/preview/resume-' + getTemplateName(dir) + '.png'); - console.log(output); - mv(source, output, function (err) { - if (err) console.dir(err); - }); + try { + await convert(dir); + } catch (e) { + console.dir(e); + } + const source = path.join(__dirname, '../pdf/' + getTemplateName(dir) + '-0.png'); + const output = path.join(__dirname, '../src/assets/preview/resume-' + getTemplateName(dir) + '.png'); + console.log(output); + mv(source, output, function (err) { + if (err) console.dir(err); + }); });