From 0031713f89bc7cdc90a571ad148f4e2f1238bcb8 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Sun, 1 Oct 2017 13:55:42 -0600 Subject: [PATCH 001/465] make it so --- .gitignore | 1 + LICENSE | 373 +++++++++++++++++++++++++++++++++++++++++++++++++++ README.adoc | 16 +++ package.json | 10 ++ 4 files changed, 400 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.adoc create mode 100644 package.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2ccbe46 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/node_modules/ diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..a612ad9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,373 @@ +Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +1.6. "Executable Form" + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +1.8. "License" + means this document. + +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +1.10. "Modifications" + means any of the following: + + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + + (b) any new file in Source Code Form that contains any Covered + Software. + +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +1.13. "Source Code Form" + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; + or + +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. diff --git a/README.adoc b/README.adoc new file mode 100644 index 0000000..8b7887e --- /dev/null +++ b/README.adoc @@ -0,0 +1,16 @@ += Antora Default UI +// Project URIs: +:uri-project: https://gitlab.com/antora/antora-ui-default + +This project is an archetype that demonstrates how to produce a UI bundle for use in an Antora-based documentation pipeline. + +== Copyright and License + +Copyright (C) 2017 OpenDevise Inc. and the Antora Project. + +Use of this software is granted under the terms of the https://www.mozilla.org/en-US/MPL/2.0/[Mozilla Public License Version 2.0] (MPL-2.0). +See link:LICENSE[] to find the full license text. + +== Authors + +Development of Antora is lead and sponsored by OpenDevise Inc. diff --git a/package.json b/package.json new file mode 100644 index 0000000..3912aa3 --- /dev/null +++ b/package.json @@ -0,0 +1,10 @@ +{ + "name": "antora-ui-default", + "description": "An archetype project that produces a UI for creating documentation sites with Antora", + "homepage": "https://gitlab.com/antora/antora-ui-default", + "license": "MPL-2.0", + "repository": { + "type": "git", + "url": "https://gitlab.com/antora/antora-ui-default.git" + } +} From 745128a16459d83a86ffa094d32ac48a7ad9e388 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Sun, 1 Oct 2017 18:30:49 -0600 Subject: [PATCH 002/465] resolves #1 add initial Gulp build - add task to compile assets (build) - add task to package assets (pack) - add task to build preview site (build:preview) - add task to preview site with file monitor (preview) - create minimum required files for preview site (stylesheet, default template, index.html) --- .gitignore | 1 + gulpfile.js | 40 + package.json | 23 + preview-site-src/index.html | 1 + preview-site-src/ui-model.yml | 4 + src/css/site.css | 0 src/layouts/default.hbs | 13 + tasks/build-preview.js | 76 + tasks/build.js | 50 + tasks/pack.js | 14 + tasks/preview.js | 31 + yarn.lock | 4544 +++++++++++++++++++++++++++++++++ 12 files changed, 4797 insertions(+) create mode 100644 gulpfile.js create mode 100644 preview-site-src/index.html create mode 100644 preview-site-src/ui-model.yml create mode 100644 src/css/site.css create mode 100644 src/layouts/default.hbs create mode 100644 tasks/build-preview.js create mode 100644 tasks/build.js create mode 100644 tasks/pack.js create mode 100644 tasks/preview.js create mode 100644 yarn.lock diff --git a/.gitignore b/.gitignore index 2ccbe46..34b23da 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ +/build/ /node_modules/ diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 0000000..4f617f3 --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,40 @@ +'use strict' + +const path = require('path') +const gulp = require('gulp') + +const build = require('./tasks/build') +const buildPreview = require('./tasks/build-preview') +const pack = require('./tasks/pack') +const preview = require('./tasks/preview') + +const bundleName = 'ui' +const buildDir = 'build' +const previewSiteSrcDir = 'preview-site-src' +const previewSiteDestDir = path.join(buildDir, 'preview-site') +const srcDir = 'src' +const destDir = path.join(previewSiteDestDir, '_') + +gulp.task('build', () => + build(srcDir, destDir) +) + +gulp.task('build:preview', ['build'], () => + buildPreview(srcDir, destDir, previewSiteSrcDir, previewSiteDestDir) +) + +gulp.task('preview', ['build:preview'], () => + preview(previewSiteDestDir, { + port: 5252, + watch: { + src: [srcDir, previewSiteSrcDir], + onChange: () => gulp.start('build:preview') + } + }) +) + +gulp.task('pack', ['build'], () => + pack(destDir, buildDir, bundleName) +) + +gulp.task('default', ['build']) diff --git a/package.json b/package.json index 3912aa3..a8fd563 100644 --- a/package.json +++ b/package.json @@ -6,5 +6,28 @@ "repository": { "type": "git", "url": "https://gitlab.com/antora/antora-ui-default.git" + }, + "devDependencies": { + "autoprefixer": "^7.1.4", + "browser-sync": "^2.18.13", + "chokidar": "^1.7.0", + "cssnano": "^3.10.0", + "gulp": "^3.9.1", + "gulp-concat": "^2.6.1", + "gulp-imagemin": "^3.3.0", + "gulp-postcss": "^7.0.0", + "gulp-uglify": "^3.0.0", + "gulp-vinyl-zip": "^2.0.0", + "handlebars": "^4.0.10", + "js-yaml": "^3.10.0", + "lodash.debounce": "^4.0.8", + "map-stream": "^0.0.7", + "merge-stream": "^1.0.1", + "minimatch": "^3.0.4", + "postcss-calc": "^6.0.0", + "postcss-custom-properties": "^6.1.0", + "postcss-import": "^11.0.0", + "require-from-string": "^2.0.1", + "vinyl-fs": "^2.4.4" } } diff --git a/preview-site-src/index.html b/preview-site-src/index.html new file mode 100644 index 0000000..be17d40 --- /dev/null +++ b/preview-site-src/index.html @@ -0,0 +1 @@ +

Write me.

diff --git a/preview-site-src/ui-model.yml b/preview-site-src/ui-model.yml new file mode 100644 index 0000000..9ab35c3 --- /dev/null +++ b/preview-site-src/ui-model.yml @@ -0,0 +1,4 @@ +site: + url: http://localhost:5252 + title: Preview Site +title: Home diff --git a/src/css/site.css b/src/css/site.css new file mode 100644 index 0000000..e69de29 diff --git a/src/layouts/default.hbs b/src/layouts/default.hbs new file mode 100644 index 0000000..6f502bd --- /dev/null +++ b/src/layouts/default.hbs @@ -0,0 +1,13 @@ + + + + + + + + {{title}}{{#if site.title}} // {{site.title}}{{/if}} + + +{{{contents}}} + + diff --git a/tasks/build-preview.js b/tasks/build-preview.js new file mode 100644 index 0000000..47b7f61 --- /dev/null +++ b/tasks/build-preview.js @@ -0,0 +1,76 @@ +'use strict' + +const fs = require('fs') +const handlebars = require('handlebars') +const map = require('map-stream') +const merge = require('merge-stream') +const minimatch = require('minimatch') +const path = require('path') +const requireFromString = require('require-from-string') +const vfs = require('vinyl-fs') +const yaml = require('js-yaml') + +module.exports = async (src, dest, siteSrc, siteDest) => { + const [layouts,,] = await Promise.all([ + compileLayouts(src), + registerPartials(src), + registerHelpers(src), + ]) + + const mockUIModel = loadSampleUIModel(siteSrc) + + vfs.src('**/*.html', { base: siteSrc, cwd: siteSrc }) + .pipe(map((file, next) => { + const compiledLayout = layouts['default.hbs'] + const siteRootPath = path.relative(path.dirname(file.path), path.resolve(siteSrc)) + mockUIModel['siteRootPath'] = siteRootPath + mockUIModel['siteRootUrl'] = path.join(siteRootPath, 'index.html') + mockUIModel['uiRootPath'] = path.join(siteRootPath, '_') + mockUIModel['contents'] = file.contents.toString().trimRight() + file.contents = new Buffer(compiledLayout(mockUIModel)) + next(null, file) + })) + .pipe(vfs.dest(siteDest)) +} + +function registerPartials (src) { + return new Promise((resolve, reject) => { + vfs.src(['partials/*.hbs'], { base: src, cwd: src }) + .pipe(map((file, next) => { + handlebars.registerPartial(file.stem, file.contents.toString()) + next(null, file) + })) + .on('error', reject) + .on('end', resolve) + }) +} + +function registerHelpers (src) { + return new Promise((resolve, reject) => { + vfs.src(['helpers/*.js'], { base: src, cwd: src }) + .pipe(map((file, next) => { + const helperFunction = requireFromString(file.contents.toString()) + handlebars.registerHelper(file.stem, helperFunction) + next(null, file) + })) + .on('error', reject) + .on('end', resolve) + }) +} + +function compileLayouts (src) { + const layouts = {} + return new Promise((resolve, reject) => { + vfs.src('layouts/*.hbs', { base: src, cwd: src }) + .pipe(map((file, next) => { + layouts[file.basename] = handlebars.compile(file.contents.toString(), { preventIndent: true }) + next(null, file) + })) + .on('error', reject) + .on('end', () => resolve(layouts)) + }) +} + +function loadSampleUIModel (siteSrc) { + return yaml.safeLoad(fs.readFileSync(path.join(siteSrc, 'ui-model.yml'), 'utf8')) +} diff --git a/tasks/build.js b/tasks/build.js new file mode 100644 index 0000000..7af07e2 --- /dev/null +++ b/tasks/build.js @@ -0,0 +1,50 @@ +'use strict' + +const autoprefixer = require('autoprefixer') +const concat = require('gulp-concat') +const cssnano = require('cssnano') +const imagemin = require('gulp-imagemin') +const merge = require('merge-stream') +const minimatch = require('minimatch') +const path = require('path') +const postcss = require('gulp-postcss') +const postcssCalc = require('postcss-calc') +const postcssImport = require('postcss-import') +const postcssVar = require('postcss-custom-properties') +const uglify = require('gulp-uglify') +const vfs = require('vinyl-fs') + +const postcssPlugins = [ + postcssImport(), + postcssVar(), + postcssCalc(), + autoprefixer({ browsers: ['last 2 versions'] }), + cssnano({ preset: 'default' }), +] + +module.exports = (src, dest) => { + const opts = { base: src, cwd: src } + + return merge([ + vfs.src('img/**/*.{jpg,png,svg}', opts) + .pipe(imagemin()), + + vfs.src('js/+([0-9])-*.js', opts) + .pipe(uglify()) + .pipe(concat('js/site.js')), + + vfs.src('js/vendor/*.js', opts), + + vfs.src('fonts/*.woff*(2)', opts), + + vfs.src('css/site.css', opts) + .pipe(postcss(postcssPlugins)), + + vfs.src('helpers/*.js', opts), + + vfs.src('layouts/*.hbs', opts), + + vfs.src('partials/*.hbs', opts) + ]) + .pipe(vfs.dest(dest)) +} diff --git a/tasks/pack.js b/tasks/pack.js new file mode 100644 index 0000000..718b2c8 --- /dev/null +++ b/tasks/pack.js @@ -0,0 +1,14 @@ +'use strict' + +const vfs = require('vinyl-fs') +const zip = require('gulp-vinyl-zip') + +module.exports = async (src, dest, bundleName) => + new Promise((resolve, reject) => + vfs + .src('**/*', { base: src, cwd: src }) + .pipe(zip.zip(`${bundleName}-bundle.zip`)) + .pipe(vfs.dest(dest)) + .on('error', reject) + .on('end', resolve) + ) diff --git a/tasks/preview.js b/tasks/preview.js new file mode 100644 index 0000000..1f3e65a --- /dev/null +++ b/tasks/preview.js @@ -0,0 +1,31 @@ +'use strict' + +const browserSync = require('browser-sync') +const debounce = require('lodash.debounce') +const chokidar = require('chokidar') +const fs = require('fs') + +module.exports = (dest, opts) => { + opts = opts || {} + + browserSync({ + files: dest, + ghostMode: false, + notify: false, + open: false, + port: opts.port, + reloadDelay: 200, + reloadDebounce: 200, + ui: false, + server: { + baseDir: dest + } + }) + + const watch = opts.watch + if (watch && watch.src && watch.onChange) { + const onChangeThrottled = debounce(watch.onChange, 300) + const watcher = chokidar.watch(watch.src, { ignoreInitial: true }) + watcher.on('all', () => onChangeThrottled()) + } +} diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..b96efd0 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,4544 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + +accepts@1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca" + dependencies: + mime-types "~2.1.11" + negotiator "0.6.1" + +accepts@~1.3.3: + version "1.3.4" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.4.tgz#86246758c7dd6d21a6474ff084a4740ec05eb21f" + dependencies: + mime-types "~2.1.16" + negotiator "0.6.1" + +after@0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/after/-/after-0.8.1.tgz#ab5d4fb883f596816d3515f8f791c0af486dd627" + +ajv@^4.9.1: + version "4.11.8" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" + dependencies: + co "^4.6.0" + json-stable-stringify "^1.0.1" + +align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + +alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +ansi-styles@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" + dependencies: + color-convert "^1.9.0" + +anymatch@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" + dependencies: + micromatch "^2.1.5" + normalize-path "^2.0.0" + +aproba@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + +archive-type@^3.0.0, archive-type@^3.0.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/archive-type/-/archive-type-3.2.0.tgz#9cd9c006957ebe95fadad5bd6098942a813737f6" + dependencies: + file-type "^3.1.0" + +archy@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + +are-we-there-yet@~1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argparse@^1.0.7: + version "1.0.9" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + dependencies: + arr-flatten "^1.0.1" + +arr-flatten@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + +array-differ@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" + +array-each@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" + +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + +array-slice@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.0.0.tgz#e73034f00dcc1f40876008fd20feae77bd4b7c2f" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.0, array-uniq@^1.0.1, array-uniq@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + +arraybuffer.slice@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca" + +asn1@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + +assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + +async-each-series@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/async-each-series/-/async-each-series-0.1.1.tgz#7617c1917401fd8ca4a28aadce3dbae98afeb432" + +async-each-series@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/async-each-series/-/async-each-series-1.1.0.tgz#f42fd8155d38f21a5b8ea07c28e063ed1700b138" + +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + +async@1.5.2, async@^1.4.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + +autoprefixer@^6.3.1: + version "6.7.7" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" + dependencies: + browserslist "^1.7.6" + caniuse-db "^1.0.30000634" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^5.2.16" + postcss-value-parser "^3.2.3" + +autoprefixer@^7.1.4: + version "7.1.4" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.1.4.tgz#960847dbaa4016bc8e8e52ec891cbf8f1257a748" + dependencies: + browserslist "^2.4.0" + caniuse-lite "^1.0.30000726" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^6.0.11" + postcss-value-parser "^3.2.3" + +aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + +aws4@^1.2.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" + +backo2@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" + +balanced-match@^0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + +base64-arraybuffer@0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" + +base64id@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-0.1.0.tgz#02ce0fdeee0cef4f40080e1e73e834f0b1bfce3f" + +batch@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.5.3.tgz#3f3414f380321743bfc1042f9a83ff1d5824d464" + +bcrypt-pbkdf@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" + dependencies: + tweetnacl "^0.14.3" + +beeper@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" + +better-assert@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" + dependencies: + callsite "1.0.0" + +bin-build@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/bin-build/-/bin-build-2.2.0.tgz#11f8dd61f70ffcfa2bdcaa5b46f5e8fedd4221cc" + dependencies: + archive-type "^3.0.1" + decompress "^3.0.0" + download "^4.1.2" + exec-series "^1.0.0" + rimraf "^2.2.6" + tempfile "^1.0.0" + url-regex "^3.0.0" + +bin-check@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/bin-check/-/bin-check-2.0.0.tgz#86f8e6f4253893df60dc316957f5af02acb05930" + dependencies: + executable "^1.0.0" + +bin-version-check@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/bin-version-check/-/bin-version-check-2.1.0.tgz#e4e5df290b9069f7d111324031efc13fdd11a5b0" + dependencies: + bin-version "^1.0.0" + minimist "^1.1.0" + semver "^4.0.3" + semver-truncate "^1.0.0" + +bin-version@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/bin-version/-/bin-version-1.0.4.tgz#9eb498ee6fd76f7ab9a7c160436f89579435d78e" + dependencies: + find-versions "^1.0.0" + +bin-wrapper@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/bin-wrapper/-/bin-wrapper-3.0.2.tgz#67d3306262e4b1a5f2f88ee23464f6a655677aeb" + dependencies: + bin-check "^2.0.0" + bin-version-check "^2.1.0" + download "^4.0.0" + each-async "^1.1.1" + lazy-req "^1.0.0" + os-filter-obj "^1.0.0" + +binary-extensions@^1.0.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.10.0.tgz#9aeb9a6c5e88638aad171e167f5900abe24835d0" + +bl@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.1.tgz#cac328f7bee45730d404b692203fcb590e172d5e" + dependencies: + readable-stream "^2.0.5" + +blob@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + dependencies: + inherits "~2.0.0" + +boom@2.x.x: + version "2.10.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + dependencies: + hoek "2.x.x" + +brace-expansion@^1.0.0, brace-expansion@^1.1.7: + version "1.1.8" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +browser-sync-client@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/browser-sync-client/-/browser-sync-client-2.5.1.tgz#ec1ad69a49c2e2d4b645b18b1c06c29b3d9af8eb" + dependencies: + etag "^1.7.0" + fresh "^0.3.0" + +browser-sync-ui@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/browser-sync-ui/-/browser-sync-ui-0.6.3.tgz#640a537c180689303d5be92bc476b9ebc441c0bc" + dependencies: + async-each-series "0.1.1" + connect-history-api-fallback "^1.1.0" + immutable "^3.7.6" + server-destroy "1.0.1" + stream-throttle "^0.1.3" + weinre "^2.0.0-pre-I0Z7U9OV" + +browser-sync@^2.18.13: + version "2.18.13" + resolved "https://registry.yarnpkg.com/browser-sync/-/browser-sync-2.18.13.tgz#c28dc3eb3be67c97a907082b772a37f915c14d7d" + dependencies: + browser-sync-client "2.5.1" + browser-sync-ui "0.6.3" + bs-recipes "1.3.4" + chokidar "1.7.0" + connect "3.5.0" + dev-ip "^1.0.1" + easy-extender "2.3.2" + eazy-logger "3.0.2" + emitter-steward "^1.0.0" + fs-extra "3.0.1" + http-proxy "1.15.2" + immutable "3.8.1" + localtunnel "1.8.3" + micromatch "2.3.11" + opn "4.0.2" + portscanner "2.1.1" + qs "6.2.1" + resp-modifier "6.0.2" + rx "4.1.0" + serve-index "1.8.0" + serve-static "1.12.2" + server-destroy "1.0.1" + socket.io "1.6.0" + socket.io-client "1.6.0" + ua-parser-js "0.7.12" + yargs "6.4.0" + +browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: + version "1.7.7" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" + dependencies: + caniuse-db "^1.0.30000639" + electron-to-chromium "^1.2.7" + +browserslist@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.4.0.tgz#693ee93d01e66468a6348da5498e011f578f87f8" + dependencies: + caniuse-lite "^1.0.30000718" + electron-to-chromium "^1.3.18" + +bs-recipes@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/bs-recipes/-/bs-recipes-1.3.4.tgz#0d2d4d48a718c8c044769fdc4f89592dc8b69585" + +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + +buffer-to-vinyl@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-to-vinyl/-/buffer-to-vinyl-1.1.0.tgz#00f15faee3ab7a1dda2cde6d9121bffdd07b2262" + dependencies: + file-type "^3.1.0" + readable-stream "^2.0.2" + uuid "^2.0.1" + vinyl "^1.0.0" + +builtin-modules@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + +callsite@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" + +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + +camelcase@^1.0.2, camelcase@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + +caniuse-api@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c" + dependencies: + browserslist "^1.3.6" + caniuse-db "^1.0.30000529" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: + version "1.0.30000740" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000740.tgz#03fcaaa176e3ed075895f72d46c1a12149bbeac9" + +caniuse-lite@^1.0.30000718, caniuse-lite@^1.0.30000726: + version "1.0.30000740" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000740.tgz#f2c4c04d6564eb812e61006841700ad557f6f973" + +capture-stack-trace@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + +caw@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/caw/-/caw-1.2.0.tgz#ffb226fe7efc547288dc62ee3e97073c212d1034" + dependencies: + get-proxy "^1.0.1" + is-obj "^1.0.0" + object-assign "^3.0.0" + tunnel-agent "^0.4.0" + +center-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + +chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" + dependencies: + ansi-styles "^3.1.0" + escape-string-regexp "^1.0.5" + supports-color "^4.0.0" + +chokidar@1.7.0, chokidar@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + +clap@^1.0.9: + version "1.2.3" + resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51" + dependencies: + chalk "^1.1.3" + +cliui@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + dependencies: + center-align "^0.1.1" + right-align "^0.1.1" + wordwrap "0.0.2" + +cliui@^3.0.3, cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +clone-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" + +clone-stats@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" + +clone-stats@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" + +clone@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/clone/-/clone-0.2.0.tgz#c6126a90ad4f72dbf5acdb243cc37724fe93fc1f" + +clone@^1.0.0, clone@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" + +clone@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.1.tgz#d217d1e961118e3ac9a4b8bba3285553bf647cdb" + +cloneable-readable@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.0.0.tgz#a6290d413f217a61232f95e458ff38418cfb0117" + dependencies: + inherits "^2.0.1" + process-nextick-args "^1.0.6" + through2 "^2.0.1" + +co@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/co/-/co-3.1.0.tgz#4ea54ea5a08938153185e15210c68d9092bc1b78" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + +coa@~1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd" + dependencies: + q "^1.1.2" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + +color-convert@^1.3.0, color-convert@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" + dependencies: + color-name "^1.1.1" + +color-name@^1.0.0, color-name@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + +color-string@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991" + dependencies: + color-name "^1.0.0" + +color@^0.11.0: + version "0.11.4" + resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764" + dependencies: + clone "^1.0.2" + color-convert "^1.3.0" + color-string "^0.3.0" + +colormin@^1.0.5: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133" + dependencies: + color "^0.11.0" + css-color-names "0.0.4" + has "^1.0.1" + +colors@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + +combined-stream@^1.0.5, combined-stream@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" + dependencies: + delayed-stream "~1.0.0" + +commander@^2.2.0, commander@~2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" + +commander@~2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" + dependencies: + graceful-readlink ">= 1.0.0" + +component-bind@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" + +component-emitter@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3" + +component-emitter@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + +component-inherit@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +concat-stream@^1.4.6, concat-stream@^1.4.7: + version "1.6.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" + dependencies: + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +concat-with-sourcemaps@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.0.4.tgz#f55b3be2aeb47601b10a2d5259ccfb70fd2f1dd6" + dependencies: + source-map "^0.5.1" + +connect-history-api-fallback@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169" + +connect@1.x: + version "1.9.2" + resolved "https://registry.yarnpkg.com/connect/-/connect-1.9.2.tgz#42880a22e9438ae59a8add74e437f58ae8e52807" + dependencies: + formidable "1.0.x" + mime ">= 0.0.1" + qs ">= 0.4.0" + +connect@3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.5.0.tgz#b357525a0b4c1f50599cd983e1d9efeea9677198" + dependencies: + debug "~2.2.0" + finalhandler "0.5.0" + parseurl "~1.3.1" + utils-merge "1.0.0" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + +console-stream@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/console-stream/-/console-stream-0.1.1.tgz#a095fe07b20465955f2fafd28b5d72bccd949d44" + +convert-source-map@^1.1.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" + +cookie@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +cosmiconfig@^2.1.0, cosmiconfig@^2.1.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-2.2.2.tgz#6173cebd56fac042c1f4390edf7af6c07c7cb892" + dependencies: + is-directory "^0.3.1" + js-yaml "^3.4.3" + minimist "^1.2.0" + object-assign "^4.1.0" + os-homedir "^1.0.1" + parse-json "^2.2.0" + require-from-string "^1.1.0" + +create-error-class@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" + dependencies: + capture-stack-trace "^1.0.0" + +cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cryptiles@2.x.x: + version "2.0.5" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + dependencies: + boom "2.x.x" + +css-color-names@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + +css-unit-converter@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.1.tgz#d9b9281adcfd8ced935bdbaba83786897f64e996" + +cssnano@^3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38" + dependencies: + autoprefixer "^6.3.1" + decamelize "^1.1.2" + defined "^1.0.0" + has "^1.0.1" + object-assign "^4.0.1" + postcss "^5.0.14" + postcss-calc "^5.2.0" + postcss-colormin "^2.1.8" + postcss-convert-values "^2.3.4" + postcss-discard-comments "^2.0.4" + postcss-discard-duplicates "^2.0.1" + postcss-discard-empty "^2.0.1" + postcss-discard-overridden "^0.1.1" + postcss-discard-unused "^2.2.1" + postcss-filter-plugins "^2.0.0" + postcss-merge-idents "^2.1.5" + postcss-merge-longhand "^2.0.1" + postcss-merge-rules "^2.0.3" + postcss-minify-font-values "^1.0.2" + postcss-minify-gradients "^1.0.1" + postcss-minify-params "^1.0.4" + postcss-minify-selectors "^2.0.4" + postcss-normalize-charset "^1.1.0" + postcss-normalize-url "^3.0.7" + postcss-ordered-values "^2.1.0" + postcss-reduce-idents "^2.2.2" + postcss-reduce-initial "^1.0.0" + postcss-reduce-transforms "^1.0.3" + postcss-svgo "^2.1.1" + postcss-unique-selectors "^2.0.2" + postcss-value-parser "^3.2.3" + postcss-zindex "^2.0.1" + +csso@~2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85" + dependencies: + clap "^1.0.9" + source-map "^0.5.3" + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + dependencies: + array-find-index "^1.0.1" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + dependencies: + assert-plus "^1.0.0" + +dateformat@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062" + +debug@2.2.0, debug@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" + dependencies: + ms "0.7.1" + +debug@2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c" + dependencies: + ms "0.7.2" + +debug@2.6.4: + version "2.6.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.4.tgz#7586a9b3c39741c0282ae33445c4e8ac74734fe0" + dependencies: + ms "0.7.3" + +debug@2.6.8: + version "2.6.8" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" + dependencies: + ms "2.0.0" + +debug@^2.2.0: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + dependencies: + ms "2.0.0" + +decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +decompress-tar@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-3.1.0.tgz#217c789f9b94450efaadc5c5e537978fc333c466" + dependencies: + is-tar "^1.0.0" + object-assign "^2.0.0" + strip-dirs "^1.0.0" + tar-stream "^1.1.1" + through2 "^0.6.1" + vinyl "^0.4.3" + +decompress-tarbz2@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-3.1.0.tgz#8b23935681355f9f189d87256a0f8bdd96d9666d" + dependencies: + is-bzip2 "^1.0.0" + object-assign "^2.0.0" + seek-bzip "^1.0.3" + strip-dirs "^1.0.0" + tar-stream "^1.1.1" + through2 "^0.6.1" + vinyl "^0.4.3" + +decompress-targz@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-3.1.0.tgz#b2c13df98166268991b715d6447f642e9696f5a0" + dependencies: + is-gzip "^1.0.0" + object-assign "^2.0.0" + strip-dirs "^1.0.0" + tar-stream "^1.1.1" + through2 "^0.6.1" + vinyl "^0.4.3" + +decompress-unzip@^3.0.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-3.4.0.tgz#61475b4152066bbe3fee12f9d629d15fe6478eeb" + dependencies: + is-zip "^1.0.0" + read-all-stream "^3.0.0" + stat-mode "^0.2.0" + strip-dirs "^1.0.0" + through2 "^2.0.0" + vinyl "^1.0.0" + yauzl "^2.2.1" + +decompress@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/decompress/-/decompress-3.0.0.tgz#af1dd50d06e3bfc432461d37de11b38c0d991bed" + dependencies: + buffer-to-vinyl "^1.0.0" + concat-stream "^1.4.6" + decompress-tar "^3.0.0" + decompress-tarbz2 "^3.0.0" + decompress-targz "^3.0.0" + decompress-unzip "^3.0.0" + stream-combiner2 "^1.1.1" + vinyl-assign "^1.0.1" + vinyl-fs "^2.2.0" + +deep-extend@~0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" + +defaults@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + dependencies: + clone "^1.0.2" + +defined@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + +depd@1.1.1, depd@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" + +deprecated@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/deprecated/-/deprecated-0.0.1.tgz#f9c9af5464afa1e7a971458a8bdef2aa94d5bb19" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + +detect-file@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-0.1.0.tgz#4935dedfd9488648e006b0129566e9386711ea63" + dependencies: + fs-exists-sync "^0.1.0" + +dev-ip@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dev-ip/-/dev-ip-1.0.1.tgz#a76a3ed1855be7a012bb8ac16cb80f3c00dc28f0" + +download@^4.0.0, download@^4.1.2: + version "4.4.3" + resolved "https://registry.yarnpkg.com/download/-/download-4.4.3.tgz#aa55fdad392d95d4b68e8c2be03e0c2aa21ba9ac" + dependencies: + caw "^1.0.1" + concat-stream "^1.4.7" + each-async "^1.0.0" + filenamify "^1.0.1" + got "^5.0.0" + gulp-decompress "^1.2.0" + gulp-rename "^1.2.0" + is-url "^1.2.0" + object-assign "^4.0.1" + read-all-stream "^3.0.0" + readable-stream "^2.0.2" + stream-combiner2 "^1.1.1" + vinyl "^1.0.0" + vinyl-fs "^2.2.0" + ware "^1.2.0" + +duplexer2@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" + dependencies: + readable-stream "~1.1.9" + +duplexer2@^0.1.4, duplexer2@~0.1.0: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" + dependencies: + readable-stream "^2.0.2" + +duplexer@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + +duplexify@^3.2.0: + version "3.5.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.1.tgz#4e1516be68838bc90a49994f0b39a6e5960befcd" + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +each-async@^1.0.0, each-async@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/each-async/-/each-async-1.1.1.tgz#dee5229bdf0ab6ba2012a395e1b869abf8813473" + dependencies: + onetime "^1.0.0" + set-immediate-shim "^1.0.0" + +easy-extender@2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/easy-extender/-/easy-extender-2.3.2.tgz#3d3248febe2b159607316d8f9cf491c16648221d" + dependencies: + lodash "^3.10.1" + +eazy-logger@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/eazy-logger/-/eazy-logger-3.0.2.tgz#a325aa5e53d13a2225889b2ac4113b2b9636f4fc" + dependencies: + tfunk "^3.0.1" + +ecc-jsbn@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" + dependencies: + jsbn "~0.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + +electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.18: + version "1.3.24" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.24.tgz#9b7b88bb05ceb9fa016a177833cc2dde388f21b6" + +emitter-steward@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/emitter-steward/-/emitter-steward-1.0.0.tgz#f3411ade9758a7565df848b2da0cbbd1b46cbd64" + +encodeurl@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" + +end-of-stream@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.0.tgz#7a90d833efda6cfa6eac0f4949dbb0fad3a63206" + dependencies: + once "^1.4.0" + +end-of-stream@~0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-0.1.5.tgz#8e177206c3c80837d85632e8b9359dfe8b2f6eaf" + dependencies: + once "~1.3.0" + +engine.io-client@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.0.tgz#7b730e4127414087596d9be3c88d2bc5fdb6cf5c" + dependencies: + component-emitter "1.2.1" + component-inherit "0.0.3" + debug "2.3.3" + engine.io-parser "1.3.1" + has-cors "1.1.0" + indexof "0.0.1" + parsejson "0.0.3" + parseqs "0.0.5" + parseuri "0.0.5" + ws "1.1.1" + xmlhttprequest-ssl "1.5.3" + yeast "0.1.2" + +engine.io-parser@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.3.1.tgz#9554f1ae33107d6fbd170ca5466d2f833f6a07cf" + dependencies: + after "0.8.1" + arraybuffer.slice "0.0.6" + base64-arraybuffer "0.1.5" + blob "0.0.4" + has-binary "0.1.6" + wtf-8 "1.0.0" + +engine.io@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.0.tgz#3eeb5f264cb75dbbec1baaea26d61f5a4eace2aa" + dependencies: + accepts "1.3.3" + base64id "0.1.0" + cookie "0.3.1" + debug "2.3.3" + engine.io-parser "1.3.1" + ws "1.1.1" + +error-ex@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" + dependencies: + is-arrayish "^0.2.1" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +esprima@^2.6.0: + version "2.7.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" + +esprima@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" + +etag@^1.7.0, etag@~1.8.0: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + +event-stream@^3.3.1: + version "3.3.4" + resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" + dependencies: + duplexer "~0.1.1" + from "~0" + map-stream "~0.1.0" + pause-stream "0.0.11" + split "0.3" + stream-combiner "~0.0.4" + through "~2.3.1" + +eventemitter3@1.x.x: + version "1.2.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" + +exec-buffer@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/exec-buffer/-/exec-buffer-3.2.0.tgz#b1686dbd904c7cf982e652c1f5a79b1e5573082b" + dependencies: + execa "^0.7.0" + p-finally "^1.0.0" + pify "^3.0.0" + rimraf "^2.5.4" + tempfile "^2.0.0" + +exec-series@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/exec-series/-/exec-series-1.0.3.tgz#6d257a9beac482a872c7783bc8615839fc77143a" + dependencies: + async-each-series "^1.1.0" + object-assign "^4.1.0" + +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +executable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/executable/-/executable-1.1.0.tgz#877980e9112f3391066da37265de7ad8434ab4d9" + dependencies: + meow "^3.1.0" + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + dependencies: + is-posix-bracket "^0.1.0" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + dependencies: + fill-range "^2.1.0" + +expand-tilde@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-1.2.2.tgz#0b81eba897e5a3d31d1c3d102f8f01441e559449" + dependencies: + os-homedir "^1.0.1" + +expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + dependencies: + homedir-polyfill "^1.0.1" + +express@2.5.x: + version "2.5.11" + resolved "https://registry.yarnpkg.com/express/-/express-2.5.11.tgz#4ce8ea1f3635e69e49f0ebb497b6a4b0a51ce6f0" + dependencies: + connect "1.x" + mime "1.2.4" + mkdirp "0.3.0" + qs "0.4.x" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + dependencies: + is-extendable "^0.1.0" + +extend@^3.0.0, extend@~3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + dependencies: + is-extglob "^1.0.0" + +extsprintf@1.3.0, extsprintf@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + +fancy-log@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.0.tgz#45be17d02bb9917d60ccffd4995c999e6c8c9948" + dependencies: + chalk "^1.1.1" + time-stamp "^1.0.0" + +fd-slicer@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" + dependencies: + pend "~1.2.0" + +figures@^1.3.5: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + +file-type@^3.1.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" + +file-type@^4.1.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-4.4.0.tgz#1b600e5fca1fbdc6e80c0a70c71c8dba5f7906c5" + +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + +filename-reserved-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz#e61cf805f0de1c984567d0386dc5df50ee5af7e4" + +filenamify@^1.0.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-1.2.1.tgz#a9f2ffd11c503bed300015029272378f1f1365a5" + dependencies: + filename-reserved-regex "^1.0.0" + strip-outer "^1.0.0" + trim-repeated "^1.0.0" + +fill-range@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^1.1.3" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +finalhandler@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-0.5.0.tgz#e9508abece9b6dba871a6942a1d7911b91911ac7" + dependencies: + debug "~2.2.0" + escape-html "~1.0.3" + on-finished "~2.3.0" + statuses "~1.3.0" + unpipe "~1.0.0" + +find-index@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-versions@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-1.2.1.tgz#cbde9f12e38575a0af1be1b9a2c5d5fd8f186b62" + dependencies: + array-uniq "^1.0.0" + get-stdin "^4.0.1" + meow "^3.5.0" + semver-regex "^1.0.0" + +findup-sync@^0.4.2: + version "0.4.3" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.4.3.tgz#40043929e7bc60adf0b7f4827c4c6e75a0deca12" + dependencies: + detect-file "^0.1.0" + is-glob "^2.0.1" + micromatch "^2.3.7" + resolve-dir "^0.1.0" + +fined@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fined/-/fined-1.1.0.tgz#b37dc844b76a2f5e7081e884f7c0ae344f153476" + dependencies: + expand-tilde "^2.0.2" + is-plain-object "^2.0.3" + object.defaults "^1.1.0" + object.pick "^1.2.0" + parse-filepath "^1.0.1" + +first-chunk-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e" + +flagged-respawn@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-0.3.2.tgz#ff191eddcd7088a675b2610fffc976be9b8074b5" + +flatten@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" + +for-in@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + dependencies: + for-in "^1.0.1" + +for-own@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" + dependencies: + for-in "^1.0.1" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + +form-data@~2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + +formidable@1.0.x: + version "1.0.17" + resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.0.17.tgz#ef5491490f9433b705faa77249c99029ae348559" + +fresh@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e" + +fresh@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.3.0.tgz#651f838e22424e7566de161d8358caa199f83d4f" + +from@~0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" + +fs-exists-sync@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" + +fs-extra@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^3.0.0" + universalify "^0.1.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +fsevents@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.2.tgz#3282b713fb3ad80ede0e9fcf4611b5aa6fc033f4" + dependencies: + nan "^2.3.0" + node-pre-gyp "^0.6.36" + +fstream-ignore@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" + dependencies: + fstream "^1.0.0" + inherits "2" + minimatch "^3.0.0" + +fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +function-bind@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +gaze@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/gaze/-/gaze-0.5.2.tgz#40b709537d24d1d45767db5a908689dfe69ac44f" + dependencies: + globule "~0.1.0" + +get-caller-file@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" + +get-proxy@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/get-proxy/-/get-proxy-1.1.0.tgz#894854491bc591b0f147d7ae570f5c678b7256eb" + dependencies: + rc "^1.1.2" + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + dependencies: + assert-plus "^1.0.0" + +gifsicle@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/gifsicle/-/gifsicle-3.0.4.tgz#f45cb5ed10165b665dc929e0e9328b6c821dfa3b" + dependencies: + bin-build "^2.0.0" + bin-wrapper "^3.0.0" + logalot "^2.0.0" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + dependencies: + is-glob "^2.0.0" + +glob-parent@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-stream@^3.1.5: + version "3.1.18" + resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-3.1.18.tgz#9170a5f12b790306fdfe598f313f8f7954fd143b" + dependencies: + glob "^4.3.1" + glob2base "^0.0.12" + minimatch "^2.0.1" + ordered-read-streams "^0.1.0" + through2 "^0.6.1" + unique-stream "^1.0.0" + +glob-stream@^5.3.2: + version "5.3.5" + resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-5.3.5.tgz#a55665a9a8ccdc41915a87c701e32d4e016fad22" + dependencies: + extend "^3.0.0" + glob "^5.0.3" + glob-parent "^3.0.0" + micromatch "^2.3.7" + ordered-read-streams "^0.3.0" + through2 "^0.6.0" + to-absolute-glob "^0.1.1" + unique-stream "^2.0.2" + +glob-watcher@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-0.0.6.tgz#b95b4a8df74b39c83298b0c05c978b4d9a3b710b" + dependencies: + gaze "^0.5.1" + +glob2base@^0.0.12: + version "0.0.12" + resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" + dependencies: + find-index "^0.1.1" + +glob@^4.3.1: + version "4.5.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-4.5.3.tgz#c6cb73d3226c1efef04de3c56d012f03377ee15f" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "^2.0.1" + once "^1.3.0" + +glob@^5.0.3: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.0.3, glob@^7.0.5: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@~3.1.21: + version "3.1.21" + resolved "https://registry.yarnpkg.com/glob/-/glob-3.1.21.tgz#d29e0a055dea5138f4d07ed40e8982e83c2066cd" + dependencies: + graceful-fs "~1.2.0" + inherits "1" + minimatch "~0.2.11" + +global-modules@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d" + dependencies: + global-prefix "^0.1.4" + is-windows "^0.2.0" + +global-prefix@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-0.1.5.tgz#8d3bc6b8da3ca8112a160d8d496ff0462bfef78f" + dependencies: + homedir-polyfill "^1.0.0" + ini "^1.3.4" + is-windows "^0.2.0" + which "^1.2.12" + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +globule@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/globule/-/globule-0.1.0.tgz#d9c8edde1da79d125a151b79533b978676346ae5" + dependencies: + glob "~3.1.21" + lodash "~1.0.1" + minimatch "~0.2.11" + +glogg@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.0.tgz#7fe0f199f57ac906cf512feead8f90ee4a284fc5" + dependencies: + sparkles "^1.0.0" + +got@^5.0.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/got/-/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35" + dependencies: + create-error-class "^3.0.1" + duplexer2 "^0.1.4" + is-redirect "^1.0.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + lowercase-keys "^1.0.0" + node-status-codes "^1.0.0" + object-assign "^4.0.1" + parse-json "^2.1.0" + pinkie-promise "^2.0.0" + read-all-stream "^3.0.0" + readable-stream "^2.0.5" + timed-out "^3.0.0" + unzip-response "^1.0.2" + url-parse-lax "^1.0.0" + +graceful-fs@^3.0.0: + version "3.0.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-3.0.11.tgz#7613c778a1afea62f25c630a086d7f3acbbdd818" + dependencies: + natives "^1.1.0" + +graceful-fs@^4.0.0, graceful-fs@^4.1.2, graceful-fs@^4.1.6: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + +graceful-fs@~1.2.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-1.2.3.tgz#15a4806a57547cb2d2dbf27f42e89a8c3451b364" + +"graceful-readlink@>= 1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" + +gulp-concat@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/gulp-concat/-/gulp-concat-2.6.1.tgz#633d16c95d88504628ad02665663cee5a4793353" + dependencies: + concat-with-sourcemaps "^1.0.0" + through2 "^2.0.0" + vinyl "^2.0.0" + +gulp-decompress@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gulp-decompress/-/gulp-decompress-1.2.0.tgz#8eeb65a5e015f8ed8532cafe28454960626f0dc7" + dependencies: + archive-type "^3.0.0" + decompress "^3.0.0" + gulp-util "^3.0.1" + readable-stream "^2.0.2" + +gulp-imagemin@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/gulp-imagemin/-/gulp-imagemin-3.3.0.tgz#c55764c260593e8595609e66a40126911ef22264" + dependencies: + chalk "^1.0.0" + gulp-util "^3.0.0" + imagemin "^5.0.0" + plur "^2.0.0" + pretty-bytes "^4.0.2" + through2-concurrent "^1.1.0" + optionalDependencies: + imagemin-gifsicle "^5.0.0" + imagemin-jpegtran "^5.0.0" + imagemin-optipng "^5.1.0" + imagemin-svgo "^5.1.0" + +gulp-postcss@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/gulp-postcss/-/gulp-postcss-7.0.0.tgz#cfb62a19fa947f8be67ce9ecae89ceb959f0cf93" + dependencies: + gulp-util "^3.0.8" + postcss "^6.0.0" + postcss-load-config "^1.2.0" + vinyl-sourcemaps-apply "^0.2.1" + +gulp-rename@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.2.2.tgz#3ad4428763f05e2764dec1c67d868db275687817" + +gulp-sourcemaps@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz#b86ff349d801ceb56e1d9e7dc7bbcb4b7dee600c" + dependencies: + convert-source-map "^1.1.1" + graceful-fs "^4.1.2" + strip-bom "^2.0.0" + through2 "^2.0.0" + vinyl "^1.0.0" + +gulp-uglify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/gulp-uglify/-/gulp-uglify-3.0.0.tgz#0df0331d72a0d302e3e37e109485dddf33c6d1ca" + dependencies: + gulplog "^1.0.0" + has-gulplog "^0.1.0" + lodash "^4.13.1" + make-error-cause "^1.1.1" + through2 "^2.0.0" + uglify-js "^3.0.5" + vinyl-sourcemaps-apply "^0.2.0" + +gulp-util@^3.0.0, gulp-util@^3.0.1, gulp-util@^3.0.8: + version "3.0.8" + resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f" + dependencies: + array-differ "^1.0.0" + array-uniq "^1.0.2" + beeper "^1.0.0" + chalk "^1.0.0" + dateformat "^2.0.0" + fancy-log "^1.1.0" + gulplog "^1.0.0" + has-gulplog "^0.1.0" + lodash._reescape "^3.0.0" + lodash._reevaluate "^3.0.0" + lodash._reinterpolate "^3.0.0" + lodash.template "^3.0.0" + minimist "^1.1.0" + multipipe "^0.1.2" + object-assign "^3.0.0" + replace-ext "0.0.1" + through2 "^2.0.0" + vinyl "^0.5.0" + +gulp-vinyl-zip@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/gulp-vinyl-zip/-/gulp-vinyl-zip-2.0.0.tgz#058bc044af46ec2b1f35f33e30df4c8bf38d324c" + dependencies: + event-stream "^3.3.1" + queue "^4.2.1" + through2 "^2.0.3" + vinyl "^2.0.2" + vinyl-fs "^2.0.0" + yauzl "^2.2.1" + yazl "^2.2.1" + +gulp@^3.9.1: + version "3.9.1" + resolved "https://registry.yarnpkg.com/gulp/-/gulp-3.9.1.tgz#571ce45928dd40af6514fc4011866016c13845b4" + dependencies: + archy "^1.0.0" + chalk "^1.0.0" + deprecated "^0.0.1" + gulp-util "^3.0.0" + interpret "^1.0.0" + liftoff "^2.1.0" + minimist "^1.1.0" + orchestrator "^0.3.0" + pretty-hrtime "^1.0.0" + semver "^4.1.0" + tildify "^1.0.0" + v8flags "^2.0.2" + vinyl-fs "^0.3.0" + +gulplog@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" + dependencies: + glogg "^1.0.0" + +handlebars@^4.0.10: + version "4.0.10" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.10.tgz#3d30c718b09a3d96f23ea4cc1f403c4d3ba9ff4f" + dependencies: + async "^1.4.0" + optimist "^0.6.1" + source-map "^0.4.4" + optionalDependencies: + uglify-js "^2.6" + +har-schema@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" + +har-validator@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" + dependencies: + ajv "^4.9.1" + har-schema "^1.0.5" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + dependencies: + ansi-regex "^2.0.0" + +has-binary@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.6.tgz#25326f39cfa4f616ad8787894e3af2cfbc7b6e10" + dependencies: + isarray "0.0.1" + +has-binary@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c" + dependencies: + isarray "0.0.1" + +has-cors@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + +has-flag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + +has-gulplog@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce" + dependencies: + sparkles "^1.0.0" + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + +has@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" + dependencies: + function-bind "^1.0.2" + +hawk@3.1.3, hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + +hoek@2.x.x: + version "2.16.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + +homedir-polyfill@^1.0.0, homedir-polyfill@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" + dependencies: + parse-passwd "^1.0.0" + +hosted-git-info@^2.1.4: + version "2.5.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" + +html-comment-regex@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e" + +http-errors@~1.5.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.5.1.tgz#788c0d2c1de2c81b9e6e8c01843b6b97eb920750" + dependencies: + inherits "2.0.3" + setprototypeof "1.0.2" + statuses ">= 1.3.1 < 2" + +http-errors@~1.6.1: + version "1.6.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" + dependencies: + depd "1.1.1" + inherits "2.0.3" + setprototypeof "1.0.3" + statuses ">= 1.3.1 < 2" + +http-proxy@1.15.2: + version "1.15.2" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.15.2.tgz#642fdcaffe52d3448d2bda3b0079e9409064da31" + dependencies: + eventemitter3 "1.x.x" + requires-port "1.x.x" + +http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +imagemin-gifsicle@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/imagemin-gifsicle/-/imagemin-gifsicle-5.2.0.tgz#3781524c457612ef04916af34241a2b42bfcb40a" + dependencies: + exec-buffer "^3.0.0" + gifsicle "^3.0.0" + is-gif "^1.0.0" + +imagemin-jpegtran@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/imagemin-jpegtran/-/imagemin-jpegtran-5.0.2.tgz#e6882263b8f7916fddb800640cf75d2e970d2ad6" + dependencies: + exec-buffer "^3.0.0" + is-jpg "^1.0.0" + jpegtran-bin "^3.0.0" + +imagemin-optipng@^5.1.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/imagemin-optipng/-/imagemin-optipng-5.2.1.tgz#d22da412c09f5ff00a4339960b98a88b1dbe8695" + dependencies: + exec-buffer "^3.0.0" + is-png "^1.0.0" + optipng-bin "^3.0.0" + +imagemin-svgo@^5.1.0: + version "5.2.2" + resolved "https://registry.yarnpkg.com/imagemin-svgo/-/imagemin-svgo-5.2.2.tgz#501699f5789730a57922b8736ea15c53f7b55838" + dependencies: + is-svg "^2.0.0" + svgo "^0.7.0" + +imagemin@^5.0.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/imagemin/-/imagemin-5.3.1.tgz#f19c2eee1e71ba6c6558c515f9fc96680189a6d4" + dependencies: + file-type "^4.1.0" + globby "^6.1.0" + make-dir "^1.0.0" + p-pipe "^1.1.0" + pify "^2.3.0" + replace-ext "^1.0.0" + +immutable@3.8.1, immutable@^3.7.6: + version "3.8.1" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.1.tgz#200807f11ab0f72710ea485542de088075f68cd2" + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + dependencies: + repeating "^2.0.0" + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + +indexof@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-1.0.2.tgz#ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b" + +inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +ini@^1.3.4, ini@~1.3.0: + version "1.3.4" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" + +interpret@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.4.tgz#820cdd588b868ffb191a809506d6c9c8f212b1b0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + +ip-regex@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-1.0.3.tgz#dc589076f659f419c222039a33316f1c7387effd" + +irregular-plurals@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-1.3.0.tgz#7af06931bdf74be33dcf585a13e06fccc16caecf" + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + +is-absolute@^0.1.5: + version "0.1.7" + resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-0.1.7.tgz#847491119fccb5fb436217cc737f7faad50f603f" + dependencies: + is-relative "^0.1.0" + +is-absolute@^0.2.3: + version "0.2.6" + resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-0.2.6.tgz#20de69f3db942ef2d87b9c2da36f172235b1b5eb" + dependencies: + is-relative "^0.2.1" + is-windows "^0.2.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + dependencies: + binary-extensions "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" + +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + dependencies: + builtin-modules "^1.0.0" + +is-bzip2@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-bzip2/-/is-bzip2-1.0.0.tgz#5ee58eaa5a2e9c80e21407bedf23ae5ac091b3fc" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + dependencies: + is-primitive "^2.0.0" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + +is-extglob@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + dependencies: + number-is-nan "^1.0.0" + +is-gif@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-gif/-/is-gif-1.0.0.tgz#a6d2ae98893007bffa97a1d8c01d63205832097e" + +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + dependencies: + is-extglob "^1.0.0" + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + dependencies: + is-extglob "^2.1.0" + +is-gzip@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-gzip/-/is-gzip-1.0.0.tgz#6ca8b07b99c77998025900e555ced8ed80879a83" + +is-jpg@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-jpg/-/is-jpg-1.0.0.tgz#2959c17e73430db38264da75b90dd54f2d86da1c" + +is-natural-number@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-2.1.1.tgz#7d4c5728377ef386c3e194a9911bf57c6dc335e7" + +is-number-like@^1.0.3: + version "1.0.8" + resolved "https://registry.yarnpkg.com/is-number-like/-/is-number-like-1.0.8.tgz#2e129620b50891042e44e9bbbb30593e75cfbbe3" + dependencies: + lodash.isfinite "^3.3.2" + +is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + dependencies: + kind-of "^3.0.2" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + dependencies: + kind-of "^3.0.2" + +is-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + +is-plain-object@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + dependencies: + isobject "^3.0.1" + +is-png@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-png/-/is-png-1.1.0.tgz#d574b12bf275c0350455570b0e5b57ab062077ce" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + +is-redirect@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" + +is-relative@^0.1.0: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-0.1.3.tgz#905fee8ae86f45b3ec614bc3c15c869df0876e82" + +is-relative@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-0.2.1.tgz#d27f4c7d516d175fb610db84bbeef23c3bc97aa5" + dependencies: + is-unc-path "^0.1.1" + +is-retry-allowed@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" + +is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + +is-svg@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9" + dependencies: + html-comment-regex "^1.1.0" + +is-tar@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-tar/-/is-tar-1.0.0.tgz#2f6b2e1792c1f5bb36519acaa9d65c0d26fe853d" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + +is-unc-path@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-0.1.2.tgz#6ab053a72573c10250ff416a3814c35178af39b9" + dependencies: + unc-path-regex "^0.1.0" + +is-url@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.2.tgz#498905a593bf47cc2d9e7f738372bbf7696c7f26" + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + +is-valid-glob@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-0.3.0.tgz#d4b55c69f51886f9b65c70d6c2622d37e29f48fe" + +is-windows@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c" + +is-zip@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-zip/-/is-zip-1.0.0.tgz#47b0a8ff4d38a76431ccfd99a8e15a4c86ba2325" + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + +isarray@1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + +jpegtran-bin@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/jpegtran-bin/-/jpegtran-bin-3.2.0.tgz#f60ecf4ae999c0bdad2e9fbcdf2b6f0981e7a29b" + dependencies: + bin-build "^2.0.0" + bin-wrapper "^3.0.0" + logalot "^2.0.0" + +js-base64@^2.1.9: + version "2.3.2" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.3.2.tgz#a79a923666372b580f8e27f51845c6f7e8fbfbaf" + +js-yaml@^3.10.0, js-yaml@^3.4.3, js-yaml@~3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" + dependencies: + argparse "^1.0.7" + esprima "^2.6.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + +json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + +json3@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" + +jsonfile@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +kind-of@^3.0.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + dependencies: + is-buffer "^1.1.5" + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + +lazy-req@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac" + +lazystream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" + dependencies: + readable-stream "^2.0.5" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + dependencies: + invert-kv "^1.0.0" + +liftoff@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-2.3.0.tgz#a98f2ff67183d8ba7cfaca10548bd7ff0550b385" + dependencies: + extend "^3.0.0" + findup-sync "^0.4.2" + fined "^1.0.1" + flagged-respawn "^0.3.2" + lodash.isplainobject "^4.0.4" + lodash.isstring "^4.0.1" + lodash.mapvalues "^4.4.0" + rechoir "^0.6.2" + resolve "^1.1.7" + +limiter@^1.0.5: + version "1.1.2" + resolved "https://registry.yarnpkg.com/limiter/-/limiter-1.1.2.tgz#229d8055891c8b11af9e0ee5200e8e09bb3dcbeb" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +localtunnel@1.8.3: + version "1.8.3" + resolved "https://registry.yarnpkg.com/localtunnel/-/localtunnel-1.8.3.tgz#dcc5922fd85651037d4bde24fd93248d0b24eb05" + dependencies: + debug "2.6.8" + openurl "1.1.1" + request "2.81.0" + yargs "3.29.0" + +lodash._basecopy@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" + +lodash._basetostring@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5" + +lodash._basevalues@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7" + +lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + +lodash._isiterateecall@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" + +lodash._reescape@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a" + +lodash._reevaluate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed" + +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + +lodash._root@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + +lodash.escape@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698" + dependencies: + lodash._root "^3.0.0" + +lodash.isarguments@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + +lodash.isarray@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + +lodash.isequal@^4.0.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + +lodash.isfinite@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz#fb89b65a9a80281833f0b7478b3a5104f898ebb3" + +lodash.isplainobject@^4.0.4: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + +lodash.isstring@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" + +lodash.keys@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + dependencies: + lodash._getnative "^3.0.0" + lodash.isarguments "^3.0.0" + lodash.isarray "^3.0.0" + +lodash.mapvalues@^4.4.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + +lodash.restparam@^3.0.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" + +lodash.template@^3.0.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f" + dependencies: + lodash._basecopy "^3.0.0" + lodash._basetostring "^3.0.0" + lodash._basevalues "^3.0.0" + lodash._isiterateecall "^3.0.0" + lodash._reinterpolate "^3.0.0" + lodash.escape "^3.0.0" + lodash.keys "^3.0.0" + lodash.restparam "^3.0.0" + lodash.templatesettings "^3.0.0" + +lodash.templatesettings@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5" + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.escape "^3.0.0" + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + +lodash@^3.10.1: + version "3.10.1" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" + +lodash@^4.13.1: + version "4.17.4" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" + +lodash@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-1.0.2.tgz#8f57560c83b59fc270bd3d561b690043430e2551" + +logalot@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/logalot/-/logalot-2.1.0.tgz#5f8e8c90d304edf12530951a5554abb8c5e3f552" + dependencies: + figures "^1.3.5" + squeak "^1.0.0" + +longest@^1.0.0, longest@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + +lowercase-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" + +lpad-align@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/lpad-align/-/lpad-align-1.1.2.tgz#21f600ac1c3095c3c6e497ee67271ee08481fe9e" + dependencies: + get-stdin "^4.0.1" + indent-string "^2.1.0" + longest "^1.0.0" + meow "^3.3.0" + +lru-cache@2: + version "2.7.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" + +lru-cache@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +macaddress@^0.2.8: + version "0.2.8" + resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" + +make-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.0.0.tgz#97a011751e91dd87cfadef58832ebb04936de978" + dependencies: + pify "^2.3.0" + +make-error-cause@^1.1.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/make-error-cause/-/make-error-cause-1.2.2.tgz#df0388fcd0b37816dff0a5fb8108939777dcbc9d" + dependencies: + make-error "^1.2.0" + +make-error@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.0.tgz#52ad3a339ccf10ce62b4040b708fe707244b8b96" + +map-cache@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + +map-stream@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.0.7.tgz#8a1f07896d82b10926bd3744a2420009f88974a8" + +map-stream@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" + +math-expression-evaluator@^1.2.14: + version "1.2.17" + resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" + +meow@^3.1.0, meow@^3.3.0, meow@^3.5.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + +merge-stream@^1.0.0, merge-stream@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" + dependencies: + readable-stream "^2.0.1" + +micromatch@2.3.11, micromatch@^2.1.5, micromatch@^2.3.7: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +mime-db@~1.30.0: + version "1.30.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" + +mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.16, mime-types@~2.1.7: + version "2.1.17" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" + dependencies: + mime-db "~1.30.0" + +mime@1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.2.4.tgz#11b5fdaf29c2509255176b80ad520294f5de92b7" + +mime@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" + +"mime@>= 0.0.1": + version "2.0.3" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.0.3.tgz#4353337854747c48ea498330dc034f9f4bbbcc0b" + +"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + +minimatch@^2.0.1: + version "2.0.10" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7" + dependencies: + brace-expansion "^1.0.0" + +minimatch@~0.2.11: + version "0.2.14" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz#c74e780574f63c6f9a090e90efbe6ef53a6a756a" + dependencies: + lru-cache "2" + sigmund "~1.0.0" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + +minimist@~0.0.1: + version "0.0.10" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + +mkdirp@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e" + +"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +ms@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" + +ms@0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" + +ms@0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.3.tgz#708155a5e44e33f5fd0fc53e81d0d40a91be1fff" + +ms@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-1.0.0.tgz#59adcd22edc543f7b5381862d31387b1f4bc9473" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + +multipipe@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b" + dependencies: + duplexer2 "0.0.2" + +nan@^2.3.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46" + +natives@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.0.tgz#e9ff841418a6b2ec7a495e939984f78f163e6e31" + +negotiator@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" + +node-pre-gyp@^0.6.36: + version "0.6.38" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.38.tgz#e92a20f83416415bb4086f6d1fb78b3da73d113d" + dependencies: + hawk "3.1.3" + mkdirp "^0.5.1" + nopt "^4.0.1" + npmlog "^4.0.2" + rc "^1.1.7" + request "2.81.0" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^2.2.1" + tar-pack "^3.4.0" + +node-status-codes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f" + +nopt@3.0.x: + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + dependencies: + abbrev "1" + +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: + version "2.4.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.0.0, normalize-path@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + +normalize-url@^1.4.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + dependencies: + path-key "^2.0.0" + +npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + +oauth-sign@~0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + +object-assign@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" + +object-assign@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa" + +object-assign@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" + +object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + +object-component@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" + +object-path@^0.9.0: + version "0.9.2" + resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.9.2.tgz#0fd9a74fc5fad1ae3968b586bda5c632bd6c05a5" + +object.defaults@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" + dependencies: + array-each "^1.0.1" + array-slice "^1.0.0" + for-own "^1.0.0" + isobject "^3.0.0" + +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +object.pick@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + dependencies: + isobject "^3.0.1" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + dependencies: + ee-first "1.1.1" + +once@^1.3.0, once@^1.3.3, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +once@~1.3.0: + version "1.3.3" + resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" + dependencies: + wrappy "1" + +onetime@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" + +openurl@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/openurl/-/openurl-1.1.1.tgz#3875b4b0ef7a52c156f0db41d4609dbb0f94b387" + +opn@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/opn/-/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95" + dependencies: + object-assign "^4.0.1" + pinkie-promise "^2.0.0" + +optimist@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + +options@>=0.0.5: + version "0.0.6" + resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" + +optipng-bin@^3.0.0: + version "3.1.4" + resolved "https://registry.yarnpkg.com/optipng-bin/-/optipng-bin-3.1.4.tgz#95d34f2c488704f6fd70606bfea0c659f1d95d84" + dependencies: + bin-build "^2.0.0" + bin-wrapper "^3.0.0" + logalot "^2.0.0" + +orchestrator@^0.3.0: + version "0.3.8" + resolved "https://registry.yarnpkg.com/orchestrator/-/orchestrator-0.3.8.tgz#14e7e9e2764f7315fbac184e506c7aa6df94ad7e" + dependencies: + end-of-stream "~0.1.5" + sequencify "~0.0.7" + stream-consume "~0.1.0" + +ordered-read-streams@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz#fd565a9af8eb4473ba69b6ed8a34352cb552f126" + +ordered-read-streams@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz#7137e69b3298bb342247a1bbee3881c80e2fd78b" + dependencies: + is-stream "^1.0.1" + readable-stream "^2.0.1" + +os-filter-obj@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/os-filter-obj/-/os-filter-obj-1.0.3.tgz#5915330d90eced557d2d938a31c6dd214d9c63ad" + +os-homedir@^1.0.0, os-homedir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + dependencies: + lcid "^1.0.0" + +os-tmpdir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +osenv@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + +p-pipe@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-1.2.0.tgz#4b1a11399a11520a67790ee5a0c1d5881d6befe9" + +parse-filepath@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.1.tgz#159d6155d43904d16c10ef698911da1e91969b73" + dependencies: + is-absolute "^0.2.3" + map-cache "^0.2.0" + path-root "^0.1.1" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parse-json@^2.1.0, parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + dependencies: + error-ex "^1.2.0" + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + +parsejson@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/parsejson/-/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab" + dependencies: + better-assert "~1.0.0" + +parseqs@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" + dependencies: + better-assert "~1.0.0" + +parseuri@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" + dependencies: + better-assert "~1.0.0" + +parseurl@~1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + dependencies: + pinkie-promise "^2.0.0" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-key@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + +path-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + +path-root-regex@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" + +path-root@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" + dependencies: + path-root-regex "^0.1.0" + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +pause-stream@0.0.11: + version "0.0.11" + resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" + dependencies: + through "~2.3" + +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + +performance-now@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" + +pify@^2.0.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + +plur@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/plur/-/plur-2.1.2.tgz#7482452c1a0f508e3e344eaec312c91c29dc655a" + dependencies: + irregular-plurals "^1.0.0" + +portscanner@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/portscanner/-/portscanner-2.1.1.tgz#eabb409e4de24950f5a2a516d35ae769343fbb96" + dependencies: + async "1.5.2" + is-number-like "^1.0.3" + +postcss-calc@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e" + dependencies: + postcss "^5.0.2" + postcss-message-helpers "^2.0.0" + reduce-css-calc "^1.2.6" + +postcss-calc@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-6.0.0.tgz#b681b279c6d24fbe0e33ed9045803705445d613b" + dependencies: + css-unit-converter "^1.1.1" + postcss "^6.0.0" + postcss-selector-parser "^2.2.2" + reduce-css-calc "^2.0.0" + +postcss-colormin@^2.1.8: + version "2.2.2" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b" + dependencies: + colormin "^1.0.5" + postcss "^5.0.13" + postcss-value-parser "^3.2.3" + +postcss-convert-values@^2.3.4: + version "2.6.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d" + dependencies: + postcss "^5.0.11" + postcss-value-parser "^3.1.2" + +postcss-custom-properties@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-6.1.0.tgz#9caf1151ac41b1e9e64d3a2ff9ece996ca18977d" + dependencies: + balanced-match "^1.0.0" + postcss "^6.0.3" + +postcss-discard-comments@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d" + dependencies: + postcss "^5.0.14" + +postcss-discard-duplicates@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932" + dependencies: + postcss "^5.0.4" + +postcss-discard-empty@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5" + dependencies: + postcss "^5.0.14" + +postcss-discard-overridden@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58" + dependencies: + postcss "^5.0.16" + +postcss-discard-unused@^2.2.1: + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433" + dependencies: + postcss "^5.0.14" + uniqs "^2.0.0" + +postcss-filter-plugins@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c" + dependencies: + postcss "^5.0.4" + uniqid "^4.0.0" + +postcss-import@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-11.0.0.tgz#a962e2df82d3bc5a6da6a386841747204f41ef5b" + dependencies: + postcss "^6.0.1" + postcss-value-parser "^3.2.3" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-load-config@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-1.2.0.tgz#539e9afc9ddc8620121ebf9d8c3673e0ce50d28a" + dependencies: + cosmiconfig "^2.1.0" + object-assign "^4.1.0" + postcss-load-options "^1.2.0" + postcss-load-plugins "^2.3.0" + +postcss-load-options@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postcss-load-options/-/postcss-load-options-1.2.0.tgz#b098b1559ddac2df04bc0bb375f99a5cfe2b6d8c" + dependencies: + cosmiconfig "^2.1.0" + object-assign "^4.1.0" + +postcss-load-plugins@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz#745768116599aca2f009fad426b00175049d8d92" + dependencies: + cosmiconfig "^2.1.1" + object-assign "^4.1.0" + +postcss-merge-idents@^2.1.5: + version "2.1.7" + resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270" + dependencies: + has "^1.0.1" + postcss "^5.0.10" + postcss-value-parser "^3.1.1" + +postcss-merge-longhand@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658" + dependencies: + postcss "^5.0.4" + +postcss-merge-rules@^2.0.3: + version "2.1.2" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721" + dependencies: + browserslist "^1.5.2" + caniuse-api "^1.5.2" + postcss "^5.0.4" + postcss-selector-parser "^2.2.2" + vendors "^1.0.0" + +postcss-message-helpers@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e" + +postcss-minify-font-values@^1.0.2: + version "1.0.5" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69" + dependencies: + object-assign "^4.0.1" + postcss "^5.0.4" + postcss-value-parser "^3.0.2" + +postcss-minify-gradients@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1" + dependencies: + postcss "^5.0.12" + postcss-value-parser "^3.3.0" + +postcss-minify-params@^1.0.4: + version "1.2.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3" + dependencies: + alphanum-sort "^1.0.1" + postcss "^5.0.2" + postcss-value-parser "^3.0.2" + uniqs "^2.0.0" + +postcss-minify-selectors@^2.0.4: + version "2.1.1" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf" + dependencies: + alphanum-sort "^1.0.2" + has "^1.0.1" + postcss "^5.0.14" + postcss-selector-parser "^2.0.0" + +postcss-normalize-charset@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1" + dependencies: + postcss "^5.0.5" + +postcss-normalize-url@^3.0.7: + version "3.0.8" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222" + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^1.4.0" + postcss "^5.0.14" + postcss-value-parser "^3.2.3" + +postcss-ordered-values@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d" + dependencies: + postcss "^5.0.4" + postcss-value-parser "^3.0.1" + +postcss-reduce-idents@^2.2.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3" + dependencies: + postcss "^5.0.4" + postcss-value-parser "^3.0.2" + +postcss-reduce-initial@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea" + dependencies: + postcss "^5.0.4" + +postcss-reduce-transforms@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1" + dependencies: + has "^1.0.1" + postcss "^5.0.8" + postcss-value-parser "^3.0.1" + +postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90" + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-svgo@^2.1.1: + version "2.1.6" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d" + dependencies: + is-svg "^2.0.0" + postcss "^5.0.14" + postcss-value-parser "^3.2.3" + svgo "^0.7.0" + +postcss-unique-selectors@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d" + dependencies: + alphanum-sort "^1.0.1" + postcss "^5.0.4" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15" + +postcss-zindex@^2.0.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22" + dependencies: + has "^1.0.1" + postcss "^5.0.4" + uniqs "^2.0.0" + +postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.8, postcss@^5.2.16: + version "5.2.17" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.17.tgz#cf4f597b864d65c8a492b2eabe9d706c879c388b" + dependencies: + chalk "^1.1.3" + js-base64 "^2.1.9" + source-map "^0.5.6" + supports-color "^3.2.3" + +postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.11, postcss@^6.0.3: + version "6.0.12" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.12.tgz#6b0155089d2d212f7bd6a0cecd4c58c007403535" + dependencies: + chalk "^2.1.0" + source-map "^0.5.7" + supports-color "^4.4.0" + +prepend-http@^1.0.0, prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + +pretty-bytes@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9" + +pretty-hrtime@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" + +process-nextick-args@^1.0.6, process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +q@^1.1.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1" + +qs@0.4.x: + version "0.4.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-0.4.2.tgz#3cac4c861e371a8c9c4770ac23cda8de639b8e5f" + +qs@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.1.tgz#ce03c5ff0935bc1d9d69a9f14cbd18e568d67625" + +"qs@>= 0.4.0": + version "6.5.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" + +qs@~6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" + +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +queue@^4.2.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/queue/-/queue-4.4.1.tgz#ed93888335700f12dee55955b5a594cb82a1783b" + dependencies: + inherits "~2.0.0" + +randomatic@^1.1.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +range-parser@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + +rc@^1.1.2, rc@^1.1.7: + version "1.2.1" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" + dependencies: + deep-extend "~0.4.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +read-all-stream@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa" + dependencies: + pinkie-promise "^2.0.0" + readable-stream "^2.0.0" + +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + dependencies: + pify "^2.3.0" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +"readable-stream@>=1.0.33-1 <1.1.0-0": + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + safe-buffer "~5.1.1" + string_decoder "~1.0.3" + util-deprecate "~1.0.1" + +readable-stream@~1.1.9: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readdirp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" + dependencies: + graceful-fs "^4.1.2" + minimatch "^3.0.2" + readable-stream "^2.0.2" + set-immediate-shim "^1.0.1" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + dependencies: + resolve "^1.1.6" + +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + +reduce-css-calc@^1.2.6: + version "1.3.0" + resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" + dependencies: + balanced-match "^0.4.2" + math-expression-evaluator "^1.2.14" + reduce-function-call "^1.0.1" + +reduce-css-calc@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-2.0.5.tgz#33c97838c5d4c711a5c14ef85ce4fde41483f7bd" + dependencies: + css-unit-converter "^1.1.1" + postcss-value-parser "^3.3.0" + +reduce-function-call@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99" + dependencies: + balanced-match "^0.4.2" + +regex-cache@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" + dependencies: + is-equal-shallow "^0.1.3" + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + +repeat-element@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + +repeat-string@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + dependencies: + is-finite "^1.0.0" + +replace-ext@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" + +replace-ext@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" + +request@2.81.0: + version "2.81.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~4.2.1" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + performance-now "^0.2.0" + qs "~6.4.0" + safe-buffer "^5.0.1" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "^0.6.0" + uuid "^3.0.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + +require-from-string@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" + +require-from-string@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.1.tgz#c545233e9d7da6616e9d59adfb39fc9f588676ff" + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + +requires-port@1.x.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + +resolve-dir@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e" + dependencies: + expand-tilde "^1.2.2" + global-modules "^0.2.3" + +resolve@^1.1.6, resolve@^1.1.7: + version "1.4.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.4.0.tgz#a75be01c53da25d934a98ebd0e4c4a7312f92a86" + dependencies: + path-parse "^1.0.5" + +resp-modifier@6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/resp-modifier/-/resp-modifier-6.0.2.tgz#b124de5c4fbafcba541f48ffa73970f4aa456b4f" + dependencies: + debug "^2.2.0" + minimatch "^3.0.2" + +right-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + dependencies: + align-text "^0.1.1" + +rimraf@2, rimraf@^2.2.6, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1: + version "2.6.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + dependencies: + glob "^7.0.5" + +rx@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" + +safe-buffer@^5.0.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + +sax@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + +seek-bzip@^1.0.3: + version "1.0.5" + resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.5.tgz#cfe917cb3d274bcffac792758af53173eb1fabdc" + dependencies: + commander "~2.8.1" + +semver-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-1.0.0.tgz#92a4969065f9c70c694753d55248fc68f8f652c9" + +semver-truncate@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/semver-truncate/-/semver-truncate-1.1.2.tgz#57f41de69707a62709a7e0104ba2117109ea47e8" + dependencies: + semver "^5.3.0" + +"semver@2 || 3 || 4 || 5", semver@^5.3.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" + +semver@^4.0.3, semver@^4.1.0: + version "4.3.6" + resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" + +send@0.15.2: + version "0.15.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.15.2.tgz#f91fab4403bcf87e716f70ceb5db2f578bdc17d6" + dependencies: + debug "2.6.4" + depd "~1.1.0" + destroy "~1.0.4" + encodeurl "~1.0.1" + escape-html "~1.0.3" + etag "~1.8.0" + fresh "0.5.0" + http-errors "~1.6.1" + mime "1.3.4" + ms "1.0.0" + on-finished "~2.3.0" + range-parser "~1.2.0" + statuses "~1.3.1" + +sequencify@~0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/sequencify/-/sequencify-0.0.7.tgz#90cff19d02e07027fd767f5ead3e7b95d1e7380c" + +serve-index@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.8.0.tgz#7c5d96c13fb131101f93c1c5774f8516a1e78d3b" + dependencies: + accepts "~1.3.3" + batch "0.5.3" + debug "~2.2.0" + escape-html "~1.0.3" + http-errors "~1.5.0" + mime-types "~2.1.11" + parseurl "~1.3.1" + +serve-static@1.12.2: + version "1.12.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.12.2.tgz#e546e2726081b81b4bcec8e90808ebcdd323afba" + dependencies: + encodeurl "~1.0.1" + escape-html "~1.0.3" + parseurl "~1.3.1" + send "0.15.2" + +server-destroy@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/server-destroy/-/server-destroy-1.0.1.tgz#f13bf928e42b9c3e79383e61cc3998b5d14e6cdd" + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + +set-immediate-shim@^1.0.0, set-immediate-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + +setprototypeof@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.2.tgz#81a552141ec104b88e89ce383103ad5c66564d08" + +setprototypeof@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + +sigmund@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" + +signal-exit@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + +sntp@1.x.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + dependencies: + hoek "2.x.x" + +socket.io-adapter@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b" + dependencies: + debug "2.3.3" + socket.io-parser "2.3.1" + +socket.io-client@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.6.0.tgz#5b668f4f771304dfeed179064708386fa6717853" + dependencies: + backo2 "1.0.2" + component-bind "1.0.0" + component-emitter "1.2.1" + debug "2.3.3" + engine.io-client "1.8.0" + has-binary "0.1.7" + indexof "0.0.1" + object-component "0.0.3" + parseuri "0.0.5" + socket.io-parser "2.3.1" + to-array "0.1.4" + +socket.io-parser@2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0" + dependencies: + component-emitter "1.1.2" + debug "2.2.0" + isarray "0.0.1" + json3 "3.3.2" + +socket.io@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.6.0.tgz#3e40d932637e6bd923981b25caf7c53e83b6e2e1" + dependencies: + debug "2.3.3" + engine.io "1.8.0" + has-binary "0.1.7" + object-assign "4.1.0" + socket.io-adapter "0.5.0" + socket.io-client "1.6.0" + socket.io-parser "2.3.1" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + dependencies: + is-plain-obj "^1.0.0" + +source-map@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + dependencies: + amdefine ">=0.0.4" + +source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + +sparkles@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3" + +spdx-correct@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" + dependencies: + spdx-license-ids "^1.0.2" + +spdx-expression-parse@~1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" + +spdx-license-ids@^1.0.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" + +split@0.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" + dependencies: + through "2" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + +squeak@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/squeak/-/squeak-1.3.0.tgz#33045037b64388b567674b84322a6521073916c3" + dependencies: + chalk "^1.0.0" + console-stream "^0.1.1" + lpad-align "^1.0.1" + +sshpk@^1.7.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + dashdash "^1.12.0" + getpass "^0.1.1" + optionalDependencies: + bcrypt-pbkdf "^1.0.0" + ecc-jsbn "~0.1.1" + jsbn "~0.1.0" + tweetnacl "~0.14.0" + +stat-mode@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-0.2.2.tgz#e6c80b623123d7d80cf132ce538f346289072502" + +"statuses@>= 1.3.1 < 2", statuses@~1.3.0, statuses@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" + +stream-combiner2@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe" + dependencies: + duplexer2 "~0.1.0" + readable-stream "^2.0.2" + +stream-combiner@~0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" + dependencies: + duplexer "~0.1.1" + +stream-consume@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/stream-consume/-/stream-consume-0.1.0.tgz#a41ead1a6d6081ceb79f65b061901b6d8f3d1d0f" + +stream-shift@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" + +stream-throttle@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/stream-throttle/-/stream-throttle-0.1.3.tgz#add57c8d7cc73a81630d31cd55d3961cfafba9c3" + dependencies: + commander "^2.2.0" + limiter "^1.0.5" + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + +string-width@^1.0.1, string-width@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + +string_decoder@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" + dependencies: + safe-buffer "~5.1.0" + +stringstream@~0.0.4: + version "0.0.5" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +strip-bom-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz#e7144398577d51a6bed0fa1994fa05f43fd988ee" + dependencies: + first-chunk-stream "^1.0.0" + strip-bom "^2.0.0" + +strip-bom@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-1.0.0.tgz#85b8862f3844b5a6d5ec8467a93598173a36f794" + dependencies: + first-chunk-stream "^1.0.0" + is-utf8 "^0.2.0" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + dependencies: + is-utf8 "^0.2.0" + +strip-dirs@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-1.1.1.tgz#960bbd1287844f3975a4558aa103a8255e2456a0" + dependencies: + chalk "^1.0.0" + get-stdin "^4.0.1" + is-absolute "^0.1.5" + is-natural-number "^2.0.0" + minimist "^1.1.0" + sum-up "^1.0.1" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + dependencies: + get-stdin "^4.0.1" + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + +strip-outer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.0.tgz#aac0ba60d2e90c5d4f275fd8869fd9a2d310ffb8" + dependencies: + escape-string-regexp "^1.0.2" + +sum-up@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sum-up/-/sum-up-1.0.3.tgz#1c661f667057f63bcb7875aa1438bc162525156e" + dependencies: + chalk "^1.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + +supports-color@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + dependencies: + has-flag "^1.0.0" + +supports-color@^4.0.0, supports-color@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" + dependencies: + has-flag "^2.0.0" + +svgo@^0.7.0: + version "0.7.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" + dependencies: + coa "~1.0.1" + colors "~1.1.2" + csso "~2.3.1" + js-yaml "~3.7.0" + mkdirp "~0.5.1" + sax "~1.2.1" + whet.extend "~0.9.9" + +tar-pack@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" + dependencies: + debug "^2.2.0" + fstream "^1.0.10" + fstream-ignore "^1.0.5" + once "^1.3.3" + readable-stream "^2.1.4" + rimraf "^2.5.1" + tar "^2.2.1" + uid-number "^0.0.6" + +tar-stream@^1.1.1: + version "1.5.4" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.5.4.tgz#36549cf04ed1aee9b2a30c0143252238daf94016" + dependencies: + bl "^1.0.0" + end-of-stream "^1.0.0" + readable-stream "^2.0.0" + xtend "^4.0.0" + +tar@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + dependencies: + block-stream "*" + fstream "^1.0.2" + inherits "2" + +temp-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + +tempfile@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/tempfile/-/tempfile-1.1.1.tgz#5bcc4eaecc4ab2c707d8bc11d99ccc9a2cb287f2" + dependencies: + os-tmpdir "^1.0.0" + uuid "^2.0.1" + +tempfile@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/tempfile/-/tempfile-2.0.0.tgz#6b0446856a9b1114d1856ffcbe509cccb0977265" + dependencies: + temp-dir "^1.0.0" + uuid "^3.0.1" + +tfunk@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/tfunk/-/tfunk-3.1.0.tgz#38e4414fc64977d87afdaa72facb6d29f82f7b5b" + dependencies: + chalk "^1.1.1" + object-path "^0.9.0" + +through2-concurrent@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/through2-concurrent/-/through2-concurrent-1.1.1.tgz#11cb4ea4c9e31bca6e4c1e6dba48d1c728c3524b" + dependencies: + through2 "^2.0.0" + +through2-filter@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-2.0.0.tgz#60bc55a0dacb76085db1f9dae99ab43f83d622ec" + dependencies: + through2 "~2.0.0" + xtend "~4.0.0" + +through2@^0.6.0, through2@^0.6.1: + version "0.6.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" + dependencies: + readable-stream ">=1.0.33-1 <1.1.0-0" + xtend ">=4.0.0 <4.1.0-0" + +through2@^2.0.0, through2@^2.0.1, through2@^2.0.3, through2@~2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" + dependencies: + readable-stream "^2.1.5" + xtend "~4.0.1" + +through@2, through@~2.3, through@~2.3.1: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + +tildify@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/tildify/-/tildify-1.2.0.tgz#dcec03f55dca9b7aa3e5b04f21817eb56e63588a" + dependencies: + os-homedir "^1.0.0" + +time-stamp@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" + +timed-out@^3.0.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217" + +to-absolute-glob@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz#1cdfa472a9ef50c239ee66999b662ca0eb39937f" + dependencies: + extend-shallow "^2.0.1" + +to-array@0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" + +tough-cookie@~2.3.0: + version "2.3.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" + dependencies: + punycode "^1.4.1" + +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + +trim-repeated@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21" + dependencies: + escape-string-regexp "^1.0.2" + +tunnel-agent@^0.4.0: + version "0.4.3" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + +ua-parser-js@0.7.12: + version "0.7.12" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.12.tgz#04c81a99bdd5dc52263ea29d24c6bf8d4818a4bb" + +uglify-js@^2.6: + version "2.8.29" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" + dependencies: + source-map "~0.5.1" + yargs "~3.10.0" + optionalDependencies: + uglify-to-browserify "~1.0.0" + +uglify-js@^3.0.5: + version "3.1.3" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.1.3.tgz#d61f0453b4718cab01581f3162aa90bab7520b42" + dependencies: + commander "~2.11.0" + source-map "~0.5.1" + +uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + +uid-number@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + +ultron@1.0.x: + version "1.0.2" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" + +unc-path-regex@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" + +underscore@1.7.x: + version "1.7.0" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + +uniqid@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/uniqid/-/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1" + dependencies: + macaddress "^0.2.8" + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + +unique-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-1.0.0.tgz#d59a4a75427447d9aa6c91e70263f8d26a4b104b" + +unique-stream@^2.0.2: + version "2.2.1" + resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.2.1.tgz#5aa003cfbe94c5ff866c4e7d668bb1c4dbadb369" + dependencies: + json-stable-stringify "^1.0.0" + through2-filter "^2.0.0" + +universalify@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7" + +unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + +unzip-response@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe" + +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + dependencies: + prepend-http "^1.0.1" + +url-regex@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/url-regex/-/url-regex-3.2.0.tgz#dbad1e0c9e29e105dd0b1f09f6862f7fdb482724" + dependencies: + ip-regex "^1.0.1" + +user-home@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +utils-merge@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" + +uuid@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" + +uuid@^3.0.0, uuid@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" + +v8flags@^2.0.2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" + dependencies: + user-home "^1.1.1" + +vali-date@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/vali-date/-/vali-date-1.0.0.tgz#1b904a59609fb328ef078138420934f6b86709a6" + +validate-npm-package-license@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" + dependencies: + spdx-correct "~1.0.0" + spdx-expression-parse "~1.0.0" + +vendors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22" + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vinyl-assign@^1.0.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/vinyl-assign/-/vinyl-assign-1.2.1.tgz#4d198891b5515911d771a8cd9c5480a46a074a45" + dependencies: + object-assign "^4.0.1" + readable-stream "^2.0.0" + +vinyl-fs@^0.3.0: + version "0.3.14" + resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-0.3.14.tgz#9a6851ce1cac1c1cea5fe86c0931d620c2cfa9e6" + dependencies: + defaults "^1.0.0" + glob-stream "^3.1.5" + glob-watcher "^0.0.6" + graceful-fs "^3.0.0" + mkdirp "^0.5.0" + strip-bom "^1.0.0" + through2 "^0.6.1" + vinyl "^0.4.0" + +vinyl-fs@^2.0.0, vinyl-fs@^2.2.0, vinyl-fs@^2.4.4: + version "2.4.4" + resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-2.4.4.tgz#be6ff3270cb55dfd7d3063640de81f25d7532239" + dependencies: + duplexify "^3.2.0" + glob-stream "^5.3.2" + graceful-fs "^4.0.0" + gulp-sourcemaps "1.6.0" + is-valid-glob "^0.3.0" + lazystream "^1.0.0" + lodash.isequal "^4.0.0" + merge-stream "^1.0.0" + mkdirp "^0.5.0" + object-assign "^4.0.0" + readable-stream "^2.0.4" + strip-bom "^2.0.0" + strip-bom-stream "^1.0.0" + through2 "^2.0.0" + through2-filter "^2.0.0" + vali-date "^1.0.0" + vinyl "^1.0.0" + +vinyl-sourcemaps-apply@^0.2.0, vinyl-sourcemaps-apply@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz#ab6549d61d172c2b1b87be5c508d239c8ef87705" + dependencies: + source-map "^0.5.1" + +vinyl@^0.4.0, vinyl@^0.4.3: + version "0.4.6" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.4.6.tgz#2f356c87a550a255461f36bbeb2a5ba8bf784847" + dependencies: + clone "^0.2.0" + clone-stats "^0.0.1" + +vinyl@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde" + dependencies: + clone "^1.0.0" + clone-stats "^0.0.1" + replace-ext "0.0.1" + +vinyl@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-1.2.0.tgz#5c88036cf565e5df05558bfc911f8656df218884" + dependencies: + clone "^1.0.0" + clone-stats "^0.0.1" + replace-ext "0.0.1" + +vinyl@^2.0.0, vinyl@^2.0.2: + version "2.1.0" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.1.0.tgz#021f9c2cf951d6b939943c89eb5ee5add4fd924c" + dependencies: + clone "^2.1.1" + clone-buffer "^1.0.0" + clone-stats "^1.0.0" + cloneable-readable "^1.0.0" + remove-trailing-separator "^1.0.1" + replace-ext "^1.0.0" + +ware@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/ware/-/ware-1.3.0.tgz#d1b14f39d2e2cb4ab8c4098f756fe4b164e473d4" + dependencies: + wrap-fn "^0.1.0" + +weinre@^2.0.0-pre-I0Z7U9OV: + version "2.0.0-pre-I0Z7U9OV" + resolved "https://registry.yarnpkg.com/weinre/-/weinre-2.0.0-pre-I0Z7U9OV.tgz#fef8aa223921f7b40bbbbd4c3ed4302f6fd0a813" + dependencies: + express "2.5.x" + nopt "3.0.x" + underscore "1.7.x" + +whet.extend@~0.9.9: + version "0.9.9" + resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + +which@^1.2.12, which@^1.2.9: + version "1.3.0" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" + dependencies: + string-width "^1.0.2" + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + +window-size@^0.1.2: + version "0.1.4" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" + +window-size@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrap-fn@^0.1.0: + version "0.1.5" + resolved "https://registry.yarnpkg.com/wrap-fn/-/wrap-fn-0.1.5.tgz#f21b6e41016ff4a7e31720dbc63a09016bdf9845" + dependencies: + co "3.1.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +ws@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.1.tgz#082ddb6c641e85d4bb451f03d52f06eabdb1f018" + dependencies: + options ">=0.0.5" + ultron "1.0.x" + +wtf-8@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a" + +xmlhttprequest-ssl@1.5.3: + version "1.5.3" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d" + +"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.0, xtend@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + +y18n@^3.2.0, y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + +yargs-parser@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" + dependencies: + camelcase "^3.0.0" + +yargs@3.29.0: + version "3.29.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.29.0.tgz#1aab9660eae79d8b8f675bcaeeab6ee34c2cf69c" + dependencies: + camelcase "^1.2.1" + cliui "^3.0.3" + decamelize "^1.0.0" + os-locale "^1.4.0" + window-size "^0.1.2" + y18n "^3.2.0" + +yargs@6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.4.0.tgz#816e1a866d5598ccf34e5596ddce22d92da490d4" + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + window-size "^0.2.0" + y18n "^3.2.1" + yargs-parser "^4.1.0" + +yargs@~3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + dependencies: + camelcase "^1.0.2" + cliui "^2.1.0" + decamelize "^1.0.0" + window-size "0.1.0" + +yauzl@^2.2.1: + version "2.8.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.8.0.tgz#79450aff22b2a9c5a41ef54e02db907ccfbf9ee2" + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.0.1" + +yazl@^2.2.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/yazl/-/yazl-2.4.2.tgz#14cb19083e1e25a70092c1588aabe0f4e4dd4d88" + dependencies: + buffer-crc32 "~0.2.3" + +yeast@0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" From 4257abd0e2863668087735b34eeb4332b17cd0e2 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Sun, 1 Oct 2017 21:19:09 -0600 Subject: [PATCH 003/465] add lint build task - add Standard JS variant of ESLint - add ESLint config based on StandardJS w/ custom rules - add lint build task - fix lint violations --- .eslintrc | 7 + gulpfile.js | 11 +- package.json | 8 +- tasks/build-preview.js | 6 +- tasks/build.js | 4 +- tasks/lint.js | 11 + tasks/preview.js | 5 +- yarn.lock | 633 ++++++++++++++++++++++++++++++++++++++++- 8 files changed, 656 insertions(+), 29 deletions(-) create mode 100644 .eslintrc create mode 100644 tasks/lint.js diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..6d39e67 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,7 @@ +{ + "extends": "standard", + "rules": { + "arrow-parens": ["error", "always"], + "comma-dangle": ["error", "always-multiline"] + } +} diff --git a/gulpfile.js b/gulpfile.js index 4f617f3..88ed62a 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -5,6 +5,7 @@ const gulp = require('gulp') const build = require('./tasks/build') const buildPreview = require('./tasks/build-preview') +const lint = require('./tasks/lint') const pack = require('./tasks/pack') const preview = require('./tasks/preview') @@ -15,6 +16,10 @@ const previewSiteDestDir = path.join(buildDir, 'preview-site') const srcDir = 'src' const destDir = path.join(previewSiteDestDir, '_') +gulp.task('lint', () => + lint(['gulpfile.js', 'tasks/**/*.js', path.join(srcDir, '{helpers,js}/**/*.js')]) +) + gulp.task('build', () => build(srcDir, destDir) ) @@ -28,12 +33,12 @@ gulp.task('preview', ['build:preview'], () => port: 5252, watch: { src: [srcDir, previewSiteSrcDir], - onChange: () => gulp.start('build:preview') - } + onChange: () => gulp.start('build:preview'), + }, }) ) -gulp.task('pack', ['build'], () => +gulp.task('pack', ['build', 'lint'], () => pack(destDir, buildDir, bundleName) ) diff --git a/package.json b/package.json index a8fd563..520d33b 100644 --- a/package.json +++ b/package.json @@ -12,8 +12,15 @@ "browser-sync": "^2.18.13", "chokidar": "^1.7.0", "cssnano": "^3.10.0", + "eslint": "^4.8.0", + "eslint-config-standard": "^10.2.1", + "eslint-plugin-import": "^2.7.0", + "eslint-plugin-node": "^5.2.0", + "eslint-plugin-promise": "^3.5.0", + "eslint-plugin-standard": "^3.0.1", "gulp": "^3.9.1", "gulp-concat": "^2.6.1", + "gulp-eslint": "^4.0.0", "gulp-imagemin": "^3.3.0", "gulp-postcss": "^7.0.0", "gulp-uglify": "^3.0.0", @@ -23,7 +30,6 @@ "lodash.debounce": "^4.0.8", "map-stream": "^0.0.7", "merge-stream": "^1.0.1", - "minimatch": "^3.0.4", "postcss-calc": "^6.0.0", "postcss-custom-properties": "^6.1.0", "postcss-import": "^11.0.0", diff --git a/tasks/build-preview.js b/tasks/build-preview.js index 47b7f61..47dc1b8 100644 --- a/tasks/build-preview.js +++ b/tasks/build-preview.js @@ -3,15 +3,13 @@ const fs = require('fs') const handlebars = require('handlebars') const map = require('map-stream') -const merge = require('merge-stream') -const minimatch = require('minimatch') const path = require('path') const requireFromString = require('require-from-string') const vfs = require('vinyl-fs') const yaml = require('js-yaml') module.exports = async (src, dest, siteSrc, siteDest) => { - const [layouts,,] = await Promise.all([ + const [layouts] = await Promise.all([ compileLayouts(src), registerPartials(src), registerHelpers(src), @@ -27,7 +25,7 @@ module.exports = async (src, dest, siteSrc, siteDest) => { mockUIModel['siteRootUrl'] = path.join(siteRootPath, 'index.html') mockUIModel['uiRootPath'] = path.join(siteRootPath, '_') mockUIModel['contents'] = file.contents.toString().trimRight() - file.contents = new Buffer(compiledLayout(mockUIModel)) + file.contents = Buffer.from(compiledLayout(mockUIModel)) next(null, file) })) .pipe(vfs.dest(siteDest)) diff --git a/tasks/build.js b/tasks/build.js index 7af07e2..f5047cc 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -5,8 +5,6 @@ const concat = require('gulp-concat') const cssnano = require('cssnano') const imagemin = require('gulp-imagemin') const merge = require('merge-stream') -const minimatch = require('minimatch') -const path = require('path') const postcss = require('gulp-postcss') const postcssCalc = require('postcss-calc') const postcssImport = require('postcss-import') @@ -44,7 +42,7 @@ module.exports = (src, dest) => { vfs.src('layouts/*.hbs', opts), - vfs.src('partials/*.hbs', opts) + vfs.src('partials/*.hbs', opts), ]) .pipe(vfs.dest(dest)) } diff --git a/tasks/lint.js b/tasks/lint.js new file mode 100644 index 0000000..64ca9e7 --- /dev/null +++ b/tasks/lint.js @@ -0,0 +1,11 @@ +'use strict' + +const vfs = require('vinyl-fs') +const eslint = require('gulp-eslint') + +module.exports = (files) => + vfs + .src(files) + .pipe(eslint()) + .pipe(eslint.format()) + .pipe(eslint.failAfterError()) diff --git a/tasks/preview.js b/tasks/preview.js index 1f3e65a..35e9bda 100644 --- a/tasks/preview.js +++ b/tasks/preview.js @@ -3,7 +3,6 @@ const browserSync = require('browser-sync') const debounce = require('lodash.debounce') const chokidar = require('chokidar') -const fs = require('fs') module.exports = (dest, opts) => { opts = opts || {} @@ -18,8 +17,8 @@ module.exports = (dest, opts) => { reloadDebounce: 200, ui: false, server: { - baseDir: dest - } + baseDir: dest, + }, }) const watch = opts.watch diff --git a/yarn.lock b/yarn.lock index b96efd0..70dd917 100644 --- a/yarn.lock +++ b/yarn.lock @@ -20,10 +20,28 @@ accepts@~1.3.3: mime-types "~2.1.16" negotiator "0.6.1" +acorn-jsx@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" + dependencies: + acorn "^3.0.4" + +acorn@^3.0.4: + version "3.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + +acorn@^5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.2.tgz#911cb53e036807cf0fa778dc5d370fbd864246d7" + after@0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/after/-/after-0.8.1.tgz#ab5d4fb883f596816d3515f8f791c0af486dd627" +ajv-keywords@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.0.tgz#a296e17f7bfae7c1ce4f7e0de53d29cb32162df0" + ajv@^4.9.1: version "4.11.8" resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" @@ -31,6 +49,15 @@ ajv@^4.9.1: co "^4.6.0" json-stable-stringify "^1.0.1" +ajv@^5.2.0, ajv@^5.2.3: + version "5.2.3" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.2.3.tgz#c06f598778c44c6b161abafe3466b81ad1814ed2" + dependencies: + co "^4.6.0" + fast-deep-equal "^1.0.0" + json-schema-traverse "^0.3.0" + json-stable-stringify "^1.0.1" + align-text@^0.1.1, align-text@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" @@ -47,10 +74,18 @@ amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" +ansi-escapes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92" + ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -139,6 +174,10 @@ arraybuffer.slice@0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca" +arrify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + asn1@~0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" @@ -201,6 +240,14 @@ aws4@^1.2.1: version "1.6.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" +babel-code-frame@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + backo2@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" @@ -406,14 +453,24 @@ buffer-to-vinyl@^1.0.0: uuid "^2.0.1" vinyl "^1.0.0" -builtin-modules@^1.0.0: +builtin-modules@^1.0.0, builtin-modules@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" +caller-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + dependencies: + callsites "^0.2.0" + callsite@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" +callsites@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + camelcase-keys@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" @@ -484,7 +541,7 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.1.0: +chalk@^2.0.0, chalk@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" dependencies: @@ -507,12 +564,26 @@ chokidar@1.7.0, chokidar@^1.7.0: optionalDependencies: fsevents "^1.0.0" +circular-json@^0.3.1: + version "0.3.3" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" + clap@^1.0.9: version "1.2.3" resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51" dependencies: chalk "^1.1.3" +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + dependencies: + restore-cursor "^2.0.0" + +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + cliui@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" @@ -651,7 +722,7 @@ concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" -concat-stream@^1.4.6, concat-stream@^1.4.7: +concat-stream@^1.4.6, concat-stream@^1.4.7, concat-stream@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" dependencies: @@ -694,6 +765,10 @@ console-stream@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/console-stream/-/console-stream-0.1.1.tgz#a095fe07b20465955f2fafd28b5d72bccd949d44" +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + convert-source-map@^1.1.1: version "1.5.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" @@ -724,7 +799,7 @@ create-error-class@^3.0.1: dependencies: capture-stack-trace "^1.0.0" -cross-spawn@^5.0.1: +cross-spawn@^5.0.1, cross-spawn@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" dependencies: @@ -830,12 +905,18 @@ debug@2.6.8: dependencies: ms "2.0.0" -debug@^2.2.0: +debug@^2.2.0, debug@^2.6.8: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: ms "2.0.0" +debug@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + dependencies: + ms "2.0.0" + decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -904,6 +985,10 @@ deep-extend@~0.4.0: version "0.4.2" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + defaults@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" @@ -914,6 +999,18 @@ defined@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" +del@^2.0.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" + dependencies: + globby "^5.0.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + rimraf "^2.2.8" + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -944,6 +1041,20 @@ dev-ip@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/dev-ip/-/dev-ip-1.0.1.tgz#a76a3ed1855be7a012bb8ac16cb80f3c00dc28f0" +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63" + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + download@^4.0.0, download@^4.1.2: version "4.4.3" resolved "https://registry.yarnpkg.com/download/-/download-4.4.3.tgz#aa55fdad392d95d4b68e8c2be03e0c2aa21ba9ac" @@ -1095,6 +1206,112 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" +eslint-config-standard@^10.2.1: + version "10.2.1" + resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz#c061e4d066f379dc17cd562c64e819b4dd454591" + +eslint-import-resolver-node@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.1.tgz#4422574cde66a9a7b099938ee4d508a199e0e3cc" + dependencies: + debug "^2.6.8" + resolve "^1.2.0" + +eslint-module-utils@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz#abaec824177613b8a95b299639e1b6facf473449" + dependencies: + debug "^2.6.8" + pkg-dir "^1.0.0" + +eslint-plugin-import@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.7.0.tgz#21de33380b9efb55f5ef6d2e210ec0e07e7fa69f" + dependencies: + builtin-modules "^1.1.1" + contains-path "^0.1.0" + debug "^2.6.8" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.1" + eslint-module-utils "^2.1.1" + has "^1.0.1" + lodash.cond "^4.3.0" + minimatch "^3.0.3" + read-pkg-up "^2.0.0" + +eslint-plugin-node@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-5.2.0.tgz#e1efca04a385516cff3f2f04027ce8c5ae6db749" + dependencies: + ignore "^3.3.3" + minimatch "^3.0.4" + resolve "^1.3.3" + semver "5.3.0" + +eslint-plugin-promise@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-3.5.0.tgz#78fbb6ffe047201627569e85a6c5373af2a68fca" + +eslint-plugin-standard@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz#34d0c915b45edc6f010393c7eef3823b08565cf2" + +eslint-scope@^3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint@^4.0.0, eslint@^4.8.0: + version "4.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.8.0.tgz#229ef0e354e0e61d837c7a80fdfba825e199815e" + dependencies: + ajv "^5.2.0" + babel-code-frame "^6.22.0" + chalk "^2.1.0" + concat-stream "^1.6.0" + cross-spawn "^5.1.0" + debug "^3.0.1" + doctrine "^2.0.0" + eslint-scope "^3.7.1" + espree "^3.5.1" + esquery "^1.0.0" + estraverse "^4.2.0" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^9.17.0" + ignore "^3.3.3" + imurmurhash "^0.1.4" + inquirer "^3.0.6" + is-resolvable "^1.0.0" + js-yaml "^3.9.1" + json-stable-stringify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.4" + minimatch "^3.0.2" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + pluralize "^7.0.0" + progress "^2.0.0" + require-uncached "^1.0.3" + semver "^5.3.0" + strip-ansi "^4.0.0" + strip-json-comments "~2.0.1" + table "^4.0.1" + text-table "~0.2.0" + +espree@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.1.tgz#0c988b8ab46db53100a1954ae4ba995ddd27d87e" + dependencies: + acorn "^5.1.1" + acorn-jsx "^3.0.0" + esprima@^2.6.0: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" @@ -1103,6 +1320,27 @@ esprima@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" +esquery@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa" + dependencies: + estraverse "^4.0.0" + +esrecurse@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz#fa9568d98d3823f9a41d91e902dcab9ea6e5b163" + dependencies: + estraverse "^4.1.0" + object-assign "^4.0.1" + +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + etag@^1.7.0, etag@~1.8.0: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" @@ -1201,6 +1439,14 @@ extend@^3.0.0, extend@~3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" +external-editor@^2.0.4: + version "2.0.5" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.0.5.tgz#52c249a3981b9ba187c7cacf5beb50bf1d91a6bc" + dependencies: + iconv-lite "^0.4.17" + jschardet "^1.4.2" + tmp "^0.0.33" + extglob@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" @@ -1218,6 +1464,14 @@ fancy-log@^1.1.0: chalk "^1.1.1" time-stamp "^1.0.0" +fast-deep-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" + +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + fd-slicer@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" @@ -1231,6 +1485,19 @@ figures@^1.3.5: escape-string-regexp "^1.0.5" object-assign "^4.1.0" +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + dependencies: + flat-cache "^1.2.1" + object-assign "^4.0.1" + file-type@^3.1.0: version "3.9.0" resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" @@ -1286,6 +1553,12 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" +find-up@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + dependencies: + locate-path "^2.0.0" + find-versions@^1.0.0: version "1.2.1" resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-1.2.1.tgz#cbde9f12e38575a0af1be1b9a2c5d5fd8f186b62" @@ -1322,6 +1595,15 @@ flagged-respawn@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-0.3.2.tgz#ff191eddcd7088a675b2610fffc976be9b8074b5" +flat-cache@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" + dependencies: + circular-json "^0.3.1" + del "^2.0.2" + graceful-fs "^4.1.2" + write "^0.2.1" + flatten@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" @@ -1414,6 +1696,10 @@ function-bind@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -1540,7 +1826,7 @@ glob@^5.0.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.3, glob@^7.0.5: +glob@^7.0.3, glob@^7.0.5, glob@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: @@ -1575,6 +1861,21 @@ global-prefix@^0.1.4: is-windows "^0.2.0" which "^1.2.12" +globals@^9.17.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + +globby@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + dependencies: + array-union "^1.0.1" + arrify "^1.0.0" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + globby@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" @@ -1654,6 +1955,13 @@ gulp-decompress@^1.2.0: gulp-util "^3.0.1" readable-stream "^2.0.2" +gulp-eslint@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/gulp-eslint/-/gulp-eslint-4.0.0.tgz#16d9ea4d696e7b7a9d65eeb1aa5bc4ba0a22c7f7" + dependencies: + eslint "^4.0.0" + gulp-util "^3.0.8" + gulp-imagemin@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/gulp-imagemin/-/gulp-imagemin-3.3.0.tgz#c55764c260593e8595609e66a40126911ef22264" @@ -1890,6 +2198,14 @@ http-signature@~1.1.0: jsprim "^1.2.2" sshpk "^1.7.0" +iconv-lite@^0.4.17: + version "0.4.19" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" + +ignore@^3.3.3: + version "3.3.5" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.5.tgz#c4e715455f6073a8d7e5dae72d2fc9d71663dba6" + imagemin-gifsicle@^5.0.0: version "5.2.0" resolved "https://registry.yarnpkg.com/imagemin-gifsicle/-/imagemin-gifsicle-5.2.0.tgz#3781524c457612ef04916af34241a2b42bfcb40a" @@ -1936,6 +2252,10 @@ immutable@3.8.1, immutable@^3.7.6: version "3.8.1" resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.1.tgz#200807f11ab0f72710ea485542de088075f68cd2" +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + indent-string@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" @@ -1969,6 +2289,25 @@ ini@^1.3.4, ini@~1.3.0: version "1.3.4" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" +inquirer@^3.0.6: + version "3.3.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.0.4" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rx-lite "^4.0.8" + rx-lite-aggregates "^4.0.8" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + interpret@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.4.tgz#820cdd588b868ffb191a809506d6c9c8f212b1b0" @@ -2064,6 +2403,10 @@ is-fullwidth-code-point@^1.0.0: dependencies: number-is-nan "^1.0.0" +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + is-gif@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-gif/-/is-gif-1.0.0.tgz#a6d2ae98893007bffa97a1d8c01d63205832097e" @@ -2114,6 +2457,22 @@ is-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + +is-path-in-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" + dependencies: + is-path-inside "^1.0.0" + +is-path-inside@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" + dependencies: + path-is-inside "^1.0.1" + is-plain-obj@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" @@ -2136,6 +2495,10 @@ is-primitive@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + is-redirect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" @@ -2150,6 +2513,12 @@ is-relative@^0.2.1: dependencies: is-unc-path "^0.1.1" +is-resolvable@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" + dependencies: + tryit "^1.0.1" + is-retry-allowed@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" @@ -2202,7 +2571,7 @@ isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" -isarray@1.0.0, isarray@~1.0.0: +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -2236,7 +2605,18 @@ js-base64@^2.1.9: version "2.3.2" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.3.2.tgz#a79a923666372b580f8e27f51845c6f7e8fbfbaf" -js-yaml@^3.10.0, js-yaml@^3.4.3, js-yaml@~3.7.0: +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + +js-yaml@^3.10.0, js-yaml@^3.9.1: + version "3.10.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^3.4.3, js-yaml@~3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" dependencies: @@ -2247,6 +2627,14 @@ jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" +jschardet@^1.4.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-1.5.1.tgz#c519f629f86b3a5bedba58a88d311309eec097f9" + +json-schema-traverse@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" + json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" @@ -2316,6 +2704,13 @@ lcid@^1.0.0: dependencies: invert-kv "^1.0.0" +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + liftoff@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-2.3.0.tgz#a98f2ff67183d8ba7cfaca10548bd7ff0550b385" @@ -2344,6 +2739,15 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + localtunnel@1.8.3: version "1.8.3" resolved "https://registry.yarnpkg.com/localtunnel/-/localtunnel-1.8.3.tgz#dcc5922fd85651037d4bde24fd93248d0b24eb05" @@ -2353,6 +2757,13 @@ localtunnel@1.8.3: request "2.81.0" yargs "3.29.0" +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + lodash._basecopy@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" @@ -2389,6 +2800,10 @@ lodash._root@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" +lodash.cond@^4.3.0: + version "4.5.2" + resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5" + lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" @@ -2472,7 +2887,7 @@ lodash@^3.10.1: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" -lodash@^4.13.1: +lodash@^4.13.1, lodash@^4.17.4, lodash@^4.3.0: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" @@ -2623,7 +3038,11 @@ mime@1.3.4: version "2.0.3" resolved "https://registry.yarnpkg.com/mime/-/mime-2.0.3.tgz#4353337854747c48ea498330dc034f9f4bbbcc0b" -"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: +mimic-fn@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" + +"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: @@ -2690,6 +3109,10 @@ multipipe@^0.1.2: dependencies: duplexer2 "0.0.2" +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + nan@^2.3.0: version "2.7.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46" @@ -2698,6 +3121,10 @@ natives@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.0.tgz#e9ff841418a6b2ec7a495e939984f78f163e6e31" +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + negotiator@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" @@ -2857,6 +3284,12 @@ onetime@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + dependencies: + mimic-fn "^1.0.0" + openurl@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/openurl/-/openurl-1.1.1.tgz#3875b4b0ef7a52c156f0db41d4609dbb0f94b387" @@ -2875,6 +3308,17 @@ optimist@^0.6.1: minimist "~0.0.1" wordwrap "~0.0.2" +optionator@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + options@>=0.0.5: version "0.0.6" resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" @@ -2920,7 +3364,7 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" -os-tmpdir@^1.0.0: +os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -2935,6 +3379,16 @@ p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" +p-limit@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + dependencies: + p-limit "^1.1.0" + p-pipe@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-1.2.0.tgz#4b1a11399a11520a67790ee5a0c1d5881d6befe9" @@ -2998,10 +3452,18 @@ path-exists@^2.0.0: dependencies: pinkie-promise "^2.0.0" +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" +path-is-inside@^1.0.1, path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + path-key@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" @@ -3028,6 +3490,12 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + dependencies: + pify "^2.0.0" + pause-stream@0.0.11: version "0.0.11" resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" @@ -3060,12 +3528,22 @@ pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" +pkg-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" + dependencies: + find-up "^1.0.0" + plur@^2.0.0: version "2.1.2" resolved "https://registry.yarnpkg.com/plur/-/plur-2.1.2.tgz#7482452c1a0f508e3e344eaec312c91c29dc655a" dependencies: irregular-plurals "^1.0.0" +pluralize@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" + portscanner@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/portscanner/-/portscanner-2.1.1.tgz#eabb409e4de24950f5a2a516d35ae769343fbb96" @@ -3340,6 +3818,10 @@ postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.11, postcss@^6.0.3: source-map "^0.5.7" supports-color "^4.4.0" +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + prepend-http@^1.0.0, prepend-http@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" @@ -3360,6 +3842,10 @@ process-nextick-args@^1.0.6, process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" +progress@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" + pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" @@ -3441,6 +3927,13 @@ read-pkg-up@^1.0.1: find-up "^1.0.0" read-pkg "^1.0.0" +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + read-pkg@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" @@ -3449,6 +3942,14 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + "readable-stream@>=1.0.33-1 <1.1.0-0": version "1.0.34" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" @@ -3597,6 +4098,13 @@ require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" +require-uncached@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + dependencies: + caller-path "^0.1.0" + resolve-from "^1.0.0" + requires-port@1.x.x: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" @@ -3608,7 +4116,11 @@ resolve-dir@^0.1.0: expand-tilde "^1.2.2" global-modules "^0.2.3" -resolve@^1.1.6, resolve@^1.1.7: +resolve-from@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.2.0, resolve@^1.3.3: version "1.4.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.4.0.tgz#a75be01c53da25d934a98ebd0e4c4a7312f92a86" dependencies: @@ -3621,18 +4133,41 @@ resp-modifier@6.0.2: debug "^2.2.0" minimatch "^3.0.2" +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + right-align@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" dependencies: align-text "^0.1.1" -rimraf@2, rimraf@^2.2.6, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1: +rimraf@2, rimraf@^2.2.6, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" dependencies: glob "^7.0.5" +run-async@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + dependencies: + is-promise "^2.1.0" + +rx-lite-aggregates@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" + dependencies: + rx-lite "*" + +rx-lite@*, rx-lite@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" + rx@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" @@ -3665,6 +4200,10 @@ semver-truncate@^1.0.0: version "5.4.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" +semver@5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + semver@^4.0.3, semver@^4.1.0: version "4.3.6" resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" @@ -3746,10 +4285,16 @@ sigmund@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" -signal-exit@^3.0.0: +signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" +slice-ansi@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" + dependencies: + is-fullwidth-code-point "^2.0.0" + sntp@1.x.x: version "1.0.9" resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" @@ -3914,6 +4459,13 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" +string-width@^2.1.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" @@ -3934,6 +4486,12 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + dependencies: + ansi-regex "^3.0.0" + strip-bom-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz#e7144398577d51a6bed0fa1994fa05f43fd988ee" @@ -3954,6 +4512,10 @@ strip-bom@^2.0.0: dependencies: is-utf8 "^0.2.0" +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + strip-dirs@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-1.1.1.tgz#960bbd1287844f3975a4558aa103a8255e2456a0" @@ -4019,6 +4581,17 @@ svgo@^0.7.0: sax "~1.2.1" whet.extend "~0.9.9" +table@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" + dependencies: + ajv "^5.2.3" + ajv-keywords "^2.1.0" + chalk "^2.1.0" + lodash "^4.17.4" + slice-ansi "1.0.0" + string-width "^2.1.1" + tar-pack@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" @@ -4067,6 +4640,10 @@ tempfile@^2.0.0: temp-dir "^1.0.0" uuid "^3.0.1" +text-table@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + tfunk@^3.0.1: version "3.1.0" resolved "https://registry.yarnpkg.com/tfunk/-/tfunk-3.1.0.tgz#38e4414fc64977d87afdaa72facb6d29f82f7b5b" @@ -4101,7 +4678,7 @@ through2@^2.0.0, through2@^2.0.1, through2@^2.0.3, through2@~2.0.0: readable-stream "^2.1.5" xtend "~4.0.1" -through@2, through@~2.3, through@~2.3.1: +through@2, through@^2.3.6, through@~2.3, through@~2.3.1: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -4119,6 +4696,12 @@ timed-out@^3.0.0: version "3.1.3" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217" +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + dependencies: + os-tmpdir "~1.0.2" + to-absolute-glob@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz#1cdfa472a9ef50c239ee66999b662ca0eb39937f" @@ -4145,6 +4728,10 @@ trim-repeated@^1.0.0: dependencies: escape-string-regexp "^1.0.2" +tryit@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" + tunnel-agent@^0.4.0: version "0.4.3" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" @@ -4159,6 +4746,12 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + dependencies: + prelude-ls "~1.1.2" + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -4437,6 +5030,10 @@ wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" @@ -4454,6 +5051,12 @@ wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" +write@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + dependencies: + mkdirp "^0.5.1" + ws@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.1.tgz#082ddb6c641e85d4bb451f03d52f06eabdb1f018" From 659a0d617ea2f3a33168e51cc597434d2595516d Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Sun, 1 Oct 2017 22:01:04 -0600 Subject: [PATCH 004/465] add format build task - add Prettier w/ ESLint integration - add local Gulp plugin to integrate prettier-eslint - add format build task - promote JS file globs to constant --- gulpfile.js | 13 +++- package.json | 1 + tasks/format.js | 10 +++ tasks/lib/gulp-prettier-eslint.js | 45 ++++++++++++++ yarn.lock | 100 ++++++++++++++++++++++++++++-- 5 files changed, 163 insertions(+), 6 deletions(-) create mode 100644 tasks/format.js create mode 100644 tasks/lib/gulp-prettier-eslint.js diff --git a/gulpfile.js b/gulpfile.js index 88ed62a..51082d0 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -5,6 +5,7 @@ const gulp = require('gulp') const build = require('./tasks/build') const buildPreview = require('./tasks/build-preview') +const format = require('./tasks/format') const lint = require('./tasks/lint') const pack = require('./tasks/pack') const preview = require('./tasks/preview') @@ -16,8 +17,18 @@ const previewSiteDestDir = path.join(buildDir, 'preview-site') const srcDir = 'src' const destDir = path.join(previewSiteDestDir, '_') +const jsFiles = [ + 'gulpfile.js', + 'tasks/**/*.js', + path.join(srcDir, '{helpers,js}/**/*.js') +] + gulp.task('lint', () => - lint(['gulpfile.js', 'tasks/**/*.js', path.join(srcDir, '{helpers,js}/**/*.js')]) + lint(jsFiles) +) + +gulp.task('format', () => + format(jsFiles) ) gulp.task('build', () => diff --git a/package.json b/package.json index 520d33b..be660cb 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "postcss-calc": "^6.0.0", "postcss-custom-properties": "^6.1.0", "postcss-import": "^11.0.0", + "prettier-eslint": "^8.2.0", "require-from-string": "^2.0.1", "vinyl-fs": "^2.4.4" } diff --git a/tasks/format.js b/tasks/format.js new file mode 100644 index 0000000..f2506d0 --- /dev/null +++ b/tasks/format.js @@ -0,0 +1,10 @@ +'use strict' + +const vfs = require('vinyl-fs') +const prettier = require('./lib/gulp-prettier-eslint') + +module.exports = (files) => + vfs + .src(files) + .pipe(prettier()) + .pipe(vfs.dest(file => file.base)) diff --git a/tasks/lib/gulp-prettier-eslint.js b/tasks/lib/gulp-prettier-eslint.js new file mode 100644 index 0000000..ad90572 --- /dev/null +++ b/tasks/lib/gulp-prettier-eslint.js @@ -0,0 +1,45 @@ +'use strict' + +const { PluginError } = require('gulp-util') +const prettierEslint = require('prettier-eslint') +const through = require('through2') + +module.exports = () => { + const report = { changed: 0, unchanged: 0 } + return through.obj(format).on('end', () => { + if (report.changed > 0) { + const changed = 'formatted ' + .concat(report.changed) + .concat(' file') + .concat(report.changed === 1 ? '' : 's') + const unchanged = 'left ' + .concat(report.unchanged) + .concat(' file') + .concat(report.unchanged === 1 ? '' : 's') + .concat(' unchanged') + console.log(`prettier-eslint: ${changed}; ${unchanged}`) + } + }) + + function format(file, encoding, callback) { + if (file.isNull()) { + return callback(null, file) + } + + if (file.isStream()) { + return callback(new PluginError('gulp-prettier-eslint', 'Streaming not supported')) + } + + const input = file.contents.toString('utf8') + const output = prettierEslint({ text: input }) + + if (input === output) { + report.unchanged += 1 + } else { + report.changed += 1 + file.contents = Buffer.from(output, encoding) + } + + return callback(null, file) + } +} diff --git a/yarn.lock b/yarn.lock index 70dd917..f70f943 100644 --- a/yarn.lock +++ b/yarn.lock @@ -78,7 +78,7 @@ ansi-escapes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92" -ansi-regex@^2.0.0: +ansi-regex@^2.0.0, ansi-regex@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -90,7 +90,7 @@ ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" -ansi-styles@^3.1.0: +ansi-styles@^3.0.0, ansi-styles@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" dependencies: @@ -248,6 +248,13 @@ babel-code-frame@^6.22.0: esutils "^2.0.2" js-tokens "^3.0.2" +babel-runtime@^6.18.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + backo2@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" @@ -702,6 +709,12 @@ commander@~2.8.1: dependencies: graceful-readlink ">= 1.0.0" +common-tags@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.4.0.tgz#1187be4f3d4cf0c0427d43f74eef1f73501614c0" + dependencies: + babel-runtime "^6.18.0" + component-bind@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" @@ -777,6 +790,10 @@ cookie@0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" +core-js@^2.4.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.1.tgz#ae6874dc66937789b80754ff5428df66819ca50b" + core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -1041,6 +1058,10 @@ dev-ip@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/dev-ip/-/dev-ip-1.0.1.tgz#a76a3ed1855be7a012bb8ac16cb80f3c00dc28f0" +dlv@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.0.tgz#fee1a7c43f63be75f3f679e85262da5f102764a7" + doctrine@1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" @@ -1263,7 +1284,7 @@ eslint-scope@^3.7.1: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint@^4.0.0, eslint@^4.8.0: +eslint@^4.0.0, eslint@^4.5.0, eslint@^4.8.0: version "4.8.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.8.0.tgz#229ef0e354e0e61d837c7a80fdfba825e199815e" dependencies: @@ -2262,6 +2283,10 @@ indent-string@^2.1.0: dependencies: repeating "^2.0.0" +indent-string@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" + indexes-of@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" @@ -2609,14 +2634,14 @@ js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" -js-yaml@^3.10.0, js-yaml@^3.9.1: +js-yaml@^3.10.0, js-yaml@^3.4.3, js-yaml@^3.9.1: version "3.10.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" dependencies: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@^3.4.3, js-yaml@~3.7.0: +js-yaml@~3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" dependencies: @@ -2854,6 +2879,10 @@ lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" +lodash.merge@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.0.tgz#69884ba144ac33fe699737a6086deffadd0f89c5" + lodash.restparam@^3.0.0: version "3.6.1" resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" @@ -2879,6 +2908,10 @@ lodash.templatesettings@^3.0.0: lodash._reinterpolate "^3.0.0" lodash.escape "^3.0.0" +lodash.unescape@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" + lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" @@ -2902,6 +2935,17 @@ logalot@^2.0.0: figures "^1.3.5" squeak "^1.0.0" +loglevel-colored-level-prefix@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/loglevel-colored-level-prefix/-/loglevel-colored-level-prefix-1.0.0.tgz#6a40218fdc7ae15fc76c3d0f3e676c465388603e" + dependencies: + chalk "^1.1.3" + loglevel "^1.4.1" + +loglevel@^1.4.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.5.0.tgz#3863984a2c326b986fbb965f378758a6dc8a4324" + longest@^1.0.0, longest@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" @@ -3830,10 +3874,37 @@ preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" +prettier-eslint@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/prettier-eslint/-/prettier-eslint-8.2.0.tgz#90adb1f7513be86238a3f32afcea8d1cb4b79055" + dependencies: + common-tags "^1.4.0" + dlv "^1.1.0" + eslint "^4.5.0" + indent-string "^3.2.0" + lodash.merge "^4.6.0" + loglevel-colored-level-prefix "^1.0.0" + prettier "^1.7.0" + pretty-format "^20.0.3" + require-relative "^0.8.7" + typescript "^2.4.2" + typescript-eslint-parser "^7.0.0" + +prettier@^1.7.0: + version "1.7.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.7.3.tgz#8e6974725273914b1c47439959dd3d3ba53664b6" + pretty-bytes@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9" +pretty-format@^20.0.3: + version "20.0.3" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-20.0.3.tgz#020e350a560a1fe1a98dc3beb6ccffb386de8b14" + dependencies: + ansi-regex "^2.1.1" + ansi-styles "^3.0.0" + pretty-hrtime@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" @@ -4023,6 +4094,10 @@ reduce-function-call@^1.0.1: dependencies: balanced-match "^0.4.2" +regenerator-runtime@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" + regex-cache@^0.4.2: version "0.4.4" resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" @@ -4098,6 +4173,10 @@ require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" +require-relative@^0.8.7: + version "0.8.7" + resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de" + require-uncached@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" @@ -4756,6 +4835,17 @@ typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" +typescript-eslint-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/typescript-eslint-parser/-/typescript-eslint-parser-7.0.0.tgz#be57d8768e37707af825e339ea2af18d7393cabb" + dependencies: + lodash.unescape "4.0.1" + semver "5.3.0" + +typescript@^2.4.2: + version "2.5.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.5.3.tgz#df3dcdc38f3beb800d4bc322646b04a3f6ca7f0d" + ua-parser-js@0.7.12: version "0.7.12" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.12.tgz#04c81a99bdd5dc52263ea29d24c6bf8d4818a4bb" From 3d81e78d4c1532412400d0ed4828b8d3707a3c97 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Sun, 1 Oct 2017 22:13:34 -0600 Subject: [PATCH 005/465] format JavaScript using Prettier w/ ESLint rules --- gulpfile.js | 18 ++------ tasks/build-preview.js | 76 +++++++++++++++++++------------ tasks/build.js | 12 ++--- tasks/format.js | 2 +- tasks/lib/gulp-prettier-eslint.js | 6 ++- 5 files changed, 63 insertions(+), 51 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index 51082d0..23e0b0d 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -20,20 +20,14 @@ const destDir = path.join(previewSiteDestDir, '_') const jsFiles = [ 'gulpfile.js', 'tasks/**/*.js', - path.join(srcDir, '{helpers,js}/**/*.js') + path.join(srcDir, '{helpers,js}/**/*.js'), ] -gulp.task('lint', () => - lint(jsFiles) -) +gulp.task('lint', () => lint(jsFiles)) -gulp.task('format', () => - format(jsFiles) -) +gulp.task('format', () => format(jsFiles)) -gulp.task('build', () => - build(srcDir, destDir) -) +gulp.task('build', () => build(srcDir, destDir)) gulp.task('build:preview', ['build'], () => buildPreview(srcDir, destDir, previewSiteSrcDir, previewSiteDestDir) @@ -49,8 +43,6 @@ gulp.task('preview', ['build:preview'], () => }) ) -gulp.task('pack', ['build', 'lint'], () => - pack(destDir, buildDir, bundleName) -) +gulp.task('pack', ['build', 'lint'], () => pack(destDir, buildDir, bundleName)) gulp.task('default', ['build']) diff --git a/tasks/build-preview.js b/tasks/build-preview.js index 47dc1b8..a78375a 100644 --- a/tasks/build-preview.js +++ b/tasks/build-preview.js @@ -17,27 +17,36 @@ module.exports = async (src, dest, siteSrc, siteDest) => { const mockUIModel = loadSampleUIModel(siteSrc) - vfs.src('**/*.html', { base: siteSrc, cwd: siteSrc }) - .pipe(map((file, next) => { - const compiledLayout = layouts['default.hbs'] - const siteRootPath = path.relative(path.dirname(file.path), path.resolve(siteSrc)) - mockUIModel['siteRootPath'] = siteRootPath - mockUIModel['siteRootUrl'] = path.join(siteRootPath, 'index.html') - mockUIModel['uiRootPath'] = path.join(siteRootPath, '_') - mockUIModel['contents'] = file.contents.toString().trimRight() - file.contents = Buffer.from(compiledLayout(mockUIModel)) - next(null, file) - })) + vfs + .src('**/*.html', { base: siteSrc, cwd: siteSrc }) + .pipe( + map((file, next) => { + const compiledLayout = layouts['default.hbs'] + const siteRootPath = path.relative( + path.dirname(file.path), + path.resolve(siteSrc) + ) + mockUIModel['siteRootPath'] = siteRootPath + mockUIModel['siteRootUrl'] = path.join(siteRootPath, 'index.html') + mockUIModel['uiRootPath'] = path.join(siteRootPath, '_') + mockUIModel['contents'] = file.contents.toString().trimRight() + file.contents = Buffer.from(compiledLayout(mockUIModel)) + next(null, file) + }) + ) .pipe(vfs.dest(siteDest)) } function registerPartials (src) { return new Promise((resolve, reject) => { - vfs.src(['partials/*.hbs'], { base: src, cwd: src }) - .pipe(map((file, next) => { - handlebars.registerPartial(file.stem, file.contents.toString()) - next(null, file) - })) + vfs + .src(['partials/*.hbs'], { base: src, cwd: src }) + .pipe( + map((file, next) => { + handlebars.registerPartial(file.stem, file.contents.toString()) + next(null, file) + }) + ) .on('error', reject) .on('end', resolve) }) @@ -45,12 +54,15 @@ function registerPartials (src) { function registerHelpers (src) { return new Promise((resolve, reject) => { - vfs.src(['helpers/*.js'], { base: src, cwd: src }) - .pipe(map((file, next) => { - const helperFunction = requireFromString(file.contents.toString()) - handlebars.registerHelper(file.stem, helperFunction) - next(null, file) - })) + vfs + .src(['helpers/*.js'], { base: src, cwd: src }) + .pipe( + map((file, next) => { + const helperFunction = requireFromString(file.contents.toString()) + handlebars.registerHelper(file.stem, helperFunction) + next(null, file) + }) + ) .on('error', reject) .on('end', resolve) }) @@ -59,16 +71,24 @@ function registerHelpers (src) { function compileLayouts (src) { const layouts = {} return new Promise((resolve, reject) => { - vfs.src('layouts/*.hbs', { base: src, cwd: src }) - .pipe(map((file, next) => { - layouts[file.basename] = handlebars.compile(file.contents.toString(), { preventIndent: true }) - next(null, file) - })) + vfs + .src('layouts/*.hbs', { base: src, cwd: src }) + .pipe( + map((file, next) => { + layouts[file.basename] = handlebars.compile( + file.contents.toString(), + { preventIndent: true } + ) + next(null, file) + }) + ) .on('error', reject) .on('end', () => resolve(layouts)) }) } function loadSampleUIModel (siteSrc) { - return yaml.safeLoad(fs.readFileSync(path.join(siteSrc, 'ui-model.yml'), 'utf8')) + return yaml.safeLoad( + fs.readFileSync(path.join(siteSrc, 'ui-model.yml'), 'utf8') + ) } diff --git a/tasks/build.js b/tasks/build.js index f5047cc..9709543 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -24,10 +24,10 @@ module.exports = (src, dest) => { const opts = { base: src, cwd: src } return merge([ - vfs.src('img/**/*.{jpg,png,svg}', opts) - .pipe(imagemin()), + vfs.src('img/**/*.{jpg,png,svg}', opts).pipe(imagemin()), - vfs.src('js/+([0-9])-*.js', opts) + vfs + .src('js/+([0-9])-*.js', opts) .pipe(uglify()) .pipe(concat('js/site.js')), @@ -35,14 +35,12 @@ module.exports = (src, dest) => { vfs.src('fonts/*.woff*(2)', opts), - vfs.src('css/site.css', opts) - .pipe(postcss(postcssPlugins)), + vfs.src('css/site.css', opts).pipe(postcss(postcssPlugins)), vfs.src('helpers/*.js', opts), vfs.src('layouts/*.hbs', opts), vfs.src('partials/*.hbs', opts), - ]) - .pipe(vfs.dest(dest)) + ]).pipe(vfs.dest(dest)) } diff --git a/tasks/format.js b/tasks/format.js index f2506d0..628408d 100644 --- a/tasks/format.js +++ b/tasks/format.js @@ -7,4 +7,4 @@ module.exports = (files) => vfs .src(files) .pipe(prettier()) - .pipe(vfs.dest(file => file.base)) + .pipe(vfs.dest((file) => file.base)) diff --git a/tasks/lib/gulp-prettier-eslint.js b/tasks/lib/gulp-prettier-eslint.js index ad90572..ae43eb1 100644 --- a/tasks/lib/gulp-prettier-eslint.js +++ b/tasks/lib/gulp-prettier-eslint.js @@ -21,13 +21,15 @@ module.exports = () => { } }) - function format(file, encoding, callback) { + function format (file, encoding, callback) { if (file.isNull()) { return callback(null, file) } if (file.isStream()) { - return callback(new PluginError('gulp-prettier-eslint', 'Streaming not supported')) + return callback( + new PluginError('gulp-prettier-eslint', 'Streaming not supported') + ) } const input = file.contents.toString('utf8') From cef34d3def76ea9d0f738d01f79cc288f881e2e6 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Sun, 1 Oct 2017 22:48:30 -0600 Subject: [PATCH 006/465] add lint:css build task - add stylelint Gulp plugin - add stylelint standard config - add lint:css build task - rename previous lint build task to lint:js --- .stylelintrc | 3 + gulpfile.js | 7 +- package.json | 2 + src/css/site.css | 3 + tasks/lint-css.js | 11 ++ tasks/{lint.js => lint-js.js} | 0 yarn.lock | 197 ++++++++++++++++++++++++++++++++-- 7 files changed, 213 insertions(+), 10 deletions(-) create mode 100644 .stylelintrc create mode 100644 tasks/lint-css.js rename tasks/{lint.js => lint-js.js} (100%) diff --git a/.stylelintrc b/.stylelintrc new file mode 100644 index 0000000..40db42c --- /dev/null +++ b/.stylelintrc @@ -0,0 +1,3 @@ +{ + "extends": "stylelint-config-standard" +} diff --git a/gulpfile.js b/gulpfile.js index 23e0b0d..210699f 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -6,7 +6,8 @@ const gulp = require('gulp') const build = require('./tasks/build') const buildPreview = require('./tasks/build-preview') const format = require('./tasks/format') -const lint = require('./tasks/lint') +const lintCss = require('./tasks/lint-css') +const lintJs = require('./tasks/lint-js') const pack = require('./tasks/pack') const preview = require('./tasks/preview') @@ -23,7 +24,9 @@ const jsFiles = [ path.join(srcDir, '{helpers,js}/**/*.js'), ] -gulp.task('lint', () => lint(jsFiles)) +gulp.task('lint:css', () => lintCss(`${srcDir}/css/**/*.css`)) +gulp.task('lint:js', () => lintJs(jsFiles)) +gulp.task('lint', ['lint:css', 'lint:js']) gulp.task('format', () => format(jsFiles)) diff --git a/package.json b/package.json index be660cb..451411c 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "gulp-eslint": "^4.0.0", "gulp-imagemin": "^3.3.0", "gulp-postcss": "^7.0.0", + "gulp-stylelint": "^5.0.0", "gulp-uglify": "^3.0.0", "gulp-vinyl-zip": "^2.0.0", "handlebars": "^4.0.10", @@ -35,6 +36,7 @@ "postcss-import": "^11.0.0", "prettier-eslint": "^8.2.0", "require-from-string": "^2.0.1", + "stylelint-config-standard": "^17.0.0", "vinyl-fs": "^2.4.4" } } diff --git a/src/css/site.css b/src/css/site.css index e69de29..d4fadc9 100644 --- a/src/css/site.css +++ b/src/css/site.css @@ -0,0 +1,3 @@ +:root { + /* placeholder */ +} diff --git a/tasks/lint-css.js b/tasks/lint-css.js new file mode 100644 index 0000000..f9ebfe9 --- /dev/null +++ b/tasks/lint-css.js @@ -0,0 +1,11 @@ +'use strict' + +const vfs = require('vinyl-fs') +const stylelint = require('gulp-stylelint') + +module.exports = (files) => + vfs.src(files).pipe( + stylelint({ + reporters: [{ formatter: 'string', console: true }], + }) + ) diff --git a/tasks/lint.js b/tasks/lint-js.js similarity index 100% rename from tasks/lint.js rename to tasks/lint-js.js diff --git a/yarn.lock b/yarn.lock index f70f943..49c99f3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -178,6 +178,10 @@ arrify@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + asn1@~0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" @@ -221,7 +225,7 @@ autoprefixer@^6.3.1: postcss "^5.2.16" postcss-value-parser "^3.2.3" -autoprefixer@^7.1.4: +autoprefixer@^7.1.2, autoprefixer@^7.1.4: version "7.1.4" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.1.4.tgz#960847dbaa4016bc8e8e52ec891cbf8f1257a748" dependencies: @@ -548,7 +552,7 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.1.0: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" dependencies: @@ -611,6 +615,13 @@ clone-buffer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" +clone-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-regexp/-/clone-regexp-1.0.0.tgz#eae0a2413f55c0942f818c229fefce845d7f3b1c" + dependencies: + is-regexp "^1.0.0" + is-supported-regexp-flag "^1.0.0" + clone-stats@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" @@ -798,7 +809,7 @@ core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" -cosmiconfig@^2.1.0, cosmiconfig@^2.1.1: +cosmiconfig@^2.1.0, cosmiconfig@^2.1.1, cosmiconfig@^2.1.3: version "2.2.2" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-2.2.2.tgz#6173cebd56fac042c1f4390edf7af6c07c7cb892" dependencies: @@ -928,7 +939,7 @@ debug@^2.2.0, debug@^2.6.8: dependencies: ms "2.0.0" -debug@^3.0.1: +debug@^3.0.0, debug@^3.0.1: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" dependencies: @@ -998,6 +1009,10 @@ decompress@^3.0.0: vinyl-assign "^1.0.1" vinyl-fs "^2.2.0" +deep-extend@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.5.0.tgz#6ef4a09b05f98b0e358d6d93d4ca3caec6672803" + deep-extend@~0.4.0: version "0.4.2" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" @@ -1411,6 +1426,12 @@ execa@^0.7.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execall@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execall/-/execall-1.0.0.tgz#73d0904e395b3cab0658b08d09ec25307f29bb73" + dependencies: + clone-regexp "^1.0.0" + executable@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/executable/-/executable-1.1.0.tgz#877980e9112f3391066da37265de7ad8434ab4d9" @@ -1754,6 +1775,10 @@ get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" +get-stdin@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398" + get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -1907,6 +1932,10 @@ globby@^6.1.0: pify "^2.0.0" pinkie-promise "^2.0.0" +globjoin@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43" + globule@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/globule/-/globule-0.1.0.tgz#d9c8edde1da79d125a151b79533b978676346ae5" @@ -2022,6 +2051,20 @@ gulp-sourcemaps@1.6.0: through2 "^2.0.0" vinyl "^1.0.0" +gulp-stylelint@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/gulp-stylelint/-/gulp-stylelint-5.0.0.tgz#c507f5e314602e7122eff599f2880eb0b62657b0" + dependencies: + chalk "^2.0.1" + deep-extend "^0.5.0" + gulp-util "^3.0.8" + mkdirp "^0.5.1" + promise "^8.0.1" + source-map "^0.5.6" + strip-ansi "^4.0.0" + stylelint "^8.0.0" + through2 "^2.0.3" + gulp-uglify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/gulp-uglify/-/gulp-uglify-3.0.0.tgz#0df0331d72a0d302e3e37e109485dddf33c6d1ca" @@ -2187,6 +2230,10 @@ html-comment-regex@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e" +html-tags@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-2.0.0.tgz#10b30a386085f43cede353cc8fa7cb0deeea668b" + http-errors@~1.5.0: version "1.5.1" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.5.1.tgz#788c0d2c1de2c81b9e6e8c01843b6b97eb920750" @@ -2528,6 +2575,10 @@ is-redirect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + is-relative@^0.1.0: version "0.1.3" resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-0.1.3.tgz#905fee8ae86f45b3ec614bc3c15c869df0876e82" @@ -2552,6 +2603,10 @@ is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" +is-supported-regexp-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-supported-regexp-flag/-/is-supported-regexp-flag-1.0.0.tgz#8b520c85fae7a253382d4b02652e045576e13bb8" + is-svg@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9" @@ -2709,6 +2764,10 @@ kind-of@^4.0.0: dependencies: is-buffer "^1.1.5" +known-css-properties@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.3.0.tgz#a3d135bbfc60ee8c6eacf2f7e7e6f2d4755e49a4" + lazy-cache@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" @@ -2928,6 +2987,12 @@ lodash@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/lodash/-/lodash-1.0.2.tgz#8f57560c83b59fc270bd3d561b690043430e2551" +log-symbols@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.1.0.tgz#f35fa60e278832b538dc4dddcbb478a45d3e3be6" + dependencies: + chalk "^2.0.1" + logalot@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/logalot/-/logalot-2.1.0.tgz#5f8e8c90d304edf12530951a5554abb8c5e3f552" @@ -3021,7 +3086,11 @@ math-expression-evaluator@^1.2.14: version "1.2.17" resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" -meow@^3.1.0, meow@^3.3.0, meow@^3.5.0: +mathml-tag-names@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.0.1.tgz#8d41268168bf86d1102b98109e28e531e7a34578" + +meow@^3.1.0, meow@^3.3.0, meow@^3.5.0, meow@^3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" dependencies: @@ -3042,7 +3111,7 @@ merge-stream@^1.0.0, merge-stream@^1.0.1: dependencies: readable-stream "^2.0.1" -micromatch@2.3.11, micromatch@^2.1.5, micromatch@^2.3.7: +micromatch@2.3.11, micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.7: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" dependencies: @@ -3224,6 +3293,10 @@ normalize-range@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" +normalize-selector@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/normalize-selector/-/normalize-selector-0.2.0.tgz#d0b145eb691189c63a78d201dc4fdb1293ef0c03" + normalize-url@^1.4.0: version "1.9.1" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" @@ -3681,6 +3754,12 @@ postcss-import@^11.0.0: read-cache "^1.0.0" resolve "^1.1.7" +postcss-less@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/postcss-less/-/postcss-less-1.1.0.tgz#bdcc76be64c4324d873fbc5cd9fa2e799e4305fa" + dependencies: + postcss "^5.2.16" + postcss-load-config@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-1.2.0.tgz#539e9afc9ddc8620121ebf9d8c3673e0ce50d28a" @@ -3704,6 +3783,10 @@ postcss-load-plugins@^2.3.0: cosmiconfig "^2.1.1" object-assign "^4.1.0" +postcss-media-query-parser@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#27b39c6f4d94f81b1a73b8f76351c609e5cef244" + postcss-merge-idents@^2.1.5: version "2.1.7" resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270" @@ -3808,7 +3891,26 @@ postcss-reduce-transforms@^1.0.3: postcss "^5.0.8" postcss-value-parser "^3.0.1" -postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2: +postcss-reporter@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-reporter/-/postcss-reporter-5.0.0.tgz#a14177fd1342829d291653f2786efd67110332c3" + dependencies: + chalk "^2.0.1" + lodash "^4.17.4" + log-symbols "^2.0.0" + postcss "^6.0.8" + +postcss-resolve-nested-selector@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz#29ccbc7c37dedfac304e9fff0bf1596b3f6a0e4e" + +postcss-scss@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-1.0.2.tgz#ff45cf3354b879ee89a4eb68680f46ac9bb14f94" + dependencies: + postcss "^6.0.3" + +postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2, postcss-selector-parser@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90" dependencies: @@ -3854,7 +3956,7 @@ postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0 source-map "^0.5.6" supports-color "^3.2.3" -postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.11, postcss@^6.0.3: +postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.11, postcss@^6.0.3, postcss@^6.0.6, postcss@^6.0.8: version "6.0.12" resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.12.tgz#6b0155089d2d212f7bd6a0cecd4c58c007403535" dependencies: @@ -3917,6 +4019,12 @@ progress@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" +promise@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.0.1.tgz#e45d68b00a17647b6da711bf85ed6ed47208f450" + dependencies: + asap "~2.0.3" + pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" @@ -4199,6 +4307,10 @@ resolve-from@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + resolve@^1.1.6, resolve@^1.1.7, resolve@^1.2.0, resolve@^1.3.3: version "1.4.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.4.0.tgz#a75be01c53da25d934a98ebd0e4c4a7312f92a86" @@ -4458,6 +4570,10 @@ spdx-license-ids@^1.0.2: version "1.2.2" resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" +specificity@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/specificity/-/specificity-0.3.2.tgz#99e6511eceef0f8d9b57924937aac2cb13d13c42" + split@0.3: version "0.3.3" resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" @@ -4626,6 +4742,67 @@ strip-outer@^1.0.0: dependencies: escape-string-regexp "^1.0.2" +style-search@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/style-search/-/style-search-0.1.0.tgz#7958c793e47e32e07d2b5cafe5c0bf8e12e77902" + +stylelint-config-recommended@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-1.0.0.tgz#752c17fc68fa64cd5e7589e24f6e46e77e14a735" + +stylelint-config-standard@^17.0.0: + version "17.0.0" + resolved "https://registry.yarnpkg.com/stylelint-config-standard/-/stylelint-config-standard-17.0.0.tgz#42103a090054ee2a3dde9ecaed55e5d4d9d059fc" + dependencies: + stylelint-config-recommended "^1.0.0" + +stylelint@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-8.1.1.tgz#9feeed699598b27427715551ed7786db341c19ad" + dependencies: + autoprefixer "^7.1.2" + balanced-match "^1.0.0" + chalk "^2.0.1" + cosmiconfig "^2.1.3" + debug "^3.0.0" + execall "^1.0.0" + file-entry-cache "^2.0.0" + get-stdin "^5.0.1" + globby "^6.1.0" + globjoin "^0.1.4" + html-tags "^2.0.0" + ignore "^3.3.3" + imurmurhash "^0.1.4" + known-css-properties "^0.3.0" + lodash "^4.17.4" + log-symbols "^2.0.0" + mathml-tag-names "^2.0.1" + meow "^3.7.0" + micromatch "^2.3.11" + normalize-selector "^0.2.0" + pify "^3.0.0" + postcss "^6.0.6" + postcss-less "^1.1.0" + postcss-media-query-parser "^0.2.3" + postcss-reporter "^5.0.0" + postcss-resolve-nested-selector "^0.1.1" + postcss-scss "^1.0.2" + postcss-selector-parser "^2.2.3" + postcss-value-parser "^3.3.0" + resolve-from "^3.0.0" + specificity "^0.3.1" + string-width "^2.1.0" + style-search "^0.1.0" + sugarss "^1.0.0" + svg-tags "^1.0.0" + table "^4.0.1" + +sugarss@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/sugarss/-/sugarss-1.0.0.tgz#65e51b3958432fb70d5451a68bb33e32d0cf1ef7" + dependencies: + postcss "^6.0.0" + sum-up@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/sum-up/-/sum-up-1.0.3.tgz#1c661f667057f63bcb7875aa1438bc162525156e" @@ -4648,6 +4825,10 @@ supports-color@^4.0.0, supports-color@^4.4.0: dependencies: has-flag "^2.0.0" +svg-tags@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" + svgo@^0.7.0: version "0.7.2" resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" From 055518037e0e1c9d50c598359316af6f488c0059 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Sat, 7 Oct 2017 17:13:52 -0600 Subject: [PATCH 007/465] add missing stylelint dependency; update resolved dependencies --- package.json | 1 + yarn.lock | 158 ++++++++++++++++++++++++++++++--------------------- 2 files changed, 95 insertions(+), 64 deletions(-) diff --git a/package.json b/package.json index 451411c..c0c277f 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,7 @@ "postcss-import": "^11.0.0", "prettier-eslint": "^8.2.0", "require-from-string": "^2.0.1", + "stylelint": "^8.2.0", "stylelint-config-standard": "^17.0.0", "vinyl-fs": "^2.4.4" } diff --git a/yarn.lock b/yarn.lock index 49c99f3..d8f12e1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -226,14 +226,14 @@ autoprefixer@^6.3.1: postcss-value-parser "^3.2.3" autoprefixer@^7.1.2, autoprefixer@^7.1.4: - version "7.1.4" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.1.4.tgz#960847dbaa4016bc8e8e52ec891cbf8f1257a748" + version "7.1.5" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.1.5.tgz#d65d14b83c7cd1dd7bc801daa00557addf5a06b2" dependencies: - browserslist "^2.4.0" - caniuse-lite "^1.0.30000726" + browserslist "^2.5.0" + caniuse-lite "^1.0.30000744" normalize-range "^0.1.2" num2fraction "^1.2.2" - postcss "^6.0.11" + postcss "^6.0.13" postcss-value-parser "^3.2.3" aws-sign2@~0.6.0: @@ -440,12 +440,12 @@ browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: caniuse-db "^1.0.30000639" electron-to-chromium "^1.2.7" -browserslist@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.4.0.tgz#693ee93d01e66468a6348da5498e011f578f87f8" +browserslist@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.5.0.tgz#0ea00d22813a4dfae5786485225a9c584b3ef37c" dependencies: - caniuse-lite "^1.0.30000718" - electron-to-chromium "^1.3.18" + caniuse-lite "^1.0.30000744" + electron-to-chromium "^1.3.24" bs-recipes@1.3.4: version "1.3.4" @@ -511,12 +511,12 @@ caniuse-api@^1.5.2: lodash.uniq "^4.5.0" caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: - version "1.0.30000740" - resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000740.tgz#03fcaaa176e3ed075895f72d46c1a12149bbeac9" + version "1.0.30000744" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000744.tgz#00758ff7dd5f7138d34a15608dccf71a59656ffe" -caniuse-lite@^1.0.30000718, caniuse-lite@^1.0.30000726: - version "1.0.30000740" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000740.tgz#f2c4c04d6564eb812e61006841700ad557f6f973" +caniuse-lite@^1.0.30000744: + version "1.0.30000744" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000744.tgz#860fa5c83ba34fe619397d607f30bb474821671b" capture-stack-trace@^1.0.0: version "1.0.0" @@ -809,7 +809,7 @@ core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" -cosmiconfig@^2.1.0, cosmiconfig@^2.1.1, cosmiconfig@^2.1.3: +cosmiconfig@^2.1.0, cosmiconfig@^2.1.1: version "2.2.2" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-2.2.2.tgz#6173cebd56fac042c1f4390edf7af6c07c7cb892" dependencies: @@ -821,6 +821,15 @@ cosmiconfig@^2.1.0, cosmiconfig@^2.1.1, cosmiconfig@^2.1.3: parse-json "^2.2.0" require-from-string "^1.1.0" +cosmiconfig@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-3.1.0.tgz#640a94bf9847f321800403cd273af60665c73397" + dependencies: + is-directory "^0.3.1" + js-yaml "^3.9.0" + parse-json "^3.0.0" + require-from-string "^2.0.1" + create-error-class@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" @@ -1165,7 +1174,7 @@ ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" -electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.18: +electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.24: version "1.3.24" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.24.tgz#9b7b88bb05ceb9fa016a177833cc2dde388f21b6" @@ -1228,7 +1237,7 @@ engine.io@1.8.0: engine.io-parser "1.3.1" ws "1.1.1" -error-ex@^1.2.0: +error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" dependencies: @@ -2013,20 +2022,20 @@ gulp-eslint@^4.0.0: gulp-util "^3.0.8" gulp-imagemin@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/gulp-imagemin/-/gulp-imagemin-3.3.0.tgz#c55764c260593e8595609e66a40126911ef22264" + version "3.4.0" + resolved "https://registry.yarnpkg.com/gulp-imagemin/-/gulp-imagemin-3.4.0.tgz#23a8d4c5133f50a2a708aca87ca4b2d6eb7c4403" dependencies: - chalk "^1.0.0" - gulp-util "^3.0.0" - imagemin "^5.0.0" - plur "^2.0.0" + chalk "^2.1.0" + gulp-util "^3.0.8" + imagemin "^5.3.1" + plur "^2.1.2" pretty-bytes "^4.0.2" - through2-concurrent "^1.1.0" + through2-concurrent "^1.1.1" optionalDependencies: - imagemin-gifsicle "^5.0.0" - imagemin-jpegtran "^5.0.0" - imagemin-optipng "^5.1.0" - imagemin-svgo "^5.1.0" + imagemin-gifsicle "^5.2.0" + imagemin-jpegtran "^5.0.2" + imagemin-optipng "^5.2.1" + imagemin-svgo "^5.2.2" gulp-postcss@^7.0.0: version "7.0.0" @@ -2274,7 +2283,7 @@ ignore@^3.3.3: version "3.3.5" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.5.tgz#c4e715455f6073a8d7e5dae72d2fc9d71663dba6" -imagemin-gifsicle@^5.0.0: +imagemin-gifsicle@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/imagemin-gifsicle/-/imagemin-gifsicle-5.2.0.tgz#3781524c457612ef04916af34241a2b42bfcb40a" dependencies: @@ -2282,7 +2291,7 @@ imagemin-gifsicle@^5.0.0: gifsicle "^3.0.0" is-gif "^1.0.0" -imagemin-jpegtran@^5.0.0: +imagemin-jpegtran@^5.0.2: version "5.0.2" resolved "https://registry.yarnpkg.com/imagemin-jpegtran/-/imagemin-jpegtran-5.0.2.tgz#e6882263b8f7916fddb800640cf75d2e970d2ad6" dependencies: @@ -2290,7 +2299,7 @@ imagemin-jpegtran@^5.0.0: is-jpg "^1.0.0" jpegtran-bin "^3.0.0" -imagemin-optipng@^5.1.0: +imagemin-optipng@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/imagemin-optipng/-/imagemin-optipng-5.2.1.tgz#d22da412c09f5ff00a4339960b98a88b1dbe8695" dependencies: @@ -2298,14 +2307,14 @@ imagemin-optipng@^5.1.0: is-png "^1.0.0" optipng-bin "^3.0.0" -imagemin-svgo@^5.1.0: +imagemin-svgo@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/imagemin-svgo/-/imagemin-svgo-5.2.2.tgz#501699f5789730a57922b8736ea15c53f7b55838" dependencies: is-svg "^2.0.0" svgo "^0.7.0" -imagemin@^5.0.0: +imagemin@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/imagemin/-/imagemin-5.3.1.tgz#f19c2eee1e71ba6c6558c515f9fc96680189a6d4" dependencies: @@ -2316,10 +2325,14 @@ imagemin@^5.0.0: pify "^2.3.0" replace-ext "^1.0.0" -immutable@3.8.1, immutable@^3.7.6: +immutable@3.8.1: version "3.8.1" resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.1.tgz#200807f11ab0f72710ea485542de088075f68cd2" +immutable@^3.7.6: + version "3.8.2" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -2689,7 +2702,7 @@ js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" -js-yaml@^3.10.0, js-yaml@^3.4.3, js-yaml@^3.9.1: +js-yaml@^3.10.0, js-yaml@^3.4.3, js-yaml@^3.9.0, js-yaml@^3.9.1: version "3.10.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" dependencies: @@ -2764,9 +2777,9 @@ kind-of@^4.0.0: dependencies: is-buffer "^1.1.5" -known-css-properties@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.3.0.tgz#a3d135bbfc60ee8c6eacf2f7e7e6f2d4755e49a4" +known-css-properties@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.4.1.tgz#baaaf704e5f8a5f10e0e221212aae3ea738ea372" lazy-cache@^1.0.3: version "1.0.4" @@ -3533,6 +3546,12 @@ parse-json@^2.1.0, parse-json@^2.2.0: dependencies: error-ex "^1.2.0" +parse-json@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-3.0.0.tgz#fa6f47b18e23826ead32f263e744d0e1e847fb13" + dependencies: + error-ex "^1.3.1" + parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" @@ -3651,7 +3670,7 @@ pkg-dir@^1.0.0: dependencies: find-up "^1.0.0" -plur@^2.0.0: +plur@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/plur/-/plur-2.1.2.tgz#7482452c1a0f508e3e344eaec312c91c29dc655a" dependencies: @@ -3701,11 +3720,11 @@ postcss-convert-values@^2.3.4: postcss-value-parser "^3.1.2" postcss-custom-properties@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-6.1.0.tgz#9caf1151ac41b1e9e64d3a2ff9ece996ca18977d" + version "6.2.0" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-6.2.0.tgz#5d929a7f06e9b84e0f11334194c0ba9a30acfbe9" dependencies: balanced-match "^1.0.0" - postcss "^6.0.3" + postcss "^6.0.13" postcss-discard-comments@^2.0.4: version "2.0.4" @@ -3755,8 +3774,8 @@ postcss-import@^11.0.0: resolve "^1.1.7" postcss-less@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/postcss-less/-/postcss-less-1.1.0.tgz#bdcc76be64c4324d873fbc5cd9fa2e799e4305fa" + version "1.1.1" + resolved "https://registry.yarnpkg.com/postcss-less/-/postcss-less-1.1.1.tgz#4bd240db517ce3407583d927858184f50045f4ab" dependencies: postcss "^5.2.16" @@ -3904,6 +3923,12 @@ postcss-resolve-nested-selector@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz#29ccbc7c37dedfac304e9fff0bf1596b3f6a0e4e" +postcss-safe-parser@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-3.0.1.tgz#b753eff6c7c0aea5e8375fbe4cde8bf9063ff142" + dependencies: + postcss "^6.0.6" + postcss-scss@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-1.0.2.tgz#ff45cf3354b879ee89a4eb68680f46ac9bb14f94" @@ -3948,20 +3973,20 @@ postcss-zindex@^2.0.1: uniqs "^2.0.0" postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.8, postcss@^5.2.16: - version "5.2.17" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.17.tgz#cf4f597b864d65c8a492b2eabe9d706c879c388b" + version "5.2.18" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" dependencies: chalk "^1.1.3" js-base64 "^2.1.9" source-map "^0.5.6" supports-color "^3.2.3" -postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.11, postcss@^6.0.3, postcss@^6.0.6, postcss@^6.0.8: - version "6.0.12" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.12.tgz#6b0155089d2d212f7bd6a0cecd4c58c007403535" +postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.13, postcss@^6.0.3, postcss@^6.0.6, postcss@^6.0.8: + version "6.0.13" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.13.tgz#b9ecab4ee00c89db3ec931145bd9590bbf3f125f" dependencies: chalk "^2.1.0" - source-map "^0.5.7" + source-map "^0.6.1" supports-color "^4.4.0" prelude-ls@~1.1.2: @@ -3993,8 +4018,8 @@ prettier-eslint@^8.2.0: typescript-eslint-parser "^7.0.0" prettier@^1.7.0: - version "1.7.3" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.7.3.tgz#8e6974725273914b1c47439959dd3d3ba53664b6" + version "1.7.4" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.7.4.tgz#5e8624ae9363c80f95ec644584ecdf55d74f93fa" pretty-bytes@^4.0.2: version "4.0.2" @@ -4307,9 +4332,9 @@ resolve-from@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" resolve@^1.1.6, resolve@^1.1.7, resolve@^1.2.0, resolve@^1.3.3: version "1.4.0" @@ -4548,10 +4573,14 @@ source-map@^0.4.4: dependencies: amdefine ">=0.0.4" -source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1: +source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" +source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + sparkles@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3" @@ -4756,14 +4785,14 @@ stylelint-config-standard@^17.0.0: dependencies: stylelint-config-recommended "^1.0.0" -stylelint@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-8.1.1.tgz#9feeed699598b27427715551ed7786db341c19ad" +stylelint@^8.0.0, stylelint@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-8.2.0.tgz#6a15044553fb5c3143b16d62013a370314495b0d" dependencies: autoprefixer "^7.1.2" balanced-match "^1.0.0" chalk "^2.0.1" - cosmiconfig "^2.1.3" + cosmiconfig "^3.1.0" debug "^3.0.0" execall "^1.0.0" file-entry-cache "^2.0.0" @@ -4773,7 +4802,7 @@ stylelint@^8.0.0: html-tags "^2.0.0" ignore "^3.3.3" imurmurhash "^0.1.4" - known-css-properties "^0.3.0" + known-css-properties "^0.4.0" lodash "^4.17.4" log-symbols "^2.0.0" mathml-tag-names "^2.0.1" @@ -4786,10 +4815,11 @@ stylelint@^8.0.0: postcss-media-query-parser "^0.2.3" postcss-reporter "^5.0.0" postcss-resolve-nested-selector "^0.1.1" + postcss-safe-parser "^3.0.1" postcss-scss "^1.0.2" postcss-selector-parser "^2.2.3" postcss-value-parser "^3.3.0" - resolve-from "^3.0.0" + resolve-from "^4.0.0" specificity "^0.3.1" string-width "^2.1.0" style-search "^0.1.0" @@ -4911,7 +4941,7 @@ tfunk@^3.0.1: chalk "^1.1.1" object-path "^0.9.0" -through2-concurrent@^1.1.0: +through2-concurrent@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/through2-concurrent/-/through2-concurrent-1.1.1.tgz#11cb4ea4c9e31bca6e4c1e6dba48d1c728c3524b" dependencies: From a0bc9f561163193bca3318bcd2ca52dbb291abb7 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Sat, 7 Oct 2017 19:48:55 -0600 Subject: [PATCH 008/465] drop redundant 'utf8' argument to Buffer#toString - utf8 is the default argument value, so there's no need to pass it --- tasks/lib/gulp-prettier-eslint.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/lib/gulp-prettier-eslint.js b/tasks/lib/gulp-prettier-eslint.js index ae43eb1..667654b 100644 --- a/tasks/lib/gulp-prettier-eslint.js +++ b/tasks/lib/gulp-prettier-eslint.js @@ -32,7 +32,7 @@ module.exports = () => { ) } - const input = file.contents.toString('utf8') + const input = file.contents.toString() const output = prettierEslint({ text: input }) if (input === output) { From c43976a15ef15958fef17a12a5e1482373549ed0 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Sat, 7 Oct 2017 19:45:02 -0600 Subject: [PATCH 009/465] resolves #3 set required node version to >= 8.0.0 --- .nvmrc | 1 + package.json | 3 +++ 2 files changed, 4 insertions(+) create mode 100644 .nvmrc diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..45a4fb7 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +8 diff --git a/package.json b/package.json index c0c277f..0e042fc 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,9 @@ "type": "git", "url": "https://gitlab.com/antora/antora-ui-default.git" }, + "engines": { + "node": ">= 8.0.0" + }, "devDependencies": { "autoprefixer": "^7.1.4", "browser-sync": "^2.18.13", From 57dacb48439e822400b2430f1aa4fba51c5f01e1 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Sat, 7 Oct 2017 20:07:29 -0600 Subject: [PATCH 010/465] follow-up to #2 add .editorconfig to enforce (some) style rules --- .editorconfig | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..c6c8b36 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true From ac3d628cf2b5ac8933dcd95308e45890adca77e1 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Sat, 7 Oct 2017 19:56:29 -0600 Subject: [PATCH 011/465] resolves #4 add job to runs linters in CI --- .gitlab-ci.yml | 20 ++++++++++++++++++++ README.adoc | 4 ++++ 2 files changed, 24 insertions(+) create mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..a78f2f8 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,20 @@ +image: node:8 +stages: +- setup +- verify +yarn: + stage: setup + script: + - npm install -g yarn + - yarn --cache-folder=.yarn-cache + cache: + paths: + - node_modules/ + - .yarn-cache/ +lint: + stage: verify + cache: + policy: pull + paths: + - node_modules/ + script: node_modules/.bin/gulp lint diff --git a/README.adoc b/README.adoc index 8b7887e..3672aac 100644 --- a/README.adoc +++ b/README.adoc @@ -1,6 +1,10 @@ = Antora Default UI // Project URIs: :uri-project: https://gitlab.com/antora/antora-ui-default +:uri-ci-pipelines: {uri-project}/pipelines +:img-ci-status: {uri-project}/badges/master/pipeline.svg + +image:{img-ci-status}[CI Status (GitLab CI), link={uri-ci-pipelines}] This project is an archetype that demonstrates how to produce a UI bundle for use in an Antora-based documentation pipeline. From 618650d5b452fa1d30dfcb3e8b2862018b3ad54c Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Wed, 11 Oct 2017 20:29:43 -0600 Subject: [PATCH 012/465] process vendor scripts with browserify in build task --- package.json | 3 + tasks/build.js | 11 +- yarn.lock | 714 ++++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 713 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 0e042fc..1642c2c 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "devDependencies": { "autoprefixer": "^7.1.4", "browser-sync": "^2.18.13", + "browserify": "^14.4.0", "chokidar": "^1.7.0", "cssnano": "^3.10.0", "eslint": "^4.8.0", @@ -27,6 +28,7 @@ "gulp-imagemin": "^3.3.0", "gulp-postcss": "^7.0.0", "gulp-stylelint": "^5.0.0", + "gulp-tap": "^1.0.1", "gulp-uglify": "^3.0.0", "gulp-vinyl-zip": "^2.0.0", "handlebars": "^4.0.10", @@ -41,6 +43,7 @@ "require-from-string": "^2.0.1", "stylelint": "^8.2.0", "stylelint-config-standard": "^17.0.0", + "vinyl-buffer": "^1.0.0", "vinyl-fs": "^2.4.4" } } diff --git a/tasks/build.js b/tasks/build.js index 9709543..7d0a0b1 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -1,6 +1,8 @@ 'use strict' const autoprefixer = require('autoprefixer') +const browserify = require('browserify') +const buffer = require('vinyl-buffer') const concat = require('gulp-concat') const cssnano = require('cssnano') const imagemin = require('gulp-imagemin') @@ -9,6 +11,7 @@ const postcss = require('gulp-postcss') const postcssCalc = require('postcss-calc') const postcssImport = require('postcss-import') const postcssVar = require('postcss-custom-properties') +const tap = require('gulp-tap') const uglify = require('gulp-uglify') const vfs = require('vinyl-fs') @@ -31,7 +34,13 @@ module.exports = (src, dest) => { .pipe(uglify()) .pipe(concat('js/site.js')), - vfs.src('js/vendor/*.js', opts), + vfs + .src('js/vendor/*.js', Object.assign({ read: false }, opts)) + .pipe(tap((file) => { + file.contents = browserify(file.relative, { basedir: src, detectGlobals: false }).bundle() + })) + .pipe(buffer()) + .pipe(uglify()), vfs.src('fonts/*.woff*(2)', opts), diff --git a/yarn.lock b/yarn.lock index d8f12e1..7903a5d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,13 @@ # yarn lockfile v1 +JSONStream@^1.0.3: + version "1.3.1" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.1.tgz#707f761e01dae9e16f1bcf93703b78c70966579a" + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" @@ -30,6 +37,10 @@ acorn@^3.0.4: version "3.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" +acorn@^4.0.3: + version "4.0.13" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" + acorn@^5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.2.tgz#911cb53e036807cf0fa778dc5d370fbd864246d7" @@ -148,10 +159,22 @@ array-each@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" +array-filter@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" + array-find-index@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" +array-map@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" + +array-reduce@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" + array-slice@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.0.0.tgz#e73034f00dcc1f40876008fd20feae77bd4b7c2f" @@ -182,6 +205,14 @@ asap@~2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" +asn1.js@^4.0.0: + version "4.9.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40" + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + asn1@~0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" @@ -194,6 +225,18 @@ assert-plus@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" +assert@^1.4.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" + dependencies: + util "0.10.3" + +astw@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/astw/-/astw-2.2.0.tgz#7bd41784d32493987aeb239b6b4e1c57a873b917" + dependencies: + acorn "^4.0.3" + async-each-series@0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/async-each-series/-/async-each-series-0.1.1.tgz#7617c1917401fd8ca4a28aadce3dbae98afeb432" @@ -275,6 +318,10 @@ base64-arraybuffer@0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" +base64-js@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886" + base64id@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/base64id/-/base64id-0.1.0.tgz#02ce0fdeee0cef4f40080e1e73e834f0b1bfce3f" @@ -347,6 +394,12 @@ binary-extensions@^1.0.0: version "1.10.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.10.0.tgz#9aeb9a6c5e88638aad171e167f5900abe24835d0" +bl@^0.9.1: + version "0.9.5" + resolved "https://registry.yarnpkg.com/bl/-/bl-0.9.5.tgz#c06b797af085ea00bc527afc8efcf11de2232054" + dependencies: + readable-stream "~1.0.26" + bl@^1.0.0: version "1.2.1" resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.1.tgz#cac328f7bee45730d404b692203fcb590e172d5e" @@ -363,6 +416,10 @@ block-stream@*: dependencies: inherits "~2.0.0" +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + boom@2.x.x: version "2.10.1" resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" @@ -384,6 +441,26 @@ braces@^1.8.2: preserve "^0.2.0" repeat-element "^1.1.2" +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + +browser-pack@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-6.0.2.tgz#f86cd6cef4f5300c8e63e07a4d512f65fbff4531" + dependencies: + JSONStream "^1.0.3" + combine-source-map "~0.7.1" + defined "^1.0.0" + through2 "^2.0.0" + umd "^3.0.0" + +browser-resolve@^1.11.0, browser-resolve@^1.7.0: + version "1.11.2" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce" + dependencies: + resolve "1.1.7" + browser-sync-client@2.5.1: version "2.5.1" resolved "https://registry.yarnpkg.com/browser-sync-client/-/browser-sync-client-2.5.1.tgz#ec1ad69a49c2e2d4b645b18b1c06c29b3d9af8eb" @@ -433,6 +510,110 @@ browser-sync@^2.18.13: ua-parser-js "0.7.12" yargs "6.4.0" +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.0.8" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.0.8.tgz#c8fa3b1b7585bb7ba77c5560b60996ddec6d5309" + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a" + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd" + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + +browserify-rsa@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + dependencies: + bn.js "^4.1.1" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.2" + elliptic "^6.0.0" + inherits "^2.0.1" + parse-asn1 "^5.0.0" + +browserify-zlib@~0.1.2: + version "0.1.4" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" + dependencies: + pako "~0.2.0" + +browserify@^14.4.0: + version "14.4.0" + resolved "https://registry.yarnpkg.com/browserify/-/browserify-14.4.0.tgz#089a3463af58d0e48d8cd4070b3f74654d5abca9" + dependencies: + JSONStream "^1.0.3" + assert "^1.4.0" + browser-pack "^6.0.1" + browser-resolve "^1.11.0" + browserify-zlib "~0.1.2" + buffer "^5.0.2" + cached-path-relative "^1.0.0" + concat-stream "~1.5.1" + console-browserify "^1.1.0" + constants-browserify "~1.0.0" + crypto-browserify "^3.0.0" + defined "^1.0.0" + deps-sort "^2.0.0" + domain-browser "~1.1.0" + duplexer2 "~0.1.2" + events "~1.1.0" + glob "^7.1.0" + has "^1.0.0" + htmlescape "^1.1.0" + https-browserify "^1.0.0" + inherits "~2.0.1" + insert-module-globals "^7.0.0" + labeled-stream-splicer "^2.0.0" + module-deps "^4.0.8" + os-browserify "~0.1.1" + parents "^1.0.1" + path-browserify "~0.0.0" + process "~0.11.0" + punycode "^1.3.2" + querystring-es3 "~0.2.0" + read-only-stream "^2.0.0" + readable-stream "^2.0.2" + resolve "^1.1.4" + shasum "^1.0.0" + shell-quote "^1.6.1" + stream-browserify "^2.0.0" + stream-http "^2.0.0" + string_decoder "~1.0.0" + subarg "^1.0.0" + syntax-error "^1.1.1" + through2 "^2.0.0" + timers-browserify "^1.0.1" + tty-browserify "~0.0.0" + url "~0.11.0" + util "~0.10.1" + vm-browserify "~0.0.1" + xtend "^4.0.0" + browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: version "1.7.7" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" @@ -464,10 +645,29 @@ buffer-to-vinyl@^1.0.0: uuid "^2.0.1" vinyl "^1.0.0" +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + +buffer@^5.0.2: + version "5.0.8" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.0.8.tgz#84daa52e7cf2fa8ce4195bc5cf0f7809e0930b24" + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + builtin-modules@^1.0.0, builtin-modules@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + +cached-path-relative@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.1.tgz#d09c4b52800aa4c078e2dd81a869aac90d2e54e7" + caller-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" @@ -575,6 +775,13 @@ chokidar@1.7.0, chokidar@^1.7.0: optionalDependencies: fsevents "^1.0.0" +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + circular-json@^0.3.1: version "0.3.3" resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" @@ -704,6 +911,15 @@ colors@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" +combine-source-map@~0.7.1: + version "0.7.2" + resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.7.2.tgz#0870312856b307a87cc4ac486f3a9a62aeccc09e" + dependencies: + convert-source-map "~1.1.0" + inline-source-map "~0.6.0" + lodash.memoize "~3.0.3" + source-map "~0.5.3" + combined-stream@^1.0.5, combined-stream@~1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" @@ -754,6 +970,14 @@ concat-stream@^1.4.6, concat-stream@^1.4.7, concat-stream@^1.6.0: readable-stream "^2.2.2" typedarray "^0.0.6" +concat-stream@~1.5.0, concat-stream@~1.5.1: + version "1.5.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.2.tgz#708978624d856af41a5a741defdd261da752c266" + dependencies: + inherits "~2.0.1" + readable-stream "~2.0.0" + typedarray "~0.0.5" + concat-with-sourcemaps@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.0.4.tgz#f55b3be2aeb47601b10a2d5259ccfb70fd2f1dd6" @@ -781,6 +1005,12 @@ connect@3.5.0: parseurl "~1.3.1" utils-merge "1.0.0" +console-browserify@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" + dependencies: + date-now "^0.1.4" + console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" @@ -789,6 +1019,10 @@ console-stream@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/console-stream/-/console-stream-0.1.1.tgz#a095fe07b20465955f2fafd28b5d72bccd949d44" +constants-browserify@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + contains-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" @@ -797,6 +1031,10 @@ convert-source-map@^1.1.1: version "1.5.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" +convert-source-map@~1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860" + cookie@0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" @@ -830,12 +1068,39 @@ cosmiconfig@^3.1.0: parse-json "^3.0.0" require-from-string "^2.0.1" +create-ecdh@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + create-error-class@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" dependencies: capture-stack-trace "^1.0.0" +create-hash@^1.1.0, create-hash@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + ripemd160 "^2.0.0" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: + version "1.1.6" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06" + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + cross-spawn@^5.0.1, cross-spawn@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" @@ -850,6 +1115,21 @@ cryptiles@2.x.x: dependencies: boom "2.x.x" +crypto-browserify@^3.0.0: + version "3.11.1" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.11.1.tgz#948945efc6757a400d6e5e5af47194d10064279f" + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + css-color-names@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" @@ -914,6 +1194,10 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" +date-now@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" + dateformat@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062" @@ -1068,6 +1352,22 @@ deprecated@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/deprecated/-/deprecated-0.0.1.tgz#f9c9af5464afa1e7a971458a8bdef2aa94d5bb19" +deps-sort@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-2.0.0.tgz#091724902e84658260eb910748cccd1af6e21fb5" + dependencies: + JSONStream "^1.0.3" + shasum "^1.0.0" + subarg "^1.0.0" + through2 "^2.0.0" + +des.js@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + destroy@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" @@ -1078,10 +1378,25 @@ detect-file@^0.1.0: dependencies: fs-exists-sync "^0.1.0" +detective@^4.0.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/detective/-/detective-4.5.0.tgz#6e5a8c6b26e6c7a254b1c6b6d7490d98ec91edd1" + dependencies: + acorn "^4.0.3" + defined "^1.0.0" + dev-ip@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/dev-ip/-/dev-ip-1.0.1.tgz#a76a3ed1855be7a012bb8ac16cb80f3c00dc28f0" +diffie-hellman@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e" + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + dlv@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.0.tgz#fee1a7c43f63be75f3f679e85262da5f102764a7" @@ -1100,6 +1415,10 @@ doctrine@^2.0.0: esutils "^2.0.2" isarray "^1.0.0" +domain-browser@~1.1.0: + version "1.1.7" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" + download@^4.0.0, download@^4.1.2: version "4.4.3" resolved "https://registry.yarnpkg.com/download/-/download-4.4.3.tgz#aa55fdad392d95d4b68e8c2be03e0c2aa21ba9ac" @@ -1126,7 +1445,7 @@ duplexer2@0.0.2: dependencies: readable-stream "~1.1.9" -duplexer2@^0.1.4, duplexer2@~0.1.0: +duplexer2@^0.1.2, duplexer2@^0.1.4, duplexer2@~0.1.0, duplexer2@~0.1.2: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" dependencies: @@ -1178,6 +1497,18 @@ electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.24: version "1.3.24" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.24.tgz#9b7b88bb05ceb9fa016a177833cc2dde388f21b6" +elliptic@^6.0.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + emitter-steward@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/emitter-steward/-/emitter-steward-1.0.0.tgz#f3411ade9758a7565df848b2da0cbbd1b46cbd64" @@ -1406,6 +1737,17 @@ eventemitter3@1.x.x: version "1.2.0" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" +events@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + exec-buffer@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/exec-buffer/-/exec-buffer-3.2.0.tgz#b1686dbd904c7cf982e652c1f5a79b1e5573082b" @@ -1881,7 +2223,7 @@ glob@^5.0.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.3, glob@^7.0.5, glob@^7.1.2: +glob@^7.0.3, glob@^7.0.5, glob@^7.1.0, glob@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: @@ -2074,6 +2416,12 @@ gulp-stylelint@^5.0.0: stylelint "^8.0.0" through2 "^2.0.3" +gulp-tap@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gulp-tap/-/gulp-tap-1.0.1.tgz#e671124e1259b4cea219ed1ca97b7f585c334690" + dependencies: + through2 "^2.0.3" + gulp-uglify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/gulp-uglify/-/gulp-uglify-3.0.0.tgz#0df0331d72a0d302e3e37e109485dddf33c6d1ca" @@ -2206,12 +2554,32 @@ has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" -has@^1.0.1: +has@^1.0.0, has@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" dependencies: function-bind "^1.0.2" +hash-base@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1" + dependencies: + inherits "^2.0.1" + +hash-base@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.0" + hawk@3.1.3, hawk@~3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" @@ -2221,6 +2589,14 @@ hawk@3.1.3, hawk@~3.1.3: hoek "2.x.x" sntp "1.x.x" +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + hoek@2.x.x: version "2.16.3" resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" @@ -2243,6 +2619,10 @@ html-tags@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-2.0.0.tgz#10b30a386085f43cede353cc8fa7cb0deeea668b" +htmlescape@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351" + http-errors@~1.5.0: version "1.5.1" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.5.1.tgz#788c0d2c1de2c81b9e6e8c01843b6b97eb920750" @@ -2275,10 +2655,18 @@ http-signature@~1.1.0: jsprim "^1.2.2" sshpk "^1.7.0" +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + iconv-lite@^0.4.17: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" +ieee754@^1.1.4: + version "1.1.8" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" + ignore@^3.3.3: version "3.3.5" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.5.tgz#c4e715455f6073a8d7e5dae72d2fc9d71663dba6" @@ -2370,10 +2758,20 @@ inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, i version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + ini@^1.3.4, ini@~1.3.0: version "1.3.4" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" +inline-source-map@~0.6.0: + version "0.6.2" + resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5" + dependencies: + source-map "~0.5.3" + inquirer@^3.0.6: version "3.3.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" @@ -2393,6 +2791,19 @@ inquirer@^3.0.6: strip-ansi "^4.0.0" through "^2.3.6" +insert-module-globals@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.0.1.tgz#c03bf4e01cb086d5b5e5ace8ad0afe7889d638c3" + dependencies: + JSONStream "^1.0.3" + combine-source-map "~0.7.1" + concat-stream "~1.5.1" + is-buffer "^1.1.0" + lexical-scope "^1.2.0" + process "~0.11.0" + through2 "^2.0.0" + xtend "^4.0.0" + interpret@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.4.tgz#820cdd588b868ffb191a809506d6c9c8f212b1b0" @@ -2436,7 +2847,7 @@ is-binary-path@^1.0.0: dependencies: binary-extensions "^1.0.0" -is-buffer@^1.1.5: +is-buffer@^1.1.0, is-buffer@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" @@ -2660,7 +3071,7 @@ is-zip@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-zip/-/is-zip-1.0.0.tgz#47b0a8ff4d38a76431ccfd99a8e15a4c86ba2325" -isarray@0.0.1: +isarray@0.0.1, isarray@~0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" @@ -2738,6 +3149,12 @@ json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: dependencies: jsonify "~0.0.0" +json-stable-stringify@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz#611c23e814db375527df851193db59dd2af27f45" + dependencies: + jsonify "~0.0.0" + json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -2756,6 +3173,10 @@ jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" +jsonparse@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -2781,6 +3202,14 @@ known-css-properties@^0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.4.1.tgz#baaaf704e5f8a5f10e0e221212aae3ea738ea372" +labeled-stream-splicer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.0.tgz#a52e1d138024c00b86b1c0c91f677918b8ae0a59" + dependencies: + inherits "^2.0.1" + isarray "~0.0.1" + stream-splicer "^2.0.0" + lazy-cache@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" @@ -2808,6 +3237,12 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +lexical-scope@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/lexical-scope/-/lexical-scope-1.2.0.tgz#fcea5edc704a4b3a8796cdca419c3a0afaf22df4" + dependencies: + astw "^2.0.0" + liftoff@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-2.3.0.tgz#a98f2ff67183d8ba7cfaca10548bd7ff0550b385" @@ -2951,6 +3386,10 @@ lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" +lodash.memoize@~3.0.3: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f" + lodash.merge@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.0.tgz#69884ba144ac33fe699737a6086deffadd0f89c5" @@ -3103,6 +3542,13 @@ mathml-tag-names@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.0.1.tgz#8d41268168bf86d1102b98109e28e531e7a34578" +md5.js@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d" + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + meow@^3.1.0, meow@^3.3.0, meow@^3.5.0, meow@^3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" @@ -3142,6 +3588,13 @@ micromatch@2.3.11, micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.7: parse-glob "^3.0.4" regex-cache "^0.4.2" +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + mime-db@~1.30.0: version "1.30.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" @@ -3168,6 +3621,14 @@ mimic-fn@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" +minimalistic-assert@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + "minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -3209,6 +3670,26 @@ mkdirp@0.3.0: dependencies: minimist "0.0.8" +module-deps@^4.0.8: + version "4.1.1" + resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-4.1.1.tgz#23215833f1da13fd606ccb8087b44852dcb821fd" + dependencies: + JSONStream "^1.0.3" + browser-resolve "^1.7.0" + cached-path-relative "^1.0.0" + concat-stream "~1.5.0" + defined "^1.0.0" + detective "^4.0.0" + duplexer2 "^0.1.2" + inherits "^2.0.1" + parents "^1.0.0" + readable-stream "^2.0.2" + resolve "^1.1.3" + stream-combiner2 "^1.1.1" + subarg "^1.0.0" + through2 "^2.0.0" + xtend "^4.0.0" + ms@0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" @@ -3480,6 +3961,10 @@ ordered-read-streams@^0.3.0: is-stream "^1.0.1" readable-stream "^2.0.1" +os-browserify@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.1.2.tgz#49ca0293e0b19590a5f5de10c7f265a617d8fe54" + os-filter-obj@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/os-filter-obj/-/os-filter-obj-1.0.3.tgz#5915330d90eced557d2d938a31c6dd214d9c63ad" @@ -3523,6 +4008,26 @@ p-pipe@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-1.2.0.tgz#4b1a11399a11520a67790ee5a0c1d5881d6befe9" +pako@~0.2.0: + version "0.2.9" + resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" + +parents@^1.0.0, parents@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parents/-/parents-1.0.1.tgz#fedd4d2bf193a77745fe71e371d73c3307d9c751" + dependencies: + path-platform "~0.11.15" + +parse-asn1@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712" + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + parse-filepath@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.1.tgz#159d6155d43904d16c10ef698911da1e91969b73" @@ -3578,6 +4083,10 @@ parseurl@~1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" +path-browserify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" + path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" @@ -3608,6 +4117,10 @@ path-parse@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" +path-platform@~0.11.15: + version "0.11.15" + resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2" + path-root-regex@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" @@ -3638,6 +4151,16 @@ pause-stream@0.0.11: dependencies: through "~2.3" +pbkdf2@^3.0.3: + version "3.0.14" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz#a35e13c64799b06ce15320f459c230e68e73bade" + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" @@ -4040,6 +4563,10 @@ process-nextick-args@^1.0.6, process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" +process@~0.11.0: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + progress@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" @@ -4054,7 +4581,21 @@ pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" -punycode@^1.4.1: +public-encrypt@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6" + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + +punycode@^1.3.2, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" @@ -4085,6 +4626,14 @@ query-string@^4.1.0: object-assign "^4.1.0" strict-uri-encode "^1.0.0" +querystring-es3@~0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + queue@^4.2.1: version "4.4.1" resolved "https://registry.yarnpkg.com/queue/-/queue-4.4.1.tgz#ed93888335700f12dee55955b5a594cb82a1783b" @@ -4098,6 +4647,12 @@ randomatic@^1.1.3: is-number "^3.0.0" kind-of "^4.0.0" +randombytes@^2.0.0, randombytes@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.5.tgz#dc009a246b8d09a177b4b7a0ae77bc570f4b1b79" + dependencies: + safe-buffer "^5.1.0" + range-parser@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" @@ -4124,6 +4679,12 @@ read-cache@^1.0.0: dependencies: pify "^2.3.0" +read-only-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-only-stream/-/read-only-stream-2.0.0.tgz#2724fd6a8113d73764ac288d4386270c1dbf17f0" + dependencies: + readable-stream "^2.0.2" + read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" @@ -4154,7 +4715,7 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" -"readable-stream@>=1.0.33-1 <1.1.0-0": +"readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@~1.0.26: version "1.0.34" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" dependencies: @@ -4163,7 +4724,7 @@ read-pkg@^2.0.0: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2: +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.6: version "2.3.3" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" dependencies: @@ -4184,6 +4745,17 @@ readable-stream@~1.1.9: isarray "0.0.1" string_decoder "~0.10.x" +readable-stream@~2.0.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + readdirp@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" @@ -4336,7 +4908,11 @@ resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.2.0, resolve@^1.3.3: +resolve@1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + +resolve@^1.1.3, resolve@^1.1.4, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.2.0, resolve@^1.3.3: version "1.4.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.4.0.tgz#a75be01c53da25d934a98ebd0e4c4a7312f92a86" dependencies: @@ -4368,6 +4944,13 @@ rimraf@2, rimraf@^2.2.6, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2. dependencies: glob "^7.0.5" +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" + dependencies: + hash-base "^2.0.0" + inherits "^2.0.1" + run-async@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" @@ -4388,7 +4971,7 @@ rx@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" -safe-buffer@^5.0.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" @@ -4487,6 +5070,20 @@ setprototypeof@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" +sha.js@^2.4.0, sha.js@^2.4.8, sha.js@~2.4.4: + version "2.4.9" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.9.tgz#98f64880474b74f4a38b8da9d3c0f2d104633e7d" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shasum@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/shasum/-/shasum-1.0.2.tgz#e7012310d8f417f4deb5712150e5678b87ae565f" + dependencies: + json-stable-stringify "~0.0.0" + sha.js "~2.4.4" + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -4497,6 +5094,15 @@ shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" +shell-quote@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" + dependencies: + array-filter "~0.0.0" + array-map "~0.0.0" + array-reduce "~0.0.0" + jsonify "~0.0.0" + sigmund@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" @@ -4573,7 +5179,7 @@ source-map@^0.4.4: dependencies: amdefine ">=0.0.4" -source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1: +source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" @@ -4643,6 +5249,13 @@ stat-mode@^0.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" +stream-browserify@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + stream-combiner2@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe" @@ -4660,10 +5273,27 @@ stream-consume@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/stream-consume/-/stream-consume-0.1.0.tgz#a41ead1a6d6081ceb79f65b061901b6d8f3d1d0f" +stream-http@^2.0.0: + version "2.7.2" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.2.tgz#40a050ec8dc3b53b33d9909415c02c0bf1abfbad" + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.2.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + stream-shift@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" +stream-splicer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-2.0.0.tgz#1b63be438a133e4b671cc1935197600175910d83" + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.2" + stream-throttle@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/stream-throttle/-/stream-throttle-0.1.3.tgz#add57c8d7cc73a81630d31cd55d3961cfafba9c3" @@ -4694,7 +5324,7 @@ string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" -string_decoder@~1.0.3: +string_decoder@~1.0.0, string_decoder@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" dependencies: @@ -4827,6 +5457,12 @@ stylelint@^8.0.0, stylelint@^8.2.0: svg-tags "^1.0.0" table "^4.0.1" +subarg@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" + dependencies: + minimist "^1.1.0" + sugarss@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/sugarss/-/sugarss-1.0.0.tgz#65e51b3958432fb70d5451a68bb33e32d0cf1ef7" @@ -4871,6 +5507,12 @@ svgo@^0.7.0: sax "~1.2.1" whet.extend "~0.9.9" +syntax-error@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.3.0.tgz#1ed9266c4d40be75dc55bf9bb1cb77062bb96ca1" + dependencies: + acorn "^4.0.3" + table@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" @@ -4968,7 +5610,7 @@ through2@^2.0.0, through2@^2.0.1, through2@^2.0.3, through2@~2.0.0: readable-stream "^2.1.5" xtend "~4.0.1" -through@2, through@^2.3.6, through@~2.3, through@~2.3.1: +through@2, "through@>=2.2.7 <3", through@^2.3.6, through@~2.3, through@~2.3.1: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -4986,6 +5628,12 @@ timed-out@^3.0.0: version "3.1.3" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217" +timers-browserify@^1.0.1: + version "1.4.2" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.4.2.tgz#c9c58b575be8407375cb5e2462dacee74359f41d" + dependencies: + process "~0.11.0" + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -5002,6 +5650,10 @@ to-array@0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + tough-cookie@~2.3.0: version "2.3.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" @@ -5022,6 +5674,10 @@ tryit@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" +tty-browserify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + tunnel-agent@^0.4.0: version "0.4.3" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" @@ -5042,7 +5698,7 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" -typedarray@^0.0.6: +typedarray@^0.0.6, typedarray@~0.0.5: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -5089,6 +5745,10 @@ ultron@1.0.x: version "1.0.2" resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" +umd@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.1.tgz#8ae556e11011f63c2596708a8837259f01b3d60e" + unc-path-regex@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" @@ -5146,6 +5806,13 @@ url-regex@^3.0.0: dependencies: ip-regex "^1.0.1" +url@~0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + dependencies: + punycode "1.3.2" + querystring "0.2.0" + user-home@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" @@ -5154,6 +5821,12 @@ util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" +util@0.10.3, util@~0.10.1: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + dependencies: + inherits "2.0.1" + utils-merge@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" @@ -5202,6 +5875,13 @@ vinyl-assign@^1.0.1: object-assign "^4.0.1" readable-stream "^2.0.0" +vinyl-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/vinyl-buffer/-/vinyl-buffer-1.0.0.tgz#ca067ea08431d507722b1de5083f602616ebc234" + dependencies: + bl "^0.9.1" + through2 "^0.6.1" + vinyl-fs@^0.3.0: version "0.3.14" resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-0.3.14.tgz#9a6851ce1cac1c1cea5fe86c0931d620c2cfa9e6" @@ -5277,6 +5957,12 @@ vinyl@^2.0.0, vinyl@^2.0.2: remove-trailing-separator "^1.0.1" replace-ext "^1.0.0" +vm-browserify@~0.0.1: + version "0.0.4" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" + dependencies: + indexof "0.0.1" + ware@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/ware/-/ware-1.3.0.tgz#d1b14f39d2e2cb4ab8c4098f756fe4b164e473d4" From e508c3c012420162477317c9006c46577a4af155 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Wed, 11 Oct 2017 20:30:37 -0600 Subject: [PATCH 013/465] integrate highlight.js as vendor script - add highlight.js as dependency - add script to require highlight.js and register languages - add footer scripts partial - link to compiled highlight.js script --- package.json | 1 + src/js/vendor/highlight.js | 27 +++++++++++++++++++++++++++ src/layouts/default.hbs | 1 + src/partials/footer-scripts.hbs | 2 ++ yarn.lock | 4 ++++ 5 files changed, 35 insertions(+) create mode 100644 src/js/vendor/highlight.js create mode 100644 src/partials/footer-scripts.hbs diff --git a/package.json b/package.json index 1642c2c..722a482 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "gulp-uglify": "^3.0.0", "gulp-vinyl-zip": "^2.0.0", "handlebars": "^4.0.10", + "highlight.js": "^9.12.0", "js-yaml": "^3.10.0", "lodash.debounce": "^4.0.8", "map-stream": "^0.0.7", diff --git a/src/js/vendor/highlight.js b/src/js/vendor/highlight.js new file mode 100644 index 0000000..b32886d --- /dev/null +++ b/src/js/vendor/highlight.js @@ -0,0 +1,27 @@ +var hljs = window.hljs = require('highlight.js/lib/highlight') +hljs.registerLanguage('apache', require('highlight.js/lib/languages/apache')) +hljs.registerLanguage('asciidoc', require('highlight.js/lib/languages/asciidoc')) +hljs.registerLanguage('bash', require('highlight.js/lib/languages/bash')) +hljs.registerLanguage('cpp', require('highlight.js/lib/languages/cpp')) +hljs.registerLanguage('cs', require('highlight.js/lib/languages/cs')) +hljs.registerLanguage('css', require('highlight.js/lib/languages/css')) +hljs.registerLanguage('diff', require('highlight.js/lib/languages/diff')) +hljs.registerLanguage('dockerfile', require('highlight.js/lib/languages/dockerfile')) +hljs.registerLanguage('groovy', require('highlight.js/lib/languages/groovy')) +hljs.registerLanguage('http', require('highlight.js/lib/languages/http')) +hljs.registerLanguage('ini', require('highlight.js/lib/languages/ini')) +hljs.registerLanguage('java', require('highlight.js/lib/languages/java')) +hljs.registerLanguage('javascript', require('highlight.js/lib/languages/javascript')) +hljs.registerLanguage('json', require('highlight.js/lib/languages/json')) +hljs.registerLanguage('makefile', require('highlight.js/lib/languages/makefile')) +hljs.registerLanguage('markdown', require('highlight.js/lib/languages/markdown')) +hljs.registerLanguage('nginx', require('highlight.js/lib/languages/nginx')) +hljs.registerLanguage('objectivec', require('highlight.js/lib/languages/objectivec')) +hljs.registerLanguage('perl', require('highlight.js/lib/languages/perl')) +hljs.registerLanguage('php', require('highlight.js/lib/languages/php')) +hljs.registerLanguage('python', require('highlight.js/lib/languages/python')) +hljs.registerLanguage('ruby', require('highlight.js/lib/languages/ruby')) +hljs.registerLanguage('shell', require('highlight.js/lib/languages/shell')) +hljs.registerLanguage('sql', require('highlight.js/lib/languages/sql')) +hljs.registerLanguage('xml', require('highlight.js/lib/languages/xml')) +hljs.registerLanguage('yaml', require('highlight.js/lib/languages/yaml')) diff --git a/src/layouts/default.hbs b/src/layouts/default.hbs index 6f502bd..f013729 100644 --- a/src/layouts/default.hbs +++ b/src/layouts/default.hbs @@ -9,5 +9,6 @@ {{{contents}}} +{{> footer-scripts}} diff --git a/src/partials/footer-scripts.hbs b/src/partials/footer-scripts.hbs new file mode 100644 index 0000000..1aca132 --- /dev/null +++ b/src/partials/footer-scripts.hbs @@ -0,0 +1,2 @@ + + diff --git a/yarn.lock b/yarn.lock index 7903a5d..214c422 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2589,6 +2589,10 @@ hawk@3.1.3, hawk@~3.1.3: hoek "2.x.x" sntp "1.x.x" +highlight.js@^9.12.0: + version "9.12.0" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.12.0.tgz#e6d9dbe57cbefe60751f02af336195870c90c01e" + hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" From 7b81bf25d814cf59bfb8de7eb4651730c80046f2 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Thu, 12 Oct 2017 16:12:52 -0600 Subject: [PATCH 014/465] update eslint rules and format JavaScript - set maximum line length to 120 - don't require a space immediately after the line comment character or inside a block comment - format JavaScript --- .eslintrc | 4 +++- gulpfile.js | 10 ++-------- src/js/vendor/highlight.js | 2 +- tasks/build-preview.js | 20 ++++---------------- tasks/build.js | 8 +++++--- tasks/lib/gulp-prettier-eslint.js | 4 +--- 6 files changed, 16 insertions(+), 32 deletions(-) diff --git a/.eslintrc b/.eslintrc index 6d39e67..f8fb261 100644 --- a/.eslintrc +++ b/.eslintrc @@ -2,6 +2,8 @@ "extends": "standard", "rules": { "arrow-parens": ["error", "always"], - "comma-dangle": ["error", "always-multiline"] + "comma-dangle": ["error", "always-multiline"], + "max-len": [1, 120, 2], + "spaced-comment": "off" } } diff --git a/gulpfile.js b/gulpfile.js index 210699f..18dbbad 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -18,11 +18,7 @@ const previewSiteDestDir = path.join(buildDir, 'preview-site') const srcDir = 'src' const destDir = path.join(previewSiteDestDir, '_') -const jsFiles = [ - 'gulpfile.js', - 'tasks/**/*.js', - path.join(srcDir, '{helpers,js}/**/*.js'), -] +const jsFiles = ['gulpfile.js', 'tasks/**/*.js', path.join(srcDir, '{helpers,js}/**/*.js')] gulp.task('lint:css', () => lintCss(`${srcDir}/css/**/*.css`)) gulp.task('lint:js', () => lintJs(jsFiles)) @@ -32,9 +28,7 @@ gulp.task('format', () => format(jsFiles)) gulp.task('build', () => build(srcDir, destDir)) -gulp.task('build:preview', ['build'], () => - buildPreview(srcDir, destDir, previewSiteSrcDir, previewSiteDestDir) -) +gulp.task('build:preview', ['build'], () => buildPreview(srcDir, destDir, previewSiteSrcDir, previewSiteDestDir)) gulp.task('preview', ['build:preview'], () => preview(previewSiteDestDir, { diff --git a/src/js/vendor/highlight.js b/src/js/vendor/highlight.js index b32886d..c6120c8 100644 --- a/src/js/vendor/highlight.js +++ b/src/js/vendor/highlight.js @@ -1,4 +1,4 @@ -var hljs = window.hljs = require('highlight.js/lib/highlight') +var hljs = (window.hljs = require('highlight.js/lib/highlight')) hljs.registerLanguage('apache', require('highlight.js/lib/languages/apache')) hljs.registerLanguage('asciidoc', require('highlight.js/lib/languages/asciidoc')) hljs.registerLanguage('bash', require('highlight.js/lib/languages/bash')) diff --git a/tasks/build-preview.js b/tasks/build-preview.js index a78375a..31db775 100644 --- a/tasks/build-preview.js +++ b/tasks/build-preview.js @@ -9,11 +9,7 @@ const vfs = require('vinyl-fs') const yaml = require('js-yaml') module.exports = async (src, dest, siteSrc, siteDest) => { - const [layouts] = await Promise.all([ - compileLayouts(src), - registerPartials(src), - registerHelpers(src), - ]) + const [layouts] = await Promise.all([compileLayouts(src), registerPartials(src), registerHelpers(src)]) const mockUIModel = loadSampleUIModel(siteSrc) @@ -22,10 +18,7 @@ module.exports = async (src, dest, siteSrc, siteDest) => { .pipe( map((file, next) => { const compiledLayout = layouts['default.hbs'] - const siteRootPath = path.relative( - path.dirname(file.path), - path.resolve(siteSrc) - ) + const siteRootPath = path.relative(path.dirname(file.path), path.resolve(siteSrc)) mockUIModel['siteRootPath'] = siteRootPath mockUIModel['siteRootUrl'] = path.join(siteRootPath, 'index.html') mockUIModel['uiRootPath'] = path.join(siteRootPath, '_') @@ -75,10 +68,7 @@ function compileLayouts (src) { .src('layouts/*.hbs', { base: src, cwd: src }) .pipe( map((file, next) => { - layouts[file.basename] = handlebars.compile( - file.contents.toString(), - { preventIndent: true } - ) + layouts[file.basename] = handlebars.compile(file.contents.toString(), { preventIndent: true }) next(null, file) }) ) @@ -88,7 +78,5 @@ function compileLayouts (src) { } function loadSampleUIModel (siteSrc) { - return yaml.safeLoad( - fs.readFileSync(path.join(siteSrc, 'ui-model.yml'), 'utf8') - ) + return yaml.safeLoad(fs.readFileSync(path.join(siteSrc, 'ui-model.yml'), 'utf8')) } diff --git a/tasks/build.js b/tasks/build.js index 7d0a0b1..b63fc22 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -36,9 +36,11 @@ module.exports = (src, dest) => { vfs .src('js/vendor/*.js', Object.assign({ read: false }, opts)) - .pipe(tap((file) => { - file.contents = browserify(file.relative, { basedir: src, detectGlobals: false }).bundle() - })) + .pipe( + tap((file) => { + file.contents = browserify(file.relative, { basedir: src, detectGlobals: false }).bundle() + }) + ) .pipe(buffer()) .pipe(uglify()), diff --git a/tasks/lib/gulp-prettier-eslint.js b/tasks/lib/gulp-prettier-eslint.js index 667654b..a19c2fc 100644 --- a/tasks/lib/gulp-prettier-eslint.js +++ b/tasks/lib/gulp-prettier-eslint.js @@ -27,9 +27,7 @@ module.exports = () => { } if (file.isStream()) { - return callback( - new PluginError('gulp-prettier-eslint', 'Streaming not supported') - ) + return callback(new PluginError('gulp-prettier-eslint', 'Streaming not supported')) } const input = file.contents.toString() From 4be92c353535ffc7f4308e7943b997c4e949510a Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Wed, 11 Oct 2017 21:09:55 -0600 Subject: [PATCH 015/465] load fonts from node modules, include fonts in UI bundle, rewrite font path --- package.json | 1 + tasks/build.js | 46 ++++++++++++++++++++++++++++++++++------------ yarn.lock | 24 ++++++++++++++++++++++++ 3 files changed, 59 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index 722a482..13c29bb 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ "postcss-calc": "^6.0.0", "postcss-custom-properties": "^6.1.0", "postcss-import": "^11.0.0", + "postcss-url": "^7.1.2", "prettier-eslint": "^8.2.0", "require-from-string": "^2.0.1", "stylelint": "^8.2.0", diff --git a/tasks/build.js b/tasks/build.js index b63fc22..c778b9e 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -5,30 +5,50 @@ const browserify = require('browserify') const buffer = require('vinyl-buffer') const concat = require('gulp-concat') const cssnano = require('cssnano') +const fs = require('fs') const imagemin = require('gulp-imagemin') const merge = require('merge-stream') +const mkdirp = require('mkdirp') +const path = require('path') const postcss = require('gulp-postcss') const postcssCalc = require('postcss-calc') const postcssImport = require('postcss-import') +const postcssUrl = require('postcss-url') const postcssVar = require('postcss-custom-properties') const tap = require('gulp-tap') const uglify = require('gulp-uglify') const vfs = require('vinyl-fs') -const postcssPlugins = [ - postcssImport(), - postcssVar(), - postcssCalc(), - autoprefixer({ browsers: ['last 2 versions'] }), - cssnano({ preset: 'default' }), -] - module.exports = (src, dest) => { const opts = { base: src, cwd: src } + const postcssPlugins = [ + postcssImport(), + postcssUrl([ + { + filter: '**/~typeface-*/files/*', + url: (asset) => { + const relpath = asset.pathname.substr(1) + const abspath = path.resolve('node_modules', relpath) + const basename = path.basename(abspath) + const destpath = path.join(dest, 'font', basename) + if (!fs.existsSync(destpath)) { + const dirname = path.dirname(destpath) + if (!fs.existsSync(dirname)) { + mkdirp.sync(dirname) + } + fs.copyFileSync(abspath, destpath) + } + return path.join('..', 'font', basename) + }, + }, + ]), + postcssVar(), + postcssCalc(), + autoprefixer({ browsers: ['last 2 versions'] }), + cssnano({ preset: 'default' }), + ] return merge([ - vfs.src('img/**/*.{jpg,png,svg}', opts).pipe(imagemin()), - vfs .src('js/+([0-9])-*.js', opts) .pipe(uglify()) @@ -44,10 +64,12 @@ module.exports = (src, dest) => { .pipe(buffer()) .pipe(uglify()), - vfs.src('fonts/*.woff*(2)', opts), - vfs.src('css/site.css', opts).pipe(postcss(postcssPlugins)), + vfs.src('font/*.woff*(2)', opts), + + vfs.src('img/**/*.{jpg,png,svg}', opts).pipe(imagemin()), + vfs.src('helpers/*.js', opts), vfs.src('layouts/*.hbs', opts), diff --git a/yarn.lock b/yarn.lock index 214c422..98387a4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1182,6 +1182,10 @@ csso@~2.3.1: clap "^1.0.9" source-map "^0.5.3" +cuint@latest: + version "0.2.2" + resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" + currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" @@ -3621,6 +3625,10 @@ mime@1.3.4: version "2.0.3" resolved "https://registry.yarnpkg.com/mime/-/mime-2.0.3.tgz#4353337854747c48ea498330dc034f9f4bbbcc0b" +mime@^1.2.11: + version "1.4.1" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" + mimic-fn@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" @@ -4487,6 +4495,16 @@ postcss-unique-selectors@^2.0.2: postcss "^5.0.4" uniqs "^2.0.0" +postcss-url@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/postcss-url/-/postcss-url-7.1.2.tgz#e04ae386af7ea6ef5df51c5b449d6b9502cd99b2" + dependencies: + mime "^1.2.11" + minimatch "^3.0.0" + mkdirp "^0.5.0" + postcss "^6.0.1" + xxhashjs "^0.2.1" + postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15" @@ -6067,6 +6085,12 @@ xmlhttprequest-ssl@1.5.3: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" +xxhashjs@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/xxhashjs/-/xxhashjs-0.2.1.tgz#9bbe9be896142976dfa34c061b2d068c43d30de0" + dependencies: + cuint latest + y18n@^3.2.0, y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" From e42d04b327bae4cc0aadacee1c478ced536c3932 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Fri, 13 Oct 2017 01:56:29 -0600 Subject: [PATCH 016/465] add HTML page templates - add HTML page templates - fill in UI model to activate all parts of templates - add helpers for use in templates - update build:preview task to apply 404 template to 404 page --- preview-site-src/404.html | 0 preview-site-src/ui-model.yml | 90 ++++++++++++++++++++++++++++- src/helpers/and.js | 3 + src/helpers/eq.js | 3 + src/helpers/has-versions.js | 3 + src/helpers/inc.js | 3 + src/helpers/or.js | 3 + src/helpers/page-versions.js | 17 ++++++ src/layouts/404.hbs | 21 +++++++ src/layouts/default.hbs | 32 ++++++---- src/partials/article.hbs | 4 ++ src/partials/breadcrumbs.hbs | 16 +++++ src/partials/footer-content.hbs | 4 ++ src/partials/footer-scripts.hbs | 2 +- src/partials/footer.hbs | 2 + src/partials/head.hbs | 1 + src/partials/header-content.hbs | 46 +++++++++++++++ src/partials/header.hbs | 1 + src/partials/main.hbs | 7 +++ src/partials/navigation-domain.hbs | 5 ++ src/partials/navigation-explore.hbs | 20 +++++++ src/partials/navigation-tree.hbs | 17 ++++++ src/partials/navigation.hbs | 9 +++ src/partials/page-versions.hbs | 10 ++++ src/partials/toolbar.hbs | 9 +++ tasks/build-preview.js | 2 +- 26 files changed, 315 insertions(+), 15 deletions(-) create mode 100644 preview-site-src/404.html create mode 100644 src/helpers/and.js create mode 100644 src/helpers/eq.js create mode 100644 src/helpers/has-versions.js create mode 100644 src/helpers/inc.js create mode 100644 src/helpers/or.js create mode 100644 src/helpers/page-versions.js create mode 100644 src/layouts/404.hbs create mode 100644 src/partials/article.hbs create mode 100644 src/partials/breadcrumbs.hbs create mode 100644 src/partials/footer-content.hbs create mode 100644 src/partials/footer.hbs create mode 100644 src/partials/head.hbs create mode 100644 src/partials/header-content.hbs create mode 100644 src/partials/header.hbs create mode 100644 src/partials/main.hbs create mode 100644 src/partials/navigation-domain.hbs create mode 100644 src/partials/navigation-explore.hbs create mode 100644 src/partials/navigation-tree.hbs create mode 100644 src/partials/navigation.hbs create mode 100644 src/partials/page-versions.hbs create mode 100644 src/partials/toolbar.hbs diff --git a/preview-site-src/404.html b/preview-site-src/404.html new file mode 100644 index 0000000..e69de29 diff --git a/preview-site-src/ui-model.yml b/preview-site-src/ui-model.yml index 9ab35c3..b7dfc21 100644 --- a/preview-site-src/ui-model.yml +++ b/preview-site-src/ui-model.yml @@ -1,4 +1,90 @@ site: url: http://localhost:5252 - title: Preview Site -title: Home + title: Brand Docs + domains: + - name: abc + title: Project ABC + versions: + - url: '#' + string: '1.1' + latest: true + - url: '#' + string: '1.0' + - name: xyz + title: Project XYZ + selected: true + versions: &domain_versions + - url: '#' + string: '6.0' + latest: true + selected: true + - url: '#' + string: '5.2' + - url: '#' + string: '5.1' + - url: '#' + string: '5.0' + - name: 123 + title: Project 123 + versions: + - url: '#' + string: '2.2' + latest: true + - url: '#' + string: '2.1' + - url: '#' + string: '2.0' +title: Hardware and Software Requirements +home: false +siteRootUrl: / +editUrl: http://example.com/project-xyz/blob/master/index.adoc +domain: + name: xyz + title: Project XYZ + type: component + version: + string: '6.0' + versioned: true + versions: *domain_versions +breadcrumbs: +- title: Quickstart + url: '#' + currentPath: true +- title: Hardware and Software Requirements + url: '#' + currentPage: true +versions: +- string: '6.0' + url: '#' +- string: '5.2' + url: '#' +- string: '5.1' + url: '#' +navigation: +- title: Project XYZ + url: '#' + currentPath: true + items: + - title: Quickstart + url: '#' + currentPath: true + items: + - title: Hardware and Software Requirements + url: '#' + currentPage: true + items: [] + - title: IDE Integration + url: '#' + items: [] + - title: Application Tutorial + url: '#' + items: [] + - title: Reference + url: '#' + items: + - title: Keyboard Shortcuts + url: '#' + items: [] + - title: Importing and Exporting + url: '#' + items: [] diff --git a/src/helpers/and.js b/src/helpers/and.js new file mode 100644 index 0000000..2ad2237 --- /dev/null +++ b/src/helpers/and.js @@ -0,0 +1,3 @@ +'use strict' + +module.exports = (a, b) => a && b diff --git a/src/helpers/eq.js b/src/helpers/eq.js new file mode 100644 index 0000000..16dc287 --- /dev/null +++ b/src/helpers/eq.js @@ -0,0 +1,3 @@ +'use strict' + +module.exports = (a, b) => a === b diff --git a/src/helpers/has-versions.js b/src/helpers/has-versions.js new file mode 100644 index 0000000..5b83db0 --- /dev/null +++ b/src/helpers/has-versions.js @@ -0,0 +1,3 @@ +'use strict' + +module.exports = (domain) => domain.versioned && domain.versions.length > 1 diff --git a/src/helpers/inc.js b/src/helpers/inc.js new file mode 100644 index 0000000..bb8f7e1 --- /dev/null +++ b/src/helpers/inc.js @@ -0,0 +1,3 @@ +'use strict' + +module.exports = (value) => (value || 0) + 1 diff --git a/src/helpers/or.js b/src/helpers/or.js new file mode 100644 index 0000000..354612b --- /dev/null +++ b/src/helpers/or.js @@ -0,0 +1,3 @@ +'use strict' + +module.exports = (a, b) => a || b diff --git a/src/helpers/page-versions.js b/src/helpers/page-versions.js new file mode 100644 index 0000000..cb61cd7 --- /dev/null +++ b/src/helpers/page-versions.js @@ -0,0 +1,17 @@ +'use strict' + +// FIXME the UI model should be prepopulated with this collection +module.exports = (domains, domainName, otherPageVersions) => { + const domain = domains.find((candidate) => candidate.name === domainName) + const pageVersions = [] + domain.versions.forEach((domainVersion) => { + const pageVersion = otherPageVersions.find((candidate) => candidate.string === domainVersion.string) + if (pageVersion) { + pageVersions.push(pageVersion) + } else { + pageVersions.push(Object.assign({ missing: true }, domainVersion)) + } + }) + + return pageVersions +} diff --git a/src/layouts/404.hbs b/src/layouts/404.hbs new file mode 100644 index 0000000..c697e1d --- /dev/null +++ b/src/layouts/404.hbs @@ -0,0 +1,21 @@ + + + + + + {{title}}{{#if site.title}} :: {{site.title}}{{/if}} + +{{> head}} + + +{{> header}} +
+
+
+

Page Not Found

+
+
+
+{{> footer}} + + diff --git a/src/layouts/default.hbs b/src/layouts/default.hbs index f013729..4b343a9 100644 --- a/src/layouts/default.hbs +++ b/src/layouts/default.hbs @@ -1,14 +1,24 @@ - - - - - - {{title}}{{#if site.title}} // {{site.title}}{{/if}} - - -{{{contents}}} -{{> footer-scripts}} - + + + + {{title}}{{#if site.title}} :: {{site.title}}{{/if}} + {{#if canonicalUrl}} + + {{/if}} + {{#if description}} + + {{/if}} + {{#if keywords}} + + {{/if}} + +{{> head}} + + +{{> header}} +{{> main}} +{{> footer}} + diff --git a/src/partials/article.hbs b/src/partials/article.hbs new file mode 100644 index 0000000..05c427b --- /dev/null +++ b/src/partials/article.hbs @@ -0,0 +1,4 @@ +
+

{{title}}

+{{{contents}}} +
diff --git a/src/partials/breadcrumbs.hbs b/src/partials/breadcrumbs.hbs new file mode 100644 index 0000000..472c4da --- /dev/null +++ b/src/partials/breadcrumbs.hbs @@ -0,0 +1,16 @@ + diff --git a/src/partials/footer-content.hbs b/src/partials/footer-content.hbs new file mode 100644 index 0000000..dead088 --- /dev/null +++ b/src/partials/footer-content.hbs @@ -0,0 +1,4 @@ +
+

This page was built using the Antora default UI.

+

The source code for this UI is licensed under the MPL-2.0 license.

+
diff --git a/src/partials/footer-scripts.hbs b/src/partials/footer-scripts.hbs index 1aca132..385a43b 100644 --- a/src/partials/footer-scripts.hbs +++ b/src/partials/footer-scripts.hbs @@ -1,2 +1,2 @@ - + diff --git a/src/partials/footer.hbs b/src/partials/footer.hbs new file mode 100644 index 0000000..9d49017 --- /dev/null +++ b/src/partials/footer.hbs @@ -0,0 +1,2 @@ +{{> footer-content}} +{{> footer-scripts}} diff --git a/src/partials/head.hbs b/src/partials/head.hbs new file mode 100644 index 0000000..8036f85 --- /dev/null +++ b/src/partials/head.hbs @@ -0,0 +1 @@ +{{! Add additional tags to head here}} diff --git a/src/partials/header-content.hbs b/src/partials/header-content.hbs new file mode 100644 index 0000000..cc648a6 --- /dev/null +++ b/src/partials/header-content.hbs @@ -0,0 +1,46 @@ + diff --git a/src/partials/header.hbs b/src/partials/header.hbs new file mode 100644 index 0000000..affbeeb --- /dev/null +++ b/src/partials/header.hbs @@ -0,0 +1 @@ +{{> header-content}} diff --git a/src/partials/main.hbs b/src/partials/main.hbs new file mode 100644 index 0000000..80babfa --- /dev/null +++ b/src/partials/main.hbs @@ -0,0 +1,7 @@ +
+{{> navigation}} +
+{{> toolbar}} +{{> article}} +
+
diff --git a/src/partials/navigation-domain.hbs b/src/partials/navigation-domain.hbs new file mode 100644 index 0000000..0b5f61a --- /dev/null +++ b/src/partials/navigation-domain.hbs @@ -0,0 +1,5 @@ + diff --git a/src/partials/navigation-explore.hbs b/src/partials/navigation-explore.hbs new file mode 100644 index 0000000..ff2f511 --- /dev/null +++ b/src/partials/navigation-explore.hbs @@ -0,0 +1,20 @@ + diff --git a/src/partials/navigation-tree.hbs b/src/partials/navigation-tree.hbs new file mode 100644 index 0000000..ca576d4 --- /dev/null +++ b/src/partials/navigation-tree.hbs @@ -0,0 +1,17 @@ +{{#if navigation.length}} + +{{/if}} diff --git a/src/partials/navigation.hbs b/src/partials/navigation.hbs new file mode 100644 index 0000000..5540601 --- /dev/null +++ b/src/partials/navigation.hbs @@ -0,0 +1,9 @@ + diff --git a/src/partials/page-versions.hbs b/src/partials/page-versions.hbs new file mode 100644 index 0000000..de57d1b --- /dev/null +++ b/src/partials/page-versions.hbs @@ -0,0 +1,10 @@ +{{#if (has-versions domain)}} +
+ +
+ {{#each (page-versions site.domains domain.name versions)}} + {{./string}} + {{/each}} +
+
+{{/if}} diff --git a/src/partials/toolbar.hbs b/src/partials/toolbar.hbs new file mode 100644 index 0000000..6898c1f --- /dev/null +++ b/src/partials/toolbar.hbs @@ -0,0 +1,9 @@ + diff --git a/tasks/build-preview.js b/tasks/build-preview.js index 31db775..74fa03b 100644 --- a/tasks/build-preview.js +++ b/tasks/build-preview.js @@ -17,7 +17,7 @@ module.exports = async (src, dest, siteSrc, siteDest) => { .src('**/*.html', { base: siteSrc, cwd: siteSrc }) .pipe( map((file, next) => { - const compiledLayout = layouts['default.hbs'] + const compiledLayout = layouts[file.stem === '404' ? '404.hbs' : 'default.hbs'] const siteRootPath = path.relative(path.dirname(file.path), path.resolve(siteSrc)) mockUIModel['siteRootPath'] = siteRootPath mockUIModel['siteRootUrl'] = path.join(siteRootPath, 'index.html') From 7177e1688f30d5b5669e3d0f86b736d50e430b33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hubert=20SABLONNI=C3=88RE?= Date: Fri, 13 Oct 2017 02:26:01 -0600 Subject: [PATCH 017/465] add supporting icons for UI elements --- src/img/caret.svg | 63 +++++++++++++++++ src/img/chevron.svg | 63 +++++++++++++++++ src/img/close.svg | 166 ++++++++++++++++++++++++++++++++++++++++++++ src/img/home-o.svg | 124 +++++++++++++++++++++++++++++++++ src/img/home.svg | 124 +++++++++++++++++++++++++++++++++ src/img/menu.svg | 158 +++++++++++++++++++++++++++++++++++++++++ 6 files changed, 698 insertions(+) create mode 100644 src/img/caret.svg create mode 100644 src/img/chevron.svg create mode 100644 src/img/close.svg create mode 100644 src/img/home-o.svg create mode 100644 src/img/home.svg create mode 100644 src/img/menu.svg diff --git a/src/img/caret.svg b/src/img/caret.svg new file mode 100644 index 0000000..5cd4d5f --- /dev/null +++ b/src/img/caret.svg @@ -0,0 +1,63 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/img/chevron.svg b/src/img/chevron.svg new file mode 100644 index 0000000..836c90f --- /dev/null +++ b/src/img/chevron.svg @@ -0,0 +1,63 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/img/close.svg b/src/img/close.svg new file mode 100644 index 0000000..e86105a --- /dev/null +++ b/src/img/close.svg @@ -0,0 +1,166 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/home-o.svg b/src/img/home-o.svg new file mode 100644 index 0000000..02e64b8 --- /dev/null +++ b/src/img/home-o.svg @@ -0,0 +1,124 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/home.svg b/src/img/home.svg new file mode 100644 index 0000000..06ca956 --- /dev/null +++ b/src/img/home.svg @@ -0,0 +1,124 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/menu.svg b/src/img/menu.svg new file mode 100644 index 0000000..211102b --- /dev/null +++ b/src/img/menu.svg @@ -0,0 +1,158 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From d2a293c0042fad9e33de0c888bddc81ccaf0ea65 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Sat, 14 Oct 2017 16:04:28 -0600 Subject: [PATCH 018/465] configure stylelint to not enforce blank line before comment --- .stylelintrc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.stylelintrc b/.stylelintrc index 40db42c..ea93717 100644 --- a/.stylelintrc +++ b/.stylelintrc @@ -1,3 +1,6 @@ { - "extends": "stylelint-config-standard" + "extends": "stylelint-config-standard", + "rules": { + "comment-empty-line-before": null + } } From 646d7eeb991bf5f75138b44a9fb93b569fe3bbdc Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Sat, 14 Oct 2017 15:59:16 -0600 Subject: [PATCH 019/465] add CSS for UI shell - add CSS for all UI elements outside of article content - add additional CSS classes to be activated by JavaScript - add Roboto and Roboto Mono font packages as dev dependencies - change navigation button in toolbar to a toggle --- package.json | 2 + src/css/article.css | 11 ++ src/css/base.css | 58 +++++++ src/css/breadcrumbs.css | 39 +++++ src/css/footer.css | 10 ++ src/css/header.css | 273 +++++++++++++++++++++++++++++++ src/css/main.css | 11 ++ src/css/navigation-domain.css | 122 ++++++++++++++ src/css/navigation-explore.css | 96 +++++++++++ src/css/navigation.css | 58 +++++++ src/css/page-versions.css | 64 ++++++++ src/css/site.css | 16 +- src/css/toolbar.css | 88 ++++++++++ src/css/typeface-roboto-mono.css | 21 +++ src/css/typeface-roboto.css | 43 +++++ src/partials/navigation.hbs | 1 - src/partials/toolbar.hbs | 2 +- yarn.lock | 8 + 18 files changed, 918 insertions(+), 5 deletions(-) create mode 100644 src/css/article.css create mode 100644 src/css/base.css create mode 100644 src/css/breadcrumbs.css create mode 100644 src/css/footer.css create mode 100644 src/css/header.css create mode 100644 src/css/main.css create mode 100644 src/css/navigation-domain.css create mode 100644 src/css/navigation-explore.css create mode 100644 src/css/navigation.css create mode 100644 src/css/page-versions.css create mode 100644 src/css/toolbar.css create mode 100644 src/css/typeface-roboto-mono.css create mode 100644 src/css/typeface-roboto.css diff --git a/package.json b/package.json index 13c29bb..ea580ec 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,8 @@ "require-from-string": "^2.0.1", "stylelint": "^8.2.0", "stylelint-config-standard": "^17.0.0", + "typeface-roboto": "^0.0.35", + "typeface-roboto-mono": "^0.0.35", "vinyl-buffer": "^1.0.0", "vinyl-fs": "^2.4.4" } diff --git a/src/css/article.css b/src/css/article.css new file mode 100644 index 0000000..166b9c2 --- /dev/null +++ b/src/css/article.css @@ -0,0 +1,11 @@ +.doc { + margin: 0 auto; + max-width: 40rem; +} + +@media (min-width: 1024px) { + .doc { + margin: 0 2rem; + max-width: 54rem; + } +} diff --git a/src/css/base.css b/src/css/base.css new file mode 100644 index 0000000..14ad1fc --- /dev/null +++ b/src/css/base.css @@ -0,0 +1,58 @@ +:root { + --color-text: #222; + --color-navbar-bg: #0a0a0a; + --color-navbar-bg-focus: #000; + --color-navbar-text: #fff; +} + +html, +body { + height: 100%; +} + +*, +*::before, +*::after { + box-sizing: inherit; +} + +html { + box-sizing: border-box; + font-family: 'Roboto', sans-serif; + font-size: 1.1em; + text-size-adjust: 100%; +} + +@media (min-width: 1024px) { + html { + font-size: 1.2em; + } +} + +body { + color: var(--color-text); + line-height: 1.6; + margin: 0; +} + +code, +pre { + font-family: 'Roboto Mono', monospace; +} + +::-webkit-scrollbar { + width: 0.3333rem; + height: 0.3333rem; +} + +::-webkit-scrollbar-track { + background-color: #f0f0f0; +} + +::-webkit-scrollbar-thumb { + background-color: #c1c1c1; +} + +::-webkit-scrollbar-thumb:window-inactive { + background: transparent; +} diff --git a/src/css/breadcrumbs.css b/src/css/breadcrumbs.css new file mode 100644 index 0000000..c7c27bb --- /dev/null +++ b/src/css/breadcrumbs.css @@ -0,0 +1,39 @@ +.crumbs { + display: none; + flex: 1 1; + padding: 0 0.5rem 0 0.75rem; + line-height: 1.35; + hyphens: none; +} + +@media (min-width: 1024px) { + .crumbs { + display: block; + } +} + +a + .crumbs { + padding-left: 0.05rem; +} + +.crumbs ul { + display: flex; + flex-wrap: wrap; + margin: 0; + padding: 0; + list-style: none; +} + +.crumbs li { + display: inline; + margin: 0; +} + +.crumbs li::after { + content: "/"; + padding: 0 0.5rem; +} + +.crumbs li:last-of-type::after { + content: none; +} diff --git a/src/css/footer.css b/src/css/footer.css new file mode 100644 index 0000000..5e12675 --- /dev/null +++ b/src/css/footer.css @@ -0,0 +1,10 @@ +footer.footer { + font-size: 0.85rem; + background-color: #2c2c2c; + color: #8e8e8e; + padding: 0.5rem 1rem; +} + +.footer p { + margin: 0.5rem 0; +} diff --git a/src/css/header.css b/src/css/header.css new file mode 100644 index 0000000..65ce47c --- /dev/null +++ b/src/css/header.css @@ -0,0 +1,273 @@ +:root { + --navbar-height: 3.25rem; +} + +html.is-clipped--navbar { + overflow-y: hidden; +} + +body { + padding-top: var(--navbar-height); +} + +.navbar { + background-color: var(--color-navbar-bg); + color: var(--color-navbar-text); + font-size: 0.83333rem; + height: var(--navbar-height); + position: fixed; + top: 0; + width: 100%; + word-wrap: break-word; + z-index: 3; +} + +.navbar a { + text-decoration: none; +} + +.navbar-brand .navbar-item { + color: var(--color-navbar-text); + font-size: 1.15rem; +} + +@media screen and (min-width: 1024px) { + .navbar-end > .navbar-item, + .navbar-end .navbar-link { + color: var(--color-navbar-text); + } + + .navbar-end > a.navbar-item:hover, + .navbar-end .navbar-link:hover { + background-color: var(--color-navbar-bg-focus); + color: var(--color-navbar-text); + } + + .navbar-end .navbar-link::after { + border-color: var(--color-navbar-text); + } + + .navbar-item.has-dropdown:hover .navbar-link { + background-color: var(--color-navbar-bg-focus); + color: var(--color-navbar-text); + } +} + +.navbar-brand { + align-items: stretch; + display: flex; + flex-shrink: 0; + height: var(--navbar-height); +} + +.navbar-burger { + color: var(--color-navbar-text); + background: none; + border: none; + outline: none; + cursor: pointer; + display: block; + height: var(--navbar-height); + position: relative; + /* width: var(--navbar-height); */ + width: 2.75rem; + margin-left: auto; + padding: 0; +} + +.navbar-burger::-moz-focus-inner { + border: none; +} + +.navbar-burger span { + background-color: currentColor; + display: block; + height: 1px; + left: 50%; + margin-left: -7px; + position: absolute; + top: 50%; + width: 15px; +} + +.navbar-burger span:nth-child(1) { + margin-top: -6px; +} + +.navbar-burger span:nth-child(2) { + margin-top: -1px; +} + +.navbar-burger span:nth-child(3) { + margin-top: 4px; +} + +.navbar-burger:hover { + background-color: var(--color-navbar-bg-focus); +} + +.navbar-burger.is-active span:nth-child(1) { + margin-left: -5px; + transform: rotate(45deg); + transform-origin: left top; +} + +.navbar-burger.is-active span:nth-child(2) { + opacity: 0; +} + +.navbar-burger.is-active span:nth-child(3) { + margin-left: -5px; + transform: rotate(-45deg); + transform-origin: left bottom; +} + +.navbar-menu { + display: none; +} + +.navbar-item, +.navbar-link { + color: var(--color-text); + display: block; + line-height: 1.5; + padding: 0.5rem 1rem; + position: relative; +} + +.navbar-item { + flex: none; +} + +.navbar-item.has-dropdown { + padding: 0; +} + +.navbar-link { + padding-right: 2.5em; +} + +.navbar-dropdown { + font-size: 0.875rem; +} + +.navbar-dropdown .navbar-item { + padding-left: 1.5rem; + padding-right: 1.5rem; +} + +@media screen and (max-width: 1023px) { + .navbar-brand .navbar-item { + align-items: center; + display: flex; + } + + .navbar-menu { + background-color: #fff; + padding: 0.5rem 0; + } + + .navbar-menu.is-active { + display: block; + box-shadow: 0 8px 16px rgba(10, 10, 10, 0.1); + max-height: calc(100vh - var(--navbar-height)); + overflow-y: auto; + } + + .navbar-menu a.navbar-item:hover, + .navbar-menu .navbar-link:hover { + background-color: #fafafa; + } +} + +@media screen and (min-width: 1024px) { + .navbar, + .navbar-menu, + .navbar-end { + align-items: stretch; + display: flex; + } + + .navbar-burger { + display: none; + } + + .navbar-item, + .navbar-link { + align-items: center; + display: flex; + } + + .navbar-item.has-dropdown { + align-items: stretch; + } + + .navbar-item.is-hoverable:hover .navbar-dropdown { + display: block; + } + + .navbar-link::after { + border-width: 0 0 1px 1px; + border-style: solid; + content: " "; + display: block; + height: 0.5em; + pointer-events: none; + position: absolute; + transform: rotate(-45deg); + width: 0.5em; + margin-top: -0.375em; + right: 1.125em; + top: 50%; + } + + .navbar-menu { + flex-grow: 1; + } + + .navbar-end { + justify-content: flex-end; + margin-left: auto; + } + + .navbar-dropdown { + background-color: #fff; + border: 1px solid #e1e1e1; + display: none; + font-size: 0.875rem; + top: 100%; + left: 0; + min-width: 100%; + position: absolute; + } + + .navbar-dropdown .navbar-item { + padding: 0.5rem 1rem; + white-space: nowrap; + } + + .navbar-dropdown a.navbar-item { + padding-right: 3rem; + } + + .navbar-dropdown.is-right { + left: auto; + right: 0; + } + + .navbar-dropdown a.navbar-item:hover { + background-color: #fafafa; + } +} + +.navbar .button { + display: inline-flex; + align-items: center; + background-color: #fff; + border: 1px solid #e1e1e1; + border-radius: 0.15rem; + height: 1.75rem; + color: #333; + padding: 0 0.75em; + white-space: nowrap; +} diff --git a/src/css/main.css b/src/css/main.css new file mode 100644 index 0000000..ed146b2 --- /dev/null +++ b/src/css/main.css @@ -0,0 +1,11 @@ +@media (min-width: 1024px) { + .main-wrapper { + display: flex; + } + + .main { + flex: auto; + /* min-width: 0 required for flexbox to constrain overflowing elements */ + min-width: 0; + } +} diff --git a/src/css/navigation-domain.css b/src/css/navigation-domain.css new file mode 100644 index 0000000..9d7b10a --- /dev/null +++ b/src/css/navigation-domain.css @@ -0,0 +1,122 @@ +html.is-clipped--nav { + overflow-y: hidden; +} + +.navigation-domain { + flex-grow: 1; + overflow-y: auto; + display: flex; + flex-direction: column; +} + +.navigation-domain:not(.is-active) { + display: none; +} + +.nav-menu { + flex-grow: 1; + min-height: 0; + /* QUESTION move padding to .navigation-domain? */ + /* + padding: 0.5rem; + */ + padding: 0.4rem 0.5rem; +} + +.nav-list { + list-style: none; + margin: 0; + padding: 0; +} + +.nav-list .nav-list { + margin-left: 1em; +} + +.nav-item { + display: flex; + align-items: flex-start; + flex-wrap: wrap; +} + +.nav-item .nav-item { + padding-top: 0.25em; +} + +.nav-item > .nav-list { + display: none; +} + +.nav-item[data-depth="0"] > .nav-list, +.nav-item.is-active > .nav-list { + display: block; +} + +.nav-toggle { + background: transparent url(../img/caret.svg) no-repeat left center; + background-size: 85%; + border: none; + cursor: pointer; + font-size: inherit; + height: 1.85em; + outline: none; + padding: 0; + width: 1em; +} + +@media (min-width: 769px) { + .nav-toggle { + height: 1.6em; + } +} + +.nav-toggle::-moz-focus-inner { + border: none; +} + +.nav-item.is-active > .nav-toggle { + transform: rotate(90deg); +} + +.nav-link, +.nav-text { + color: inherit; + display: inline-block; + line-height: 1.85em; + margin-left: 1em; + text-decoration: none; + padding-left: 0.25em; +} + +@media (min-width: 769px) { + .nav-link, + .nav-text { + line-height: 1.6em; + } +} + +.is-current-page > .nav-link, +.is-current-page > .nav-text { + font-weight: 500; +} + +.nav-item[data-depth="0"] > .nav-link, +.nav-item[data-depth="0"] > .nav-text, +.nav-item[data-depth="0"] > .nav-list { + margin-left: 0; +} + +.nav-toggle + .nav-link, +.nav-toggle + .nav-text { + margin-left: 0; +} + +.nav-link:hover { + text-decoration: underline; +} + +.nav-item[data-depth="0"] > .nav-link, +.nav-item[data-depth="0"] > .nav-text { + padding-left: 0; + display: none; /* FIXME temporary */ +} diff --git a/src/css/navigation-explore.css b/src/css/navigation-explore.css new file mode 100644 index 0000000..f954c90 --- /dev/null +++ b/src/css/navigation-explore.css @@ -0,0 +1,96 @@ +.navigation-explore { + display: flex; + flex-direction: column; +} + +.navigation-explore.is-active { + height: inherit; +} + +.navigation-explore .current { + flex-shrink: 0; + color: #5d5d5d; + background-color: #fafafa; + box-shadow: 0 -1px 0 #e1e1e1; + padding: 0 0.25rem 0 0.5rem; + display: flex; + align-items: center; + justify-content: space-between; + cursor: pointer; + /* font-size: 0.75rem; */ + font-size: 0.8824em; + line-height: 1; + height: var(--toolbar-height); +} + +.navigation-explore.is-active .current { + box-shadow: 0 1px 0 #e1e1e1; +} + +.navigation-explore .current .version { + background-image: url(../img/chevron.svg); + background-repeat: no-repeat; + background-position: right 0.5rem top 50%; + background-size: auto 0.75em; + padding: 0 1.5rem 0 0; +} + +.navigation-explore .domains { + flex-grow: 1; + box-shadow: inset 0 1px 5px #e1e1e1; + background-color: #f0f0f0; + padding: 0.5rem; + margin: 0; + overflow-y: auto; + max-height: 100%; + display: block; +} + +.navigation-explore:not(.is-active) .domains { + display: none; +} + +.navigation-explore .domain { + display: block; +} + +.navigation-explore .domain + .domain { + margin-top: 0.5rem; +} + +.navigation-explore .domain .title { + font-weight: 500; +} + +.navigation-explore .versions { + display: flex; + flex-wrap: wrap; + padding-left: 0.5rem; +} + +.navigation-explore .domain .version { + display: block; + font-size: 0.95em; +} + +.navigation-explore .domain .version a { + color: #4a4a4a; + text-decoration: none; + white-space: nowrap; +} + +.navigation-explore .domain .version.is-current { + font-weight: 500; +} + +.navigation-explore .domain .version.is-latest a::after { + content: ' (latest)'; +} + +.navigation-explore .domain .version a:hover { + text-decoration: underline; +} + +.navigation-explore .domain .version + .version { + padding-left: 0.5em; +} diff --git a/src/css/navigation.css b/src/css/navigation.css new file mode 100644 index 0000000..aaa0d22 --- /dev/null +++ b/src/css/navigation.css @@ -0,0 +1,58 @@ +.navigation-container { + display: none; + position: fixed; + top: var(--navbar-height); + left: 0; + width: 100%; + font-size: 0.95rem; + z-index: 1; +} + +.navigation-container.is-active { + display: block; +} + +@media (min-width: 769px) { + .navigation-container { + width: 16rem; + font-size: 0.9rem; + } +} + +@media (min-width: 1024px) { + .navigation-container { + font-size: 0.85rem; + flex: none; + display: block; + position: static; + top: 0; + } +} + +.navigation { + background-color: #fafafa; + position: relative; + top: var(--toolbar-height); + height: calc(100vh - var(--navbar-height) - var(--toolbar-height)); +} + +@media (min-width: 769px) { + .navigation { + box-shadow: 0.5px 0 3px #c1c1c1; + } +} + +@media (min-width: 1024px) { + .navigation { + top: var(--navbar-height); + box-shadow: none; + position: sticky; + height: calc(100vh - var(--navbar-height)); + } +} + +.navigation .panels { + display: flex; + flex-direction: column; + height: inherit; +} diff --git a/src/css/page-versions.css b/src/css/page-versions.css new file mode 100644 index 0000000..4cd9207 --- /dev/null +++ b/src/css/page-versions.css @@ -0,0 +1,64 @@ +.page-versions { + display: none; + margin-right: 0.7rem; + position: relative; +} + +@media (min-width: 1024px) { + .page-versions { + display: block; + } +} + +.page-versions.is-active { + color: #333; +} + +.page-versions .versions-menu-toggle { + color: inherit; + font-family: inherit; + font-size: inherit; + background: url(../img/chevron.svg) no-repeat; + background-position: right 0.5rem top 50%; + background-size: auto 0.75em; + border: 1px solid transparent; + outline: none; + cursor: pointer; + padding: 0.35rem 1.5rem 0.35rem 0.5rem; + position: relative; + z-index: 1; +} + +.page-versions .versions-menu-toggle::-moz-focus-inner { + border: none; +} + +.page-versions .versions-menu { + border: 1px solid transparent; + background-color: #f0f0f0; + padding: 1.3rem 0.5rem 0.35rem; + position: absolute; + top: 0; + left: 0; + width: 100%; +} + +.page-versions:not(.is-active) .versions-menu { + display: none; +} + +.page-versions .version { + display: block; + line-height: 1; + padding-top: 0.6em; +} + +.page-versions .version.is-current { + display: none; +} + +.page-versions .version.is-missing { + color: #8e8e8e; + text-decoration: none; + font-style: italic; +} diff --git a/src/css/site.css b/src/css/site.css index d4fadc9..ab3a32e 100644 --- a/src/css/site.css +++ b/src/css/site.css @@ -1,3 +1,13 @@ -:root { - /* placeholder */ -} +@import "typeface-roboto.css"; +@import "typeface-roboto-mono.css"; +@import "base.css"; +@import "main.css"; +@import "navigation.css"; +@import "navigation-domain.css"; +@import "navigation-explore.css"; +@import "toolbar.css"; +@import "breadcrumbs.css"; +@import "page-versions.css"; +@import "article.css"; +@import "header.css"; +@import "footer.css"; diff --git a/src/css/toolbar.css b/src/css/toolbar.css new file mode 100644 index 0000000..821e196 --- /dev/null +++ b/src/css/toolbar.css @@ -0,0 +1,88 @@ +:root { + --toolbar-height: 2.5rem; +} + +.toolbar { + color: #5d5d5d; + align-items: center; + background-color: #fafafa; + box-shadow: 0 1px 0 #e1e1e1; + display: flex; + font-size: 0.75rem; + height: var(--toolbar-height); + justify-content: flex-start; + position: sticky; + top: var(--navbar-height); + z-index: 1; +} + +.toolbar a { + text-decoration: none; +} + +.toolbar a, +.toolbar a:hover, +.toolbar a:visited { + color: inherit; +} + +.toolbar a:hover { + text-decoration: underline; +} + +.navigation-toggle { + background: url(../img/menu.svg) no-repeat 50% 47.5%; + background-size: 49%; + border: none; + outline: none; + cursor: pointer; + display: block; + height: 2.5rem; + padding: 0; + width: 2.5rem; + margin-right: -0.25rem; +} + +.navigation-toggle::-moz-focus-inner { + border: none; +} + +@media (min-width: 1024px) { + .navigation-toggle { + display: none; + } +} + +.navigation-toggle.is-active { + background-image: url(../img/close.svg); + background-size: 41.5%; +} + +.home-link { + background: url(../img/home-o.svg) no-repeat 50% 45%; + background-size: 50%; + display: block; + height: 2.5rem; + padding: 0; + width: 2.5rem; +} + +.home-link:hover, +.home-link.is-current { + background-image: url(../img/home.svg); +} + +.edit-this-page { + display: none; + padding-right: 0.5rem; +} + +@media (min-width: 1024px) { + .edit-this-page { + display: block; + } +} + +.toolbar .edit-this-page a { + color: #8e8e8e; +} diff --git a/src/css/typeface-roboto-mono.css b/src/css/typeface-roboto-mono.css new file mode 100644 index 0000000..5d30dc3 --- /dev/null +++ b/src/css/typeface-roboto-mono.css @@ -0,0 +1,21 @@ +@font-face { + font-family: "Roboto Mono"; + font-style: normal; + font-weight: 400; + src: + local("Roboto Mono"), + local("RobotoMono-Regular"), + url(~typeface-roboto-mono/files/roboto-mono-latin-400.woff2) format("woff2"), + url(~typeface-roboto-mono/files/roboto-mono-latin-400.woff) format("woff"); +} + +@font-face { + font-family: "Roboto Mono"; + font-style: normal; + font-weight: 500; + src: + local("Roboto Mono Medium"), + local("RobotoMono-Medium"), + url(~typeface-roboto-mono/files/roboto-mono-latin-500.woff2) format("woff2"), + url(~typeface-roboto-mono/files/roboto-mono-latin-500.woff) format("woff"); +} diff --git a/src/css/typeface-roboto.css b/src/css/typeface-roboto.css new file mode 100644 index 0000000..7825486 --- /dev/null +++ b/src/css/typeface-roboto.css @@ -0,0 +1,43 @@ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 400; + src: + local("Roboto Regular"), + local("Roboto-Regular"), + url(~typeface-roboto/files/roboto-latin-400.woff2) format("woff2"), + url(~typeface-roboto/files/roboto-latin-400.woff) format("woff"); +} + +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 400; + src: + local("Roboto Italic"), + local("Roboto-Italic"), + url(~typeface-roboto/files/roboto-latin-400italic.woff2) format("woff2"), + url(~typeface-roboto/files/roboto-latin-400italic.woff) format("woff"); +} + +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 500; + src: + local("Roboto Medium"), + local("Roboto-Medium"), + url(~typeface-roboto/files/roboto-latin-500.woff2) format("woff2"), + url(~typeface-roboto/files/roboto-latin-500.woff) format("woff"); +} + +@font-face { + font-family: "Roboto"; + font-style: italic; + font-weight: 500; + src: + local("Roboto Medium Italic"), + local("Roboto-MediumItalic"), + url(~typeface-roboto/files/roboto-latin-500italic.woff2) format("woff2"), + url(~typeface-roboto/files/roboto-latin-500italic.woff) format("woff"); +} diff --git a/src/partials/navigation.hbs b/src/partials/navigation.hbs index 5540601..414b04c 100644 --- a/src/partials/navigation.hbs +++ b/src/partials/navigation.hbs @@ -1,6 +1,5 @@ From ea8f43a9d324cf5ca5c7f4141bab0c40b98f0567 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Tue, 2 Jan 2018 17:28:05 -0700 Subject: [PATCH 036/465] add job to CI pipeline to publish UI bundle --- .gitlab-ci.yml | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 16a5c8a..979f0c8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -19,10 +19,22 @@ lint: paths: - node_modules/ script: node_modules/.bin/gulp lint +bundle: + stage: deploy + cache: + policy: pull + paths: + - node_modules/ + script: node_modules/.bin/gulp pack + artifacts: + # automatically expire unless marked as keep from the job page + expire_in: 1 week + paths: + - build/ui-bundle.zip pages: stage: deploy only: - - master + - master@antora/antora-ui-default cache: policy: pull paths: From 2d5fa685a628c5848325c501bcf7c19656dfe18e Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Tue, 2 Jan 2018 17:46:36 -0700 Subject: [PATCH 037/465] don't install yarn in CI as it's already available in the image --- .gitlab-ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 979f0c8..3298198 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -10,7 +10,6 @@ yarn: - node_modules/ - .yarn-cache/ script: - - npm install -g yarn - yarn --cache-folder=.yarn-cache lint: stage: verify From 7f54f86c2339d43f0c961953f974c021b933fc97 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Tue, 2 Jan 2018 18:25:18 -0700 Subject: [PATCH 038/465] keep UI bundle in upstream master; automatically expire for non-master --- .gitlab-ci.yml | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3298198..87076f4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -18,16 +18,30 @@ lint: paths: - node_modules/ script: node_modules/.bin/gulp lint -bundle: +bundle-stable: stage: deploy + only: + - master@antora/antora-ui-default + cache: + policy: pull + paths: + - node_modules/ + script: node_modules/.bin/gulp pack + artifacts: + paths: + - build/ui-bundle.zip +bundle-dev: + stage: deploy + except: + - master cache: policy: pull paths: - node_modules/ script: node_modules/.bin/gulp pack artifacts: - # automatically expire unless marked as keep from the job page - expire_in: 1 week + # automatically expire unless marked "keep" from job page + expire_in: 1 day paths: - build/ui-bundle.zip pages: From a487992169f2279f86d767a844cdc47ac59921a7 Mon Sep 17 00:00:00 2001 From: Sarah White Date: Thu, 14 Dec 2017 18:23:56 -0700 Subject: [PATCH 039/465] add ui development documentation - set up documentation component for Antora - add rough page order to nav.adoc - minor typo fix to README --- README.adoc | 2 +- docs/antora.yml | 5 + docs/modules/ROOT/_attributes.adoc | 4 + docs/modules/ROOT/nav.adoc | 7 + docs/modules/ROOT/pages/_attributes.adoc | 2 + .../ROOT/pages/build-local-project.adoc | 69 ++++++ .../ROOT/pages/development-workflow.adoc | 37 ++++ docs/modules/ROOT/pages/index.adoc | 202 ++++++++++++++++++ .../install-development-prerequisites.adoc | 74 +++++++ .../ROOT/pages/set-up-existing-project.adoc | 67 ++++++ docs/modules/ROOT/pages/stylesheets.adoc | 35 +++ docs/modules/ROOT/pages/templates.adoc | 101 +++++++++ 12 files changed, 604 insertions(+), 1 deletion(-) create mode 100644 docs/antora.yml create mode 100644 docs/modules/ROOT/_attributes.adoc create mode 100644 docs/modules/ROOT/nav.adoc create mode 100644 docs/modules/ROOT/pages/_attributes.adoc create mode 100644 docs/modules/ROOT/pages/build-local-project.adoc create mode 100644 docs/modules/ROOT/pages/development-workflow.adoc create mode 100644 docs/modules/ROOT/pages/index.adoc create mode 100644 docs/modules/ROOT/pages/install-development-prerequisites.adoc create mode 100644 docs/modules/ROOT/pages/set-up-existing-project.adoc create mode 100644 docs/modules/ROOT/pages/stylesheets.adoc create mode 100644 docs/modules/ROOT/pages/templates.adoc diff --git a/README.adoc b/README.adoc index 783e45b..0465cca 100644 --- a/README.adoc +++ b/README.adoc @@ -20,4 +20,4 @@ See link:LICENSE[] to find the full license text. == Authors -Development of Antora is lead and sponsored by OpenDevise Inc. +Development of Antora is led and sponsored by OpenDevise Inc. diff --git a/docs/antora.yml b/docs/antora.yml new file mode 100644 index 0000000..aa929d2 --- /dev/null +++ b/docs/antora.yml @@ -0,0 +1,5 @@ +name: antora-ui-default +title: Antora UI +version: master +nav: +- modules/ROOT/nav.adoc diff --git a/docs/modules/ROOT/_attributes.adoc b/docs/modules/ROOT/_attributes.adoc new file mode 100644 index 0000000..dec438a --- /dev/null +++ b/docs/modules/ROOT/_attributes.adoc @@ -0,0 +1,4 @@ +:attachmentsdir: {moduledir}/assets/attachments +:examplesdir: {moduledir}/examples +:imagesdir: {moduledir}/assets/images +:partialsdir: {moduledir}/pages/_partials diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc new file mode 100644 index 0000000..5d0b702 --- /dev/null +++ b/docs/modules/ROOT/nav.adoc @@ -0,0 +1,7 @@ +.xref:index.adoc[Antora UI] +* xref:development-workflow.adoc[UI Development Best Practices] +* xref:install-development-prerequisites.adoc[Install Development Prerequisites] +* xref:set-up-existing-project.adoc[Set up an Existing UI Project] +* xref:templates.adoc[Work with the Handlebars Templates] +* xref:stylesheets.adoc[Work the CSS Stylesheets] +* xref:build-local-project.adoc[Build a UI Project for Local Preview] diff --git a/docs/modules/ROOT/pages/_attributes.adoc b/docs/modules/ROOT/pages/_attributes.adoc new file mode 100644 index 0000000..fb98244 --- /dev/null +++ b/docs/modules/ROOT/pages/_attributes.adoc @@ -0,0 +1,2 @@ +:moduledir: .. +include::{moduledir}/_attributes.adoc[] diff --git a/docs/modules/ROOT/pages/build-local-project.adoc b/docs/modules/ROOT/pages/build-local-project.adoc new file mode 100644 index 0000000..558794b --- /dev/null +++ b/docs/modules/ROOT/pages/build-local-project.adoc @@ -0,0 +1,69 @@ += Build a UI Project for Local Previewing +ifndef::env-site,env-github[] +include::_attributes.adoc[] +endif::[] +// Settings +:idprefix: +:idseparator: - +:experimental: + +== Build Preview Site + +Once you've modified the site UI, the first thing you'll want to do is check out how it looks. +That's what the files in the [.path]_preview-site/_ folder are for. +This folder contains HTML file fragments that provide a representative sample of content from the site (saving you from having to generate the whole site just to test the UI). +These files should give you an idea of how the UI will look when applied to the actual site. + +The pages in the preview site are assembled using the Handlebars templates and link to the pre-compiled asset files (emulating the behavior of the site generator). +Thus, to look at then, you need to run them through the UI build. + +There are two preview modes available. +You can run the build once and examine the result or you can run the build continuously so you can see changes as you make them. +The next two sections explain how to use these modes. + +=== Build Once + +To build the UI once for preview, then stop, execute the `build-preview` task using the following command: + + $ gulp build:preview + +This task pre-compiles the UI files into the [.path]_build/preview-site/./_ directory. +To view the preview pages, navigate to the HTML pages in the [.path]_build_ directory using your browser (e.g., [.path]_build/index.html_). + +=== Build Continuously + +To avoid the need to run the `build-preview` task over and over, you can use the `preview` command instead to have it run continuously. +This task also launches a local HTTP server so updates get synchronized with the browser (i.e., "`live reload`"). + +To launch the preview server, execute the following command: + + $ gulp preview + +You'll see two URLs listed in the output of this command: + +.... +[BS] Access URLs: + ---------------------------------- + Local: http://localhost:5252 + External: http://192.168.1.7:5252 + ---------------------------------- +[BS] Serving files from: build +[BS] Watching files... +.... + +Navigate to the first one to see the preview site. +While this command is running, any changes you make to the source files will be instantly reflected in the browser. +This works by monitoring the project for changes, running the `build` task if a change is detected, and sending the updates to the browser. + +Press kbd:[Ctrl+C] to stop the preview server and end the continuous build. + +== Package for Previewing + +If you need to package the UI in order to preview the UI on the real site in local development, run the following command: + + $ gulp pack + +The `pack` command also invokes the `lint` command to check that the CSS and JavaScript follow the coding standards. + +The UI bundle will be available at [.path]_build/ui-bundle.zip_. +You can then point Antora at this bundle using the `--theme-archive` flag. diff --git a/docs/modules/ROOT/pages/development-workflow.adoc b/docs/modules/ROOT/pages/development-workflow.adoc new file mode 100644 index 0000000..2d9b787 --- /dev/null +++ b/docs/modules/ROOT/pages/development-workflow.adoc @@ -0,0 +1,37 @@ += UI Development Workflow +ifndef::env-site,env-github[] +include::_attributes.adoc[] +endif::[] +// Settings +:idprefix: +:idseparator: - + +// This section provides information about some of the UI files you'll be modifying and how to prepare and submit those changes. + +All changes pushed to a UI project's master branch can trigger a new release (not described here). +Therefore, you want to make your changes to a development branch and submit it as a pull request (PR) to be approved. +(Even better would be to issue the PR from a fork). +Only when the PR is approved and merged will the new release be triggered. + +== git steps + +Use the following command to create a local development branch named `name-me`: + + $ git checkout -b name-me -t origin/master + +You'll then apply your changes to the UI files. +Once you're done making changes, commit those changes to the local branch: + + $ git commit -a -m "describe your change" + +Then, push your branch to the remote repository: + + $ git push origin name-me + +Finally, navigate to your UI project in your browser and create a new pull request from this branch. + +The maintainer of the UI should review the changes. +If the changes are acceptable, the maintainer will merge the pull request. +As soon as the pull request is merged into master, an automated process will take over to publish a new release for the site generator to use. + +Now that you've got the process down, let's review some of the files you'll be working with in more detail. diff --git a/docs/modules/ROOT/pages/index.adoc b/docs/modules/ROOT/pages/index.adoc new file mode 100644 index 0000000..cf6794d --- /dev/null +++ b/docs/modules/ROOT/pages/index.adoc @@ -0,0 +1,202 @@ += Antora Default UI +// Settings: +:toc: +:toc-title: Contents +:idprefix: +:idseparator: - +:experimental: +:hide-uri-scheme: +ifndef::env-github[:icons: font] +ifdef::env-github[] +:important-caption: :exclamation: +endif::[] +// URIs: +:uri-project: https://gitlab.com/antora/antora-ui-default +:uri-preview: https://antora.gitlab.io/antora-ui-default +:uri-hbs: http://handlebarsjs.com +:uri-gulp: http://gulpjs.com +:uri-yarn: https://yarnpkg.com +:uri-npm: https://npmjs.com +:uri-node: https://nodejs.org +:uri-nvm: https://github.com/creationix/nvm +:uri-nvm-install: {uri-nvm}#installation +:uri-git: https://git-scm.com +:uri-git-dl: {uri-git}/downloads + + +This {uri-project}[project] produces the {uri-preview}[default Antora UI bundle] for a documentation site. +It contains the UI assets (page templates, CSS, JavaScript, etc.) and a build script. +The build can be used to preview the UI locally (featuring live updates), or package it for consumption by the site generator. + +This documentation explains how to use this project to set up, customize and manage a UI for a documentation site generated by the Antora pipeline. +After reading it, you'll be able to: + +* [x] Understand how an Antora UI project is structured. +* [x] Set up your environment to work on the UI project. +* [x] Launch a preview server to visually inspect the UI. +* [x] Adopt a development workflow to share and accept changes to the UI. +* [x] Package a UI for your documentation site that Antora can use. + +== File type and technology overview + +The Antora UI consists of the following file types that are used to structure and style the documentation site pages generated by Antora. + +* Handlebars "`page`" templates (layouts and partials) +* CSS (enhanced using PostCSS) +* JavaScript (UI scripts) +* Images / Graphics (specific to the UI) +* Fonts +* HTML (sample content for previewing the UI) +* UI model (sample data for previewing the UI) + +To understand how the UI works, let's begin by surveying the primary technologies used by the UI. + +Handlebars (file extension: `.hbs`):: +{uri-hbs}[Handlebars] is a "`logic-less`" templating engine used to create HTML from template files. +Templates contain placeholders (i.e., mustache expressions) into which content is injected from a model. +They also accommodate simple logic expressions for repeating content or including it conditionally. + +Gulp (script file: [.path]_gulpfile.js_):: +{uri-gulp}[Gulp] is a build tool for JavaScript projects. +It configures a collection of tasks that can be used to perform automated tasks such as compiling files, running a preview server, or publishing a release. + +Yarn (command: `yarn`):: +{uri-yarn}[Yarn] manages software packages (i.e., software dependencies) that it downloads from {uri-npm}. +The software this project uses includes libraries that handle compilation as well as shared assets such as font files that are distributed as npm packages. +(While npm itself is often used to install Yarn, we do not use npm for any other purpose). + +package.json::: +This file keeps track of the dependencies (described using fuzzy versions) that Yarn should fetch. + +yarn.lock::: +This file contains a report of which dependencies Yarn resolved. +This information ensures that the dependency resolution is reproducible. + +node_modules/::: +A local cache of resolved dependencies that Yarn (or npm) fetches. + +PostCSS:: +This project does not use a CSS preprocessor such as Sass or LESS. +Instead, it relies on normal CSS which is enhanced by a series of postprocessors. +The most common postprocessor backports newer CSS features to older browsers by injecting properties with vendor prefixes. + +== UI project versus UI bundle + +The [.term]*UI project*, the master branch of a git repository, contains the recipe and raw materials for creating an Antora UI bundle. +It includes a build, source files, project files, and dependency information. +This is your development workspace. + +The [.term]*UI bundle*, a distributable archive, provides pre-compiled (interpreted, consolidated, and/or minimized) files that are ready to be used by Antora. + +=== UI project repository structure (master branch) + +You should think of the UI project's master branch as your UI workspace. +It contains the recipe and raw materials for creating a UI, including a build, source files, project files, and dependency information. + +Here's how the files are structured in the UI project: + +[.output] +.... +README.adoc +gulpfile.js +package.json +yarn.lock +src/ + css/ + article.css + footer.css + ... + helpers/ + and.js + ... + img/ + chevron.svg + ... + layouts/ + default.hbs + 404.hbs + partials/ + article.hbs + breadcrumbs.hbs + ... + js/ + 01-navigation.js + ... + vendor/ + highlight.js +preview-site-src/ + index.html + ui-model.yml +tasks/ + lib/ + gulp-prettier-eslint.js + build.js + build-preview.js + format.js + lint-css.js + lint-js.js + pack.js + preview.js +.... + +A Gulp build is used to compile and assemble the UI project files into a UI bundle. + +=== UI bundle structure (releases) + +The UI bundle--a distributable archive--provides files which are ready to be used by Antora. + +When the UI project files are built by Gulp, they are assembled under the [.path]_build/preview-site/../_ directory. +Since the [.path]_build_ directory is generated, it's safe to remove. + +The contents of the UI bundle resembles the UI project's master branch contents, except the bundle doesn't contain any files other than the ones that make up the UI. +This is the content that is used by Antora. + +[.output] +.... +css/ + site.css +font/ + ... +helpers/ + and.js + ... +img/ + chevron.svg + ... +layouts/ + default.hbs + 404.hbs +partials/ + article.hbs + breadcrumbs.hbs + ... +js/ + site.js + vendor/ + highlight.js +.... + +Some of these files have been compiled or aggregated, such as the stylesheets and JavaScript. +The benefit of building the UI files is that the files can be optimized for static inclusion in the site without that optimization getting in the way of UI development. +For example, the UI build can optimize SVGs or add vendor prefixes to the CSS. +Since this optimization is only applied to the pre-compiled files, it doesn't interfere with the web developer's workflow. + +== UI compilation and pipeline consumption overview + +The purpose of an Antora UI project is to get the UI files into a state that Antora can use and to make it reusable. + +The UI is served statically in a production site, but the UI's assets live in a source form in a UI project to accommodate development and simplify maintenance. +When handed off to the Antora pipeline, the UI is in an interim, pre-compiled state. +Specifically, the master branch of the git repository contains the files in source form while releases are used to distribute the files in pre-compiled form. +// These two states (source and pre-compiled) are explained in more detail in the next two sections. + +The responsibility of compiling the UI is shared between a UI project and Antora. +The UI project uses a local build to pre-compile (interpret, consolidate, and/or minimize) the files. +The pre-compiled files are agnostic to Antora's content model, relieving the pipeline from having to deal with this part. +It also allows the UI to be reused. + +The UI project build then packages the UI into a bundle, which Antora consumes. +Antora grabs the bundle (which is managed by the `ui-loader` pipeline package), extracts it, and takes compilation to completion by weaving the content model into the Handlebars templates to make the pages and auxiliary data files. +Antora then copies the remaining UI assets to the site output. + +Now that you have a general idea of the files that make up the UI and how it gets assembled, let's go over how to set up the project, build the UI, and preview it. diff --git a/docs/modules/ROOT/pages/install-development-prerequisites.adoc b/docs/modules/ROOT/pages/install-development-prerequisites.adoc new file mode 100644 index 0000000..13df9fd --- /dev/null +++ b/docs/modules/ROOT/pages/install-development-prerequisites.adoc @@ -0,0 +1,74 @@ += Install UI Development Prerequisites +ifndef::env-site,env-github[] +include::_attributes.adoc[] +endif::[] +// Settings +:idprefix: +:idseparator: - +// URLs +:uri-nvm: https://github.com/creationix/nvm +:uri-node: https://nodejs.org +:uri-gulp: http://gulpjs.com +:uri-yarn: https://yarnpkg.com +:uri-git: https://git-scm.com +:uri-git-dl: {uri-git}/downloads +:uri-nvm-install: {uri-nvm}#installation +// These prerequisite instructions are less detailed than Antora's prerequisite instructions, I don't know if this is a concern or not. +// Did we switch to Node 8 for the UI as well, or is it still 7? + +An Antora UI project is based on tools built atop Node.js (aka Node), namely: + +* {uri-nvm}[nvm] (optional, but strongly recommended) +* {uri-node}[Node] (command: `node`) +* {uri-gulp}[Gulp] (command: `gulp`) +* {uri-yarn}[Yarn] (command: `yarn`) + +You also need {uri-git}[git] (command: `git`) to pull down the project and push updates to it. + +== git + +First, make sure you have git installed. + + $ git --version + +If not, {uri-git-dl}[download and install] the git package for your system. + +== nvm and Node 8.x + +Next, make sure that you have Node 7.8.0 or better installed. +While you can install Node from the official packages, we strongly recommend that you use {uri-nvm}[nvm] (Node Version Manager) to install and manage Node. +Follow the {uri-nvm-install}[nvm installation instructions] to set up nvm on your machine. + +Once you've installed nvm, open a new terminal and install the stable version of Node using the following command: + + $ nvm install node + +You can switch to this version of Node at any time using the following command: + + $ nvm use node + +Check the version to verify you're on Node 7.8.0 or better. + + $ node --version + +== Gulp CLI + +Next, you'll need the Gulp CLI (aka wrapper). +This package provides the `gulp` command which executes the version of Gulp declared by the project. +You should install the Gulp CLI globally (which resolves to a location in your user directory if you're using nvm) using the following command: + + $ npm install -g gulp-cli + +== Yarn + +Finally, you will need Yarn, which is the preferred package manager for the Node ecosystem. +You'll need to use the `npm` command to install Yarn, though this is the last time you'll use the `npm` command. +You should install Yarn globally (which resolves to a location in your user directory if you're using nvm) using the following command: + + $ npm install -g yarn + +Verify Yarn is installed by checking the version: + + $ yarn --version + +Now that you have Node, Yarn, and Gulp installed, you're ready to set up the project. diff --git a/docs/modules/ROOT/pages/set-up-existing-project.adoc b/docs/modules/ROOT/pages/set-up-existing-project.adoc new file mode 100644 index 0000000..2ff8ae2 --- /dev/null +++ b/docs/modules/ROOT/pages/set-up-existing-project.adoc @@ -0,0 +1,67 @@ += Set Up an Existing Antora UI Project +ifndef::env-site,env-github[] +include::_attributes.adoc[] +endif::[] +// Settings +:idprefix: +:idseparator: - +// URLs +:uri-project: https://gitlab.com/antora/antora-ui-default + +Before you can start working on the UI, you need to grab the sources and initialize the project. +The sources can be {uri-project}[Antora's default UI] or an existing UI project structured to work with Antora. + +== Fetch a UI project + +To start, clone the UI project using git: + +[subs=attributes+] + $ git clone {uri-project} && + cd "`basename $_`" + +The example above clones Antora's default UI project and then switches to the project folder on your filesystem. +Stay in this project folder in order to initialize the project using Yarn. + +== Install dependencies + +Next, you'll need to initialize the project. +Initializing the project essentially means downloading and installing the dependencies into the project. +That's the job of Yarn. + +In your terminal, execute the following command (while inside the project folder): + + $ yarn install + +This command installs the dependencies listed in [.path]_package.json_ into the [.path]_node_modules/_ folder inside the project. +This folder does not get included in the UI bundle. +The folder is safe to delete, though Yarn does a great job of managing it. + +You'll notice another file which seems to be relevant here, [.path]_yarn.lock_. +Yarn uses this file to determine which specific version of a dependency to use, since versions in [.path]_package.json_ are typically just a range. +The information in this file makes the build reproducible across different machines and runs. + +If a new dependency must be resolved that isn't yet listed in [.path]_yarn.lock_, Yarn will update this file with the new information when you run `yarn install`. +Therefore, you're advised to commit this file into the repository whenever it changes. + +== Supported build tasks + +Now that the dependencies are installed, you should be able to run the `gulp` command to find out what tasks the build supports: + + $ gulp --tasks-simple + +You should see: + +[.output] +.... +lint:css +lint:js +lint +format +build +build:preview +preview +pack +default +.... + +We'll explain what each of these tasks are for and when to use them. diff --git a/docs/modules/ROOT/pages/stylesheets.adoc b/docs/modules/ROOT/pages/stylesheets.adoc new file mode 100644 index 0000000..5b1e682 --- /dev/null +++ b/docs/modules/ROOT/pages/stylesheets.adoc @@ -0,0 +1,35 @@ += Work with the CSS Stylesheets +ifndef::env-site,env-github[] +include::_attributes.adoc[] +endif::[] +// Settings +:idprefix: +:idseparator: - + +The stylesheets are written in CSS. +These stylesheets utilize CSS variables to keep the CSS DRY and easy to customize. + +== Stylesheet organization and processing + +Within the default UI project, the stylesheet files are separated into modules to help organize the rules and make them easier to find. +The UI build combines and minifies these files into a single file named [.path]_site.css_. +During the build, the CSS is enhanced using PostCSS in much the same way as a CSS preprocessor works, only the modifications are made to the CSS directly. +The modifications mostly center around injecting vendor prefixes for compatibility or backporting new features to more broadly supported syntax. + +== Add a new CSS rule + +Let's consider the case when you want to modify the font size of a section title. + +First, make sure you have set up the project and created a development branch. +Next, open the file [.path]_stylesheets/article.css_ and modify the rule for the section title. + +[source,css] +---- +.doc h1 { + font-size: 2.5rem; + margin-bottom: 1rem; + margin-top: 2rem +} +---- + +Save the file, commit it to git, push the branch, and allow the approval workflow to play out. diff --git a/docs/modules/ROOT/pages/templates.adoc b/docs/modules/ROOT/pages/templates.adoc new file mode 100644 index 0000000..1df9521 --- /dev/null +++ b/docs/modules/ROOT/pages/templates.adoc @@ -0,0 +1,101 @@ += Work with the Handlebars Templates +ifndef::env-site,env-github[] +include::_attributes.adoc[] +endif::[] +// Settings +:idprefix: +:idseparator: - + +Antora combines the Handlebars templates with the converted AsciiDoc content to make the pages in the site. +These "`logic-less`" templates are mostly HTML with some special mustache tags sprinkled in where content is to be inserted. + +== What do the templates do? + +The layout templates, which are stored in [.path]_src/layouts/_, provide the main page structure. +The partial templates, in [.path]_src/partials/_, fill in different regions of a page, such as the navigation and footer. + +The templates read from a model that's populated by Antora. +Places in the template where the model is read are enclosed in `{{` and `}}` markers, aka mustaches (e.g., `+{{title}}+`). +When the `{{` is immediately followed by `>`, that's where the result of a partial is inserted (e.g., `+{{> head }}+`. + +=== Template variables + +*This model is not final.* +*Variable names and purposes may change.* + +Here's an overview of the available model: + +.Variables available to the Handlebars templates +[#template-variables,cols="1m,3"] +|=== +| Name | Description + +| site +| Information about the site. +Properties include url, title, buildNumber, domains, aspect, aspectNav, and swiftypeKey. + +| title +| The page title (also used as the primary heading). + +| contents +| The main article content in HTML format. +Sourced from AsciiDoc and converted to HTML by the Asciidoctor processor. + +| description +| The text of the description attribute in the AsciiDoc header, if specified. + +| keywords +| A comma-separated list of keywords defined in the AsciiDoc header, if specified. + +| domain +| Information about the navigation domain of the current page. +Properties include name, title, type, versioned, version, versions, url, root, and siteAspect. + +| versions +| All versions of the current page, including the current page. +Each entry has the properties url, string, and missing. + +| breadcrumbs +| An array of breadcrumb items that represent the current selection in the navigation tree. + +| uiRootPath +| The path to the root directory of the UI. + +| canonicalUrl +| The canonical URL for the current page. +If there are older versions of the page, the canonical URL is the URL of the latest version. +If this is an aspect page, the canonical URL is the URL of the primary (non-aspect) page. + +| editUrl +| The URL to edit the current page, typically on GitHub. + +| siteRootUrl +| The URL of the site root relative to the current page. +If the site does not have a root component, this value is null. + +| home +| Indicates whether the current page is the home page of the site. + +| navigation +| A collection of navigation links for the current page. +Each navigation item contains the property `text` as well as the optional properties `href` and (child) `items`. +|=== + +This model is likely to grow over time. + +== Modify a template + +Let's consider the case when you want to add a new meta tag inside the HTML head. + +First, make sure you have set up the project and created a development branch. +Next, open the file [.path]_templates/partials/head.hbs_ and add your tag. + +[source,html] +---- + +---- + +Each template file has access to the template model, which exposes information about the current page through variable names. +The variables currently available are listed in <>. + +Save the file, commit it to git, push the branch, and allow the approval workflow to play out. From 0df17639e594f9cca6273ddb6f6a3566af67e94f Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Wed, 10 Jan 2018 02:23:40 -0700 Subject: [PATCH 040/465] revise documentation for accuracy --- docs/antora.yml | 2 +- docs/modules/ROOT/nav.adoc | 10 +- ...cal-project.adoc => build-preview-ui.adoc} | 15 +-- .../ROOT/pages/development-workflow.adoc | 2 +- docs/modules/ROOT/pages/index.adoc | 59 ++++++----- ...-prerequisites.adoc => prerequisites.adoc} | 19 ++-- ...sting-project.adoc => set-up-project.adoc} | 12 +-- docs/modules/ROOT/pages/stylesheets.adoc | 4 +- docs/modules/ROOT/pages/templates.adoc | 98 +++++++++++++------ 9 files changed, 128 insertions(+), 93 deletions(-) rename docs/modules/ROOT/pages/{build-local-project.adoc => build-preview-ui.adoc} (83%) rename docs/modules/ROOT/pages/{install-development-prerequisites.adoc => prerequisites.adoc} (86%) rename docs/modules/ROOT/pages/{set-up-existing-project.adoc => set-up-project.adoc} (91%) diff --git a/docs/antora.yml b/docs/antora.yml index aa929d2..1807fb2 100644 --- a/docs/antora.yml +++ b/docs/antora.yml @@ -1,5 +1,5 @@ name: antora-ui-default -title: Antora UI +title: Antora Default UI version: master nav: - modules/ROOT/nav.adoc diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc index 5d0b702..1c72071 100644 --- a/docs/modules/ROOT/nav.adoc +++ b/docs/modules/ROOT/nav.adoc @@ -1,7 +1,7 @@ -.xref:index.adoc[Antora UI] -* xref:development-workflow.adoc[UI Development Best Practices] -* xref:install-development-prerequisites.adoc[Install Development Prerequisites] -* xref:set-up-existing-project.adoc[Set up an Existing UI Project] +.xref:index.adoc[Antora Default UI] +* xref:prerequisites.adoc[UI Development Prerequisites] +* xref:set-up-project.adoc[Set up a UI Project] +* xref:build-preview-ui.adoc[Build and Preview the UI] * xref:templates.adoc[Work with the Handlebars Templates] * xref:stylesheets.adoc[Work the CSS Stylesheets] -* xref:build-local-project.adoc[Build a UI Project for Local Preview] +* xref:development-workflow.adoc[UI Development Workflow] diff --git a/docs/modules/ROOT/pages/build-local-project.adoc b/docs/modules/ROOT/pages/build-preview-ui.adoc similarity index 83% rename from docs/modules/ROOT/pages/build-local-project.adoc rename to docs/modules/ROOT/pages/build-preview-ui.adoc index 558794b..cc44296 100644 --- a/docs/modules/ROOT/pages/build-local-project.adoc +++ b/docs/modules/ROOT/pages/build-preview-ui.adoc @@ -1,8 +1,8 @@ -= Build a UI Project for Local Previewing += Build a UI Project for Local Preview ifndef::env-site,env-github[] include::_attributes.adoc[] endif::[] -// Settings +// Settings: :idprefix: :idseparator: - :experimental: @@ -10,8 +10,9 @@ endif::[] == Build Preview Site Once you've modified the site UI, the first thing you'll want to do is check out how it looks. -That's what the files in the [.path]_preview-site/_ folder are for. -This folder contains HTML file fragments that provide a representative sample of content from the site (saving you from having to generate the whole site just to test the UI). +That's what the files in the [.path]_preview-site-src/_ folder are for. +This folder contains HTML file fragments that provide a representative sample of content from the site. +The preview saves you from having to generate the whole site just to test the UI. These files should give you an idea of how the UI will look when applied to the actual site. The pages in the preview site are assembled using the Handlebars templates and link to the pre-compiled asset files (emulating the behavior of the site generator). @@ -27,8 +28,8 @@ To build the UI once for preview, then stop, execute the `build-preview` task us $ gulp build:preview -This task pre-compiles the UI files into the [.path]_build/preview-site/./_ directory. -To view the preview pages, navigate to the HTML pages in the [.path]_build_ directory using your browser (e.g., [.path]_build/index.html_). +This task pre-compiles the UI files into the [.path]_public_ directory. +To view the preview pages, navigate to the HTML pages in the [.path]_public_ directory using your browser (e.g., [.path]_public/index.html_). === Build Continuously @@ -66,4 +67,4 @@ If you need to package the UI in order to preview the UI on the real site in loc The `pack` command also invokes the `lint` command to check that the CSS and JavaScript follow the coding standards. The UI bundle will be available at [.path]_build/ui-bundle.zip_. -You can then point Antora at this bundle using the `--theme-archive` flag. +You can then point Antora at this bundle using the `--ui-bundle` command-line option. diff --git a/docs/modules/ROOT/pages/development-workflow.adoc b/docs/modules/ROOT/pages/development-workflow.adoc index 2d9b787..9ce6fc0 100644 --- a/docs/modules/ROOT/pages/development-workflow.adoc +++ b/docs/modules/ROOT/pages/development-workflow.adoc @@ -2,7 +2,7 @@ ifndef::env-site,env-github[] include::_attributes.adoc[] endif::[] -// Settings +// Settings: :idprefix: :idseparator: - diff --git a/docs/modules/ROOT/pages/index.adoc b/docs/modules/ROOT/pages/index.adoc index cf6794d..359fc24 100644 --- a/docs/modules/ROOT/pages/index.adoc +++ b/docs/modules/ROOT/pages/index.adoc @@ -1,17 +1,12 @@ = Antora Default UI // Settings: -:toc: -:toc-title: Contents :idprefix: :idseparator: - :experimental: :hide-uri-scheme: -ifndef::env-github[:icons: font] -ifdef::env-github[] -:important-caption: :exclamation: -endif::[] // URIs: -:uri-project: https://gitlab.com/antora/antora-ui-default +:uri-antora: https://antora.org +:uri-repo: https://gitlab.com/antora/antora-ui-default :uri-preview: https://antora.gitlab.io/antora-ui-default :uri-hbs: http://handlebarsjs.com :uri-gulp: http://gulpjs.com @@ -23,12 +18,11 @@ endif::[] :uri-git: https://git-scm.com :uri-git-dl: {uri-git}/downloads - -This {uri-project}[project] produces the {uri-preview}[default Antora UI bundle] for a documentation site. -It contains the UI assets (page templates, CSS, JavaScript, etc.) and a build script. +This project produces the {uri-preview}[default UI bundle] for documentation sites generated with {uri-antora}[Antora]. +It contains the UI assets (page templates, CSS, JavaScript, images, etc.) and a Gulp build script. The build can be used to preview the UI locally (featuring live updates), or package it for consumption by the site generator. -This documentation explains how to use this project to set up, customize and manage a UI for a documentation site generated by the Antora pipeline. +This documentation explains how to use this project to set up, customize and manage a UI for a documentation site generated with Antora. After reading it, you'll be able to: * [x] Understand how an Antora UI project is structured. @@ -41,20 +35,19 @@ After reading it, you'll be able to: The Antora UI consists of the following file types that are used to structure and style the documentation site pages generated by Antora. -* Handlebars "`page`" templates (layouts and partials) +* Handlebars "`page`" templates (layouts, partials, and helpers) * CSS (enhanced using PostCSS) * JavaScript (UI scripts) * Images / Graphics (specific to the UI) * Fonts -* HTML (sample content for previewing the UI) -* UI model (sample data for previewing the UI) +* Sample content for previewing the UI (HTML and UI model) To understand how the UI works, let's begin by surveying the primary technologies used by the UI. Handlebars (file extension: `.hbs`):: {uri-hbs}[Handlebars] is a "`logic-less`" templating engine used to create HTML from template files. -Templates contain placeholders (i.e., mustache expressions) into which content is injected from a model. -They also accommodate simple logic expressions for repeating content or including it conditionally. +Templates contain placeholders (i.e., mustache expressions like `+{{{page.title}}}+`) into which content is injected from a model. +They also accommodate simple logic expressions for repeating content or including it conditionally (e.g., `+{{#each navigation}}+`) as well as partials (e.g., `+{{> header}}+`). Gulp (script file: [.path]_gulpfile.js_):: {uri-gulp}[Gulp] is a build tool for JavaScript projects. @@ -62,7 +55,7 @@ It configures a collection of tasks that can be used to perform automated tasks Yarn (command: `yarn`):: {uri-yarn}[Yarn] manages software packages (i.e., software dependencies) that it downloads from {uri-npm}. -The software this project uses includes libraries that handle compilation as well as shared assets such as font files that are distributed as npm packages. +Software this project uses includes libraries that handle compilation as well as shared assets such as font files that are distributed as npm packages. (While npm itself is often used to install Yarn, we do not use npm for any other purpose). package.json::: @@ -78,7 +71,7 @@ A local cache of resolved dependencies that Yarn (or npm) fetches. PostCSS:: This project does not use a CSS preprocessor such as Sass or LESS. Instead, it relies on normal CSS which is enhanced by a series of postprocessors. -The most common postprocessor backports newer CSS features to older browsers by injecting properties with vendor prefixes. +The most common postprocessor backports newer CSS features to older browsers by adding properties with vendor prefixes. == UI project versus UI bundle @@ -103,14 +96,16 @@ package.json yarn.lock src/ css/ - article.css - footer.css + base.css + breadcrumbs.css ... helpers/ and.js + eq.js ... img/ - chevron.svg + back.svg + caret.svg ... layouts/ default.hbs @@ -121,6 +116,7 @@ src/ ... js/ 01-navigation.js + 02-fragment-jumper.js ... vendor/ highlight.js @@ -145,8 +141,8 @@ A Gulp build is used to compile and assemble the UI project files into a UI bund The UI bundle--a distributable archive--provides files which are ready to be used by Antora. -When the UI project files are built by Gulp, they are assembled under the [.path]_build/preview-site/../_ directory. -Since the [.path]_build_ directory is generated, it's safe to remove. +When the UI project files are built by Gulp, they are assembled under the [.path]_public_ directory. +Since the [.path]_public_ directory is generated, it's safe to remove. The contents of the UI bundle resembles the UI project's master branch contents, except the bundle doesn't contain any files other than the ones that make up the UI. This is the content that is used by Antora. @@ -159,9 +155,11 @@ font/ ... helpers/ and.js + eq.js ... img/ - chevron.svg + back.svg + caret.svg ... layouts/ default.hbs @@ -179,24 +177,23 @@ js/ Some of these files have been compiled or aggregated, such as the stylesheets and JavaScript. The benefit of building the UI files is that the files can be optimized for static inclusion in the site without that optimization getting in the way of UI development. For example, the UI build can optimize SVGs or add vendor prefixes to the CSS. -Since this optimization is only applied to the pre-compiled files, it doesn't interfere with the web developer's workflow. +Since these optimizations are only applied to the pre-compiled files, they don't interfere with the web developer's workflow. -== UI compilation and pipeline consumption overview +== UI compilation and generator consumption overview The purpose of an Antora UI project is to get the UI files into a state that Antora can use and to make it reusable. The UI is served statically in a production site, but the UI's assets live in a source form in a UI project to accommodate development and simplify maintenance. -When handed off to the Antora pipeline, the UI is in an interim, pre-compiled state. +When handed off to the Antora generator pipeline, the UI is in an interim, pre-compiled state. Specifically, the master branch of the git repository contains the files in source form while releases are used to distribute the files in pre-compiled form. -// These two states (source and pre-compiled) are explained in more detail in the next two sections. The responsibility of compiling the UI is shared between a UI project and Antora. The UI project uses a local build to pre-compile (interpret, consolidate, and/or minimize) the files. -The pre-compiled files are agnostic to Antora's content model, relieving the pipeline from having to deal with this part. +The pre-compiled files are agnostic to Antora's content model, relieving the generator from having to deal with this part. It also allows the UI to be reused. -The UI project build then packages the UI into a bundle, which Antora consumes. -Antora grabs the bundle (which is managed by the `ui-loader` pipeline package), extracts it, and takes compilation to completion by weaving the content model into the Handlebars templates to make the pages and auxiliary data files. +The UI project build then packages the UI into a bundle, which the UI Loader in Antora consumes. +Antora grabs the bundle, extracts it into a UI catalog, and finally takes compilation to completion by weaving the content model into the Handlebars templates to make the pages and auxiliary data files. Antora then copies the remaining UI assets to the site output. Now that you have a general idea of the files that make up the UI and how it gets assembled, let's go over how to set up the project, build the UI, and preview it. diff --git a/docs/modules/ROOT/pages/install-development-prerequisites.adoc b/docs/modules/ROOT/pages/prerequisites.adoc similarity index 86% rename from docs/modules/ROOT/pages/install-development-prerequisites.adoc rename to docs/modules/ROOT/pages/prerequisites.adoc index 13df9fd..f4da144 100644 --- a/docs/modules/ROOT/pages/install-development-prerequisites.adoc +++ b/docs/modules/ROOT/pages/prerequisites.adoc @@ -1,11 +1,11 @@ -= Install UI Development Prerequisites += UI Development Prerequisites ifndef::env-site,env-github[] include::_attributes.adoc[] endif::[] -// Settings +// Settings: :idprefix: :idseparator: - -// URLs +// URIs: :uri-nvm: https://github.com/creationix/nvm :uri-node: https://nodejs.org :uri-gulp: http://gulpjs.com @@ -14,12 +14,11 @@ endif::[] :uri-git-dl: {uri-git}/downloads :uri-nvm-install: {uri-nvm}#installation // These prerequisite instructions are less detailed than Antora's prerequisite instructions, I don't know if this is a concern or not. -// Did we switch to Node 8 for the UI as well, or is it still 7? An Antora UI project is based on tools built atop Node.js (aka Node), namely: -* {uri-nvm}[nvm] (optional, but strongly recommended) * {uri-node}[Node] (command: `node`) + ** {uri-nvm}[nvm] (optional, but strongly recommended) * {uri-gulp}[Gulp] (command: `gulp`) * {uri-yarn}[Yarn] (command: `yarn`) @@ -33,21 +32,21 @@ First, make sure you have git installed. If not, {uri-git-dl}[download and install] the git package for your system. -== nvm and Node 8.x +== Node 8 -Next, make sure that you have Node 7.8.0 or better installed. +Next, make sure that you have Node 8 installed. While you can install Node from the official packages, we strongly recommend that you use {uri-nvm}[nvm] (Node Version Manager) to install and manage Node. Follow the {uri-nvm-install}[nvm installation instructions] to set up nvm on your machine. Once you've installed nvm, open a new terminal and install the stable version of Node using the following command: - $ nvm install node + $ nvm install 8 You can switch to this version of Node at any time using the following command: - $ nvm use node + $ nvm use 8 -Check the version to verify you're on Node 7.8.0 or better. +Check the version to verify you're on Node 8 or better. $ node --version diff --git a/docs/modules/ROOT/pages/set-up-existing-project.adoc b/docs/modules/ROOT/pages/set-up-project.adoc similarity index 91% rename from docs/modules/ROOT/pages/set-up-existing-project.adoc rename to docs/modules/ROOT/pages/set-up-project.adoc index 2ff8ae2..b413de6 100644 --- a/docs/modules/ROOT/pages/set-up-existing-project.adoc +++ b/docs/modules/ROOT/pages/set-up-project.adoc @@ -1,19 +1,19 @@ -= Set Up an Existing Antora UI Project += Set up a UI Project ifndef::env-site,env-github[] include::_attributes.adoc[] endif::[] -// Settings +// Settings: :idprefix: :idseparator: - -// URLs -:uri-project: https://gitlab.com/antora/antora-ui-default +// URIs: +:uri-project: https://gitlab.com/antora/antora-ui-default.git Before you can start working on the UI, you need to grab the sources and initialize the project. The sources can be {uri-project}[Antora's default UI] or an existing UI project structured to work with Antora. -== Fetch a UI project +== Fetch the Default UI project -To start, clone the UI project using git: +To start, clone the default UI project using git: [subs=attributes+] $ git clone {uri-project} && diff --git a/docs/modules/ROOT/pages/stylesheets.adoc b/docs/modules/ROOT/pages/stylesheets.adoc index 5b1e682..7745b35 100644 --- a/docs/modules/ROOT/pages/stylesheets.adoc +++ b/docs/modules/ROOT/pages/stylesheets.adoc @@ -2,7 +2,7 @@ ifndef::env-site,env-github[] include::_attributes.adoc[] endif::[] -// Settings +// Settings: :idprefix: :idseparator: - @@ -21,7 +21,7 @@ The modifications mostly center around injecting vendor prefixes for compatibili Let's consider the case when you want to modify the font size of a section title. First, make sure you have set up the project and created a development branch. -Next, open the file [.path]_stylesheets/article.css_ and modify the rule for the section title. +Next, open the file [.path]_src/css/doc.css_ and modify the rule for the section title. [source,css] ---- diff --git a/docs/modules/ROOT/pages/templates.adoc b/docs/modules/ROOT/pages/templates.adoc index 1df9521..da823db 100644 --- a/docs/modules/ROOT/pages/templates.adoc +++ b/docs/modules/ROOT/pages/templates.adoc @@ -2,7 +2,7 @@ ifndef::env-site,env-github[] include::_attributes.adoc[] endif::[] -// Settings +// Settings: :idprefix: :idseparator: - @@ -15,70 +15,108 @@ The layout templates, which are stored in [.path]_src/layouts/_, provide the mai The partial templates, in [.path]_src/partials/_, fill in different regions of a page, such as the navigation and footer. The templates read from a model that's populated by Antora. -Places in the template where the model is read are enclosed in `{{` and `}}` markers, aka mustaches (e.g., `+{{title}}+`). +Places in the template where the model is read are enclosed in `{{` and `}}` markers or `{{{` and `}}}`, aka mustaches (e.g., `+{{{page.title}}}+`). +Double mustaches escape the content, whereas triple mustaches insert the content verbatim. When the `{{` is immediately followed by `>`, that's where the result of a partial is inserted (e.g., `+{{> head }}+`. === Template variables -*This model is not final.* -*Variable names and purposes may change.* +CAUTION: This model is not final. +Variable names and purposes may change. -Here's an overview of the available model: +Here's an overview of the available UI model: .Variables available to the Handlebars templates -[#template-variables,cols="1m,3"] +[#template-variables-table,cols="1m,3"] |=== | Name | Description | site | Information about the site. -Properties include url, title, buildNumber, domains, aspect, aspectNav, and swiftypeKey. -| title +| site.url +| The base URL of the site, if specified. + +| site.title +| The title of the site. + +| site.components +| A collection of all the components in the site. + +| site.ui +| Information about the site UI. + +| site.ui.defaultLayout +| The default page layout used for this site. + +| site.ui.url +| The absolute base URL of the UI. + +| page +| Information about the current page. + +| page.title | The page title (also used as the primary heading). -| contents +| page.contents | The main article content in HTML format. Sourced from AsciiDoc and converted to HTML by the Asciidoctor processor. -| description +| page.attributes +| AsciiDoc header attributes that are prefixed with `page-`. +The `page-` prefix is dropped from these names. + +| page.description | The text of the description attribute in the AsciiDoc header, if specified. -| keywords +| page.keywords | A comma-separated list of keywords defined in the AsciiDoc header, if specified. -| domain -| Information about the navigation domain of the current page. -Properties include name, title, type, versioned, version, versions, url, root, and siteAspect. +| page.component +| Information about the component for the current page. +Properties include name, title, and versions. + +| page.componentVersion +| Information about the component version for the current page. +Properties include name, title, and url. + +| page.module +| The name of the module for the current page. -| versions +| page.version +| The name of the version for the current page. + +| page.versions | All versions of the current page, including the current page. Each entry has the properties url, string, and missing. -| breadcrumbs +| page.breadcrumbs | An array of breadcrumb items that represent the current selection in the navigation tree. -| uiRootPath -| The path to the root directory of the UI. +| page.navigation +| A collection of navigation links for the current page. +Each navigation item contains the property `content` as well as the optional properties `url` and (child) `items`. -| canonicalUrl +| page.canonicalUrl | The canonical URL for the current page. If there are older versions of the page, the canonical URL is the URL of the latest version. If this is an aspect page, the canonical URL is the URL of the primary (non-aspect) page. -| editUrl +| page.editUrl | The URL to edit the current page, typically on GitHub. -| siteRootUrl -| The URL of the site root relative to the current page. -If the site does not have a root component, this value is null. - -| home +| page.home | Indicates whether the current page is the home page of the site. -| navigation -| A collection of navigation links for the current page. -Each navigation item contains the property `text` as well as the optional properties `href` and (child) `items`. +| page.layout +| The page layout for the current page. + +| uiRootPath +| The path to the root directory of the UI. + +//| siteRootUrl +//| The URL of the site root relative to the current page. +//If the site does not have a root component, this value is null. |=== This model is likely to grow over time. @@ -92,10 +130,10 @@ Next, open the file [.path]_templates/partials/head.hbs_ and add your tag. [source,html] ---- - + ---- Each template file has access to the template model, which exposes information about the current page through variable names. -The variables currently available are listed in <>. +The variables currently available are listed in <>. Save the file, commit it to git, push the branch, and allow the approval workflow to play out. From 1e6f6233a2512764c8dfbec02874210f20472acb Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Wed, 10 Jan 2018 03:09:29 -0700 Subject: [PATCH 041/465] add evaluation tutorial to README - add evaluation tutorial to README - extract URIs as attributes - update intro - update copyright - clarify Node install instructions in docs --- README.adoc | 156 ++++++++++++++++++++- docs/modules/ROOT/pages/prerequisites.adoc | 8 +- 2 files changed, 157 insertions(+), 7 deletions(-) diff --git a/README.adoc b/README.adoc index 0465cca..16e1d7e 100644 --- a/README.adoc +++ b/README.adoc @@ -1,23 +1,171 @@ = Antora Default UI +// Settings: +:experimental: +:hide-uri-scheme: // Project URIs: :uri-project: https://gitlab.com/antora/antora-ui-default :uri-preview: https://antora.gitlab.io/antora-ui-default :uri-ci-pipelines: {uri-project}/pipelines :img-ci-status: {uri-project}/badges/master/pipeline.svg +// External URIs: +:uri-antora: https://antora.org +:uri-git: https://git-scm.com +:uri-git-dl: {uri-git}/downloads +:uri-gulp: http://gulpjs.com +:uri-opendevise: https://opendevise.com +:uri-node: https://nodejs.org +:uri-nvm: https://github.com/creationix/nvm +:uri-nvm-install: {uri-nvm}#installation +:uri-yarn: https://yarnpkg.com image:{img-ci-status}[CI Status (GitLab CI), link={uri-ci-pipelines}] -This project is an archetype that demonstrates how to produce a UI bundle for use in an Antora-based documentation pipeline. +This project is an archetype that demonstrates how to produce a UI bundle for use in a documentation site generated with {uri-antora}[Antora]. +You can see a preview the default UI at {uri-preview}. -You can preview the default UI at {uri-preview}. +== Using the Default UI + +If you want to use the default UI for your Antora-based site, add the following UI configuration to your playbook: + +[source,yaml,subs=attributes+] +---- +ui: + bundle: https://gitlab.com/antora/antora-ui-default/-/jobs/artifacts/master/raw/build/ui-bundle.zip?job=bundle-stable +---- + +Read on to learn how to use your own build of the default UI. + +== Quickstart + +This section offers a basic tutorial for learning how to preview the default UI and bundle it for use with Antora. +A more comprehensive tutorial will be made available in the documentation. + +=== Prerequisites + +To preview and bundle the default UI, you need the following software on your computer: + +* {uri-git}[git] (command: `git`) +* {uri-node}[Node 8] (command: `node`) +* {uri-gulp}[Gulp CLI] (command: `gulp`) +* {uri-yarn}[Yarn] (command: `yarn`) + +==== git + +First, make sure you have git installed. + + $ git --version + +If not, {uri-git-dl}[download and install] the git package for your system. + +==== Node 8 + +Next, make sure that you have Node 8 installed. + + $ node --version + +If this command fails with an error, you don't have Node installed. +If the command doesn't report a Node 8 version (e.g., v8.9.4), you don't have a suitable version of Node installed. + +While you can install Node from the official packages, we strongly recommend that you use {uri-nvm}[nvm] (Node Version Manager) to install and manage Node. +Follow the {uri-nvm-install}[nvm installation instructions] to set up nvm on your machine. + +Once you've installed nvm, open a new terminal and install Node 8 using the following command: + + $ nvm install 8 + +You can switch to this version of Node at any time using the following command: + + $ nvm use 8 + +To make Node 8 the default in new terminals, type: + + $ nvm alias default 8 + +Now that you have Node 8 installed, you can proceed with installing the Gulp CLI and Yarn. + +==== Gulp CLI + +Next, you'll need the Gulp command-line interface (CLI). +This package provides the `gulp` command which executes the version of Gulp declared by the project. + +You should install the Gulp CLI globally (which resolves to a location in your user directory if you're using nvm) using the following command: + + $ npm install -g gulp-cli + +==== Yarn + +Finally, you will need Yarn, which is the preferred package manager for the Node ecosystem. + +You should install Yarn globally (which resolves to a location in your user directory if you're using nvm) using the following command: + + $ npm install -g yarn + +Now that you have the prerequisites installed, you can fetch and build the default UI project. + +=== Cloning and Initializing the Project + +Clone the default UI project using git: + +[subs=attributes+] + $ git clone {uri-project}.git && + cd "`basename $_`" + +The example above clones Antora's default UI project and then switches to the project folder on your filesystem. +Stay in this project folder in order to initialize the project using Yarn. + +You'll use Yarn to install the project's dependencies. +In your terminal, execute the following command (while inside the project folder): + + $ yarn install + +This command installs the dependencies listed in [.path]_package.json_ into the [.path]_node_modules/_ folder inside the project. +This folder does not get included in the UI bundle. + +=== Previewing the UI + +The default UI project is configured to preview offline. +That's what the files in the [.path]_preview-site-src/_ folder are for. +This folder contains HTML file fragments that provide a representative sample of content from the site. + +To build the UI and preview it in a local web server, run the `preview` command: + + $ gulp preview + +You'll see two URLs listed in the output of this command: + +.... +[BS] Access URLs: + ---------------------------------- + Local: http://localhost:5252 + External: http://192.168.1.7:5252 + ---------------------------------- +[BS] Serving files from: build +[BS] Watching files... +.... + +Navigate to the first URL to see the preview site. + +While this command is running, any changes you make to the source files will be instantly reflected in the browser. +This works by monitoring the project for changes, running the `build` task if a change is detected, and sending the updates to the browser. + +Press kbd:[Ctrl+C] to stop the preview server and end the continuous build. + +=== Packaging for Use with Antora + +If you need to package the UI in order to preview the UI on the real site in local development, run the following command: + + $ gulp pack + +The UI bundle will be available at [.path]_build/ui-bundle.zip_. +You can then point Antora at this bundle using the `--ui-bundle` command-line option. == Copyright and License -Copyright (C) 2017 OpenDevise Inc. and the Antora Project. +Copyright (C) 2017-2018 OpenDevise Inc. and the Antora Project. Use of this software is granted under the terms of the https://www.mozilla.org/en-US/MPL/2.0/[Mozilla Public License Version 2.0] (MPL-2.0). See link:LICENSE[] to find the full license text. == Authors -Development of Antora is led and sponsored by OpenDevise Inc. +Development of Antora is led and sponsored by {uri-opendevise}[OpenDevise Inc]. diff --git a/docs/modules/ROOT/pages/prerequisites.adoc b/docs/modules/ROOT/pages/prerequisites.adoc index f4da144..d0fda9a 100644 --- a/docs/modules/ROOT/pages/prerequisites.adoc +++ b/docs/modules/ROOT/pages/prerequisites.adoc @@ -38,7 +38,7 @@ Next, make sure that you have Node 8 installed. While you can install Node from the official packages, we strongly recommend that you use {uri-nvm}[nvm] (Node Version Manager) to install and manage Node. Follow the {uri-nvm-install}[nvm installation instructions] to set up nvm on your machine. -Once you've installed nvm, open a new terminal and install the stable version of Node using the following command: +Once you've installed nvm, open a new terminal and install Node 8 using the following command: $ nvm install 8 @@ -46,9 +46,11 @@ You can switch to this version of Node at any time using the following command: $ nvm use 8 -Check the version to verify you're on Node 8 or better. +To make Node 8 the default in new terminals, type: - $ node --version + $ nvm alias default 8 + +Now that you have Node 8 installed, you can proceed with installing the Gulp CLI and Yarn. == Gulp CLI From e7c23d0f820f316c8745ed947ba4890354b749cf Mon Sep 17 00:00:00 2001 From: Sarah White Date: Wed, 10 Jan 2018 19:11:59 -0700 Subject: [PATCH 042/465] minor copyedits to README and docs --- README.adoc | 16 ++++++++-------- docs/modules/ROOT/nav.adoc | 4 ++-- docs/modules/ROOT/pages/index.adoc | 10 +++++----- docs/modules/ROOT/pages/prerequisites.adoc | 2 +- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/README.adoc b/README.adoc index 16e1d7e..8133049 100644 --- a/README.adoc +++ b/README.adoc @@ -21,11 +21,11 @@ image:{img-ci-status}[CI Status (GitLab CI), link={uri-ci-pipelines}] This project is an archetype that demonstrates how to produce a UI bundle for use in a documentation site generated with {uri-antora}[Antora]. -You can see a preview the default UI at {uri-preview}. +You can see a preview of the default UI at {uri-preview}. -== Using the Default UI +== Use the Default UI -If you want to use the default UI for your Antora-based site, add the following UI configuration to your playbook: +If you want to use the default UI for your Antora-generated site, add the following UI configuration to your playbook: [source,yaml,subs=attributes+] ---- @@ -94,7 +94,7 @@ You should install the Gulp CLI globally (which resolves to a location in your u ==== Yarn -Finally, you will need Yarn, which is the preferred package manager for the Node ecosystem. +Finally, you'll need Yarn, which is the preferred package manager for the Node ecosystem. You should install Yarn globally (which resolves to a location in your user directory if you're using nvm) using the following command: @@ -102,7 +102,7 @@ You should install Yarn globally (which resolves to a location in your user dire Now that you have the prerequisites installed, you can fetch and build the default UI project. -=== Cloning and Initializing the Project +=== Clone and Initialize the UI Project Clone the default UI project using git: @@ -113,7 +113,7 @@ Clone the default UI project using git: The example above clones Antora's default UI project and then switches to the project folder on your filesystem. Stay in this project folder in order to initialize the project using Yarn. -You'll use Yarn to install the project's dependencies. +Use Yarn to install the project's dependencies. In your terminal, execute the following command (while inside the project folder): $ yarn install @@ -121,7 +121,7 @@ In your terminal, execute the following command (while inside the project folder This command installs the dependencies listed in [.path]_package.json_ into the [.path]_node_modules/_ folder inside the project. This folder does not get included in the UI bundle. -=== Previewing the UI +=== Preview the UI The default UI project is configured to preview offline. That's what the files in the [.path]_preview-site-src/_ folder are for. @@ -150,7 +150,7 @@ This works by monitoring the project for changes, running the `build` task if a Press kbd:[Ctrl+C] to stop the preview server and end the continuous build. -=== Packaging for Use with Antora +=== Package for Use with Antora If you need to package the UI in order to preview the UI on the real site in local development, run the following command: diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc index 1c72071..543cbd5 100644 --- a/docs/modules/ROOT/nav.adoc +++ b/docs/modules/ROOT/nav.adoc @@ -2,6 +2,6 @@ * xref:prerequisites.adoc[UI Development Prerequisites] * xref:set-up-project.adoc[Set up a UI Project] * xref:build-preview-ui.adoc[Build and Preview the UI] -* xref:templates.adoc[Work with the Handlebars Templates] -* xref:stylesheets.adoc[Work the CSS Stylesheets] * xref:development-workflow.adoc[UI Development Workflow] +* xref:templates.adoc[Work with the Handlebars Templates] +* xref:stylesheets.adoc[Work with the CSS Stylesheets] diff --git a/docs/modules/ROOT/pages/index.adoc b/docs/modules/ROOT/pages/index.adoc index 359fc24..f4a227e 100644 --- a/docs/modules/ROOT/pages/index.adoc +++ b/docs/modules/ROOT/pages/index.adoc @@ -20,7 +20,7 @@ This project produces the {uri-preview}[default UI bundle] for documentation sites generated with {uri-antora}[Antora]. It contains the UI assets (page templates, CSS, JavaScript, images, etc.) and a Gulp build script. -The build can be used to preview the UI locally (featuring live updates), or package it for consumption by the site generator. +The build can be used to preview the UI locally (featuring live updates), or to package it for consumption by the Antora site generator. This documentation explains how to use this project to set up, customize and manage a UI for a documentation site generated with Antora. After reading it, you'll be able to: @@ -184,16 +184,16 @@ Since these optimizations are only applied to the pre-compiled files, they don't The purpose of an Antora UI project is to get the UI files into a state that Antora can use and to make it reusable. The UI is served statically in a production site, but the UI's assets live in a source form in a UI project to accommodate development and simplify maintenance. -When handed off to the Antora generator pipeline, the UI is in an interim, pre-compiled state. +When handed off to the Antora pipeline, the UI is in an interim, pre-compiled state. Specifically, the master branch of the git repository contains the files in source form while releases are used to distribute the files in pre-compiled form. The responsibility of compiling the UI is shared between a UI project and Antora. -The UI project uses a local build to pre-compile (interpret, consolidate, and/or minimize) the files. +The UI project uses a local build to pre-compile (i.e., interpret, consolidate, and/or minimize) the files. The pre-compiled files are agnostic to Antora's content model, relieving the generator from having to deal with this part. It also allows the UI to be reused. The UI project build then packages the UI into a bundle, which the UI Loader in Antora consumes. -Antora grabs the bundle, extracts it into a UI catalog, and finally takes compilation to completion by weaving the content model into the Handlebars templates to make the pages and auxiliary data files. +Antora grabs the bundle, extracts it into a UI catalog, and takes compilation to completion by weaving the Antora's content model into the Handlebars templates to make the pages and auxiliary data files. Antora then copies the remaining UI assets to the site output. -Now that you have a general idea of the files that make up the UI and how it gets assembled, let's go over how to set up the project, build the UI, and preview it. +Now that you have an overview of the files that make up the UI and how it gets assembled, let's go over how to set up the project, build the UI, and preview it. diff --git a/docs/modules/ROOT/pages/prerequisites.adoc b/docs/modules/ROOT/pages/prerequisites.adoc index d0fda9a..28a0f7b 100644 --- a/docs/modules/ROOT/pages/prerequisites.adoc +++ b/docs/modules/ROOT/pages/prerequisites.adoc @@ -62,7 +62,7 @@ You should install the Gulp CLI globally (which resolves to a location in your u == Yarn -Finally, you will need Yarn, which is the preferred package manager for the Node ecosystem. +Finally, you'll need Yarn, which is the preferred package manager for the Node ecosystem. You'll need to use the `npm` command to install Yarn, though this is the last time you'll use the `npm` command. You should install Yarn globally (which resolves to a location in your user directory if you're using nvm) using the following command: From 7f1216e1fd5f01203fa79c6a2fb0d3728c8fb9b0 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Wed, 10 Jan 2018 20:53:42 -0700 Subject: [PATCH 043/465] rerun yarn in each job in the CI pipeline - only rely on .yarn-cache, not node_modules --- .gitlab-ci.yml | 39 ++++++++++++++++++--------------------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 87076f4..f2fa9f2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -7,26 +7,27 @@ yarn: stage: setup cache: paths: - - node_modules/ - .yarn-cache/ script: - - yarn --cache-folder=.yarn-cache + - &run_yarn + yarn --cache-folder=.yarn-cache --no-progress --pure-lockfile lint: stage: verify - cache: + cache: &pull_cache policy: pull paths: - - node_modules/ - script: node_modules/.bin/gulp lint + - .yarn-cache/ + script: + - *run_yarn + - node_modules/.bin/gulp lint bundle-stable: stage: deploy only: - master@antora/antora-ui-default - cache: - policy: pull - paths: - - node_modules/ - script: node_modules/.bin/gulp pack + cache: *pull_cache + script: + - *run_yarn + - node_modules/.bin/gulp pack artifacts: paths: - build/ui-bundle.zip @@ -34,25 +35,21 @@ bundle-dev: stage: deploy except: - master - cache: - policy: pull - paths: - - node_modules/ - script: node_modules/.bin/gulp pack + cache: *pull_cache + script: + - *run_yarn + - node_modules/.bin/gulp pack artifacts: - # automatically expire unless marked "keep" from job page - expire_in: 1 day + expire_in: 1 day # unless marked as keep from job page paths: - build/ui-bundle.zip pages: stage: deploy only: - master@antora/antora-ui-default - cache: - policy: pull - paths: - - node_modules/ + cache: *pull_cache script: + - *run_yarn - node_modules/.bin/gulp build:preview # FIXME figure out a way to avoid copying these files to preview site - rm -rf public/_/{helpers,layouts,partials} From 275bfc45ce02114f31cd95c8927166732e83129f Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Fri, 12 Jan 2018 04:53:30 -0700 Subject: [PATCH 044/465] fix back icon in Firefox - remove problematic defs from SVG --- src/img/back.svg | 32 ++++---------------------------- 1 file changed, 4 insertions(+), 28 deletions(-) diff --git a/src/img/back.svg b/src/img/back.svg index 6ae0b86..1a66e8d 100644 --- a/src/img/back.svg +++ b/src/img/back.svg @@ -13,27 +13,11 @@ height="100" viewBox="0 0 100 100" version="1.1" - id="svg1087" inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" sodipodi:docname="back.svg" enable-background="new"> -Left arrow - - - - - +Left arrow - + @@ -96,15 +79,8 @@ + transform="translate(-3.926492e-7,-270.54187)"> + d="m 50.000978,280.44162 -40.1010516,40.10025 40.1010516,40.10025 5.6556,-5.65551 -30.434757,-30.44194 h 64.878253 v -8.0056 H 25.221821 l 30.434757,-30.44001 z" /> From 31988bd4536483886eacf35d3ffe26e4aa86d33e Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Wed, 24 Jan 2018 16:54:11 -0700 Subject: [PATCH 045/465] don't include .git at end of clone URL in README --- README.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.adoc b/README.adoc index 8133049..786cc1e 100644 --- a/README.adoc +++ b/README.adoc @@ -107,7 +107,7 @@ Now that you have the prerequisites installed, you can fetch and build the defau Clone the default UI project using git: [subs=attributes+] - $ git clone {uri-project}.git && + $ git clone {uri-project} && cd "`basename $_`" The example above clones Antora's default UI project and then switches to the project folder on your filesystem. From 39aa78360507847c30daca119f18e2c92b75af86 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Thu, 25 Jan 2018 14:09:57 -0700 Subject: [PATCH 046/465] use posix path module in relativize helper --- src/helpers/relativize.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/helpers/relativize.js b/src/helpers/relativize.js index 075b31b..abab118 100644 --- a/src/helpers/relativize.js +++ b/src/helpers/relativize.js @@ -1,6 +1,6 @@ 'use strict' -const path = require('path') +const { posix: path } = require('path') // TODO memoize module.exports = (from, to) => { From aef3e495464b8793ab4f9c1c5e44f8fccfe83dfd Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Wed, 24 Jan 2018 17:40:06 -0700 Subject: [PATCH 047/465] style checklists - hide default bullet - add list marker using CSS - add checklist to example - reset font style for all i.fa elements --- preview-site-src/index.html | 51 ++++++++++++++++++++++++++++++++----- src/css/doc.css | 27 ++++++++++++++++++-- 2 files changed, 69 insertions(+), 9 deletions(-) diff --git a/preview-site-src/index.html b/preview-site-src/index.html index 8866334..dd7df65 100644 --- a/preview-site-src/index.html +++ b/preview-site-src/index.html @@ -47,7 +47,7 @@

Cu solet

const browserify = require('browserify') const buffer = require('vinyl-buffer') const uglify = require('gulp-uglify') -const tap = require('gulp-tap') +const tap = require('gulp-tap') (1) gulp.task('js', () => gulp @@ -63,6 +63,14 @@

Cu solet

) +
+ + + + + +
1Used to wiretap the data in the pipe.
+

Cum dicat putant ne. Est in reque homero principes, meis deleniti mediocrem ad has. @@ -82,7 +90,8 @@

Cu solet

-

Per ea solet civibus inimicus. +

Select File  Open Project to open the project in your IDE. +Per ea solet civibus inimicus. Ferri tacimates constituam sed ex, eu mea munere vituperata constituam. No vel quem admodum, etiam possim voluptatum sed ei. Voluptua singulis pro ei, melius constituto consequuntur eos in, ei ius blandit albucius.

@@ -95,7 +104,6 @@

Liber recus

No sea, at invenire voluptaria mnesarchum has. Ex nam suas nemore dignissim, vel apeirian democritum et. -Natum facilisis theophrastus an duo. At ornatus splendide sed, phaedrum omittantur usu an, vix an noster voluptatibus.

@@ -118,9 +126,38 @@

Liber recus

+

Natum facilisis theophrastus an duo. +No sea, at invenire voluptaria mnesarchum has.

+
+
+
    +
  • +

    ultricies sociosqu tristique integer

    +
  • +
  • +

    lacus volutpat semper porttitor aliquet ornare primis nulla enim

    +
  • +
  • +

    etiam pulvinar inceptos velit quisque aptent himenaeos

    +
  • +
+
+

Eu sed antiopam gloriatur. -Ea mea agam graeci philosophia. -Vis veri graeci legimus ad.

+Ea mea agam graeci philosophia.

+
+
+
    +
  • +

    todo

    +
  • +
  • +

    done!

    +
  • +
+
+
+

Vis veri graeci legimus ad.

@@ -240,7 +277,7 @@

Liber recus

@@ -286,4 +323,4 @@

Voluptua singulis

Eos suscipit scaevola at.

- + \ No newline at end of file diff --git a/src/css/doc.css b/src/css/doc.css index cc955bc..ec7f88d 100644 --- a/src/css/doc.css +++ b/src/css/doc.css @@ -78,6 +78,10 @@ font-weight: 500; } +.doc i.fa { + font-style: normal; +} + /* what about td/th code? */ .doc p code { font-size: 0.85em; @@ -212,7 +216,6 @@ } .doc .admonitionblock .icon i { - font-style: normal; display: inline-flex; align-items: center; height: 100%; @@ -336,6 +339,27 @@ position: absolute; } +.doc ul.checklist { + padding-left: 0.5rem; + list-style: none; +} + +.doc ul.checklist p > i.fa-check-square-o:first-child, +.doc ul.checklist p > i.fa-square-o:first-child { + display: inline-flex; + justify-content: center; + width: 1rem; + margin-right: 0.25rem; +} + +.doc ul.checklist i.fa-check-square-o::before { + content: "\2713"; +} + +.doc ul.checklist i.fa-square-o::before { + content: "\274f"; +} + .doc .olist .olist, .doc .olist .ulist, .doc .olist .dlist, @@ -443,6 +467,5 @@ .menuseq i.caret::before { content: ">"; - font-style: normal; font-weight: 500; } From 4b954db436639d070621064f9abd800df1cc9471 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Wed, 24 Jan 2018 18:06:05 -0700 Subject: [PATCH 048/465] start a style guide; document the checklist --- docs/modules/ROOT/pages/style-guide.adoc | 54 ++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 docs/modules/ROOT/pages/style-guide.adoc diff --git a/docs/modules/ROOT/pages/style-guide.adoc b/docs/modules/ROOT/pages/style-guide.adoc new file mode 100644 index 0000000..6eef7ea --- /dev/null +++ b/docs/modules/ROOT/pages/style-guide.adoc @@ -0,0 +1,54 @@ += Style Guide +ifndef::env-site,env-github[] +include::_attributes.adoc[] +endif::[] +// Settings: +:idprefix: +:idseparator: - + +When creating a UI theme for Antora, there are certain elements in UI that require the support for CSS to work correctly. +This list includes elements in the shell (i.e., frame) and in the document content. +This document identifies these UI elements. + +== UI Shell + +TODO + +== Document Content + +The HTML in the main content area is generated from AsciiDoc using Asciidoctor. +AsciiDoc has numerous content elements that require assistance from CSS to render properly. + +=== Checklists + +A checklist is an unordered list with items that are prefixed with a checkbox marker (checked or unchecked). +Here's an example of AsciiDoc source that produces a checklist: + +[source,asciidoc] +---- +* [ ] todo +* [x] done! +---- + +If font-based icons are enabled (i.e., `icons=font`), the checkbox gets inserted as the first element of the paragraph element that contains the list item text. + +[source,html] +---- +
+
    +
  • +

    todo

    +
  • +
  • +

    done!

    +
  • +
+
+---- + +The recommended approach is to hide the list markers (i.e., `list-style: none`), then add a checkbox glyph on the icon element using either a background image or a before pseudo element. + +Here's how it might appear: + +* [ ] todo +* [*] done! From d1a1d093c8ce89d3f0035a2d2fa6b23512353015 Mon Sep 17 00:00:00 2001 From: Sarah White Date: Thu, 25 Jan 2018 17:44:00 -0700 Subject: [PATCH 049/465] add style guide page to nav.adoc - edit style guide --- docs/modules/ROOT/nav.adoc | 1 + docs/modules/ROOT/pages/style-guide.adoc | 18 +++++++++--------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc index 543cbd5..f9fa8d9 100644 --- a/docs/modules/ROOT/nav.adoc +++ b/docs/modules/ROOT/nav.adoc @@ -4,4 +4,5 @@ * xref:build-preview-ui.adoc[Build and Preview the UI] * xref:development-workflow.adoc[UI Development Workflow] * xref:templates.adoc[Work with the Handlebars Templates] +* xref:style-guide.adoc[UI Element Styles] * xref:stylesheets.adoc[Work with the CSS Stylesheets] diff --git a/docs/modules/ROOT/pages/style-guide.adoc b/docs/modules/ROOT/pages/style-guide.adoc index 6eef7ea..607a3d7 100644 --- a/docs/modules/ROOT/pages/style-guide.adoc +++ b/docs/modules/ROOT/pages/style-guide.adoc @@ -1,4 +1,4 @@ -= Style Guide += UI Element Style Guide ifndef::env-site,env-github[] include::_attributes.adoc[] endif::[] @@ -6,23 +6,23 @@ endif::[] :idprefix: :idseparator: - -When creating a UI theme for Antora, there are certain elements in UI that require the support for CSS to work correctly. +When creating a UI theme for Antora, there are certain elements in the UI that require support from the CSS to work correctly. This list includes elements in the shell (i.e., frame) and in the document content. This document identifies these UI elements. -== UI Shell +//== UI Shell -TODO +// TODO == Document Content The HTML in the main content area is generated from AsciiDoc using Asciidoctor. AsciiDoc has numerous content elements that require assistance from CSS to render properly. -=== Checklists +=== Task lists -A checklist is an unordered list with items that are prefixed with a checkbox marker (checked or unchecked). -Here's an example of AsciiDoc source that produces a checklist: +A task list is an unordered list with items that are prefixed with a checkbox marker (checked or unchecked). +Here's an AsciiDoc source example that produces a task list: [source,asciidoc] ---- @@ -30,7 +30,7 @@ Here's an example of AsciiDoc source that produces a checklist: * [x] done! ---- -If font-based icons are enabled (i.e., `icons=font`), the checkbox gets inserted as the first element of the paragraph element that contains the list item text. +If font-based icons are enabled (`icons=font`), the checkbox gets inserted as the first element of the paragraph element that contains the list item text. [source,html] ---- @@ -46,7 +46,7 @@ If font-based icons are enabled (i.e., `icons=font`), the checkbox gets inserted ---- -The recommended approach is to hide the list markers (i.e., `list-style: none`), then add a checkbox glyph on the icon element using either a background image or a before pseudo element. +The recommended approach is to hide the list markers (`list-style: none`), then add a checkbox glyph on the icon element using either a background image or a `before` pseudo element. Here's how it might appear: From dddda05c7286487d988bc51d76c714e42761c3cd Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Sun, 4 Feb 2018 03:20:25 -0700 Subject: [PATCH 050/465] reword footer text --- src/partials/footer-content.hbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/partials/footer-content.hbs b/src/partials/footer-content.hbs index dead088..cdeeb47 100644 --- a/src/partials/footer-content.hbs +++ b/src/partials/footer-content.hbs @@ -1,4 +1,4 @@

This page was built using the Antora default UI.

-

The source code for this UI is licensed under the MPL-2.0 license.

+

The source code for this UI is licensed under the terms of the MPL-2.0 license.

From b4f0a63f43452e93d9dac120fd1559d0e91fd9d6 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Sat, 3 Feb 2018 18:01:07 -0700 Subject: [PATCH 051/465] look for in-page links anywhere in page - fixes the scroll offset when an in-page link in the site navigation is clicked --- preview-site-src/ui-model.yml | 4 ++-- src/js/02-fragment-jumper.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/preview-site-src/ui-model.yml b/preview-site-src/ui-model.yml index 22bdc87..4273bca 100644 --- a/preview-site-src/ui-model.yml +++ b/preview-site-src/ui-model.yml @@ -79,8 +79,8 @@ page: - title: IDE Integration url: '#' urlType: fragment - - content: Application Tutorial - url: '#' + - content: Liber Recusabo + url: '#liber-recusabo' urlType: fragment - content: Reference url: '#' diff --git a/src/js/02-fragment-jumper.js b/src/js/02-fragment-jumper.js index f680f75..e324227 100644 --- a/src/js/02-fragment-jumper.js +++ b/src/js/02-fragment-jumper.js @@ -28,7 +28,7 @@ window.removeEventListener('load', jumpOnLoad) }) - Array.prototype.slice.call(document.querySelectorAll('.doc a[href^="#"]')).forEach(function (el) { + Array.prototype.slice.call(document.querySelectorAll('a[href^="#"]')).forEach(function (el) { var hash, target if ((hash = el.hash.slice(1)) && (target = document.getElementById(hash))) { el.addEventListener('click', jumpToAnchor.bind(target)) From 976f196eeb78240945c74cb5160c4633b057e98d Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Sat, 3 Feb 2018 18:15:56 -0700 Subject: [PATCH 052/465] add list-style none on inline (flex) lists --- src/css/navigation-explore.css | 1 + src/css/navigation-menu.css | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/css/navigation-explore.css b/src/css/navigation-explore.css index 9389213..85cbcc8 100644 --- a/src/css/navigation-explore.css +++ b/src/css/navigation-explore.css @@ -65,6 +65,7 @@ .navigation-explore .versions { display: flex; flex-wrap: wrap; + list-style: none; padding-left: 0.5rem; } diff --git a/src/css/navigation-menu.css b/src/css/navigation-menu.css index d752341..6dc2374 100644 --- a/src/css/navigation-menu.css +++ b/src/css/navigation-menu.css @@ -24,7 +24,6 @@ html.is-clipped--nav { } .nav-list { - list-style: none; margin: 0; padding: 0; width: 100%; @@ -38,6 +37,7 @@ html.is-clipped--nav { display: flex; align-items: flex-start; flex-wrap: wrap; + list-style: none; } .nav-item .nav-item { From 14bbf71a2a83d16311250b3995e880ec1499dd82 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Sun, 4 Feb 2018 17:03:44 -0700 Subject: [PATCH 053/465] don't assume page.title is set in template --- src/helpers/detag.js | 2 +- src/layouts/404.hbs | 2 +- src/layouts/default.hbs | 2 +- src/partials/article.hbs | 2 ++ 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/helpers/detag.js b/src/helpers/detag.js index 6230d67..ca283a2 100644 --- a/src/helpers/detag.js +++ b/src/helpers/detag.js @@ -1,4 +1,4 @@ 'use strict' const TAG_ALL_RX = /<[^>]+>/g -module.exports = (html) => html.replace(TAG_ALL_RX, '') +module.exports = (html) => html && html.replace(TAG_ALL_RX, '') diff --git a/src/layouts/404.hbs b/src/layouts/404.hbs index 1faa906..56405ac 100644 --- a/src/layouts/404.hbs +++ b/src/layouts/404.hbs @@ -3,7 +3,7 @@ - {{detag page.title}}{{#if site.title}} :: {{site.title}}{{/if}} + {{detag (or page.title 'Page Not Found')}}{{#if site.title}} :: {{site.title}}{{/if}} {{> head}} diff --git a/src/layouts/default.hbs b/src/layouts/default.hbs index 02abf47..850a3b2 100644 --- a/src/layouts/default.hbs +++ b/src/layouts/default.hbs @@ -3,7 +3,7 @@ - {{detag page.title}}{{#if site.title}} :: {{site.title}}{{/if}} + {{detag (or page.title 'Untitled')}}{{#if site.title}} :: {{site.title}}{{/if}} {{#if page.canonicalUrl}} {{/if}} diff --git a/src/partials/article.hbs b/src/partials/article.hbs index cb552ba..a4c23a0 100644 --- a/src/partials/article.hbs +++ b/src/partials/article.hbs @@ -1,4 +1,6 @@
+{{#if page.title}}

{{{page.title}}}

+{{/if}} {{{page.contents}}}
From d3b5347af69c1c848bb6b9c7d5d74bd95834b942 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Sat, 3 Feb 2018 19:14:31 -0700 Subject: [PATCH 054/465] open menu item when activated - open menu item when activated (i.e., clicked) - reorder logic in navigation script to be more intuitive - use single query to find all menu items to open --- src/js/01-navigation.js | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/src/js/01-navigation.js b/src/js/01-navigation.js index 0a1fcb3..96150a0 100644 --- a/src/js/01-navigation.js +++ b/src/js/01-navigation.js @@ -18,8 +18,6 @@ // don't let click events propagate outside of navigation container navContainer.addEventListener('click', concealEvent) - if (currentPageItem) activateCurrentPath(currentPageItem) - find('.nav-menu').forEach(function (navTree) { var panel = navTree.parentElement.dataset.panel find('.nav-item', navTree).forEach(function (item, idx) { @@ -36,17 +34,27 @@ }) }) - if (!state.expandedItems) { - state.expandedItems = getExpandedItems() - saveState() - } + var expandedItems = state.expandedItems || (state.expandedItems = []) - state.expandedItems.forEach(function (itemId) { - var item = document.querySelector('.nav-item[data-id="' + itemId + '"]') - if (item) { + if (expandedItems.length) { + find( + expandedItems + .map(function (itemId) { + return '.nav-item[data-id="' + itemId + '"]' + }) + .join(',') + ).forEach(function (item) { item.classList.add('is-active') - } - }) + }) + } + + if (currentPageItem) { + activateCurrentPath(currentPageItem).forEach(function (itemId) { + if (expandedItems.indexOf(itemId) < 0) { + expandedItems.push(itemId) + } + }) + } saveState() @@ -58,14 +66,18 @@ }) function activateCurrentPath (navItem) { + var ids = [navItem.dataset.id] var ancestorClasses var ancestor = navItem.parentNode while (!(ancestorClasses = ancestor.classList).contains('nav-menu')) { if (ancestor.tagName === 'LI' && ancestorClasses.contains('nav-item')) { ancestorClasses.add('is-active', 'is-current-path') + ids.push(ancestor.dataset.id) } ancestor = ancestor.parentNode } + navItem.classList.add('is-active') + return ids } function toggleNavigation (e) { From 344b1e8dcd075b3ff64fd849b495feb7456168e1 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Sat, 3 Feb 2018 19:17:02 -0700 Subject: [PATCH 055/465] format and consolidate code in navigation script --- src/js/01-navigation.js | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/src/js/01-navigation.js b/src/js/01-navigation.js index 96150a0..c0bb5a9 100644 --- a/src/js/01-navigation.js +++ b/src/js/01-navigation.js @@ -50,9 +50,7 @@ if (currentPageItem) { activateCurrentPath(currentPageItem).forEach(function (itemId) { - if (expandedItems.indexOf(itemId) < 0) { - expandedItems.push(itemId) - } + if (expandedItems.indexOf(itemId) < 0) expandedItems.push(itemId) }) } @@ -81,9 +79,7 @@ } function toggleNavigation (e) { - if (navToggle.classList.contains('is-active')) { - return closeNavigation(e) - } + if (navToggle.classList.contains('is-active')) return closeNavigation(e) document.documentElement.classList.add('is-clipped--nav') navToggle.classList.add('is-active') navContainer.classList.add('is-active') @@ -114,9 +110,7 @@ function getState (component, version) { var data = window.sessionStorage.getItem('nav-state') - if (data) { - return JSON.parse(data) - } + if (data) return JSON.parse(data) } function saveState () { @@ -127,7 +121,6 @@ if (!el) return (parent.scrollTop = scrollPosition) var margin = 10 - var overTheTop = el.offsetTop - scrollPosition < 0 var belowTheBottom = el.offsetTop - scrollPosition + el.offsetHeight > parent.offsetHeight From b178489fa9351e25c2c6eb5616d8155951eb2b64 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Sun, 4 Feb 2018 02:57:38 -0700 Subject: [PATCH 056/465] add Google Analytics tracking code if key is defined in model --- src/partials/footer-scripts.hbs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/partials/footer-scripts.hbs b/src/partials/footer-scripts.hbs index ea2a658..e45a1e5 100644 --- a/src/partials/footer-scripts.hbs +++ b/src/partials/footer-scripts.hbs @@ -1,3 +1,6 @@ +{{#if site.keys.googleAnalytics}} + +{{/if}} From 4bd46fa53bfa288d7ce5aefbd7f6b124874a7126 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Mon, 5 Feb 2018 19:46:39 -0700 Subject: [PATCH 057/465] replace analytics.js with gtag.js for GA tracking --- src/partials/footer-scripts.hbs | 3 --- src/partials/head.hbs | 10 +++++++++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/partials/footer-scripts.hbs b/src/partials/footer-scripts.hbs index e45a1e5..ea2a658 100644 --- a/src/partials/footer-scripts.hbs +++ b/src/partials/footer-scripts.hbs @@ -1,6 +1,3 @@ -{{#if site.keys.googleAnalytics}} - -{{/if}} diff --git a/src/partials/head.hbs b/src/partials/head.hbs index 8036f85..e64c140 100644 --- a/src/partials/head.hbs +++ b/src/partials/head.hbs @@ -1 +1,9 @@ -{{! Add additional tags to head here}} +{{#if site.keys.googleAnalytics}} + + +{{/if}} From 201a860a1a2910340287d5d29faf20c7613b9341 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Tue, 6 Feb 2018 01:35:31 -0700 Subject: [PATCH 058/465] split head partial - split head partial into head-meta and head-scripts - consolidate gtags script --- src/partials/head-meta.hbs | 1 + src/partials/head-scripts.hbs | 6 ++++++ src/partials/head.hbs | 11 ++--------- 3 files changed, 9 insertions(+), 9 deletions(-) create mode 100644 src/partials/head-meta.hbs create mode 100644 src/partials/head-scripts.hbs diff --git a/src/partials/head-meta.hbs b/src/partials/head-meta.hbs new file mode 100644 index 0000000..541516c --- /dev/null +++ b/src/partials/head-meta.hbs @@ -0,0 +1 @@ +{{! Add additional meta tags here}} diff --git a/src/partials/head-scripts.hbs b/src/partials/head-scripts.hbs new file mode 100644 index 0000000..9e7c6ce --- /dev/null +++ b/src/partials/head-scripts.hbs @@ -0,0 +1,6 @@ +{{#if site.keys.googleAnalytics}} +{{#with site.keys.googleAnalytics}} + + +{{/with}} +{{/if}} diff --git a/src/partials/head.hbs b/src/partials/head.hbs index e64c140..b4ee621 100644 --- a/src/partials/head.hbs +++ b/src/partials/head.hbs @@ -1,9 +1,2 @@ -{{#if site.keys.googleAnalytics}} - - -{{/if}} +{{> head-meta}} +{{> head-scripts}} From 3d1a864f926dd9695ac49b3217de4f585c1e3833 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Tue, 6 Feb 2018 03:51:57 -0700 Subject: [PATCH 059/465] tame yarn by piping it to /dev/null --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f2fa9f2..afc19fd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -10,7 +10,7 @@ yarn: - .yarn-cache/ script: - &run_yarn - yarn --cache-folder=.yarn-cache --no-progress --pure-lockfile + yarn --cache-folder=.yarn-cache --pure-lockfile > /dev/null lint: stage: verify cache: &pull_cache From c6325e35c94103f5e8e2c87bc41f2406a3f23d44 Mon Sep 17 00:00:00 2001 From: Sarah White Date: Tue, 6 Feb 2018 11:33:04 -0700 Subject: [PATCH 060/465] update admonition p and code font size - add admonition block to title group - add complex admonition to preview source --- preview-site-src/index.html | 22 +++++++++++++++++++++- src/css/doc.css | 5 +++-- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/preview-site-src/index.html b/preview-site-src/index.html index dd7df65..099aa71 100644 --- a/preview-site-src/index.html +++ b/preview-site-src/index.html @@ -309,6 +309,26 @@

Liber recus

-

I wouldn’t try that if I were you.

+

I wouldn’t try that if I were you.

+
+ + + + + +
+ + +
Key Points to Remember
+
+

If you installed the CLI and the default site generator globally, you can upgrade both of them with the same command.

+
+
+
+
$ npm i -g @antora/cli @antora/site-generator-default
+
+
+
+

Nominavi luptatum eos, an vim hinc philosophia intellegebat. Lorem expetenda pertinacia et nec, wisi illud sonet qui ea. @@ -323,4 +343,4 @@

Voluptua singulis

Eos suscipit scaevola at.

- \ No newline at end of file + diff --git a/src/css/doc.css b/src/css/doc.css index ec7f88d..b9e698d 100644 --- a/src/css/doc.css +++ b/src/css/doc.css @@ -84,7 +84,7 @@ /* what about td/th code? */ .doc p code { - font-size: 0.85em; + font-size: 0.95em; background-color: #fafafa; padding: 0.075rem 0.25rem 0.125rem; border-radius: 0.2rem; @@ -165,7 +165,7 @@ .doc .admonitionblock p, .doc .admonitionblock td.content { - font-size: 0.8rem; + font-size: 0.95rem; } .doc .admonitionblock table { @@ -383,6 +383,7 @@ padding: 0; } +.doc .admonitionblock .title, .doc .exampleblock .title, .doc .literalblock .title, .doc .listingblock .title { From 73c35c026bebc16ed56cf7d1d5e741a8dcf9a557 Mon Sep 17 00:00:00 2001 From: Sarah White Date: Tue, 6 Feb 2018 13:10:43 -0700 Subject: [PATCH 061/465] add admonition section to UI style guide --- docs/modules/ROOT/pages/style-guide.adoc | 35 ++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/docs/modules/ROOT/pages/style-guide.adoc b/docs/modules/ROOT/pages/style-guide.adoc index 607a3d7..11e5831 100644 --- a/docs/modules/ROOT/pages/style-guide.adoc +++ b/docs/modules/ROOT/pages/style-guide.adoc @@ -19,6 +19,41 @@ This document identifies these UI elements. The HTML in the main content area is generated from AsciiDoc using Asciidoctor. AsciiDoc has numerous content elements that require assistance from CSS to render properly. +=== Admonitions + +An admonition block is a table. +The table title element is specified by the block class: tip, note, important, warning, or caution. +Here's an AsciiDoc source example that produces an admonition with the table title warning: + +[source,asciidoc] +---- +WARNING: Watch out! +---- + +If font-based icons are enabled (`icons=font`), the table title text is replaced by the associated icon. + +[source,html] +---- +
+ + + + + +
+ + +
+

Watch out!

+
+
+
+---- + +Here's how it might appear when the title is displayed as text: + +WARNING: Watch out! + === Task lists A task list is an unordered list with items that are prefixed with a checkbox marker (checked or unchecked). From 01cd32d94761f8b9f6fba1221ecccdb093115852 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Tue, 6 Feb 2018 18:01:45 -0700 Subject: [PATCH 062/465] tweak pre, code, and admonition block font sizes --- src/css/doc.css | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/css/doc.css b/src/css/doc.css index b9e698d..ccb2673 100644 --- a/src/css/doc.css +++ b/src/css/doc.css @@ -84,7 +84,7 @@ /* what about td/th code? */ .doc p code { - font-size: 0.95em; + font-size: 0.9em; background-color: #fafafa; padding: 0.075rem 0.25rem 0.125rem; border-radius: 0.2rem; @@ -92,7 +92,7 @@ } .doc pre { - font-size: 0.85rem; + font-size: 0.9rem; /* color: #000; */ line-height: 1.5; } @@ -165,7 +165,11 @@ .doc .admonitionblock p, .doc .admonitionblock td.content { - font-size: 0.95rem; + font-size: 0.9rem; +} + +.doc .admonitionblock pre { + font-size: 0.85rem; } .doc .admonitionblock table { From d7c78e2172b47c7fd8e1b24606409ea0aa2fa149 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Tue, 6 Feb 2018 21:09:28 -0700 Subject: [PATCH 063/465] fix missing component title in breadcrumbs --- src/helpers/not.js | 3 +++ src/partials/breadcrumbs.hbs | 8 ++++---- 2 files changed, 7 insertions(+), 4 deletions(-) create mode 100644 src/helpers/not.js diff --git a/src/helpers/not.js b/src/helpers/not.js new file mode 100644 index 0000000..8b3aa91 --- /dev/null +++ b/src/helpers/not.js @@ -0,0 +1,3 @@ +'use strict' + +module.exports = (val) => !val diff --git a/src/partials/breadcrumbs.hbs b/src/partials/breadcrumbs.hbs index bee715a..20329f8 100644 --- a/src/partials/breadcrumbs.hbs +++ b/src/partials/breadcrumbs.hbs @@ -1,10 +1,10 @@