From e81317fe90a5d7b18a0eba57905d915f9d9599c4 Mon Sep 17 00:00:00 2001 From: "Vache, Aurelie" Date: Tue, 4 Dec 2018 10:19:55 +0100 Subject: [PATCH] chore: fix typo and add asciidoctor generator to pdf --- .gitignore | 86 + bin/asciidoctorjs-pdf | 22 + .../cheat-sheet/template/assets/style.css | 153 ++ .../cheat-sheet/template/assets/wordmark.svg | 6 + examples/cheat-sheet/template/template.js | 62 + generate/README.md | 8 +- lib/cli.js | 242 ++ lib/converter.js | 55 + package-lock.json | 2297 +++++++++++++++++ package.json | 29 + template/assets/style.css | 153 ++ template/assets/wordmark.svg | 6 + template/template.js | 62 + terraform-cheat-sheet.adoc | 16 +- terraform-cheat-sheet.pdf | Bin 94538 -> 94590 bytes terraform-cheat-sheet_temp.html | 18 +- watch.js | 18 + 17 files changed, 3220 insertions(+), 13 deletions(-) create mode 100644 .gitignore create mode 100755 bin/asciidoctorjs-pdf create mode 100644 examples/cheat-sheet/template/assets/style.css create mode 100644 examples/cheat-sheet/template/assets/wordmark.svg create mode 100644 examples/cheat-sheet/template/template.js create mode 100644 lib/cli.js create mode 100644 lib/converter.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 template/assets/style.css create mode 100644 template/assets/wordmark.svg create mode 100644 template/template.js create mode 100644 watch.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..46c0022 --- /dev/null +++ b/.gitignore @@ -0,0 +1,86 @@ + +# Created by https://www.gitignore.io/api/node +# Edit at https://www.gitignore.io/?templates=node + +### Node ### +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + +# parcel-bundler cache (https://parceljs.org/) +.cache + +# next.js build output +.next + +# nuxt.js build output +.nuxt + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +#DynamoDB Local files +.dynamodb/ + +# End of https://www.gitignore.io/api/node diff --git a/bin/asciidoctorjs-pdf b/bin/asciidoctorjs-pdf new file mode 100755 index 0000000..f15dec1 --- /dev/null +++ b/bin/asciidoctorjs-pdf @@ -0,0 +1,22 @@ +#!/usr/bin/env node + +'use strict' + +process.title = 'asciidoctorjs-pdf' +const cli = require('../lib/cli.js') + +async function main () { + const argv = cli.argsParser().argv + return cli.run(argv) +} + +main() + .then((result) => { + if (result.exit) { + process.exit(0) + } + }) + .catch((error) => { + console.log('error', error) + process.exit(1) + }) diff --git a/examples/cheat-sheet/template/assets/style.css b/examples/cheat-sheet/template/assets/style.css new file mode 100644 index 0000000..186e42d --- /dev/null +++ b/examples/cheat-sheet/template/assets/style.css @@ -0,0 +1,153 @@ +@import 'https://fonts.googleapis.com/css?family=Roboto:400,500'; + +@page { + size: 508mm 361mm; + margin: 0.5cm; + padding: 0.5cm; +} + +@page :first { + margin: 0; + padding: 0; +} + +html, body { + height: 100%; + margin: 0; + padding: 0; + color: #4a4a4a; + text-align: justify; +} + +html { + font-family: Roboto, 'DejaVu Sans', Arial, sans-serif; + font-size: 18px; +} + +header { + background-color: #131313; + display: grid; + grid-template-columns: auto 1fr auto; + padding: 0.7cm 12em 0.7cm 0.7cm; + align-items: center; + color: white; +} + +header > a { + color: white; +} + +header > .wordmark { + max-height: 3em; +} + +header > .website { + font-size: 1.4em; + font-weight: 400; + align-self: end; +} + +header > .logo { + position: absolute; + top: 1em; + right: 3em; + max-width: 6em; +} + +h1 { + font-size: 2em; + margin: 0; + padding: 0 0 0 1em; + font-weight: 400; +} + +section.content { + margin: 0.5cm; + padding: 0; + columns: auto calc((100vw / 3) - 3cm); +} + +.admonitionblock div { + font-weight: bold +} + +.sect1 { + max-width: calc((100vw / 3) - 3cm); + margin-right: 1.2cm; + margin-left: 1.2cm; + margin-top: 0.5cm; + break-inside: avoid-region; +} + +h2 { + color: #131313; + font-size: 1.4em; + font-weight: 500; + margin-top: 0; +} + +h3 { + font-size: 1.1em; + font-weight: 500; +} + +.listingblock pre { + background:#fafcfe; + border: 1px solid #d5d4d9; + color: #4a4a4a; +} + + +.listingblock pre,.listingblock pre[class] { + font-size: 0.8em; + line-height: 1.5em; + border-radius: 4px; + word-wrap: break-word; + padding: 1em; +} + +.listingblock { + margin-bottom: 2em; +} + +a { + color: #131313; + text-decoration: none; +} + +.authors { + margin-top: auto; +} + +.author { + display: grid; + grid-template-columns: auto 1fr; + align-items: center; + padding-bottom: 1em; +} + +.author-avatar > img { + border-radius: 50%; + max-height: 2em; +} + +.author-avatar { + grid-row-start: span 2; + padding-right: 1em; +} + +.author-bio { + font-size: 0.9em +} + +.page-break { + page-break-after: always; +} + +pre { + break-inside: avoid; +} + +.single-block { + break-inside: avoid-column; +} \ No newline at end of file diff --git a/examples/cheat-sheet/template/assets/wordmark.svg b/examples/cheat-sheet/template/assets/wordmark.svg new file mode 100644 index 0000000..52591dc --- /dev/null +++ b/examples/cheat-sheet/template/assets/wordmark.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/examples/cheat-sheet/template/template.js b/examples/cheat-sheet/template/template.js new file mode 100644 index 0000000..9b1e042 --- /dev/null +++ b/examples/cheat-sheet/template/template.js @@ -0,0 +1,62 @@ +const getAuthors = function (node) { + const result = []; + const authorCount = node.getAttribute('authorcount') + if (authorCount > 1) { + for (let index = 1; index < authorCount + 1; index++) { + const author = node.getAttribute(`author_${index}`) + const email = node.getAttribute(`email_${index}`) + const bio = node.getAttribute(`authorbio_${index}`) + let twitter; + if (email && email.startsWith("https://twitter.com/")) { + twitter = email.replace("https://twitter.com/", ""); + } + result.push({ name: author, email: email, bio: bio, twitter: twitter }) + } + } else { + const author = node.getAttribute('author') + const email = node.getAttribute('email') + const bio = node.getAttribute(`authorbio`) + let twitter; + if (email && email.startsWith("https://twitter.com/")) { + twitter = email.replace("https://twitter.com/", ""); + } + result.push({ name: author, email: email, bio: bio, twitter: twitter }) + } + return result; +} + +const renderAuthors = function (authors) { + return authors.map(author => { + return `
+
+ +
${author.bio}
+
+`; + }).join('\n') +} + + +module.exports = [{ + paragraph: (ctx) => `

