diff --git a/.bazelrc b/.bazelrc index 57ff8851a0a3..f28f2e2937f0 100644 --- a/.bazelrc +++ b/.bazelrc @@ -40,7 +40,7 @@ test --experimental_ui # Configures script to do version stamping. # See https://docs.bazel.build/versions/master/user-manual.html#flag--workspace_status_command -build:release --workspace_status_command=./tools/bazel-stamp-vars.sh +build:release --workspace_status_command="node ./tools/bazel-stamp-vars.js" ############################### # Typescript / Angular / Sass # diff --git a/.circleci/config.yml b/.circleci/config.yml index 3e3dc8d61400..850cdf24e6a7 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -63,7 +63,7 @@ var_9: &docker-firefox-image # https://circleci.com/docs/2.0/workflows/#using-workspaces-to-share-data-among-jobs var_10: &attach_release_output attach_workspace: - at: dist/releases + at: dist/ # Branch filter that we can specify for jobs that should only run on publish branches. This filter @@ -250,9 +250,9 @@ jobs: # Store the release output in the workspace storage. This means that other jobs # in the same workflow can attach the release output to their job. - persist_to_workspace: - root: dist/releases + root: dist paths: - - "**/*" + - "releases/**/*" # Since there is no UMD bundle that includes everything from the CDK, we need to move # all bundles into a directory. This allows us to store all CDK UMD bundles as job @@ -293,6 +293,9 @@ jobs: # to publish the build snapshots. In order to fix this, we unset the global option. - run: git config --global --unset "url.ssh://git@github.com.insteadof" + # TODO(devversion): Ideally the "build_release_packages" job should build all packages with + # Bazel, but for now we mix up the Gulp and bazel setup, so we need to build the package here. + - run: bazel build src/material-examples:npm_package --config=release - run: ./scripts/circleci/publish-snapshots.sh @@ -320,9 +323,7 @@ jobs: workflows: version: 2 - # Build and test workflow. A workflow includes multiple jobs that run in parallel. All jobs - # that build and test source code should be part of this workflow - build_and_test: + bazel_targets: jobs: - bazel_build_test: filters: *ignore_presubmit_branch_filter @@ -347,7 +348,8 @@ workflows: release_output: jobs: - - build_release_packages + - build_release_packages: + filters: *ignore_presubmit_branch_filter - build_devapp_aot: filters: *ignore_presubmit_branch_filter requires: diff --git a/package.json b/package.json index 5405e93fcb23..a68f42d64fe5 100644 --- a/package.json +++ b/package.json @@ -19,8 +19,6 @@ "e2e": "gulp e2e", "deploy": "gulp deploy:devapp", "webdriver-manager": "webdriver-manager", - "docs": "gulp docs", - "api": "gulp api-docs", "breaking-changes": "gulp breaking-changes", "gulp": "gulp", "stage-release": "ts-node --project tools/release/ tools/release/stage-release.ts", @@ -92,15 +90,10 @@ "gulp-clean": "^0.3.2", "gulp-clean-css": "^3.3.1", "gulp-cli": "^2.0.1", - "gulp-dom": "^0.9.17", - "gulp-flatten": "^0.3.1", - "gulp-highlight-files": "^0.0.5", "gulp-htmlmin": "^3.0.0", "gulp-if": "^2.0.2", - "gulp-markdown": "^1.2.0", "gulp-rename": "^1.2.2", "gulp-sass": "^4.0.2", - "gulp-transform": "^2.0.0", "gulp-util": "^3.0.8", "hammerjs": "^2.0.8", "highlight.js": "^9.11.0", diff --git a/scripts/circleci/publish-snapshots.sh b/scripts/circleci/publish-snapshots.sh index 2e5ec0a06389..5a212175f3d4 100755 --- a/scripts/circleci/publish-snapshots.sh +++ b/scripts/circleci/publish-snapshots.sh @@ -10,9 +10,6 @@ cd $(dirname ${0})/../.. # fetched from the CircleCI workspace storage. ./scripts/deploy/publish-build-artifacts.sh --no-build -# Build the docs output before publishing the docs content. -yarn gulp docs - # Deploy the docs content to the Github repository. We don't want to build the examples # package here again because it's already fetched from the CircleCI workspace storage. ./scripts/deploy/publish-docs-content.sh --no-build diff --git a/scripts/deploy/publish-docs-content.sh b/scripts/deploy/publish-docs-content.sh index 5eb2b5f902dd..e6793e4f8057 100755 --- a/scripts/deploy/publish-docs-content.sh +++ b/scripts/deploy/publish-docs-content.sh @@ -14,11 +14,6 @@ if [ -z ${MATERIAL2_BUILDS_TOKEN} ]; then exit 1 fi -if [[ ! ${*} == *--no-build* ]]; then - $(npm bin)/gulp material-examples:build-release:clean - $(npm bin)/gulp docs -fi - # Path to the project directory. projectPath="$(pwd)" @@ -28,8 +23,8 @@ docsDistPath="${projectPath}/dist/docs" # Path to the cloned docs-content repository. docsContentPath="${projectPath}/tmp/material2-docs-content" -# Path to the release output of the @angular/material-examples package. -examplesPackagePath="${projectPath}/dist/releases/material-examples" +# Path to the release output of the Bazel "@angular/material-examples" NPM package. +examplesPackagePath="$(bazel info bazel-bin)/src/material-examples/npm_package" # Git clone URL for the material2-docs-content repository. docsContentRepoUrl="https://github.com/angular/material2-docs-content" @@ -79,33 +74,12 @@ fi # Remove everything inside of the docs-content repository. rm -Rf ${docsContentPath}/* -echo "Removed everything from the docs-content repository. Copying all files into repository.." - -# Create all folders that need to exist in the docs-content repository. -mkdir ${docsContentPath}/{overview,guides,api,examples,stackblitz,examples-package} - -# Copy API and example files to the docs-content repository. -cp -R ${docsDistPath}/api/* ${docsContentPath}/api -cp -r ${docsDistPath}/examples/* ${docsContentPath}/examples -cp -r ${docsDistPath}/stackblitz/* ${docsContentPath}/stackblitz - -# Copy the @angular/material-examples package to the docs-content repository. -cp -r ${examplesPackagePath}/* ${docsContentPath}/examples-package - -# Copy the license file to the docs-content repository. -cp ${projectPath}/LICENSE ${docsContentPath} - -# Copy all immediate children of the markdown output the guides/ directory. -for guidePath in $(find ${docsDistPath}/markdown/ -maxdepth 1 -type f); do - cp ${guidePath} ${docsContentPath}/guides -done +echo "Removed everything from the docs-content repository. Copying package output.." -# All files that aren't immediate children of the markdown output are overview documents. -for overviewPath in $(find ${docsDistPath}/markdown/ -mindepth 2 -type f); do - cp ${overviewPath} ${docsContentPath}/overview -done +# Copy the package output to the docs-content repository. +cp -R ${examplesPackagePath}/* ${docsContentPath} -echo "Successfully copied all content into the docs-content repository." +echo "Successfully copied package output into the docs-content repository." if [[ $(git ls-remote origin "refs/tags/${buildTagName}") ]]; then echo "Skipping publish of docs-content because tag is already published. Exiting.." diff --git a/tools/bazel-stamp-vars.js b/tools/bazel-stamp-vars.js new file mode 100644 index 000000000000..95f409017678 --- /dev/null +++ b/tools/bazel-stamp-vars.js @@ -0,0 +1,38 @@ +#!/usr/bin/env node + +/** + * Bazel workspace status script that is responsible for creating Bazel stamping variables. + * The stamping variables will be used by the NodeJS Bazel rules to provide proper version + * placeholder replacements. Read more about variable stamping within Bazel: + * https://docs.bazel.build/versions/master/user-manual.html#flag--workspace_status_command + */ + +const spawnSync = require('child_process').spawnSync; +const packageJson = require('../package'); + +const currentCommitSha = getCurrentCommitSha(); + +// The "BUILD_SCM_VERSION" will be picked up by the "npm_package" and "ng_package" rule +// in order to replace the "0.0.0-PLACEHOLDER" with a proper version +console.log(`BUILD_SCM_VERSION ${packageJson.version}-${currentCommitSha.substr(0, 7)}`); +console.log(`BUILD_SCM_COMMIT_SHA ${currentCommitSha}`); +console.log(`BUILD_SCM_BRANCH ${getCurrentBranchName()}`); +console.log(`BUILD_SCM_USER ${getCurrentGitUser()}`); + +/** Returns the commit SHA for the current git HEAD of the project. */ +function getCurrentCommitSha() { + return spawnSync('git', ['rev-parse', 'HEAD']).stdout.toString().trim(); +} + +/** Returns the name of the currently checked out branch of the project. */ +function getCurrentBranchName() { + return spawnSync('git', ['symbolic-ref', '--short', 'HEAD']).stdout.toString().trim(); +} + +/** Returns the name and email of the Git user that creates this release build. */ +function getCurrentGitUser() { + const userName = spawnSync('git', ['config', 'user.name']).stdout.toString().trim(); + const userEmail = spawnSync('git', ['config', 'user.email']).stdout.toString().trim(); + + return `${userName} <${userEmail}>`; +} diff --git a/tools/bazel-stamp-vars.sh b/tools/bazel-stamp-vars.sh deleted file mode 100755 index a58a9f4b989b..000000000000 --- a/tools/bazel-stamp-vars.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/env bash - -# Generates the data used by the stamping feature in bazel. -# This script is intended to be used as a Bazel workspace_status_command, which -# prints out a set of key-value pairs. -# See https://github.com/angular/angular/blob/master/docs/BAZEL.md for more explanation -set -u -e -E -o pipefail - -function onError { - echo "Failed to execute: $0" - echo "" -} - -# Setup crash trap -trap 'onError' ERR - -if [[ "$(git tag)" == "" ]]; then - echo "No git tags found, can't stamp the build." - echo "Either fetch the tags:" - echo " git fetch git@github.com:angular/material2.git --tags" - echo "or build without stamping by giving an empty workspace_status_command:" - echo " bazel build --workspace_status_command= ..." - echo "" -fi - -# Gets a human-readable name for HEAD, e.g. "6.0.0-rc.0-15-g846ddfa" -git_version_raw=$(git describe --abbrev=7 --tags HEAD) - -# Find out if there are any uncommitted local changes -if [[ $(git status --untracked-files=no --porcelain) ]]; then - local_changes_suffix=".with-local-changes"; -else - local_changes_suffix=""; -fi - -# Reformat `git describe` version string into a more semver-ish string -# From: 5.2.0-rc.0-57-g757f886 -# To: 5.2.0-rc.0+57.sha-757f886 -# Or: 5.2.0-rc.0+57.sha-757f886.with-local-changes - -semver_style_version="$(echo ${git_version_raw} | sed -E 's/-([0-9]+)-g/+\1.sha-/g')" -version_stamp="${semver_style_version}${local_changes_suffix}" -echo "BUILD_SCM_VERSION ${version_stamp}" diff --git a/tools/gulp/gulpfile.ts b/tools/gulp/gulpfile.ts index 130d02a88def..2bbb4b9d2dcc 100644 --- a/tools/gulp/gulpfile.ts +++ b/tools/gulp/gulpfile.ts @@ -21,7 +21,6 @@ import './tasks/ci'; import './tasks/clean'; import './tasks/default'; import './tasks/development'; -import './tasks/docs'; import './tasks/example-module'; import './tasks/lint'; import './tasks/material-release'; diff --git a/tools/gulp/tasks/docs.ts b/tools/gulp/tasks/docs.ts deleted file mode 100644 index 37a2fd6de5e9..000000000000 --- a/tools/gulp/tasks/docs.ts +++ /dev/null @@ -1,216 +0,0 @@ -import {task, src, dest} from 'gulp'; -import {Dgeni} from 'dgeni'; -import * as path from 'path'; -import {buildConfig, sequenceTask} from 'material2-build-tools'; -import {apiDocsPackage} from '../../dgeni/index'; - -// There are no type definitions available for these imports. -const markdown = require('gulp-markdown'); -const transform = require('gulp-transform'); -const highlight = require('gulp-highlight-files'); -const rename = require('gulp-rename'); -const flatten = require('gulp-flatten'); -const htmlmin = require('gulp-htmlmin'); -const hljs = require('highlight.js'); -const dom = require('gulp-dom'); - -const {outputDir, packagesDir} = buildConfig; - -const DIST_DOCS = path.join(outputDir, 'docs'); - -// Our docs contain comments of the form `` which serve as placeholders where -// example code should be inserted. We replace these comments with divs that have a -// `material-docs-example` attribute which can be used to locate the divs and initialize the example -// viewer. -const EXAMPLE_PATTERN = //g; - -// Markdown files can contain links to other markdown files. -// Most of those links don't work in the Material docs, because the paths are invalid in the -// documentation page. Using a RegExp to rewrite links in HTML files to work in the docs. -const LINK_PATTERN = /(]*) href="([^"]*)"/g; - -// HTML tags in the markdown generated files that should receive a .docs-markdown-${tagName} class -// for styling purposes. -const MARKDOWN_TAGS_TO_CLASS_ALIAS = [ - 'a', - 'h1', - 'h2', - 'h3', - 'h4', - 'h5', - 'li', - 'ol', - 'p', - 'table', - 'tbody', - 'td', - 'th', - 'tr', - 'ul', - 'pre', - 'code', -]; - -// Options for the html-minifier that minifies the generated HTML files. -const htmlMinifierOptions = { - collapseWhitespace: true, - removeComments: true, - caseSensitive: true, - removeAttributeQuotes: false -}; - -const markdownOptions = { - // Add syntax highlight using highlight.js - highlight: (code: string, language: string): string => { - if (language) { - // highlight.js expects "typescript" written out, while Github supports "ts". - let lang = language.toLowerCase() === 'ts' ? 'typescript' : language; - return hljs.highlight(lang, code).value; - } - - return code; - } -}; - -/** Generate all docs content. */ -task('docs', sequenceTask( - [ - 'markdown-docs-material', - 'markdown-docs-cdk', - 'build-highlighted-examples', - 'build-examples-module', - 'api-docs', - 'copy-stackblitz-examples' - ], - 'minify-html-files' -)); - -/** Generates html files from the markdown overviews and guides for material. */ -task('markdown-docs-material', () => { - // Extend the renderer for custom heading anchor rendering - markdown.marked.Renderer.prototype.heading = (text: string, level: number): string => { - if (level === 3 || level === 4) { - const escapedText = text.toLowerCase().replace(/[^\w]+/g, '-'); - return ` - - - ${text} - - `; - } else { - return `${text}`; - } - }; - - return src(['src/lib/**/!(README).md', 'guides/*.md']) - .pipe(rename({prefix: 'material-'})) - .pipe(markdown(markdownOptions)) - .pipe(transform(transformMarkdownFiles)) - .pipe(dom(createTagNameAliaser('docs-markdown'))) - .pipe(dest('dist/docs/markdown')); -}); - -// TODO(jelbourn): figure out how to avoid duplicating this task w/ material while still -// disambiguating the output. -/** Generates html files from the markdown overviews and guides for the cdk. */ -task('markdown-docs-cdk', () => { - return src(['src/cdk/**/!(README).md']) - .pipe(rename({prefix: 'cdk-'})) - .pipe(markdown(markdownOptions)) - .pipe(transform(transformMarkdownFiles)) - .pipe(dom(createTagNameAliaser('docs-markdown'))) - .pipe(dest('dist/docs/markdown')); -}); - -/** - * Creates syntax-highlighted html files from the examples to be used for the source view of - * live examples on the docs site. - */ -task('build-highlighted-examples', () => { - // rename files to fit format: [filename]-[filetype].html - const renameFile = (filePath: any) => { - const extension = filePath.extname.slice(1); - filePath.basename = `${filePath.basename}-${extension}`; - }; - - return src('src/material-examples/**/*.+(html|css|ts)') - .pipe(flatten()) - .pipe(rename(renameFile)) - .pipe(highlight()) - .pipe(dest('dist/docs/examples')); -}); - -/** Generates API docs from the source JsDoc using dgeni. */ -task('api-docs', () => { - const docs = new Dgeni([apiDocsPackage]); - return docs.generate(); -}); - -/** - * Minifies all HTML files that have been generated. The HTML files for the - * highlighted examples can be skipped, because it won't have any effect. - */ -task('minify-html-files', () => { - return src('dist/docs/+(api|markdown)/**/*.html') - .pipe(htmlmin(htmlMinifierOptions)) - .pipe(dest('dist/docs')); -}); - -/** Copies example sources to be used as stackblitz assets for the docs site. */ -task('copy-stackblitz-examples', () => { - src(path.join(packagesDir, 'material-examples', '**/*')) - .pipe(dest(path.join(DIST_DOCS, 'stackblitz', 'examples'))); -}); - -/** Updates the markdown file's content to work inside of the docs app. */ -function transformMarkdownFiles(buffer: Buffer, file: any): string { - let content = buffer.toString('utf-8'); - - // Replace comments with HTML elements. - content = content.replace(EXAMPLE_PATTERN, (_match: string, name: string) => - `
` - ); - - // Replace the URL in anchor elements inside of compiled markdown files. - content = content.replace(LINK_PATTERN, (_match: string, head: string, link: string) => - // The head is the first match of the RegExp and is necessary to ensure that the RegExp matches - // an anchor element. The head will be then used to re-create the existing anchor element. - // If the head is not prepended to the replaced value, then the first match will be lost. - `${head} href="${fixMarkdownDocLinks(link, file.path)}"` - ); - - // Finally, wrap the entire generated in a doc in a div with a specific class. - return `
${content}
`; -} - -/** Fixes paths in the markdown files to work in the material-docs-io. */ -function fixMarkdownDocLinks(link: string, filePath: string): string { - // As for now, only markdown links that are relative and inside of the guides/ directory - // will be rewritten. - if (!filePath.includes(path.normalize('guides/')) || link.startsWith('http')) { - return link; - } - - let baseName = path.basename(link, path.extname(link)); - - // Temporary link the file to the /guide URL because that's the route where the - // guides can be loaded in the Material docs. - return `guide/${baseName}`; -} - -/** - * Returns a function to be called with an HTML document as its context that aliases HTML tags by - * adding a class consisting of a prefix + the tag name. - * @param classPrefix The prefix to use for the alias class. - */ -function createTagNameAliaser(classPrefix: string) { - return function(this: HTMLElement) { - MARKDOWN_TAGS_TO_CLASS_ALIAS.forEach(tag => { - Array.from(this.querySelectorAll(tag)).forEach(el => { - el.classList.add(`${classPrefix}-${tag}`); - }); - }); - - return this; - }; -} diff --git a/yarn.lock b/yarn.lock index 0a1bd176fd7e..69e68f38edba 100644 --- a/yarn.lock +++ b/yarn.lock @@ -852,11 +852,6 @@ a-sync-waterfall@^1.0.0: resolved "https://registry.yarnpkg.com/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz#75b6b6aa72598b497a125e7a2770f14f4c8a1fa7" integrity sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA== -abab@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e" - integrity sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4= - abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" @@ -875,18 +870,6 @@ accepts@~1.3.4, accepts@~1.3.5: mime-types "~2.1.18" negotiator "0.6.1" -acorn-globals@^1.0.4: - version "1.0.9" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-1.0.9.tgz#55bb5e98691507b74579d0513413217c380c54cf" - integrity sha1-VbtemGkVB7dFedBRNBMhfDgMVM8= - dependencies: - acorn "^2.1.0" - -acorn@^2.1.0, acorn@^2.4.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7" - integrity sha1-q259nYhqrKiwhbwzEreaGYQz8Oc= - addressparser@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/addressparser/-/addressparser-1.0.1.tgz#47afbe1a2a9262191db6838e4fd1d39b40821746" @@ -1140,11 +1123,6 @@ array-each@^1.0.1: resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8= -array-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= - 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" @@ -2547,11 +2525,6 @@ content-disposition@0.5.2: resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ= -content-type-parser@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.2.tgz#caabe80623e63638b2502fd4c7f12ff4ce2352e7" - integrity sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ== - content-type@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" @@ -2851,18 +2824,6 @@ cssesc@^0.1.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" integrity sha1-yBSQPkViM3GgR3tAEJqq++6t27Q= -cssom@0.3.x, "cssom@>= 0.3.0 < 0.4.0": - version "0.3.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.4.tgz#8cd52e8a3acfd68d3aed38ee0a640177d2f9d797" - integrity sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog== - -"cssstyle@>= 0.2.36 < 0.3.0": - version "0.2.37" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54" - integrity sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ= - dependencies: - cssom "0.3.x" - csv-streamify@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/csv-streamify/-/csv-streamify-3.0.4.tgz#4cb614c57e3f299cca17b63fdcb4ad167777f47a" @@ -2918,7 +2879,7 @@ date-format@^1.2.0: resolved "https://registry.yarnpkg.com/date-format/-/date-format-1.2.0.tgz#615e828e233dd1ab9bb9ae0950e0ceccfa6ecad8" integrity sha1-YV6CjiM90aubua4JUODOzPpuytg= -dateformat@^1.0.11, dateformat@^1.0.7-1.2.3: +dateformat@^1.0.7-1.2.3: version "1.0.12" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9" integrity sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk= @@ -3548,7 +3509,7 @@ escodegen@1.8.x: optionalDependencies: source-map "~0.2.0" -escodegen@1.x.x, escodegen@^1.6.1: +escodegen@1.x.x: version "1.11.0" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz#b27a9389481d5bfd5bec76f7bb1eb3f8f4556589" integrity sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw== @@ -4853,32 +4814,6 @@ gulp-cli@^2.0.1: v8flags "^3.0.1" yargs "^7.1.0" -gulp-dom@^0.9.17: - version "0.9.17" - resolved "https://registry.yarnpkg.com/gulp-dom/-/gulp-dom-0.9.17.tgz#4a23c625b5da820bb73d4405459319c9922383ca" - integrity sha1-SiPGJbXaggu3PUQFRZMZyZIjg8o= - dependencies: - gulp-util "3.0.7" - jsdom "9.8.3" - through2 "2.0.1" - -gulp-flatten@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/gulp-flatten/-/gulp-flatten-0.3.1.tgz#51e7fec13a33c404578d18c1589d1b5bc45fe1d6" - integrity sha1-Uef+wTozxARXjRjBWJ0bW8Rf4dY= - dependencies: - gulp-util "^3.0.7" - through2 "^2.0.0" - -gulp-highlight-files@^0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/gulp-highlight-files/-/gulp-highlight-files-0.0.5.tgz#b24f4937785b1d9f179594d95b7d88f1a794fdc8" - integrity sha512-lGLApyg6ycB45MWsLx9WbsAv0iTPxGTUH+Lq8evAXUXCFBPITG2JmLxQ3OYWA1/AOItDeAX5yza1HdLlaIXIPA== - dependencies: - gulp-util "^3.0.8" - highlight.js "^9.12.0" - through2 "^2.0.3" - gulp-htmlmin@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/gulp-htmlmin/-/gulp-htmlmin-3.0.0.tgz#19ea8002d1231d6b1f18a12d20f2a66a77770fb3" @@ -4900,15 +4835,6 @@ gulp-if@^2.0.2: ternary-stream "^2.0.1" through2 "^2.0.1" -gulp-markdown@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/gulp-markdown/-/gulp-markdown-1.2.0.tgz#37cdc61379fb039841fa6cab4984a8e79128a772" - integrity sha1-N83GE3n7A5hB+myrSYSo55Eop3I= - dependencies: - gulp-util "^3.0.0" - marked "^0.3.2" - through2 "^2.0.0" - gulp-match@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/gulp-match/-/gulp-match-1.0.3.tgz#91c7c0d7f29becd6606d57d80a7f8776a87aba8e" @@ -4935,14 +4861,6 @@ gulp-sass@^4.0.2: through2 "^2.0.0" vinyl-sourcemaps-apply "^0.2.0" -gulp-transform@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/gulp-transform/-/gulp-transform-2.0.0.tgz#7ac7e3e3e06ed7ebc52847b9b4e2a3686b22e5a2" - integrity sha1-esfj4+Bu1+vFKEe5tOKjaGsi5aI= - dependencies: - gulp-util "^3.0.8" - lodash "^4.17.4" - gulp-util@*, gulp-util@^3.0.0, gulp-util@^3.0.7, gulp-util@^3.0.8: version "3.0.8" resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f" @@ -4967,30 +4885,6 @@ gulp-util@*, gulp-util@^3.0.0, gulp-util@^3.0.7, gulp-util@^3.0.8: through2 "^2.0.0" vinyl "^0.5.0" -gulp-util@3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.7.tgz#78925c4b8f8b49005ac01a011c557e6218941cbb" - integrity sha1-eJJcS4+LSQBawBoBHFV+YhiUHLs= - dependencies: - array-differ "^1.0.0" - array-uniq "^1.0.2" - beeper "^1.0.0" - chalk "^1.0.0" - dateformat "^1.0.11" - 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-util@^2.2.14: version "2.2.20" resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-2.2.20.tgz#d7146e5728910bd8f047a6b0b1e549bc22dbd64c" @@ -5191,7 +5085,7 @@ header-case@^1.0.0: no-case "^2.2.0" upper-case "^1.1.3" -highlight.js@^9.11.0, highlight.js@^9.12.0: +highlight.js@^9.11.0: version "9.13.1" resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.13.1.tgz#054586d53a6863311168488a0f58d6c505ce641e" integrity sha512-Sc28JNQNDzaH6PORtRLMvif9RSn1mYuOoX3omVjnb0+HbpPygU2ALBI0R/wsiqCb4/fcp07Gdo8g+fhtFrQl6A== @@ -5226,13 +5120,6 @@ hosted-git-info@^2.1.4: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== -html-encoding-sniffer@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" - integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== - dependencies: - whatwg-encoding "^1.0.1" - html-minifier@^3.0.3: version "3.5.21" resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" @@ -5386,7 +5273,7 @@ iconv-lite@0.4.23: dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@0.4.24, iconv-lite@^0.4.13, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.11: +iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.11: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -6145,32 +6032,6 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= -jsdom@9.8.3: - version "9.8.3" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-9.8.3.tgz#fde29c109c32a1131e0b6c65914e64198f97c370" - integrity sha1-/eKcEJwyoRMeC2xlkU5kGY+Xw3A= - dependencies: - abab "^1.0.0" - acorn "^2.4.0" - acorn-globals "^1.0.4" - array-equal "^1.0.0" - content-type-parser "^1.0.1" - cssom ">= 0.3.0 < 0.4.0" - cssstyle ">= 0.2.36 < 0.3.0" - escodegen "^1.6.1" - html-encoding-sniffer "^1.0.1" - iconv-lite "^0.4.13" - nwmatcher ">= 1.3.7 < 2.0.0" - parse5 "^1.5.1" - request "^2.55.0" - sax "^1.1.4" - symbol-tree ">= 3.1.0 < 4.0.0" - tough-cookie "^2.3.1" - webidl-conversions "^3.0.1" - whatwg-encoding "^1.0.1" - whatwg-url "^3.0.0" - xml-name-validator ">= 2.0.1 < 3.0.0" - jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -7899,11 +7760,6 @@ nunjucks@^3.1.6: optionalDependencies: chokidar "^2.0.0" -"nwmatcher@>= 1.3.7 < 2.0.0": - version "1.4.4" - resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.4.tgz#2285631f34a95f0d0395cd900c96ed39b58f346e" - integrity sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ== - oauth-sign@~0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" @@ -8298,11 +8154,6 @@ parse-passwd@^1.0.0: resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= -parse5@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" - integrity sha1-m387DeMr543CQBsXVzzK8Pb1nZQ= - parse5@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" @@ -8773,7 +8624,7 @@ pseudomap@^1.0.2: resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= -psl@^1.1.24, psl@^1.1.28: +psl@^1.1.24: version "1.1.29" resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67" integrity sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ== @@ -8800,7 +8651,7 @@ punycode@1.4.1, punycode@^1.3.2, punycode@^1.4.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= -punycode@^2.1.0, punycode@^2.1.1: +punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== @@ -9264,7 +9115,7 @@ request@2.75.x: tough-cookie "~2.3.0" tunnel-agent "~0.4.1" -request@2.88.0, request@^2.0.0, request@^2.55.0, request@^2.72.0, request@^2.74.0, request@^2.79.0, request@^2.81.0, request@^2.85.0, request@^2.87.0, request@^2.88.0: +request@2.88.0, request@^2.0.0, request@^2.72.0, request@^2.74.0, request@^2.79.0, request@^2.81.0, request@^2.85.0, request@^2.87.0, request@^2.88.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== @@ -9575,7 +9426,7 @@ saucelabs@^1.4.0, saucelabs@^1.5.0: dependencies: https-proxy-agent "^2.2.1" -sax@>=0.6.0, sax@^1.1.4, sax@^1.2.4: +sax@>=0.6.0, sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== @@ -10612,11 +10463,6 @@ symbol-observable@1.0.1: resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ= -"symbol-tree@>= 3.1.0 < 4.0.0": - version "3.2.2" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" - integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY= - systemjs@0.19.43: version "0.19.43" resolved "https://registry.yarnpkg.com/systemjs/-/systemjs-0.19.43.tgz#9902ce5bdaaba03413575902c6bb18bad2ddab8e" @@ -10854,14 +10700,6 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" -tough-cookie@^2.3.1: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - tough-cookie@~2.3.0: version "2.3.4" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" @@ -10884,11 +10722,6 @@ toxic@^1.0.0: dependencies: lodash "^4.17.10" -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= - "traverse@>=0.3.0 <0.4": version "0.3.9" resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9" @@ -11613,11 +11446,6 @@ webdriver-manager@^12.0.6: semver "^5.3.0" xml2js "^0.4.17" -webidl-conversions@^3.0.0, webidl-conversions@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= - websocket-driver@>=0.5.1: version "0.7.0" resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb" @@ -11631,21 +11459,6 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg== -whatwg-encoding@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - -whatwg-url@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-3.1.0.tgz#7bdcae490f921aef6451fb6739ec6bbd8e907bf6" - integrity sha1-e9yuSQ+SGu9kUftnOexrvY6Qe/Y= - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - when@^3.7.5, when@^3.7.7: version "3.7.8" resolved "https://registry.yarnpkg.com/when/-/when-3.7.8.tgz#c7130b6a7ea04693e842cdc9e7a1f2aa39a39f82" @@ -11850,11 +11663,6 @@ xhr2@^0.1.4: resolved "https://registry.yarnpkg.com/xhr2/-/xhr2-0.1.4.tgz#7f87658847716db5026323812f818cadab387a5f" integrity sha1-f4dliEdxbbUCYyOBL4GMras4el8= -"xml-name-validator@>= 2.0.1 < 3.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635" - integrity sha1-TYuPHszTQZqjYgYb7O9RXh5VljU= - xml2js@^0.4.17: version "0.4.19" resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7"