${ctx.node.getContent()}

`, + document: (ctx) => ` + + + + + + +
+

${ctx.node.getHeader().getTitle()}

+
+
+${ctx.node.getContent()} +
+

Authors :

+${renderAuthors(getAuthors(ctx.node))} +
${ctx.node.getAttribute('version')}
+
+
+`, + page_break: () => `
` +}] diff --git a/generate/README.md b/generate/README.md index 2c52d9d..502c45f 100644 --- a/generate/README.md +++ b/generate/README.md @@ -1,9 +1,13 @@ # Generate +## Pre-requisits + +`$ npm i yargs --save` + ## 1. Markdown to AsciiDoc `$ pandoc -s --columns=80 --atx-headers -t asciidoc -o out.adoc README.md` -##2. +##2. Asciidoc to PDF -`$ ./bin/asciidoctorjs-pdf /home/scraly/git/src/github.com/scraly/terraform-cheat-sheet/out.adoc --template-require ../examples/cheat-sheet/redhat/template.js` +`$ ./bin/asciidoctorjs-pdf terraform-cheat-sheet.adoc --template-require ../examples/cheat-sheet/template/template.js` diff --git a/lib/cli.js b/lib/cli.js new file mode 100644 index 0000000..d9f526d --- /dev/null +++ b/lib/cli.js @@ -0,0 +1,242 @@ +/* global Opal */ +'use strict' + +// NOTE: we should extend asciidoctor-cli.js + +const yargs = require('yargs') +const converter = require('./converter') +const chokidar = require('chokidar') +const path = require('path') + +function convertOptions (argv) { + const backend = argv['backend'] + const doctype = argv['doctype'] + const safeMode = argv['safe-mode'] + const noHeaderFooter = argv['no-header-footer'] + const sectionNumbers = argv['section-numbers'] + const baseDir = argv['base-dir'] + const destinationDir = argv['destination-dir'] + const quiet = argv['quiet'] + const verbose = argv['verbose'] + const timings = argv['timings'] + const trace = argv['trace'] + const requireLib = argv['require'] + const templateRequireLib = argv['template-require'] + if (verbose) { + console.log('require ' + requireLib) + console.log('template-require ' + templateRequireLib) + console.log('backend ' + backend) + console.log('doctype ' + doctype) + console.log('header-footer ' + !noHeaderFooter) + console.log('section-numbers ' + sectionNumbers) + console.log('quiet ' + quiet) + console.log('verbose ' + verbose) + console.log('timings ' + timings) + console.log('trace ' + trace) + console.log('base-dir ' + baseDir) + console.log('destination-dir ' + destinationDir) + } + if (requireLib) { + require(requireLib) + } + const verboseMode = quiet ? 0 : verbose ? 2 : 1 + const attributes = [] + if (noHeaderFooter) { + attributes.push('showtitle') + } + if (sectionNumbers) { + attributes.push('sectnums') + } + const cliAttributes = argv['attribute'] + if (cliAttributes) { + attributes.push(...cliAttributes) + } + if (verbose) { + console.log('verbose-mode ' + verboseMode) + console.log('attributes ' + attributes) + } + const options = { + backend: backend, + doctype: doctype, + safe: safeMode, + header_footer: !noHeaderFooter, + verbose: verboseMode, + timings: timings, + trace: trace + } + if (baseDir != null) { + options.base_dir = baseDir + } + if (destinationDir != null) { + options.to_dir = destinationDir + } + options.to_file = false + options.attributes = attributes + if (templateRequireLib) { + options.templates = require(templateRequireLib) + } + if (verbose) { + console.log('options ' + JSON.stringify(options)) + } + return options +} + +function argsParser () { + return yargs + .detectLocale(false) + .wrap(Math.min(120, yargs.terminalWidth())) + .command('$0 [files...]', '', function (yargs) { + return yargs + .option('doctype', { + alias: 'd', + default: 'article', + describe: 'document type to use when converting document', + choices: ['article', 'book', 'manpage', 'inline'] + }) + .option('template-require', { + describe: 'require the specified template script', + type: 'string' + }) + .option('out-file', { + alias: 'o', + describe: 'output file (default: based on path of input file) use \'\' to output to STDOUT', + type: 'string' + }) + .option('safe-mode', { + alias: 'S', + default: 'unsafe', + describe: 'set safe mode level explicitly, disables potentially dangerous macros in source files, such as include::[]', + choices: ['unsafe', 'safe', 'server', 'secure'] + }) + .option('no-header-footer', { + alias: 's', + default: false, + describe: 'suppress output of header and footer', + type: 'boolean' + }) + .option('section-numbers', { + alias: 'n', + default: false, + describe: 'auto-number section titles in the HTML backend disabled by default', + type: 'boolean' + }) + .option('base-dir', { + // QUESTION: should we check that the directory exists ? coerce to a directory ? + alias: 'B', + describe: 'base directory containing the document and resources (default: directory of source file)', + type: 'string' + }) + .option('destination-dir', { + // QUESTION: should we check that the directory exists ? coerce to a directory ? + alias: 'D', + describe: 'destination output directory (default: directory of source file)', + type: 'string' + }) + .option('quiet', { + alias: 'q', + default: false, + describe: 'suppress warnings', + type: 'boolean' + }) + .option('trace', { + default: false, + describe: 'include backtrace information on errors', + type: 'boolean' + }) + .option('verbose', { + alias: 'v', + default: false, + describe: 'enable verbose mode', + type: 'boolean' + }) + .option('timings', { + alias: 't', + default: false, + describe: 'enable timings mode', + type: 'boolean' + }) + .option('attribute', { + alias: 'a', + array: true, + describe: 'a document attribute to set in the form of key, key! or key=value pair', + type: 'string' + }) + .option('require', { + alias: 'r', + array: true, + describe: 'require the specified library before executing the processor, using the standard Node require', + type: 'string' + }) + .option('watch', { + alias: 'w', + default: false, + describe: 'enable watch mode', + type: 'boolean' + }) + .option('version', { + alias: 'V', + default: false, + describe: 'display the version and runtime environment (or -v if no other flags or arguments)', + type: 'boolean' + }) + }) + .help() +} + +async function convertFiles (files, argv, options, verbose) { + for (let file of files) { + if (verbose) { + console.log(`converting file ${file}`) + } + if (argv['timings']) { + const timings = asciidoctor.Timings.$new() + const instanceOptions = Object.assign({}, options, { timings: timings }) + await converter.convert(file, instanceOptions) + timings.$print_report(Opal.gvars.stderr, file) + } else { + await converter.convert(file, options) + } + } +} + +async function run (argv) { + const verbose = argv['verbose'] + const version = argv['version'] + const files = argv['files'] + const watch = argv['watch'] + const options = convertOptions(argv) + if (version || (verbose && files && files.length === 0)) { + console.log(`Asciidoctor ${asciidoctor.getCoreVersion()} [http://asciidoctor.org]`) + const releaseName = process.release ? process.release.name : 'node' + console.log(`Runtime Environment (${releaseName} ${process.version} on ${process.platform})`) + } else if (files && files.length > 0) { + await convertFiles(files, argv, options, verbose) + if (watch) { + const watchFiles = files.map((file) => { + let dirname = path.dirname(file) + return [path.join(dirname, '**', '*.css'), path.join(dirname, '**', '*.js')] + }) + chokidar.watch(watchFiles, { ignored: /(^|[\/\\])\../ }).on('all', async (event, path) => { + if (event === 'change') { + console.log(' ' + event, path) + try { + await convertFiles(files, argv, options, verbose) + } catch (e) { + console.log('error', e); + } + } + }); + return { exit: false }; + } else { + return { exit: true }; + } + } else { + yargs.showHelp() + return { exit: true }; + } +} + +module.exports = { + run: run, + argsParser: argsParser +} diff --git a/lib/converter.js b/lib/converter.js new file mode 100644 index 0000000..7f2478f --- /dev/null +++ b/lib/converter.js @@ -0,0 +1,55 @@ +const asciidoctor = require('asciidoctor.js')() +require('asciidoctor.js-pug') +const util = require('util') +const fs = require('fs') +const path = require('path') +const writeFile = util.promisify(fs.writeFile) +const puppeteer = require('puppeteer') + +async function convert(inputFile, options) { + const doc = asciidoctor.loadFile(inputFile, options) + const html = doc.convert(options) + const workingDir = path.dirname(inputFile) + const inputFilenameWithoutExt = path.basename(inputFile, path.extname(inputFile)) + const outputFile = path.join(workingDir, inputFilenameWithoutExt + '.pdf') + let tempFile; + if (path.isAbsolute(workingDir)) { + tempFile = path.join(workingDir, inputFilenameWithoutExt + '_temp.html') + } else { + tempFile = path.normalize(path.join(process.cwd(), workingDir, inputFilenameWithoutExt + '_temp.html')) + } + const puppeteerConfig = { + headless: true, + args: ['--no-sandbox'] + } + const browser = await puppeteer.launch(puppeteerConfig); + const page = await browser.newPage() + page.on('pageerror', function (err) { + console.log('Page error: ' + err.toString()) + }).on('error', function (err) { + console.log('Error: ' + err.toString()) + }) + await writeFile(tempFile, html) + await page.goto('file://' + tempFile, {waitUntil: 'networkidle2'}) + const pdfOptions = { + path: outputFile, + printBackground: true + } + let pdfWidth = doc.getAttributes()['pdf-width'] + if (pdfWidth) { + pdfOptions.width = pdfWidth + } + let pdfHeight = doc.getAttributes()['pdf-height'] + if (pdfHeight) { + pdfOptions.height = pdfHeight + } + let pdfSize = doc.getAttributes()['pdf-size'] + if (pdfSize) { + pdfOptions.size = pdfSize + } + return await page.pdf(pdfOptions) +} + +module.exports = { + convert: convert +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..7300ef7 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2297 @@ +{ + "name": "asciidoctor-pdf.js", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/babel-types": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.1.tgz", + "integrity": "sha512-EkcOk09rjhivbovP8WreGRbXW20YRfe/qdgXOGq3it3u3aAOWDRNsQhL/XPAWFF7zhZZ+uR+nT+3b+TCkIap1w==" + }, + "@types/babylon": { + "version": "6.16.2", + "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.2.tgz", + "integrity": "sha512-+Jty46mPaWe1VAyZbfvgJM4BAdklLWxrT5tc/RjvCgLrtk6gzRY6AOnoWFv4p6hVxhJshDdr2hGVn56alBp97Q==", + "requires": { + "@types/babel-types": "7.0.1" + } + }, + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=" + }, + "acorn-globals": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", + "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", + "requires": { + "acorn": "4.0.13" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" + } + } + }, + "agent-base": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.0.tgz", + "integrity": "sha512-c+R/U5X+2zz2+UCrCFv6odQzJdoqI+YecuhnAJLa1zYaMc13zPfwMwZrr91Pd1DYNo/yPRbiM4WVf9whgwFsIg==", + "requires": { + "es6-promisify": "5.0.0" + } + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "3.1.10", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, + "asciidoctor.js": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/asciidoctor.js/-/asciidoctor.js-1.5.6.tgz", + "integrity": "sha512-GFBpOZiRih8jW8HEqlwU6ywUOE0XHso1cPTG/4YtNbR+0DxZ9H3aQ7JMTBeSsc82pIiUR9MtWXAHIZ6L3IOeFg==", + "requires": { + "opal-runtime": "1.0.3" + } + }, + "asciidoctor.js-pug": { + "version": "github:Mogztter/asciidoctor.js-pug#89c433e6282370a9ac8fe07426523a7d42aa4d83", + "requires": { + "asciidoctor.js": "1.5.6", + "bluebird": "3.5.1", + "debug": "3.1.0", + "glob": "7.1.2", + "minimatch": "3.0.4", + "opal-runtime": "1.0.3", + "pug": "2.0.3" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + } + } + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.5", + "regenerator-runtime": "0.11.1" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.10", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.1", + "pascalcase": "0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "binary-extensions": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", + "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==", + "dev": true + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "character-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", + "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=", + "requires": { + "is-regex": "1.0.4" + } + }, + "chokidar": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", + "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "dev": true, + "requires": { + "anymatch": "2.0.0", + "async-each": "1.0.1", + "braces": "2.3.2", + "glob-parent": "3.1.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "4.0.0", + "lodash.debounce": "4.0.8", + "normalize-path": "2.1.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.2.1", + "upath": "1.1.0" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + } + } + }, + "clean-css": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.11.tgz", + "integrity": "sha1-Ls3xRaujj1R0DybO/Q/z4D4SXWo=", + "requires": { + "source-map": "0.5.7" + } + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "requires": { + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "wrap-ansi": "2.1.0" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "1.0.0", + "object-visit": "1.0.1" + } + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "typedarray": "0.0.6" + } + }, + "constantinople": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.1.2.tgz", + "integrity": "sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw==", + "requires": { + "@types/babel-types": "7.0.1", + "@types/babylon": "6.16.2", + "babel-types": "6.26.0", + "babylon": "6.18.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-js": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.5.tgz", + "integrity": "sha1-sU3ek2xkDAV5prUMq8wTLdYSfjs=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "4.1.2", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "1.0.2", + "isobject": "3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "doctypes": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", + "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=" + }, + "es6-promise": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz", + "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==" + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "requires": { + "es6-promise": "4.2.4" + } + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "extract-zip": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.6.tgz", + "integrity": "sha1-EpDt6NINCHK0Kf0/NRyhKOxe+Fw=", + "requires": { + "concat-stream": "1.6.0", + "debug": "2.6.9", + "mkdirp": "0.5.0", + "yauzl": "2.4.1" + } + }, + "fd-slicer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "requires": { + "pend": "1.2.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "2.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "0.2.2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "requires": { + "function-bind": "1.1.1" + } + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "https-proxy-agent": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", + "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", + "requires": { + "agent-base": "4.2.0", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "1.12.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-expression": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz", + "integrity": "sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8=", + "requires": { + "acorn": "4.0.13", + "object-assign": "4.1.1" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "3.0.1" + } + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "requires": { + "has": "1.0.1" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "js-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", + "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=" + }, + "jstransformer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", + "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=", + "requires": { + "is-promise": "2.1.0", + "promise": "7.3.1" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "1.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + }, + "lru-cache": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", + "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "1.0.1" + } + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "requires": { + "mimic-fn": "1.2.0" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "1.0.2", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", + "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "fragment-cache": "0.2.1", + "is-windows": "1.0.2", + "kind-of": "6.0.2", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "2.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "3.0.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "3.0.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1.0.2" + } + }, + "opal-runtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/opal-runtime/-/opal-runtime-1.0.3.tgz", + "integrity": "sha512-bUcaUjep2qZ1GnctgvQ8AsgQ+U0/uu4vaDDLIkkj6Hk4RxfgKW+qaHE0Kd6WPTBcIy/sjjy8zgDYsRMkYMIi4g==", + "requires": { + "glob": "6.0.4", + "xmlhttprequest": "1.8.0" + } + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-limit": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "requires": { + "p-try": "1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "1.2.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + }, + "progress": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", + "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=" + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "requires": { + "asap": "2.0.6" + } + }, + "proxy-from-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", + "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=" + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "pug": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.3.tgz", + "integrity": "sha1-ccuoJTfJWl6rftBGluQiH1Oqh44=", + "requires": { + "pug-code-gen": "2.0.1", + "pug-filters": "3.1.0", + "pug-lexer": "4.0.0", + "pug-linker": "3.0.5", + "pug-load": "2.0.11", + "pug-parser": "5.0.0", + "pug-runtime": "2.0.4", + "pug-strip-comments": "1.0.3" + } + }, + "pug-attrs": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.3.tgz", + "integrity": "sha1-owlflw5kFR972tlX7vVftdeQXRU=", + "requires": { + "constantinople": "3.1.2", + "js-stringify": "1.0.2", + "pug-runtime": "2.0.4" + } + }, + "pug-code-gen": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.1.tgz", + "integrity": "sha1-CVHsgyJddNjPxHan+Zolm199BQw=", + "requires": { + "constantinople": "3.1.2", + "doctypes": "1.1.0", + "js-stringify": "1.0.2", + "pug-attrs": "2.0.3", + "pug-error": "1.3.2", + "pug-runtime": "2.0.4", + "void-elements": "2.0.1", + "with": "5.1.1" + } + }, + "pug-error": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-1.3.2.tgz", + "integrity": "sha1-U659nSm7A89WRJOgJhCfVMR/XyY=" + }, + "pug-filters": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-3.1.0.tgz", + "integrity": "sha1-JxZVVbwEwjbkqisDZiRt+gIbYm4=", + "requires": { + "clean-css": "4.1.11", + "constantinople": "3.1.2", + "jstransformer": "1.0.0", + "pug-error": "1.3.2", + "pug-walk": "1.1.7", + "resolve": "1.7.1", + "uglify-js": "2.8.29" + } + }, + "pug-lexer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-4.0.0.tgz", + "integrity": "sha1-IQwYRX7y4XYCQnQMXmR715TOwng=", + "requires": { + "character-parser": "2.2.0", + "is-expression": "3.0.0", + "pug-error": "1.3.2" + } + }, + "pug-linker": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.5.tgz", + "integrity": "sha1-npp65ABWgtAn3uuWsAD4juuDoC8=", + "requires": { + "pug-error": "1.3.2", + "pug-walk": "1.1.7" + } + }, + "pug-load": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-2.0.11.tgz", + "integrity": "sha1-5kjlftET/iwfRdV4WOorrWvAFSc=", + "requires": { + "object-assign": "4.1.1", + "pug-walk": "1.1.7" + } + }, + "pug-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-5.0.0.tgz", + "integrity": "sha1-45Stmz/KkxI5QK/4hcBuRKt+aOQ=", + "requires": { + "pug-error": "1.3.2", + "token-stream": "0.0.1" + } + }, + "pug-runtime": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.4.tgz", + "integrity": "sha1-4XjhvaaKsujArPybztLFT9iM61g=" + }, + "pug-strip-comments": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.3.tgz", + "integrity": "sha1-8VWVkiBu3G+FMQ2s9K+0igJa9Z8=", + "requires": { + "pug-error": "1.3.2" + } + }, + "pug-walk": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.7.tgz", + "integrity": "sha1-wA1cUSi6xYBr7BXSt+fNq+QlMfM=" + }, + "puppeteer": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.3.0.tgz", + "integrity": "sha512-wx10aPQPpGJVxdB6yoDSLm9p4rCwARUSLMVV0bx++owuqkvviXKyiFM3EWsywaFmjOKNPXacIjplF7xhHiFP3w==", + "requires": { + "debug": "2.6.9", + "extract-zip": "1.6.6", + "https-proxy-agent": "2.2.1", + "mime": "1.6.0", + "progress": "2.0.0", + "proxy-from-env": "1.0.0", + "rimraf": "2.6.2", + "ws": "3.3.3" + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "micromatch": "3.1.10", + "readable-stream": "2.3.6" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "3.0.2", + "safe-regex": "1.1.0" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "resolve": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", + "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", + "requires": { + "path-parse": "1.0.5" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "requires": { + "glob": "7.1.2" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + } + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "0.1.15" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "0.11.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.2", + "use": "3.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "2.1.2", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "3.0.2" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "0.2.5", + "object-copy": "0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + } + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "3.0.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "regex-not": "1.0.2", + "safe-regex": "1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "repeat-string": "1.6.1" + } + }, + "token-stream": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz", + "integrity": "sha1-zu78cXp2xDFvEm0LnbqlXX598Bo=" + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + } + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "optional": true + }, + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } + } + } + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "0.3.1", + "isobject": "3.0.1" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", + "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", + "dev": true + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=" + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" + }, + "with": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/with/-/with-5.1.1.tgz", + "integrity": "sha1-+k2qktrzLE6pTtRTyB8EaGtXXf4=", + "requires": { + "acorn": "3.3.0", + "acorn-globals": "3.1.0" + } + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "requires": { + "async-limiter": "1.0.0", + "safe-buffer": "5.1.2", + "ultron": "1.1.1" + } + }, + "xmlhttprequest": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", + "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=" + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "yargs": { + "version": "11.1.0", + "resolved": "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", + "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", + "requires": { + "cliui": "4.1.0", + "decamelize": "1.2.0", + "find-up": "2.1.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "9.0.2" + } + }, + "yargs-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "requires": { + "camelcase": "4.1.0" + } + }, + "yauzl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", + "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", + "requires": { + "fd-slicer": "1.0.1" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..ceed5fb --- /dev/null +++ b/package.json @@ -0,0 +1,29 @@ +{ + "name": "asciidoctor-pdf.js", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/Mogztter/asciidoctor-pdf.js.git" + }, + "keywords": [], + "author": "", + "license": "ISC", + "bugs": { + "url": "https://github.com/Mogztter/asciidoctor-pdf.js/issues" + }, + "homepage": "https://github.com/Mogztter/asciidoctor-pdf.js#readme", + "dependencies": { + "asciidoctor.js": "^1.5.6", + "asciidoctor.js-pug": "github:Mogztter/asciidoctor.js-pug#89c433e6282370a9ac8fe07426523a7d42aa4d83", + "puppeteer": "^1.3.0", + "yargs": "^11.1.0" + }, + "devDependencies": { + "chokidar": "^2.0.4" + } +} diff --git a/template/assets/style.css b/template/assets/style.css new file mode 100644 index 0000000..186e42d --- /dev/null +++ b/template/assets/style.css @@ -0,0 +1,153 @@ +@import 'https://fonts.googleapis.com/css?family=Roboto:400,500'; + +@page { + size: 508mm 361mm; + margin: 0.5cm; + padding: 0.5cm; +} + +@page :first { + margin: 0; + padding: 0; +} + +html, body { + height: 100%; + margin: 0; + padding: 0; + color: #4a4a4a; + text-align: justify; +} + +html { + font-family: Roboto, 'DejaVu Sans', Arial, sans-serif; + font-size: 18px; +} + +header { + background-color: #131313; + display: grid; + grid-template-columns: auto 1fr auto; + padding: 0.7cm 12em 0.7cm 0.7cm; + align-items: center; + color: white; +} + +header > a { + color: white; +} + +header > .wordmark { + max-height: 3em; +} + +header > .website { + font-size: 1.4em; + font-weight: 400; + align-self: end; +} + +header > .logo { + position: absolute; + top: 1em; + right: 3em; + max-width: 6em; +} + +h1 { + font-size: 2em; + margin: 0; + padding: 0 0 0 1em; + font-weight: 400; +} + +section.content { + margin: 0.5cm; + padding: 0; + columns: auto calc((100vw / 3) - 3cm); +} + +.admonitionblock div { + font-weight: bold +} + +.sect1 { + max-width: calc((100vw / 3) - 3cm); + margin-right: 1.2cm; + margin-left: 1.2cm; + margin-top: 0.5cm; + break-inside: avoid-region; +} + +h2 { + color: #131313; + font-size: 1.4em; + font-weight: 500; + margin-top: 0; +} + +h3 { + font-size: 1.1em; + font-weight: 500; +} + +.listingblock pre { + background:#fafcfe; + border: 1px solid #d5d4d9; + color: #4a4a4a; +} + + +.listingblock pre,.listingblock pre[class] { + font-size: 0.8em; + line-height: 1.5em; + border-radius: 4px; + word-wrap: break-word; + padding: 1em; +} + +.listingblock { + margin-bottom: 2em; +} + +a { + color: #131313; + text-decoration: none; +} + +.authors { + margin-top: auto; +} + +.author { + display: grid; + grid-template-columns: auto 1fr; + align-items: center; + padding-bottom: 1em; +} + +.author-avatar > img { + border-radius: 50%; + max-height: 2em; +} + +.author-avatar { + grid-row-start: span 2; + padding-right: 1em; +} + +.author-bio { + font-size: 0.9em +} + +.page-break { + page-break-after: always; +} + +pre { + break-inside: avoid; +} + +.single-block { + break-inside: avoid-column; +} \ No newline at end of file diff --git a/template/assets/wordmark.svg b/template/assets/wordmark.svg new file mode 100644 index 0000000..52591dc --- /dev/null +++ b/template/assets/wordmark.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/template/template.js b/template/template.js new file mode 100644 index 0000000..9b1e042 --- /dev/null +++ b/template/template.js @@ -0,0 +1,62 @@ +const getAuthors = function (node) { + const result = []; + const authorCount = node.getAttribute('authorcount') + if (authorCount > 1) { + for (let index = 1; index < authorCount + 1; index++) { + const author = node.getAttribute(`author_${index}`) + const email = node.getAttribute(`email_${index}`) + const bio = node.getAttribute(`authorbio_${index}`) + let twitter; + if (email && email.startsWith("https://twitter.com/")) { + twitter = email.replace("https://twitter.com/", ""); + } + result.push({ name: author, email: email, bio: bio, twitter: twitter }) + } + } else { + const author = node.getAttribute('author') + const email = node.getAttribute('email') + const bio = node.getAttribute(`authorbio`) + let twitter; + if (email && email.startsWith("https://twitter.com/")) { + twitter = email.replace("https://twitter.com/", ""); + } + result.push({ name: author, email: email, bio: bio, twitter: twitter }) + } + return result; +} + +const renderAuthors = function (authors) { + return authors.map(author => { + return `
+
+ +
${author.bio}
+
+`; + }).join('\n') +} + + +module.exports = [{ + paragraph: (ctx) => `

${ctx.node.getContent()}

`, + document: (ctx) => ` + + + + + + +
+

${ctx.node.getHeader().getTitle()}

+
+
+${ctx.node.getContent()} +
+

Authors :

+${renderAuthors(getAuthors(ctx.node))} +
${ctx.node.getAttribute('version')}
+
+
+`, + page_break: () => `
` +}] diff --git a/terraform-cheat-sheet.adoc b/terraform-cheat-sheet.adoc index 6a35b59..6cd58ba 100644 --- a/terraform-cheat-sheet.adoc +++ b/terraform-cheat-sheet.adoc @@ -4,7 +4,7 @@ Aurélie Vache :authorbio: Cloud Dev(Ops) at Continental :pdf-width: 508mm :pdf-height: 361mm -:version: v1.0.0 +:version: v1.0.1 == About Terraform CLI @@ -114,9 +114,9 @@ accidentally checked into version control. `$ terraform apply` -==== Apply and auto aprove +==== Apply and auto approve -`$ terraform apply -auto-aprove` +`$ terraform apply -auto-approve` ==== Apply and define new variables value @@ -220,6 +220,10 @@ For Linux: `$ sudo apt-get install jq` +or + +`$ yum install jq` + For OS X: `$ brew install jq` @@ -267,8 +271,12 @@ which extract existing AWS resources and convert it to Terraform files! ==== Installation +`$ sudo apt install ruby` +or +`$ sudo yum install ruby` + +and .... -$ sudo apt install ruby $ gem install terraforming .... diff --git a/terraform-cheat-sheet.pdf b/terraform-cheat-sheet.pdf index 0bf37d755f3cc8d7935fab40a9020b9988254e17..38e1ea7a2a63dcd6a03ed9272f901329ae052a10 100644 GIT binary patch delta 12523 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 LI0_0e1@Zp^#UZXN delta 12469 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 P0mH!tM@cEEEcL$t%&wP! diff --git a/terraform-cheat-sheet_temp.html b/terraform-cheat-sheet_temp.html index cdac4cf..7d68e16 100644 --- a/terraform-cheat-sheet_temp.html +++ b/terraform-cheat-sheet_temp.html @@ -2,12 +2,11 @@ - +

Terraform CLI Cheat Sheet

-
@@ -127,8 +126,8 @@

Apply

accidentally checked into version control.

$ terraform apply

-

Apply and auto aprove

-

$ terraform apply -auto-aprove

+

Apply and auto approve

+

$ terraform apply -auto-approve

Apply and define new variables value

@@ -241,6 +240,8 @@

jq

Installaton

For Linux:

$ sudo apt-get install jq

+

or

+

$ yum install jq

For OS X:

$ brew install jq

@@ -288,10 +289,13 @@

Terraforming

which extract existing AWS resources and convert it to Terraform files!

Installation

+

$ sudo apt install ruby +or +$ sudo yum install ruby

+

and

-
$ sudo apt install ruby
-$ gem install terraforming
+
$ gem install terraforming
@@ -396,7 +400,7 @@

Authors :

Cloud Dev(Ops) at Continental
-
v1.0.0
+
v1.0.1
\ No newline at end of file diff --git a/watch.js b/watch.js new file mode 100644 index 0000000..17464c9 --- /dev/null +++ b/watch.js @@ -0,0 +1,18 @@ +const chokidar = require('chokidar'); +const child_process = require('child_process'); + +const sourceFile = 'examples/cheat-sheet/maven-security-cheat-sheet.adoc'; +const templateFile = '../examples/cheat-sheet/snyk/template.js'; + +// One-liner for current directory, ignores .dotfiles +chokidar.watch(['examples/**/*.css', 'examples/**/*.js'], {ignored: /(^|[\/\\])\../}).on('all', (event, path) => { + console.log(event, path); + if (event === 'change') { + try { + child_process.exec(`./bin/asciidoctorjs-pdf ${sourceFile} --template-require ${templateFile}`); + } catch (e) { + console.log('error', e); + } + } +}); +