From a8171c57845e9d72d1dae3eef173c5251739f333 Mon Sep 17 00:00:00 2001 From: Paul McLanahan Date: Thu, 7 Jun 2018 11:52:53 -0400 Subject: [PATCH] Switch from django-pipeline to gulp tasks for asset processing (#5618) * Move from django-pipeline to Gulp for static-assets * Use Gulp tasks to compile less and sass * Use Gulp tasks to concatinate files into bundles * Use Gulp tasks to minify files for deployment * Use Gulp tasks for development to watch for changes * Use BrowserSync to serve development static files and refresh the in-progress page * Update Docker setup to use multi-stage build * Update Makefile to build and run the docker setup * Update docs to recommend Docker-based development * Update deployment and testing to also use the Makefile * Add rebuild of SASS bundles when library files change * Add an intermediate build directory just for LESS and SASS * Avoid issues with ambiguous imports when .css and .scss in the same directory * Set deployment docker image in git env var script --- .circleci/config.yml | 32 +- .gitignore | 3 +- Dockerfile | 137 + Jenkinsfile | 8 - Makefile | 118 +- bedrock/base/pipeline_compressors.py | 10 - bedrock/base/pipeline_storage.py | 15 - bedrock/base/templates/404.html | 2 +- bedrock/base/templates/500.html | 2 +- .../base/templates/base-pebbles-basic.html | 2 +- bedrock/base/templates/base-pebbles.html | 16 +- bedrock/base/templates/base-resp.html | 14 +- .../templates/includes/google-analytics.html | 2 +- bedrock/base/templatetags/helpers.py | 26 + .../etc/firefox/retention/thank-you-a.html | 4 +- .../etc/firefox/retention/thank-you-b.html | 4 +- .../firefox/retention/thank-you-referral.html | 4 +- .../templates/firefox/accounts-features.html | 4 +- .../firefox/templates/firefox/accounts.html | 4 +- bedrock/firefox/templates/firefox/all.html | 4 +- .../templates/firefox/channel/base.html | 2 +- .../templates/firefox/dev-firstrun.html | 4 +- .../templates/firefox/dev-whatsnew.html | 2 +- .../templates/firefox/developer/firstrun.html | 2 +- .../templates/firefox/developer/index.html | 4 +- .../templates/firefox/developer/whatsnew.html | 2 +- .../templates/firefox/enterprise/index.html | 2 +- .../firefox/enterprise/signup-thanks.html | 2 +- .../templates/firefox/enterprise/signup.html | 2 +- .../firefox/facebookcontainer/index.html | 6 +- .../templates/firefox/features/base.html | 4 +- .../templates/firefox/features/bookmarks.html | 2 +- .../templates/firefox/features/fast.html | 2 +- .../firefox/features/independent.html | 2 +- .../templates/firefox/features/index.html | 2 +- .../templates/firefox/features/memory.html | 2 +- .../firefox/features/password-manager.html | 2 +- .../firefox/features/private-browsing.html | 2 +- .../templates/firefox/features/send-tabs.html | 6 +- .../templates/firefox/features/sync.html | 6 +- .../templates/firefox/feedback/happy.html | 4 +- .../templates/firefox/feedback/unhappy.html | 4 +- .../firefox/firstrun/base-pebbles.html | 4 +- .../templates/firefox/firstrun/base.html | 4 +- .../firefox/firstrun/facebook-container.html | 2 +- .../firefox/firstrun/firstrun-quantum.html | 6 +- .../templates/firefox/firstrun/index.html | 4 +- bedrock/firefox/templates/firefox/home.html | 8 +- .../templates/firefox/installer-help.html | 4 +- bedrock/firefox/templates/firefox/mobile.html | 4 +- .../firefox/templates/firefox/new/base.html | 4 +- .../firefox/new/berlin/base-herz.html | 2 +- .../templates/firefox/new/berlin/base.html | 2 +- .../firefox/new/berlin/scene1-b.html | 4 +- .../firefox/new/berlin/scene1-herz.html | 2 +- .../templates/firefox/new/berlin/scene1.html | 4 +- .../firefox/new/berlin/scene2-b.html | 2 +- .../firefox/new/berlin/scene2-herz.html | 4 +- .../templates/firefox/new/berlin/scene2.html | 4 +- .../templates/firefox/new/portland/base.html | 2 +- .../firefox/new/portland/scene1-fast.html | 2 +- .../firefox/new/portland/scene1-safe.html | 2 +- .../firefox/new/portland/scene1.html | 2 +- .../firefox/new/portland/scene2.html | 4 +- .../firefox/new/reggie-watts/base.html | 2 +- .../firefox/new/reggie-watts/scene1.html | 2 +- .../firefox/new/reggie-watts/scene2.html | 4 +- .../firefox/templates/firefox/new/scene1.html | 4 +- .../firefox/templates/firefox/new/scene2.html | 6 +- .../templates/firefox/new/wait-face/base.html | 2 +- .../firefox/new/wait-face/scene1.html | 2 +- .../firefox/new/wait-face/scene2.html | 4 +- .../templates/firefox/nightly_firstrun.html | 2 +- .../templates/firefox/nightly_whatsnew.html | 4 +- .../firefox/organizations/organizations.html | 2 +- .../firefox/releases/aurora-notes.html | 2 +- .../templates/firefox/releases/index.html | 2 +- .../firefox/releases/release-notes.html | 4 +- .../firefox/releases/system_requirements.html | 2 +- bedrock/firefox/templates/firefox/switch.html | 4 +- .../firefox/templates/firefox/testflight.html | 2 +- .../firefox/tracking-protection-tour.html | 4 +- .../firefox/unsupported-systems.html | 2 +- .../firefox/whatsnew/base-pebbles.html | 4 +- .../templates/firefox/whatsnew/base.html | 4 +- .../fx57/base-whatsnew-57-letter.html | 2 +- .../firefox/whatsnew/fx57/whatsnew-57.html | 2 +- .../templates/firefox/whatsnew/index.html | 4 +- .../templates/firefox/whatsnew/index.id.html | 4 +- .../firefox/whatsnew/index.zh-TW.html | 4 +- .../firefox/whatsnew/whatsnew-fx60.html | 4 +- .../firefox/whatsnew/whatsnew-fxa.html | 6 +- .../foundation/annualreport/2011.html | 6 +- .../foundation/annualreport/2011faq.html | 4 +- .../foundation/annualreport/2012/faq.html | 2 +- .../foundation/annualreport/2012/index.html | 4 +- .../foundation/annualreport/2013/faq.html | 2 +- .../foundation/annualreport/2013/index.html | 4 +- .../foundation/annualreport/2014/faq.html | 2 +- .../foundation/annualreport/2014/index.html | 4 +- .../foundation/annualreport/2015/faq.html | 2 +- .../foundation/annualreport/2015/index.html | 2 +- .../foundation/annualreport/2016/index.html | 2 +- .../templates/foundation/base-resp.html | 2 +- bedrock/grants/templates/grants/base.html | 2 +- bedrock/legal/templates/legal/base-resp.html | 2 +- bedrock/legal/templates/legal/eula.html | 2 +- .../templates/legal/eula/firefox-2-eula.html | 2 +- .../templates/legal/eula/firefox-3-eula.html | 2 +- .../legal/eula/thunderbird-1.5-eula.html | 2 +- .../legal/eula/thunderbird-2-eula.html | 2 +- .../legal/templates/legal/fraud-report.html | 4 +- .../management/commands/debundle_templates.py | 60 + .../commands/static_bundles_json.py | 31 + .../templates/mozorg/about-base-resp.html | 2 +- bedrock/mozorg/templates/mozorg/about.html | 4 +- .../mozorg/about/forums/cancellation.html | 2 +- .../mozorg/about/forums/etiquette.html | 2 +- .../templates/mozorg/about/forums/forums.html | 2 +- .../policies/commit/access-policy.html | 2 +- .../policies/commit/requirements.html | 2 +- .../templates/mozorg/about/history.html | 4 +- .../templates/mozorg/about/leadership.html | 4 +- .../templates/mozorg/about/manifesto.html | 4 +- .../mozorg/about/policy/lean-data.html | 2 +- .../mozorg/about/policy/patents/guide.html | 4 +- .../mozorg/about/policy/patents/index.html | 4 +- .../about/policy/patents/license-1.0.html | 4 +- .../mozorg/about/policy/patents/license.html | 4 +- .../about/policy/transparency/index.html | 6 +- .../policy/transparency/report-base.html | 6 +- bedrock/mozorg/templates/mozorg/book.html | 2 +- .../mozorg/templates/mozorg/browser-test.html | 2 +- .../mozorg/contact/contact-base.html | 4 +- .../mozorg/contribute/contribute-base.html | 4 +- .../mozorg/contribute/contribute-embed.html | 8 +- .../templates/mozorg/contribute/friends.html | 4 +- .../templates/mozorg/contribute/index.html | 4 +- .../templates/mozorg/contribute/signup.html | 4 +- .../mozorg/contribute/stories-base.html | 2 +- .../studentambassadors/landing.html | 2 +- .../contribute/tasks/taskview-base.html | 4 +- bedrock/mozorg/templates/mozorg/credits.html | 2 +- .../mozorg/templates/mozorg/csrf-failure.html | 2 +- .../mozorg/developer/css-grid-demo.html | 4 +- .../templates/mozorg/developer/index.html | 4 +- .../mozorg/templates/mozorg/home/home-a.html | 4 +- .../mozorg/templates/mozorg/home/home.html | 4 +- .../internet-health/decentralization.html | 4 +- .../internet-health/digital-inclusion.html | 4 +- .../mozorg/internet-health/index.html | 4 +- .../internet-health/open-innovation.html | 4 +- .../internet-health/privacy-security.html | 8 +- .../mozorg/internet-health/web-literacy.html | 4 +- bedrock/mozorg/templates/mozorg/itu.html | 2 +- bedrock/mozorg/templates/mozorg/mission.html | 4 +- .../mozorg/templates/mozorg/moss/base.html | 2 +- .../mozorg/mpl/1.1/annotated/index.html | 2 +- .../mozorg/templates/mozorg/mpl/1.1/faq.html | 2 +- .../templates/mozorg/mpl/1.1/index.html | 2 +- .../mozorg/mpl/2.0/combining-mpl-and-gpl.html | 2 +- .../templates/mozorg/mpl/2.0/differences.html | 2 +- .../mozorg/templates/mozorg/mpl/2.0/faq.html | 2 +- .../templates/mozorg/mpl/2.0/index.html | 2 +- .../mpl/2.0/permissive-code-into-mpl.html | 2 +- .../mozorg/mpl/2.0/revision-faq.html | 2 +- .../templates/mozorg/mpl/headers/index.html | 2 +- .../templates/mozorg/mpl/historical.html | 2 +- .../mozorg/templates/mozorg/mpl/index.html | 2 +- .../templates/mozorg/mpl/license-policy.html | 2 +- .../mozorg/templates/mozorg/namespaces.html | 2 +- .../mozorg/partnerships-distribution.html | 2 +- .../mozorg/templates/mozorg/plugincheck.html | 4 +- .../mozorg/templates/mozorg/powered-by.html | 2 +- .../mozorg/projects/mozilla-based.html | 2 +- .../mozorg/templates/mozorg/technology.html | 4 +- .../newsletter/templates/newsletter/base.html | 2 +- .../templates/newsletter/developer.html | 4 +- .../templates/newsletter/firefox.html | 4 +- .../templates/newsletter/mozilla.html | 4 +- .../newsletter/one_newsletter_signup.html | 2 +- .../newsletter/opt-out-confirmation.html | 4 +- .../press/templates/press/press-inquiry.html | 2 +- .../templates/press/speaker-request.html | 4 +- .../templates/privacy/base-quantum.html | 4 +- .../privacy/templates/privacy/base-resp.html | 4 +- bedrock/privacy/templates/privacy/base.html | 37 - .../templates/privacy/notices/facebook.html | 2 +- .../notices/firefox-cliqz-quantum.html | 2 +- .../privacy/notices/firefox-quantum.html | 2 +- bedrock/security/templates/security/base.html | 2 +- .../security/bug-bounty/hall-of-fame.html | 4 +- .../security/bug-bounty/web-hall-of-fame.html | 4 +- bedrock/settings/__init__.py | 6 +- bedrock/settings/base.py | 44 +- .../templates/styleguide/index.html | 2 +- bin/bootstrap.sh | 4 + bin/docker-compose.sh | 5 + docker-compose.yml | 88 + docker/bin/build_images.sh | 86 - docker/bin/build_staticfiles.sh | 4 +- docker/bin/cleanup_after_functional_tests.sh | 6 +- docker/bin/docker_build.sh | 51 - docker/bin/push2deis.sh | 5 +- docker/bin/push2dockerhub.sh | 25 +- docker/bin/run_integration_tests.sh | 18 +- docker/bin/run_tests.sh | 6 +- docker/bin/set_git_env_vars.sh | 5 + docker/dockerfiles/bedrock_base | 28 - docker/dockerfiles/bedrock_build | 84 - docker/dockerfiles/bedrock_code | 23 - docker/dockerfiles/bedrock_demo | 11 - docker/dockerfiles/bedrock_dev | 13 - docker/dockerfiles/bedrock_dev_final | 9 - docker/dockerfiles/bedrock_l10n | 9 - docker/dockerfiles/bedrock_test | 11 - docs/install.rst | 167 +- docs/pipeline.rst | 2 +- docs/redirects.rst | 2 +- docs/testing.rst | 2 +- gulpfile.js | 366 ++- jenkins/default.groovy | 23 +- jenkins/utils.groovy | 9 +- media/css/protocol/protocol.scss | 2 +- package.json | 33 +- requirements/base.txt | 13 +- requirements/compiled.txt | 7 - requirements/dev.txt | 93 +- requirements/docker.txt | 41 - requirements/prod.txt | 39 +- requirements/test.txt | 44 - static-bundles.json | 1389 +++++++++++ static/.gitignore | 4 - yarn.lock | 2215 ++++++++++++++++- 234 files changed, 4908 insertions(+), 1157 deletions(-) create mode 100644 Dockerfile delete mode 100644 bedrock/base/pipeline_compressors.py delete mode 100644 bedrock/base/pipeline_storage.py create mode 100644 bedrock/mozorg/management/commands/debundle_templates.py create mode 100644 bedrock/mozorg/management/commands/static_bundles_json.py delete mode 100644 bedrock/privacy/templates/privacy/base.html create mode 100755 bin/docker-compose.sh create mode 100644 docker-compose.yml delete mode 100755 docker/bin/build_images.sh delete mode 100755 docker/bin/docker_build.sh delete mode 100644 docker/dockerfiles/bedrock_base delete mode 100644 docker/dockerfiles/bedrock_build delete mode 100644 docker/dockerfiles/bedrock_code delete mode 100644 docker/dockerfiles/bedrock_demo delete mode 100644 docker/dockerfiles/bedrock_dev delete mode 100644 docker/dockerfiles/bedrock_dev_final delete mode 100644 docker/dockerfiles/bedrock_l10n delete mode 100644 docker/dockerfiles/bedrock_test delete mode 100644 requirements/compiled.txt delete mode 100644 requirements/docker.txt delete mode 100644 requirements/test.txt create mode 100644 static-bundles.json delete mode 100644 static/.gitignore diff --git a/.circleci/config.yml b/.circleci/config.yml index 2ed8813871..66bb4ac781 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,40 +1,18 @@ version: 2 jobs: test_py: - machine: - image: circleci/classic:201710-01 + docker: + - image: circleci/python:2.7-stretch steps: - checkout - - run: - name: Git Submodule - command: | - git submodule sync - git submodule update --init --recursive - echo "$CIRCLE_SHA1" > .current-git-hash - - restore_cache: - keys: - - v1-docker-layers-{{ checksum ".current-git-hash" }} - - v1-docker-layers- + - setup_remote_docker - run: name: Python Tests - command: | - if [[ -e docker-cache/images.tar ]]; then docker load --input docker-cache/images.tar; fi - docker/bin/build_images.sh --test - docker/bin/run_tests.sh - mkdir -p docker-cache - docker save -o docker-cache/images.tar \ - "mozorg/bedrock_base:${CIRCLE_SHA1}" \ - "mozorg/bedrock_build:${CIRCLE_SHA1}" \ - "mozorg/bedrock_code:${CIRCLE_SHA1}" \ - "mozorg/bedrock_test:${CIRCLE_SHA1}" - - save_cache: - key: v1-docker-layers-{{ checksum ".current-git-hash" }} - paths: - - docker-cache + command: make clean test-image test_js: docker: - - image: circleci/node:6.11.4-browsers + - image: "circleci/node:6.11.4-browsers" steps: - checkout - restore_cache: diff --git a/.gitignore b/.gitignore index 55334a8a44..1b8ecd6603 100644 --- a/.gitignore +++ b/.gitignore @@ -48,9 +48,10 @@ tests/functional/driver.log tests/functional/assets .eslintcache .docker-build* -Dockerfile-* root_files/sitemap.xml root_files/default-urls.json node_modules package-lock.json .vscode/ +static_build +static_final diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000..fdcab31605 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,137 @@ +######## +# assets builder and dev server +# +FROM node:8-slim AS assets + +ENV PATH=/app/node_modules/.bin:$PATH +WORKDIR /app + +# copy dependency definitions +COPY package.json yarn.lock ./ + +# install dependencies +RUN yarn install --pure-lockfile +RUN yarn global add gulp-cli@2.0.1 + +# copy supporting files and media +COPY .eslintrc.js .stylelintrc \ + gulpfile.js static-bundles.json ./ +COPY ./media ./media + + +######## +# Python dependencies builder +# +FROM python:2-stretch AS python-builder + +WORKDIR /app +ENV LANG=C.UTF-8 +ENV PYTHONDONTWRITEBYTECODE=1 +ENV PYTHONUNBUFFERED=1 +ENV PATH="/venv/bin:$PATH" + +COPY docker/bin/apt-install /usr/local/bin/ +RUN apt-install gettext build-essential libxml2-dev libxslt1-dev libxslt1.1 + +RUN virtualenv /venv + +COPY requirements/base.txt requirements/prod.txt ./requirements/ + +# Install Python deps +RUN pip install --no-cache-dir -r requirements/prod.txt + + +######## +# django app container +# +FROM python:2-slim-stretch AS app-base + +# Extra python env +ENV PYTHONDONTWRITEBYTECODE=1 +ENV PYTHONUNBUFFERED=1 +ENV PIP_DISABLE_PIP_VERSION_CHECK=1 +ENV PATH="/venv/bin:$PATH" + +# add non-priviledged user +RUN adduser --uid 1000 --disabled-password --gecos '' --no-create-home webdev + +WORKDIR /app +EXPOSE 8000 +CMD ["./bin/run.sh"] + +COPY docker/bin/apt-install /usr/local/bin/ +RUN apt-install gettext libxslt1.1 git + +# copy in Python environment +COPY --from=python-builder /venv /venv + +# changes infrequently +COPY ./bin ./bin +COPY ./etc ./etc +COPY ./lib ./lib +COPY ./root_files ./root_files +COPY ./scripts ./scripts +COPY ./wsgi ./wsgi +COPY manage.py LICENSE newrelic.ini contribute.json ./ + +# changes more frequently +COPY ./docker ./docker +COPY ./vendor-local ./vendor-local +COPY ./bedrock ./bedrock +COPY ./media ./media + + +######## +# expanded webapp image for testing and dev +# +FROM app-base AS devapp + +CMD ["./bin/run-tests.sh"] + +COPY requirements/base.txt requirements/dev.txt ./requirements/ +RUN pip install --no-cache-dir -r requirements/dev.txt +COPY ./setup.cfg ./ +COPY ./tests ./tests + +# get fresh database +RUN ./bin/run-db-download.py --force + +# get fresh l10n files +RUN ./manage.py l10n_update + +# generate the sitemaps +RUN ./manage.py update_sitemaps + +RUN chown webdev.webdev -R . +USER webdev + + +######## +# build production assets +# +FROM assets AS assets-release +RUN gulp build --production + + +######## +# final image for deployment +# +FROM app-base AS release + +COPY --from=assets-release /app/static_final /app/static_final +RUN honcho run --env docker/envfiles/prod.env docker/bin/build_staticfiles.sh + +# build args +ARG GIT_SHA=latest +ARG BRANCH_NAME=master +ENV GIT_SHA=${GIT_SHA} +ENV BRANCH_NAME=${BRANCH_NAME} + +# rely on build args +RUN bin/run-sync-all.sh + +RUN echo "${GIT_SHA}" > ./static/revision.txt + +# Change User +RUN chown webdev.webdev -R . +USER webdev diff --git a/Jenkinsfile b/Jenkinsfile index 054c0b13c9..b3ca97bb6c 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -50,14 +50,6 @@ def loadBranch(String branch) { node { stage ('Prepare') { checkout scm - sh 'git submodule sync' - sh 'git submodule update --init --recursive' - // clean up - sh 'make clean' - // save the files for later - stash name: 'scripts', includes: 'bin/,docker/' - stash name: 'tests', includes: 'tests/,requirements/' - stash 'workspace' } loadBranch(env.BRANCH_NAME) } diff --git a/Makefile b/Makefile index 58a691e19e..a8d105e39e 100644 --- a/Makefile +++ b/Makefile @@ -1,80 +1,100 @@ -BASE_IMG_NAME = bedrock_base -DEV_IMG_NAME = bedrock_dev -GIT_SHA = $(shell git rev-parse HEAD) -FINAL_IMG_NAME = bedrock_dev_final:${GIT_SHA} +DC_CI = "bin/docker-compose.sh" +DC = $(shell which docker-compose) -default: +default: help + @echo "" @echo "You need to specify a subcommand." @exit 1 help: - @echo "build - build docker containers for dev" - @echo "run - docker-compose up the entire system for dev" + @echo "build - build docker images for dev" + @echo "run - docker-compose up the entire system for dev" @echo "" - @echo "clean - remove all build, test, coverage and Python artifacts" - @echo "test - run unit tests" - @echo "sync-all - sync external data to local database" - @echo "test-image - run tests on the code built into the docker image" - @echo "build-final - build final docker container for demo deployment" - @echo "docs - generate Sphinx HTML documentation, including API docs" + @echo "pull - pull the latest production images from Docker Hub" + @echo "shell - start the Django Python shell (bpython and shell_plus)" + @echo "clean - remove all build, test, coverage and Python artifacts" + @echo "rebuild - force a rebuild of all of the docker images" + @echo "submodules - resync and fetch the latest git submodules" + @echo "lint - check style with flake8, jshint, and stylelint" + @echo "test - run tests against local files" + @echo "test-image - run tests against files in docker image" + @echo "docs - generate Sphinx HTML documentation" + @echo "build-ci - build docker images for use in our CI pipeline" + @echo "test-ci - run tests against files in docker image built by CI" + +.env: + @if [ ! -f .env ]; then \ + echo "Copying .env-dist to .env..."; \ + cp .env-dist .env; \ + fi .docker-build: ${MAKE} build -.docker-build-final: - ${MAKE} build-final +.docker-build-pull: + ${MAKE} pull -build: - docker build -f docker/dockerfiles/bedrock_base -t ${BASE_IMG_NAME} --pull . - docker build -f docker/dockerfiles/bedrock_dev -t ${DEV_IMG_NAME} . - -rm -f .docker-build-final +build: .env .docker-build-pull submodules + ${DC} build app assets touch .docker-build -build-final: .docker-build - docker build -f docker/dockerfiles/bedrock_dev_final -t ${FINAL_IMG_NAME} . - touch .docker-build-final +pull: + -GIT_COMMIT= ${DC} pull release app assets builder app-base + touch .docker-build-pull + +rebuild: clean build run: .docker-build - docker run --env-file docker/envfiles/dev.env -p 8000:8000 -v "$$PWD:/app" ${DEV_IMG_NAME} + ${DC} up assets app -django-shell: .docker-build - docker run --user `id -u` -it --env-file docker/envfiles/dev.env -v "$$PWD:/app" ${DEV_IMG_NAME} python manage.py shell +submodules: + git submodule sync + git submodule update --init --recursive shell: .docker-build - docker run --user `id -u` -it --env-file docker/envfiles/dev.env -v "$$PWD:/app" ${DEV_IMG_NAME} bash - -sync-all: .docker-build - docker run --user `id -u` --env-file docker/envfiles/demo.env -v "$$PWD:/app" ${DEV_IMG_NAME} bin/sync-all.sh + ${DC} run app python manage.py shell_plus clean: - # python related things - find . -name '*.egg-info' -exec rm -rf {} + - find . -name '*.egg' -exec rm -f {} + +# python related things find . -name '*.pyc' -exec rm -f {} + find . -name '*.pyo' -exec rm -f {} + find . -name '__pycache__' -exec rm -rf {} + - - # test related things +# test related things -rm -f .coverage - -rm -rf results - - # static files - git clean -fdx static - - # docs files +# docs files -rm -rf docs/_build/ +# static files + -rm -rf static_build/ +# state files + -rm -f .docker-build* - # state files - -rm -f .docker-build - -rm -f .docker-build-final +lint: .docker-build + ${DC} run test flake8 bedrock lib tests + ${DC} run assets gulp js:lint css:lint test: .docker-build - docker run --user `id -u` --env-file docker/envfiles/test.env -v "$$PWD:/app" ${DEV_IMG_NAME} bin/run-tests.sh + ${DC} run test -test-image: .docker-build-final - docker run --env-file docker/envfiles/test.env ${FINAL_IMG_NAME} bin/run-tests.sh +test-image: .docker-build + ${DC} run test-image -docs: - docker run --user `id -u` --env-file docker/envfiles/dev.env -v "$$PWD:/app" ${DEV_IMG_NAME} bash -c "make -C docs/ clean && make -C docs/ html" +docs: .docker-build + ${DC} run app $(MAKE) -C docs/ clean + ${DC} run app $(MAKE) -C docs/ html -.PHONY: default clean build build-final docs run test sync-all test-image shell django-shell +############### +# For use in CI +############### +.docker-build-ci: + ${MAKE} build-ci + +build-ci: .env .docker-build-pull submodules + ${DC_CI} build release +# tag intermediate images using cache + ${DC_CI} build app assets builder app-base + touch .docker-build-ci + +test-ci: .docker-build-ci + ${DC_CI} run test-image + +.PHONY: default clean build pull submodules docs lint run shell test test-image rebuild build-ci test-ci diff --git a/bedrock/base/pipeline_compressors.py b/bedrock/base/pipeline_compressors.py deleted file mode 100644 index bd3c510592..0000000000 --- a/bedrock/base/pipeline_compressors.py +++ /dev/null @@ -1,10 +0,0 @@ -from __future__ import absolute_import - -from pipeline.conf import settings -from pipeline.compressors import SubProcessCompressor - - -class CleanCSSCompressor(SubProcessCompressor): - def compress_css(self, css): - command = (settings.CLEANCSS_BINARY, settings.CLEANCSS_ARGUMENTS) - return self.execute_command(command, css) diff --git a/bedrock/base/pipeline_storage.py b/bedrock/base/pipeline_storage.py deleted file mode 100644 index 7247b4f2d1..0000000000 --- a/bedrock/base/pipeline_storage.py +++ /dev/null @@ -1,15 +0,0 @@ -# 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/. - -# This is here so that we can mix storages as we need. - -from django.conf import settings -from django.contrib.staticfiles.storage import ManifestStaticFilesStorage - -from pipeline.storage import PipelineMixin - - -class ManifestPipelineStorage(PipelineMixin, ManifestStaticFilesStorage): - # turn off bundling in debug mode - packing = not settings.DEBUG diff --git a/bedrock/base/templates/404.html b/bedrock/base/templates/404.html index 11f99e4d32..0ae0932326 100644 --- a/bedrock/base/templates/404.html +++ b/bedrock/base/templates/404.html @@ -11,7 +11,7 @@ {% block page_title %}{{ _('404: Page Not Found') }}{% endblock %} {% block page_css %} - {% stylesheet 'page_not_found' %} + {{ css_bundle('page_not_found') }} {% endblock %} {% block tabzilla_tab %}{% endblock %} diff --git a/bedrock/base/templates/500.html b/bedrock/base/templates/500.html index 9bc83670c7..d5274299b8 100644 --- a/bedrock/base/templates/500.html +++ b/bedrock/base/templates/500.html @@ -11,7 +11,7 @@ {% block page_title %}{{ _('500: Internal Server Error') }}{% endblock %} {% block page_css %} - {% stylesheet 'page_not_found' %} + {{ css_bundle('page_not_found') }} {% endblock %} {% block tabzilla_tab %}{% endblock %} diff --git a/bedrock/base/templates/base-pebbles-basic.html b/bedrock/base/templates/base-pebbles-basic.html index f536003107..9c5e6d19ab 100644 --- a/bedrock/base/templates/base-pebbles-basic.html +++ b/bedrock/base/templates/base-pebbles-basic.html @@ -4,7 +4,7 @@ {% block site_css %} {{ super() }} - {% stylesheet 'pebbles-basic' %} + {{ css_bundle('pebbles-basic') }} {% endblock %} {% block tabzilla_tab %}{% endblock %} diff --git a/bedrock/base/templates/base-pebbles.html b/bedrock/base/templates/base-pebbles.html index 892a5791cb..8e23e9d4a8 100644 --- a/bedrock/base/templates/base-pebbles.html +++ b/bedrock/base/templates/base-pebbles.html @@ -7,7 +7,7 @@ {# Note: Must be within first 512 bytes of page #} - {% javascript 'site' %} + {{ js_bundle('site') }} {% block experiments %}{% endblock %} @@ -56,14 +56,14 @@ {# Basic styles, only for IE8 and lower #} {% block old_ie_styles %} - {% stylesheet 'oldIE-pebbles' %} + {{ css_bundle('oldIE-pebbles') }} {% endblock %} {# Global styles, hidden from IE8 and lower #} {% block site_css %} - {% stylesheet 'pebbles' %} + {{ css_bundle('pebbles') }} {% endblock %} {# Page-specific styles, hidden from IE8 and lower #} @@ -151,23 +151,23 @@ {% block site_js %} - {% javascript 'common' %} + {{ js_bundle('common') }} {% endblock %} {# Bug 1279291 #} {% block stub_attribution %} {% if settings.STUB_ATTRIBUTION_RATE %} - {% javascript 'stub-attribution' %} + {{ js_bundle('stub-attribution') }} {% endif %} {% endblock %} @@ -177,7 +177,7 @@ {# Bug 1381776 #} {% block update_notification %} {% if switch('firefox-update-notification', ['en-US']) %} - {% javascript 'firefox-update-notification' %} + {{ js_bundle('firefox-update-notification') }} {% endif %} {% endblock %} diff --git a/bedrock/base/templates/base-resp.html b/bedrock/base/templates/base-resp.html index b918c08dc7..331c0a6723 100644 --- a/bedrock/base/templates/base-resp.html +++ b/bedrock/base/templates/base-resp.html @@ -7,7 +7,7 @@ {# Note: Must be within first 512 bytes of page #} - {% javascript 'site' %} + {{ js_bundle('site') }} {% block experiments %}{% endblock %} @@ -55,13 +55,13 @@ {# Basic styles, only for IE8 and lower #} - {% stylesheet 'oldIE' %} + {{ css_bundle('oldIE') }} {# Global styles, hidden from IE8 and lower #} {% block site_css %} - {% stylesheet 'responsive' %} + {{ css_bundle('responsive') }} {% endblock %} {# Page-specific styles, hidden from IE8 and lower #} @@ -179,18 +179,18 @@ {% block site_js %} - {% javascript 'common' %} + {{ js_bundle('common') }} {% endblock %} {# Bug 1279291 #} {% block stub_attribution %} {% if settings.STUB_ATTRIBUTION_RATE %} - {% javascript 'stub-attribution' %} + {{ js_bundle('stub-attribution') }} {% endif %} {% endblock %} @@ -200,7 +200,7 @@ {# Bug 1381776 #} {% block update_notification %} {% if switch('firefox-update-notification', ['en-US']) %} - {% javascript 'firefox-update-notification' %} + {{ js_bundle('firefox-update-notification') }} {% endif %} {% endblock %} diff --git a/bedrock/base/templates/includes/google-analytics.html b/bedrock/base/templates/includes/google-analytics.html index 1000c3994e..beab0b08ee 100644 --- a/bedrock/base/templates/includes/google-analytics.html +++ b/bedrock/base/templates/includes/google-analytics.html @@ -10,6 +10,6 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=1122305#c8 {% if settings.GTM_CONTAINER_ID %} - {% javascript 'gtm-snippet' %} + {{ js_bundle('gtm-snippet') }} {% endif %} diff --git a/bedrock/base/templatetags/helpers.py b/bedrock/base/templatetags/helpers.py index 7c76312356..508049db27 100644 --- a/bedrock/base/templatetags/helpers.py +++ b/bedrock/base/templatetags/helpers.py @@ -14,6 +14,10 @@ from bedrock.base import waffle from bedrock.utils import expand_locale_groups +CSS_TEMPLATE = '' +JS_TEMPLATE = '' + + @library.global_function def send_to_device_sms_countries(message_set): try: @@ -113,6 +117,28 @@ def static(path): return staticfiles_storage.url(path) +@library.global_function +def js_bundle(name): + """Include a JS bundle in the template. + + Bundles are defined in the "static-bundles.json" file. + """ + path = 'js/BUNDLES/{}.js'.format(name) + path = staticfiles_storage.url(path) + return jinja2.Markup(JS_TEMPLATE % path) + + +@library.global_function +def css_bundle(name): + """Include a CSS bundle in the template. + + Bundles are defined in the "static-bundles.json" file. + """ + path = 'css/BUNDLES/{}.css'.format(name) + path = staticfiles_storage.url(path) + return jinja2.Markup(CSS_TEMPLATE % path) + + @library.global_function def alternate_url(path, locale): alt_paths = settings.ALT_CANONICAL_PATHS diff --git a/bedrock/etc/templates/etc/firefox/retention/thank-you-a.html b/bedrock/etc/templates/etc/firefox/retention/thank-you-a.html index 1bf1242c96..49898adf7b 100644 --- a/bedrock/etc/templates/etc/firefox/retention/thank-you-a.html +++ b/bedrock/etc/templates/etc/firefox/retention/thank-you-a.html @@ -20,7 +20,7 @@ {% block canonical_urls %}{% endblock %} {% block page_css %} - {% stylesheet 'etc-firefox-retention-thank-you-a' %} + {{ css_bundle('etc-firefox-retention-thank-you-a') }} {% endblock %} {% block site_header %}{% endblock %} @@ -77,7 +77,7 @@ {% endblock %} {% block js %} - {% javascript 'etc-firefox-retention-thank-you' %} + {{ js_bundle('etc-firefox-retention-thank-you') }} {% endblock %} {% block body_id %}thank-you{% endblock %} diff --git a/bedrock/etc/templates/etc/firefox/retention/thank-you-b.html b/bedrock/etc/templates/etc/firefox/retention/thank-you-b.html index 25c0abfc59..7ddfba005e 100644 --- a/bedrock/etc/templates/etc/firefox/retention/thank-you-b.html +++ b/bedrock/etc/templates/etc/firefox/retention/thank-you-b.html @@ -20,7 +20,7 @@ {% block canonical_urls %}{% endblock %} {% block page_css %} - {% stylesheet 'etc-firefox-retention-thank-you-b' %} + {{ css_bundle('etc-firefox-retention-thank-you-b') }} {% endblock %} {% block site_header %}{% endblock %} @@ -91,7 +91,7 @@ {% endblock %} {% block js %} - {% javascript 'etc-firefox-retention-thank-you' %} + {{ js_bundle('etc-firefox-retention-thank-you') }} {% endblock %} {% block body_id %}thank-you{% endblock %} diff --git a/bedrock/etc/templates/etc/firefox/retention/thank-you-referral.html b/bedrock/etc/templates/etc/firefox/retention/thank-you-referral.html index 30cfaa7fdd..18c6440dcb 100644 --- a/bedrock/etc/templates/etc/firefox/retention/thank-you-referral.html +++ b/bedrock/etc/templates/etc/firefox/retention/thank-you-referral.html @@ -14,7 +14,7 @@ {% block canonical_urls %}{% endblock %} {% block page_css %} - {% stylesheet 'etc-firefox-retention-thank-you-referral' %} + {{ css_bundle('etc-firefox-retention-thank-you-referral') }} {% endblock %} {% block site_header %}{% endblock %} @@ -68,7 +68,7 @@ {% endblock %} {% block js %} - {% javascript 'etc-firefox-retention-thank-you' %} + {{ js_bundle('etc-firefox-retention-thank-you') }} {% endblock %} {% block body_id %}thank-you{% endblock %} diff --git a/bedrock/firefox/templates/firefox/accounts-features.html b/bedrock/firefox/templates/firefox/accounts-features.html index 677e2543e7..2475c1f4d7 100644 --- a/bedrock/firefox/templates/firefox/accounts-features.html +++ b/bedrock/firefox/templates/firefox/accounts-features.html @@ -9,14 +9,14 @@ {% block page_desc %}{{_('Share links instantly. Sync bookmarks and passwords securely.')}}{% endblock %} {% block page_css %} - {% stylesheet 'firefox_accounts_features' %} + {{ css_bundle('firefox_accounts_features') }} {% endblock %} {% block body_class %}firefox-accounts-features{% endblock %} {% block experiments %} {% if switch('accounts-features-copy-experiment', ['en-US']) %} - {% javascript 'firefox_accounts_features_experiment' %} + {{ js_bundle('firefox_accounts_features_experiment') }} {% endif %} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/accounts.html b/bedrock/firefox/templates/firefox/accounts.html index 1f6ddd5f92..3b3df3ce44 100644 --- a/bedrock/firefox/templates/firefox/accounts.html +++ b/bedrock/firefox/templates/firefox/accounts.html @@ -11,7 +11,7 @@ {% block page_desc %}{{_('Get easy access to your bookmarks, passwords, tabs and more from any computer or mobile device running Firefox.')}}{% endblock %} {% block page_css %} - {% stylesheet 'firefox_accounts' %} + {{ css_bundle('firefox_accounts') }} {% endblock %} {% block body_class %}firefox-accounts{% endblock %} @@ -63,5 +63,5 @@ {% endblock %} {% block js %} - {% javascript 'firefox_accounts' %} + {{ js_bundle('firefox_accounts') }} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/all.html b/bedrock/firefox/templates/firefox/all.html index 9a278f4f61..61818eb868 100644 --- a/bedrock/firefox/templates/firefox/all.html +++ b/bedrock/firefox/templates/firefox/all.html @@ -72,7 +72,7 @@ {% endblock %} {% block page_css %} - {% stylesheet 'firefox_all' %} + {{ css_bundle('firefox_all') }} {% endblock %} {% block site_header_logo %} @@ -179,6 +179,6 @@ {% block js %} {# searching with js only makes sense if we're displaying all #} {% if platform == 'desktop' and not query %} - {% javascript 'firefox_all' %} + {{ js_bundle('firefox_all') }} {% endif %} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/channel/base.html b/bedrock/firefox/templates/firefox/channel/base.html index a29388f8b3..e9655724ae 100644 --- a/bedrock/firefox/templates/firefox/channel/base.html +++ b/bedrock/firefox/templates/firefox/channel/base.html @@ -12,7 +12,7 @@ {% block page_og_title %}{{ self.page_title() }}{% endblock %} {% block page_css %} - {% stylesheet 'firefox_channel' %} + {{ css_bundle('firefox_channel') }} {% endblock %} {% block body_class %}{% endblock %} diff --git a/bedrock/firefox/templates/firefox/dev-firstrun.html b/bedrock/firefox/templates/firefox/dev-firstrun.html index 0ad068ffdf..fc67135d35 100644 --- a/bedrock/firefox/templates/firefox/dev-firstrun.html +++ b/bedrock/firefox/templates/firefox/dev-firstrun.html @@ -12,7 +12,7 @@ {% block canonical_urls %}{% endblock %} {% block page_css %} - {% stylesheet 'firefox_developer_firstrun' %} + {{ css_bundle('firefox_developer_firstrun') }} {% endblock %} {% block page_title_prefix %}{% endblock %} @@ -240,7 +240,7 @@ data-sync-reminder-text="{{ _('If you continue without syncing your new Develope {% block email_form %}{% endblock %} {% block js %} - {% javascript 'firefox_developer_firstrun' %} + {{ js_bundle('firefox_developer_firstrun') }} {% endblock %} {# Bug 1381776 #} diff --git a/bedrock/firefox/templates/firefox/dev-whatsnew.html b/bedrock/firefox/templates/firefox/dev-whatsnew.html index eb12cb486d..e364061914 100644 --- a/bedrock/firefox/templates/firefox/dev-whatsnew.html +++ b/bedrock/firefox/templates/firefox/dev-whatsnew.html @@ -12,7 +12,7 @@ {% block canonical_urls %}{% endblock %} {% block page_css %} - {% stylesheet 'firefox_developer_firstrun' %} + {{ css_bundle('firefox_developer_firstrun') }} {% endblock %} {% block page_title_prefix %}{% endblock %} diff --git a/bedrock/firefox/templates/firefox/developer/firstrun.html b/bedrock/firefox/templates/firefox/developer/firstrun.html index 836ada724f..971166cea7 100644 --- a/bedrock/firefox/templates/firefox/developer/firstrun.html +++ b/bedrock/firefox/templates/firefox/developer/firstrun.html @@ -13,7 +13,7 @@ {% block page_favicon_large %}{{ static('img/firefox/developer/favicon-196.png') }}{% endblock %} {% block page_css %} - {% stylesheet 'firefox_developer_quantum_firstrun' %} + {{ css_bundle('firefox_developer_quantum_firstrun') }} {% endblock %} {% block body_id %}firefox-developer{% endblock %} diff --git a/bedrock/firefox/templates/firefox/developer/index.html b/bedrock/firefox/templates/firefox/developer/index.html index 3c101342f9..06e8158abb 100644 --- a/bedrock/firefox/templates/firefox/developer/index.html +++ b/bedrock/firefox/templates/firefox/developer/index.html @@ -14,7 +14,7 @@ {% block page_css %} - {% stylesheet 'firefox_developer' %} + {{ css_bundle('firefox_developer') }} {% endblock %} {% block body_id %}firefox-developer{% endblock %} @@ -238,5 +238,5 @@ {% block update_notification %}{% endblock %} {% block js %} - {% javascript 'firefox_developer' %} + {{ js_bundle('firefox_developer') }} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/developer/whatsnew.html b/bedrock/firefox/templates/firefox/developer/whatsnew.html index da6c889ca3..3f39b89ba7 100644 --- a/bedrock/firefox/templates/firefox/developer/whatsnew.html +++ b/bedrock/firefox/templates/firefox/developer/whatsnew.html @@ -13,7 +13,7 @@ {% block page_favicon_large %}{{ static('img/firefox/developer/favicon-196.png') }}{% endblock %} {% block page_css %} - {% stylesheet 'firefox_developer_quantum_whatsnew' %} + {{ css_bundle('firefox_developer_quantum_whatsnew') }} {% endblock %} {% block body_id %}firefox-developer{% endblock %} diff --git a/bedrock/firefox/templates/firefox/enterprise/index.html b/bedrock/firefox/templates/firefox/enterprise/index.html index 1b219e38c9..8df3dd7fe1 100644 --- a/bedrock/firefox/templates/firefox/enterprise/index.html +++ b/bedrock/firefox/templates/firefox/enterprise/index.html @@ -9,7 +9,7 @@ {% block page_desc %}{{_('A managed version of the super-fast new Firefox.')}}{% endblock %} {% block page_css %} - {% stylesheet 'firefox_enterprise' %} + {{ css_bundle('firefox_enterprise') }} {% endblock %} {% block body_id %}firefox{% endblock %} diff --git a/bedrock/firefox/templates/firefox/enterprise/signup-thanks.html b/bedrock/firefox/templates/firefox/enterprise/signup-thanks.html index 648e079ccc..1804eb35b8 100644 --- a/bedrock/firefox/templates/firefox/enterprise/signup-thanks.html +++ b/bedrock/firefox/templates/firefox/enterprise/signup-thanks.html @@ -12,7 +12,7 @@ {% block canonical_urls %}{% endblock %} {% block page_css %} - {% stylesheet 'firefox_enterprise' %} + {{ css_bundle('firefox_enterprise') }} {% endblock %} {% block body_id %}firefox{% endblock %} diff --git a/bedrock/firefox/templates/firefox/enterprise/signup.html b/bedrock/firefox/templates/firefox/enterprise/signup.html index 87e7ecb88f..41ba2e3aa7 100644 --- a/bedrock/firefox/templates/firefox/enterprise/signup.html +++ b/bedrock/firefox/templates/firefox/enterprise/signup.html @@ -12,7 +12,7 @@ {% block canonical_urls %}{% endblock %} {% block page_css %} - {% stylesheet 'firefox_enterprise' %} + {{ css_bundle('firefox_enterprise') }} {% endblock %} {% block body_id %}firefox{% endblock %} diff --git a/bedrock/firefox/templates/firefox/facebookcontainer/index.html b/bedrock/firefox/templates/firefox/facebookcontainer/index.html index 4ea224bacf..eaa10a8c97 100644 --- a/bedrock/firefox/templates/firefox/facebookcontainer/index.html +++ b/bedrock/firefox/templates/firefox/facebookcontainer/index.html @@ -11,7 +11,7 @@ {% block page_desc %}{{_('Millions of people around the world trust Firefox Web browsers on Android, iOS and desktop computers. Fast. Private. Download now!')}}{% endblock %} {% block page_css %} - {% stylesheet 'firefox_facebook_container' %} + {{ css_bundle('firefox_facebook_container') }} {% endblock %} {% block body_id %}firefox{% endblock %} @@ -144,9 +144,9 @@ {% block update_notification %}{% endblock %} {% block js %} - {% javascript 'firefox_facebook_container_video' %} + {{ js_bundle('firefox_facebook_container_video') }} {% if switch('firefox-facebook-container-funnelcake', ['en-US']) %} - {% javascript 'firefox_facebook_container_funnelcake' %} + {{ js_bundle('firefox_facebook_container_funnelcake') }} {% endif %} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/features/base.html b/bedrock/firefox/templates/firefox/features/base.html index b0ba31ba84..2f613627cf 100644 --- a/bedrock/firefox/templates/firefox/features/base.html +++ b/bedrock/firefox/templates/firefox/features/base.html @@ -7,7 +7,7 @@ {% extends "firefox/base-pebbles.html" %} {% block page_css %} - {% stylesheet 'firefox-features-hub-common' %} + {{ css_bundle('firefox-features-hub-common') }} {% endblock %} {% block content %} @@ -56,5 +56,5 @@ {% endblock %} {% block js %} - {% javascript 'firefox-features-hub' %} + {{ js_bundle('firefox-features-hub') }} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/features/bookmarks.html b/bedrock/firefox/templates/firefox/features/bookmarks.html index df6ca2657e..28fe7a5045 100644 --- a/bedrock/firefox/templates/firefox/features/bookmarks.html +++ b/bedrock/firefox/templates/firefox/features/bookmarks.html @@ -12,7 +12,7 @@ {% block page_css %} {{ super() }} - {% stylesheet 'firefox-features-hub-detail' %} + {{ css_bundle('firefox-features-hub-detail') }} {% endblock %} {% block body_id %}firefox-features-bookmarks{% endblock %} diff --git a/bedrock/firefox/templates/firefox/features/fast.html b/bedrock/firefox/templates/firefox/features/fast.html index 6288b40c0d..ca6fc22905 100644 --- a/bedrock/firefox/templates/firefox/features/fast.html +++ b/bedrock/firefox/templates/firefox/features/fast.html @@ -11,7 +11,7 @@ {% block page_css %} {{ super() }} - {% stylesheet 'firefox-features-hub-detail' %} + {{ css_bundle('firefox-features-hub-detail') }} {% endblock %} {% block body_id %}firefox-features-fast{% endblock %} diff --git a/bedrock/firefox/templates/firefox/features/independent.html b/bedrock/firefox/templates/firefox/features/independent.html index 91d5b4b009..b7c3f7f74e 100644 --- a/bedrock/firefox/templates/firefox/features/independent.html +++ b/bedrock/firefox/templates/firefox/features/independent.html @@ -11,7 +11,7 @@ {% block page_css %} {{ super() }} - {% stylesheet 'firefox-features-hub-detail' %} + {{ css_bundle('firefox-features-hub-detail') }} {% endblock %} {% block body_id %}firefox-features-independent{% endblock %} diff --git a/bedrock/firefox/templates/firefox/features/index.html b/bedrock/firefox/templates/firefox/features/index.html index bceeaa8cac..0ee6737a99 100644 --- a/bedrock/firefox/templates/firefox/features/index.html +++ b/bedrock/firefox/templates/firefox/features/index.html @@ -11,7 +11,7 @@ {% block page_css %} {{ super() }} - {% stylesheet 'firefox-features-index' %} + {{ css_bundle('firefox-features-index') }} {% endblock %} {% block body_id %}firefox-features-landing{% endblock %} diff --git a/bedrock/firefox/templates/firefox/features/memory.html b/bedrock/firefox/templates/firefox/features/memory.html index 431de36225..513d1826d2 100644 --- a/bedrock/firefox/templates/firefox/features/memory.html +++ b/bedrock/firefox/templates/firefox/features/memory.html @@ -11,7 +11,7 @@ {% block page_css %} {{ super() }} - {% stylesheet 'firefox-features-hub-detail' %} + {{ css_bundle('firefox-features-hub-detail') }} {% endblock %} {% block body_id %}firefox-features-memory{% endblock %} diff --git a/bedrock/firefox/templates/firefox/features/password-manager.html b/bedrock/firefox/templates/firefox/features/password-manager.html index 3ef44507ce..a9ed758f84 100644 --- a/bedrock/firefox/templates/firefox/features/password-manager.html +++ b/bedrock/firefox/templates/firefox/features/password-manager.html @@ -12,7 +12,7 @@ {% block page_css %} {{ super() }} - {% stylesheet 'firefox-features-hub-detail' %} + {{ css_bundle('firefox-features-hub-detail') }} {% endblock %} {% block body_id %}firefox-features-password-manager{% endblock %} diff --git a/bedrock/firefox/templates/firefox/features/private-browsing.html b/bedrock/firefox/templates/firefox/features/private-browsing.html index cbcdf8e683..c73dd79f14 100644 --- a/bedrock/firefox/templates/firefox/features/private-browsing.html +++ b/bedrock/firefox/templates/firefox/features/private-browsing.html @@ -11,7 +11,7 @@ {% block page_css %} {{ super() }} - {% stylesheet 'firefox-features-hub-detail' %} + {{ css_bundle('firefox-features-hub-detail') }} {% endblock %} {% block body_id %}firefox-features-private{% endblock %} diff --git a/bedrock/firefox/templates/firefox/features/send-tabs.html b/bedrock/firefox/templates/firefox/features/send-tabs.html index 6c6fdf6c2e..459538bc6f 100644 --- a/bedrock/firefox/templates/firefox/features/send-tabs.html +++ b/bedrock/firefox/templates/firefox/features/send-tabs.html @@ -18,8 +18,8 @@ {% block page_css %} {{ super() }} - {% stylesheet 'firefox-features-hub-detail' %} - {% stylesheet 'firefox-features-sync' %} + {{ css_bundle('firefox-features-hub-detail') }} + {{ css_bundle('firefox-features-sync') }} {% endblock %} {% block body_id %}firefox-features-send-tabs{% endblock %} @@ -152,5 +152,5 @@ {% block js %} {{ super() }} - {% javascript 'firefox-features-sync' %} + {{ js_bundle('firefox-features-sync') }} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/features/sync.html b/bedrock/firefox/templates/firefox/features/sync.html index e5cdbe3c60..b30fa3038f 100644 --- a/bedrock/firefox/templates/firefox/features/sync.html +++ b/bedrock/firefox/templates/firefox/features/sync.html @@ -18,8 +18,8 @@ {% block page_css %} {{ super() }} - {% stylesheet 'firefox-features-hub-detail' %} - {% stylesheet 'firefox-features-sync' %} + {{ css_bundle('firefox-features-hub-detail') }} + {{ css_bundle('firefox-features-sync') }} {% endblock %} {% block body_id %}firefox-features-sync{% endblock %} @@ -110,5 +110,5 @@ {% block js %} {{ super() }} - {% javascript 'firefox-features-sync' %} + {{ js_bundle('firefox-features-sync') }} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/feedback/happy.html b/bedrock/firefox/templates/firefox/feedback/happy.html index af1a289654..a273939c1c 100644 --- a/bedrock/firefox/templates/firefox/feedback/happy.html +++ b/bedrock/firefox/templates/firefox/feedback/happy.html @@ -14,11 +14,11 @@ {% block body_class %}sky happy{% endblock %} {% block page_css %} - {% stylesheet 'firefox_feedback' %} + {{ css_bundle('firefox_feedback') }} {% endblock %} {% block js %} - {% javascript 'firefox_feedback' %} + {{ js_bundle('firefox_feedback') }} {% endblock %} {% block site_header_nav %}{% endblock %} diff --git a/bedrock/firefox/templates/firefox/feedback/unhappy.html b/bedrock/firefox/templates/firefox/feedback/unhappy.html index 3d6aa9dfe8..ad809d8858 100644 --- a/bedrock/firefox/templates/firefox/feedback/unhappy.html +++ b/bedrock/firefox/templates/firefox/feedback/unhappy.html @@ -14,11 +14,11 @@ {% block body_class %}sky sad{% endblock %} {% block page_css %} - {% stylesheet 'firefox_feedback' %} + {{ css_bundle('firefox_feedback') }} {% endblock %} {% block js %} - {% javascript 'firefox_feedback' %} + {{ js_bundle('firefox_feedback') }} {% endblock %} {% block site_header_nav %}{% endblock %} diff --git a/bedrock/firefox/templates/firefox/firstrun/base-pebbles.html b/bedrock/firefox/templates/firefox/firstrun/base-pebbles.html index f21a00ae17..8313b56387 100644 --- a/bedrock/firefox/templates/firefox/firstrun/base-pebbles.html +++ b/bedrock/firefox/templates/firefox/firstrun/base-pebbles.html @@ -29,7 +29,7 @@ {% block extrahead %} {% if switch('firefox-update-notification-modal', ['en-US']) %} - {% stylesheet 'firefox-update-notification-firstrun-whatsnew' %} + {{ css_bundle('firefox-update-notification-firstrun-whatsnew') }} {% endif %} {% endblock %} @@ -37,6 +37,6 @@ {% block update_notification %} {% if switch('firefox-update-notification-modal', ['en-US']) %} {% include 'includes/firefox-update-instructions.html' %} - {% javascript 'firefox-update-notification-firstrun-whatsnew' %} + {{ js_bundle('firefox-update-notification-firstrun-whatsnew') }} {% endif %} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/firstrun/base.html b/bedrock/firefox/templates/firefox/firstrun/base.html index 08b348ce84..fefecf379d 100644 --- a/bedrock/firefox/templates/firefox/firstrun/base.html +++ b/bedrock/firefox/templates/firefox/firstrun/base.html @@ -29,7 +29,7 @@ {% block extrahead %} {% if switch('firefox-update-notification-modal', ['en-US']) %} - {% stylesheet 'firefox-update-notification-firstrun-whatsnew' %} + {{ css_bundle('firefox-update-notification-firstrun-whatsnew') }} {% endif %} {% endblock %} @@ -37,6 +37,6 @@ {% block update_notification %} {% if switch('firefox-update-notification-modal', ['en-US']) %} {% include 'includes/firefox-update-instructions.html' %} - {% javascript 'firefox-update-notification-firstrun-whatsnew' %} + {{ js_bundle('firefox-update-notification-firstrun-whatsnew') }} {% endif %} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/firstrun/facebook-container.html b/bedrock/firefox/templates/firefox/firstrun/facebook-container.html index 04073ae9c1..bfca5eb367 100644 --- a/bedrock/firefox/templates/firefox/firstrun/facebook-container.html +++ b/bedrock/firefox/templates/firefox/firstrun/facebook-container.html @@ -11,7 +11,7 @@ {% endblock %} {% block page_css %} - {% stylesheet 'firefox_firstrun_facebook_container' %} + {{ css_bundle('firefox_firstrun_facebook_container') }} {% endblock %} {% block global_nav %}{% endblock %} diff --git a/bedrock/firefox/templates/firefox/firstrun/firstrun-quantum.html b/bedrock/firefox/templates/firefox/firstrun/firstrun-quantum.html index 07dc540c6b..b86e38addb 100644 --- a/bedrock/firefox/templates/firefox/firstrun/firstrun-quantum.html +++ b/bedrock/firefox/templates/firefox/firstrun/firstrun-quantum.html @@ -8,7 +8,7 @@ {% block experiments %} {% if switch('firstrun-copy-experiment', ['en-US']) %} - {% javascript 'experiment_firstrun_copy' %} + {{ js_bundle('experiment_firstrun_copy') }} {% endif %} {% endblock %} @@ -19,7 +19,7 @@ {% endblock %} {% block site_css %} - {% stylesheet 'firefox_firstrun_quantum' %} + {{ css_bundle('firefox_firstrun_quantum') }} {% endblock %} {% block global_nav %}{% endblock %} @@ -71,5 +71,5 @@ {% block update_notification %}{% endblock %} {% block js %} - {% javascript 'firefox_firstrun_quantum' %} + {{ js_bundle('firefox_firstrun_quantum') }} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/firstrun/index.html b/bedrock/firefox/templates/firefox/firstrun/index.html index 2309f13aff..40f5c0cdc7 100644 --- a/bedrock/firefox/templates/firefox/firstrun/index.html +++ b/bedrock/firefox/templates/firefox/firstrun/index.html @@ -13,11 +13,11 @@ {% endblock %} {% block site_css %} - {% stylesheet 'firefox_firstrun' %} + {{ css_bundle('firefox_firstrun') }} {% endblock %} {% block js %} - {% javascript 'firefox_firstrun' %} + {{ js_bundle('firefox_firstrun') }} {% endblock %} {% block global_nav %}{% endblock %} diff --git a/bedrock/firefox/templates/firefox/home.html b/bedrock/firefox/templates/firefox/home.html index d3f619404d..f8eef3fb45 100644 --- a/bedrock/firefox/templates/firefox/home.html +++ b/bedrock/firefox/templates/firefox/home.html @@ -18,9 +18,9 @@ {% block page_desc %}{{ _('Responsive engine, less memory usage and packed with features. Download for desktop now.') }}{% endblock %} {% block page_css %} - {% stylesheet 'firefox-home' %} + {{ css_bundle('firefox-home') }} {% if switch('firefox_home_fbvideochat_funnelcake', ['en-US']) %} - {% stylesheet 'firefox-home-fbvideochat-funnelcake' %} + {{ css_bundle('firefox-home-fbvideochat-funnelcake') }} {% endif %} {% endblock %} @@ -439,8 +439,8 @@ {% endblock %} {% block js %} - {% javascript 'firefox-home' %} + {{ js_bundle('firefox-home') }} {% if switch('firefox_home_fbvideochat_funnelcake', ['en-US']) %} - {% javascript 'firefox-home-fbvideochat-funnelcake' %} + {{ js_bundle('firefox-home-fbvideochat-funnelcake') }} {% endif %} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/installer-help.html b/bedrock/firefox/templates/firefox/installer-help.html index 40d06fe705..3504d57ad3 100644 --- a/bedrock/firefox/templates/firefox/installer-help.html +++ b/bedrock/firefox/templates/firefox/installer-help.html @@ -11,7 +11,7 @@ {% block body_id %}installer-help{% endblock %} {% block page_css %} - {% stylesheet 'installer_help' %} + {{ css_bundle('installer_help') }} {% endblock %} {% block content %} @@ -75,5 +75,5 @@ {% endblock %} {% block js %} - {% javascript 'installer_help' %} + {{ js_bundle('installer_help') }} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/mobile.html b/bedrock/firefox/templates/firefox/mobile.html index a0ddc6c186..1b28ff09d3 100644 --- a/bedrock/firefox/templates/firefox/mobile.html +++ b/bedrock/firefox/templates/firefox/mobile.html @@ -9,7 +9,7 @@ {% extends "firefox/base-pebbles.html" %} {% block page_css %} - {% stylesheet 'firefox-mobile' %} + {{ css_bundle('firefox-mobile') }} {% endblock %} {% block page_title %}{{ _('Mobile browsers for iOS and Android') }} | {{ _('Firefox') }}{% endblock %} @@ -406,5 +406,5 @@ {% endblock %} {% block js %} - {% javascript 'firefox-mobile' %} + {{ js_bundle('firefox-mobile') }} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/new/base.html b/bedrock/firefox/templates/firefox/new/base.html index c39596ced9..c93328e501 100644 --- a/bedrock/firefox/templates/firefox/new/base.html +++ b/bedrock/firefox/templates/firefox/new/base.html @@ -35,8 +35,8 @@ {# All stylesheets are loaded in extrahead to serve legacy IE basic styles #} {% block extrahead %} - {% stylesheet 'pebbles' %} - {% stylesheet 'firefox_new_common' %} + {{ css_bundle('pebbles') }} + {{ css_bundle('firefox_new_common') }} {% endblock %} {% block body_id %}{% endblock %} diff --git a/bedrock/firefox/templates/firefox/new/berlin/base-herz.html b/bedrock/firefox/templates/firefox/new/berlin/base-herz.html index 2d48f4ecac..cb22d2df83 100644 --- a/bedrock/firefox/templates/firefox/new/berlin/base-herz.html +++ b/bedrock/firefox/templates/firefox/new/berlin/base-herz.html @@ -14,7 +14,7 @@ {% block page_desc %}{{_('Besser digital leben mit Firefox: Superschnell surfen, Top-Privatsphäre-Schutz und gut für das Netz. Weil Mozilla dahinter steht. Das Non-Profit für ein freies und offenes Internet — für alle Menschen.')}}{% endblock %} {% block page_css %} - {% stylesheet 'firefox_new_berlin_herz' %} + {{ css_bundle('firefox_new_berlin_herz') }} {% endblock %} {% block body_id %}firefox{% endblock %} diff --git a/bedrock/firefox/templates/firefox/new/berlin/base.html b/bedrock/firefox/templates/firefox/new/berlin/base.html index d1baaecfca..4a20cfaafa 100644 --- a/bedrock/firefox/templates/firefox/new/berlin/base.html +++ b/bedrock/firefox/templates/firefox/new/berlin/base.html @@ -14,7 +14,7 @@ {% block page_desc %}{{_('Besser digital leben mit Firefox: Superschnell surfen, Top-Privatsphäre-Schutz und gut für das Netz. Weil Mozilla dahinter steht. Das Non-Profit für ein freies und offenes Internet — für alle Menschen.')}}{% endblock %} {% block page_css %} - {% stylesheet 'firefox_new_berlin' %} + {{ css_bundle('firefox_new_berlin') }} {% endblock %} {% block body_id %}firefox{% endblock %} diff --git a/bedrock/firefox/templates/firefox/new/berlin/scene1-b.html b/bedrock/firefox/templates/firefox/new/berlin/scene1-b.html index f463ba67e2..162928d4d7 100644 --- a/bedrock/firefox/templates/firefox/new/berlin/scene1-b.html +++ b/bedrock/firefox/templates/firefox/new/berlin/scene1-b.html @@ -7,7 +7,7 @@ {% extends "firefox/new/berlin/base.html" %} {% block page_css %} - {% stylesheet 'firefox_new_berlin_b' %} + {{ css_bundle('firefox_new_berlin_b') }} {% endblock %} {% block primary_download_button %} @@ -42,5 +42,5 @@ {% endblock %} {% block js %} - {% javascript 'firefox_new_scene1_berlin' %} + {{ js_bundle('firefox_new_scene1_berlin') }} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/new/berlin/scene1-herz.html b/bedrock/firefox/templates/firefox/new/berlin/scene1-herz.html index 767671c4f7..031279f4b0 100644 --- a/bedrock/firefox/templates/firefox/new/berlin/scene1-herz.html +++ b/bedrock/firefox/templates/firefox/new/berlin/scene1-herz.html @@ -11,5 +11,5 @@ {% endblock %} {% block js %} - {% javascript 'firefox_new_scene1_berlin_herz' %} + {{ js_bundle('firefox_new_scene1_berlin_herz') }} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/new/berlin/scene1.html b/bedrock/firefox/templates/firefox/new/berlin/scene1.html index 8885153f13..ca1ed093c6 100644 --- a/bedrock/firefox/templates/firefox/new/berlin/scene1.html +++ b/bedrock/firefox/templates/firefox/new/berlin/scene1.html @@ -8,7 +8,7 @@ {% block experiments %} {% if switch('experiment-berlin-video', ['de']) %} - {% javascript 'firefox_new_berlin_experiment' %} + {{ js_bundle('firefox_new_berlin_experiment') }} {% endif %} {% endblock %} @@ -17,5 +17,5 @@ {% endblock %} {% block js %} - {% javascript 'firefox_new_scene1_berlin' %} + {{ js_bundle('firefox_new_scene1_berlin') }} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/new/berlin/scene2-b.html b/bedrock/firefox/templates/firefox/new/berlin/scene2-b.html index 8b27616225..928ee150a9 100644 --- a/bedrock/firefox/templates/firefox/new/berlin/scene2-b.html +++ b/bedrock/firefox/templates/firefox/new/berlin/scene2-b.html @@ -7,5 +7,5 @@ {% extends "firefox/new/berlin/scene2.html" %} {% block page_css %} - {% stylesheet 'firefox_new_berlin_b' %} + {{ css_bundle('firefox_new_berlin_b') }} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/new/berlin/scene2-herz.html b/bedrock/firefox/templates/firefox/new/berlin/scene2-herz.html index 7a23cfffa2..9a02200aa7 100644 --- a/bedrock/firefox/templates/firefox/new/berlin/scene2-herz.html +++ b/bedrock/firefox/templates/firefox/new/berlin/scene2-herz.html @@ -37,7 +37,7 @@ {% block js %} {% if switch('tracking-pixel') %} - {% javascript 'firefox_new_pixel' %} + {{ js_bundle('firefox_new_pixel') }} {% endif %} - {% javascript 'firefox_new_scene2' %} + {{ js_bundle('firefox_new_scene2') }} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/new/berlin/scene2.html b/bedrock/firefox/templates/firefox/new/berlin/scene2.html index 512c456311..e8dea29365 100644 --- a/bedrock/firefox/templates/firefox/new/berlin/scene2.html +++ b/bedrock/firefox/templates/firefox/new/berlin/scene2.html @@ -38,7 +38,7 @@ {% block js %} {% if switch('tracking-pixel') %} - {% javascript 'firefox_new_pixel' %} + {{ js_bundle('firefox_new_pixel') }} {% endif %} - {% javascript 'firefox_new_scene2' %} + {{ js_bundle('firefox_new_scene2') }} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/new/portland/base.html b/bedrock/firefox/templates/firefox/new/portland/base.html index 2010f36fbe..8d938d0165 100644 --- a/bedrock/firefox/templates/firefox/new/portland/base.html +++ b/bedrock/firefox/templates/firefox/new/portland/base.html @@ -14,7 +14,7 @@ {% block page_og_url %}{{ settings.CANONICAL_URL }}/{{ LANG }}/firefox/new/?xv=portland{% endblock %} {% block page_css %} - {% stylesheet 'firefox_new_portland' %} + {{ css_bundle('firefox_new_portland') }} {% endblock %} {% block body_id %}firefox{% endblock %} diff --git a/bedrock/firefox/templates/firefox/new/portland/scene1-fast.html b/bedrock/firefox/templates/firefox/new/portland/scene1-fast.html index 45290e3b62..965eb72e30 100644 --- a/bedrock/firefox/templates/firefox/new/portland/scene1-fast.html +++ b/bedrock/firefox/templates/firefox/new/portland/scene1-fast.html @@ -21,5 +21,5 @@ {% endblock %} {% block js %} - {% javascript 'firefox_new_scene1_portland' %} + {{ js_bundle('firefox_new_scene1_portland') }} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/new/portland/scene1-safe.html b/bedrock/firefox/templates/firefox/new/portland/scene1-safe.html index 1db9f9c6f3..f92c5a3016 100644 --- a/bedrock/firefox/templates/firefox/new/portland/scene1-safe.html +++ b/bedrock/firefox/templates/firefox/new/portland/scene1-safe.html @@ -21,5 +21,5 @@ {% endblock %} {% block js %} - {% javascript 'firefox_new_scene1_portland' %} + {{ js_bundle('firefox_new_scene1_portland') }} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/new/portland/scene1.html b/bedrock/firefox/templates/firefox/new/portland/scene1.html index 987ddceebb..c823e4cdfe 100644 --- a/bedrock/firefox/templates/firefox/new/portland/scene1.html +++ b/bedrock/firefox/templates/firefox/new/portland/scene1.html @@ -11,5 +11,5 @@ {% endblock %} {% block js %} - {% javascript 'firefox_new_scene1_portland' %} + {{ js_bundle('firefox_new_scene1_portland') }} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/new/portland/scene2.html b/bedrock/firefox/templates/firefox/new/portland/scene2.html index 088ad7ff75..4e38c61141 100644 --- a/bedrock/firefox/templates/firefox/new/portland/scene2.html +++ b/bedrock/firefox/templates/firefox/new/portland/scene2.html @@ -31,7 +31,7 @@ {% block js %} {% if switch('tracking-pixel') %} - {% javascript 'firefox_new_pixel' %} + {{ js_bundle('firefox_new_pixel') }} {% endif %} - {% javascript 'firefox_new_scene2' %} + {{ js_bundle('firefox_new_scene2') }} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/new/reggie-watts/base.html b/bedrock/firefox/templates/firefox/new/reggie-watts/base.html index 66f2c236af..75880a1e74 100644 --- a/bedrock/firefox/templates/firefox/new/reggie-watts/base.html +++ b/bedrock/firefox/templates/firefox/new/reggie-watts/base.html @@ -14,7 +14,7 @@ {% block page_desc %}{{_('Millions of people around the world trust Firefox Web browsers on Android, iOS and desktop computers. Fast. Private. Download now!')}}{% endblock %} {% block page_css %} - {% stylesheet 'firefox_new_reggie_watts' %} + {{ css_bundle('firefox_new_reggie_watts') }} {% endblock %} {% block body_id %}firefox{% endblock %} diff --git a/bedrock/firefox/templates/firefox/new/reggie-watts/scene1.html b/bedrock/firefox/templates/firefox/new/reggie-watts/scene1.html index 32f7549467..215a6c5f76 100644 --- a/bedrock/firefox/templates/firefox/new/reggie-watts/scene1.html +++ b/bedrock/firefox/templates/firefox/new/reggie-watts/scene1.html @@ -15,5 +15,5 @@ {% endblock %} {% block js %} - {% javascript 'firefox_new_scene1_variation' %} + {{ js_bundle('firefox_new_scene1_variation') }} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/new/reggie-watts/scene2.html b/bedrock/firefox/templates/firefox/new/reggie-watts/scene2.html index 7957f6c0fc..d8bb242231 100644 --- a/bedrock/firefox/templates/firefox/new/reggie-watts/scene2.html +++ b/bedrock/firefox/templates/firefox/new/reggie-watts/scene2.html @@ -35,7 +35,7 @@ {% block js %} {% if switch('tracking-pixel') %} - {% javascript 'firefox_new_pixel' %} + {{ js_bundle('firefox_new_pixel') }} {% endif %} - {% javascript 'firefox_new_scene2' %} + {{ js_bundle('firefox_new_scene2') }} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/new/scene1.html b/bedrock/firefox/templates/firefox/new/scene1.html index 5df079e76e..5a90f4d764 100644 --- a/bedrock/firefox/templates/firefox/new/scene1.html +++ b/bedrock/firefox/templates/firefox/new/scene1.html @@ -9,7 +9,7 @@ {# All stylesheets are loaded in extrahead to serve legacy IE basic styles #} {% block extrahead %} {{ super() }} - {% stylesheet 'firefox_new_scene1' %} + {{ css_bundle('firefox_new_scene1') }} {% endblock %} {% block body_id %}firefox-new-scene1{% endblock %} @@ -122,5 +122,5 @@ {% endblock %} {% block js %} - {% javascript 'firefox_new_scene1' %} + {{ js_bundle('firefox_new_scene1') }} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/new/scene2.html b/bedrock/firefox/templates/firefox/new/scene2.html index d8af0c7b18..d9b23103c6 100644 --- a/bedrock/firefox/templates/firefox/new/scene2.html +++ b/bedrock/firefox/templates/firefox/new/scene2.html @@ -18,7 +18,7 @@ {# All stylesheets are loaded in extrahead to serve legacy IE basic styles #} {% block extrahead %} {{ super() }} - {% stylesheet 'firefox_new_scene2' %} + {{ css_bundle('firefox_new_scene2') }} {% endblock %} {% block body_id %}firefox-new-scene2{% endblock %} @@ -77,7 +77,7 @@ {% block js %} {% if switch('tracking-pixel') %} - {% javascript 'firefox_new_pixel' %} + {{ js_bundle('firefox_new_pixel') }} {% endif %} - {% javascript 'firefox_new_scene2' %} + {{ js_bundle('firefox_new_scene2') }} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/new/wait-face/base.html b/bedrock/firefox/templates/firefox/new/wait-face/base.html index af0f1ea720..d631bf41d8 100644 --- a/bedrock/firefox/templates/firefox/new/wait-face/base.html +++ b/bedrock/firefox/templates/firefox/new/wait-face/base.html @@ -14,7 +14,7 @@ {% block page_desc %}{{_('Millions of people around the world trust Firefox Web browsers on Android, iOS and desktop computers. Fast. Private. Download now!')}}{% endblock %} {% block page_css %} - {% stylesheet 'firefox_new_wait_face' %} + {{ css_bundle('firefox_new_wait_face') }} {% endblock %} {% block body_id %}firefox{% endblock %} diff --git a/bedrock/firefox/templates/firefox/new/wait-face/scene1.html b/bedrock/firefox/templates/firefox/new/wait-face/scene1.html index bf20b18af4..defb1763b9 100644 --- a/bedrock/firefox/templates/firefox/new/wait-face/scene1.html +++ b/bedrock/firefox/templates/firefox/new/wait-face/scene1.html @@ -18,5 +18,5 @@ {% endblock %} {% block js %} - {% javascript 'firefox_new_scene1_variation' %} + {{ js_bundle('firefox_new_scene1_variation') }} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/new/wait-face/scene2.html b/bedrock/firefox/templates/firefox/new/wait-face/scene2.html index b867704f20..4f166b1a81 100644 --- a/bedrock/firefox/templates/firefox/new/wait-face/scene2.html +++ b/bedrock/firefox/templates/firefox/new/wait-face/scene2.html @@ -35,7 +35,7 @@ {% block js %} {% if switch('tracking-pixel') %} - {% javascript 'firefox_new_pixel' %} + {{ js_bundle('firefox_new_pixel') }} {% endif %} - {% javascript 'firefox_new_scene2' %} + {{ js_bundle('firefox_new_scene2') }} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/nightly_firstrun.html b/bedrock/firefox/templates/firefox/nightly_firstrun.html index b271494ba5..51b4867406 100644 --- a/bedrock/firefox/templates/firefox/nightly_firstrun.html +++ b/bedrock/firefox/templates/firefox/nightly_firstrun.html @@ -10,7 +10,7 @@ {% block canonical_urls %}{% endblock %} {% block page_css %} - {% stylesheet 'nightly_firstrun' %} + {{ css_bundle('nightly_firstrun') }} {% endblock %} {% add_lang_files "firstrun" "mobile" %} diff --git a/bedrock/firefox/templates/firefox/nightly_whatsnew.html b/bedrock/firefox/templates/firefox/nightly_whatsnew.html index 3241f1755f..6642a788c0 100644 --- a/bedrock/firefox/templates/firefox/nightly_whatsnew.html +++ b/bedrock/firefox/templates/firefox/nightly_whatsnew.html @@ -9,7 +9,7 @@ {% block canonical_urls %}{% endblock %} {% block extrahead %} - {% stylesheet 'nightly_whatsnew' %} + {{ css_bundle('nightly_whatsnew') }} {% endblock %} {% block page_title_prefix %}{% endblock %} @@ -96,7 +96,7 @@ {% endblock %} {% block js %} - {% javascript 'firefox_whatsnew' %} + {{ js_bundle('firefox_whatsnew') }} {% endblock %} {# Bug 1381776 #} diff --git a/bedrock/firefox/templates/firefox/organizations/organizations.html b/bedrock/firefox/templates/firefox/organizations/organizations.html index 46025fbe4f..88b32e1f25 100644 --- a/bedrock/firefox/templates/firefox/organizations/organizations.html +++ b/bedrock/firefox/templates/firefox/organizations/organizations.html @@ -10,7 +10,7 @@ {% block body_id %}organizations{% endblock %} {% block page_css %} - {% stylesheet 'firefox_organizations' %} + {{ css_bundle('firefox_organizations') }} {% endblock %} {% block site_header_nav %} diff --git a/bedrock/firefox/templates/firefox/releases/aurora-notes.html b/bedrock/firefox/templates/firefox/releases/aurora-notes.html index 6208851c71..1a2d4c96e3 100644 --- a/bedrock/firefox/templates/firefox/releases/aurora-notes.html +++ b/bedrock/firefox/templates/firefox/releases/aurora-notes.html @@ -7,7 +7,7 @@ {% block gtm_page_id %}data-gtm-page-id="/firefox/android/auroranotes/"{% endblock %} {% block page_css %} - {% stylesheet 'firefox_releasenotes_firefox' %} + {{ css_bundle('firefox_releasenotes_firefox') }} {% endblock %} {% set channel_name = 'Aurora' %} diff --git a/bedrock/firefox/templates/firefox/releases/index.html b/bedrock/firefox/templates/firefox/releases/index.html index 4238d28643..1d790b6285 100644 --- a/bedrock/firefox/templates/firefox/releases/index.html +++ b/bedrock/firefox/templates/firefox/releases/index.html @@ -5,7 +5,7 @@ {% block body_id %}firefox-releases-index{% endblock %} {% block page_css %} - {% stylesheet 'firefox_releases_index' %} + {{ css_bundle('firefox_releases_index') }} {% endblock %} {% block breadcrumbs %} diff --git a/bedrock/firefox/templates/firefox/releases/release-notes.html b/bedrock/firefox/templates/firefox/releases/release-notes.html index 38afcd161b..7ea6a90ae2 100644 --- a/bedrock/firefox/templates/firefox/releases/release-notes.html +++ b/bedrock/firefox/templates/firefox/releases/release-notes.html @@ -23,7 +23,7 @@ {% block body_class %}fx-notes{% endblock %} {% block page_css %} - {% stylesheet 'firefox_releasenotes_firefox' %} + {{ css_bundle('firefox_releasenotes_firefox') }} {% endblock %} {# channel_name is for display purposes where needed. #} @@ -363,7 +363,7 @@ {% block email_form %}{% endblock %} {% block js %} - {% javascript 'releasenotes' %} + {{ js_bundle('releasenotes') }} {% endblock %} {% macro note_entry(note) %} diff --git a/bedrock/firefox/templates/firefox/releases/system_requirements.html b/bedrock/firefox/templates/firefox/releases/system_requirements.html index 663c3e1402..00868b3a53 100644 --- a/bedrock/firefox/templates/firefox/releases/system_requirements.html +++ b/bedrock/firefox/templates/firefox/releases/system_requirements.html @@ -13,7 +13,7 @@ {% block body_class %}fxos-notes sky{% endblock %} {% block page_css %} - {% stylesheet 'firefox_releasenotes' %} + {{ css_bundle('firefox_releasenotes') }} {% endblock %} {% block content %} diff --git a/bedrock/firefox/templates/firefox/switch.html b/bedrock/firefox/templates/firefox/switch.html index 835fa6de4d..37282290dd 100644 --- a/bedrock/firefox/templates/firefox/switch.html +++ b/bedrock/firefox/templates/firefox/switch.html @@ -8,7 +8,7 @@ {% block page_desc %}{{ _('Switching to Firefox is fast, easy and risk-free, because Firefox imports your bookmarks, autofills, passwords and preferences from Chrome.') }}{% endblock %} {% block page_css %} - {% stylesheet 'firefox-switch' %} + {{ css_bundle('firefox-switch') }} {% endblock %} {% block body_id %}firefox-switch{% endblock %} @@ -75,5 +75,5 @@ {% endblock %} {% block js %} - {% javascript 'firefox-switch' %} + {{ js_bundle('firefox-switch') }} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/testflight.html b/bedrock/firefox/templates/firefox/testflight.html index 06dfd60cb6..2d79ba176d 100644 --- a/bedrock/firefox/templates/firefox/testflight.html +++ b/bedrock/firefox/templates/firefox/testflight.html @@ -18,7 +18,7 @@ {% block body_class %}{% endblock %} {% block page_css %} - {% stylesheet 'firefox_ios_testflight' %} + {{ css_bundle('firefox_ios_testflight') }} {% endblock %} {% block site_header_nav %}{% endblock %} diff --git a/bedrock/firefox/templates/firefox/tracking-protection-tour.html b/bedrock/firefox/templates/firefox/tracking-protection-tour.html index f90b1e0410..538e126155 100644 --- a/bedrock/firefox/templates/firefox/tracking-protection-tour.html +++ b/bedrock/firefox/templates/firefox/tracking-protection-tour.html @@ -46,7 +46,7 @@ data-panel3-button="{{ _('Got it!') }}" {% block stub_attribution %}{% endblock %} {% block site_css %} - {% stylesheet 'tracking-protection-tour' %} + {{ css_bundle('tracking-protection-tour') }} {% endblock %} {% block page_title_prefix %}{% endblock %} @@ -121,7 +121,7 @@ data-panel3-button="{{ _('Got it!') }}" {% block email_form %}{% endblock %} {% block site_js %} - {% javascript 'tracking-protection-tour' %} + {{ js_bundle('tracking-protection-tour') }} {% endblock %} {# Bug 1381776 #} diff --git a/bedrock/firefox/templates/firefox/unsupported-systems.html b/bedrock/firefox/templates/firefox/unsupported-systems.html index 82f226c755..da2c65a74a 100644 --- a/bedrock/firefox/templates/firefox/unsupported-systems.html +++ b/bedrock/firefox/templates/firefox/unsupported-systems.html @@ -8,7 +8,7 @@ {% block page_desc %}{{ _('We’re sorry to report this, but your computer does not meet the minimum system requirements to run this version.') }}{% endblock %} {% block page_css %} - {% stylesheet 'firefox_unsupported_systems' %} + {{ css_bundle('firefox_unsupported_systems') }} {% endblock %} {% block content %} diff --git a/bedrock/firefox/templates/firefox/whatsnew/base-pebbles.html b/bedrock/firefox/templates/firefox/whatsnew/base-pebbles.html index 798f40cf92..9bad717241 100644 --- a/bedrock/firefox/templates/firefox/whatsnew/base-pebbles.html +++ b/bedrock/firefox/templates/firefox/whatsnew/base-pebbles.html @@ -20,7 +20,7 @@ {% block extrahead %} {% if switch('firefox-update-notification-modal', ['en-US']) %} - {% stylesheet 'firefox-update-notification-firstrun-whatsnew' %} + {{ css_bundle('firefox-update-notification-firstrun-whatsnew') }} {% endif %} {% endblock %} @@ -28,6 +28,6 @@ {% block update_notification %} {% if switch('firefox-update-notification-modal', ['en-US']) %} {% include 'includes/firefox-update-instructions.html' %} - {% javascript 'firefox-update-notification-firstrun-whatsnew' %} + {{ js_bundle('firefox-update-notification-firstrun-whatsnew') }} {% endif %} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/whatsnew/base.html b/bedrock/firefox/templates/firefox/whatsnew/base.html index ef93f26f01..d131afa732 100644 --- a/bedrock/firefox/templates/firefox/whatsnew/base.html +++ b/bedrock/firefox/templates/firefox/whatsnew/base.html @@ -11,7 +11,7 @@ {% block extrahead %} {% if switch('firefox-update-notification-modal', ['en-US']) %} - {% stylesheet 'firefox-update-notification-firstrun-whatsnew' %} + {{ css_bundle('firefox-update-notification-firstrun-whatsnew') }} {% endif %} {% endblock %} @@ -19,6 +19,6 @@ {% block update_notification %} {% if switch('firefox-update-notification-modal', ['en-US']) %} {% include 'includes/firefox-update-instructions.html' %} - {% javascript 'firefox-update-notification-firstrun-whatsnew' %} + {{ js_bundle('firefox-update-notification-firstrun-whatsnew') }} {% endif %} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/whatsnew/fx57/base-whatsnew-57-letter.html b/bedrock/firefox/templates/firefox/whatsnew/fx57/base-whatsnew-57-letter.html index 105894e92f..6eb0d9c0e4 100644 --- a/bedrock/firefox/templates/firefox/whatsnew/fx57/base-whatsnew-57-letter.html +++ b/bedrock/firefox/templates/firefox/whatsnew/fx57/base-whatsnew-57-letter.html @@ -9,7 +9,7 @@ {% block page_title %}{{ _('The new Firefox. Fast for good.') }}{% endblock %} {% block page_css %} - {% stylesheet 'firefox-whatsnew-57-letter' %} + {{ css_bundle('firefox-whatsnew-57-letter') }} {% endblock %} {% block body_class %}quantum-letter{% endblock %} diff --git a/bedrock/firefox/templates/firefox/whatsnew/fx57/whatsnew-57.html b/bedrock/firefox/templates/firefox/whatsnew/fx57/whatsnew-57.html index 50c5c5d129..b4a7a1dcec 100644 --- a/bedrock/firefox/templates/firefox/whatsnew/fx57/whatsnew-57.html +++ b/bedrock/firefox/templates/firefox/whatsnew/fx57/whatsnew-57.html @@ -10,7 +10,7 @@ {% block page_desc %}{{ _('The new Firefox. Fast for good.') }}{% endblock %} {% block page_css %} - {% stylesheet 'firefox-whatsnew-57' %} + {{ css_bundle('firefox-whatsnew-57') }} {% endblock %} {% block site_header %}{% endblock %} diff --git a/bedrock/firefox/templates/firefox/whatsnew/index.html b/bedrock/firefox/templates/firefox/whatsnew/index.html index ee3f2b827e..de204ad5b0 100644 --- a/bedrock/firefox/templates/firefox/whatsnew/index.html +++ b/bedrock/firefox/templates/firefox/whatsnew/index.html @@ -21,7 +21,7 @@ {% block site_header %}{% endblock %} {% block page_css %} - {% stylesheet 'firefox_whatsnew' %} + {{ css_bundle('firefox_whatsnew') }} {% endblock %} {% set show_send_to_device = LANG in settings.SEND_TO_DEVICE_LOCALES %} @@ -70,5 +70,5 @@ {% endblock %} {% block js %} - {% javascript 'firefox_whatsnew' %} + {{ js_bundle('firefox_whatsnew') }} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/whatsnew/index.id.html b/bedrock/firefox/templates/firefox/whatsnew/index.id.html index 3a1502d002..50cb4f1c55 100644 --- a/bedrock/firefox/templates/firefox/whatsnew/index.id.html +++ b/bedrock/firefox/templates/firefox/whatsnew/index.id.html @@ -20,7 +20,7 @@ {% block site_header %}{% endblock %} {% block page_css %} - {% stylesheet 'firefox-whatsnew-rocket' %} + {{ css_bundle('firefox-whatsnew-rocket') }} {% endblock %} @@ -52,5 +52,5 @@ {% block email_form %}{% endblock %} {% block js %} - {% javascript 'firefox_whatsnew' %} + {{ js_bundle('firefox_whatsnew') }} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/whatsnew/index.zh-TW.html b/bedrock/firefox/templates/firefox/whatsnew/index.zh-TW.html index 2bec35ae93..dad3835604 100644 --- a/bedrock/firefox/templates/firefox/whatsnew/index.zh-TW.html +++ b/bedrock/firefox/templates/firefox/whatsnew/index.zh-TW.html @@ -22,7 +22,7 @@ {% block site_header %}{% endblock %} {% block page_css %} - {% stylesheet 'firefox_whatsnew_zh_tw' %} + {{ css_bundle('firefox_whatsnew_zh_tw') }} {% endblock %} {% block content %} @@ -53,5 +53,5 @@ {% endblock %} {% block js %} - {% javascript 'firefox_whatsnew' %} + {{ js_bundle('firefox_whatsnew') }} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx60.html b/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx60.html index ed089dd045..3ee0e46462 100644 --- a/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx60.html +++ b/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fx60.html @@ -16,7 +16,7 @@ {% block site_header %}{% endblock %} {% block page_css %} - {% stylesheet 'firefox_whatsnew_60' %} + {{ css_bundle('firefox_whatsnew_60') }} {% endblock %} {% set show_send_to_device = LANG in settings.SEND_TO_DEVICE_LOCALES %} @@ -124,5 +124,5 @@ {% endblock %} {% block js %} - {% javascript 'firefox_whatsnew_60' %} + {{ js_bundle('firefox_whatsnew_60') }} {% endblock %} diff --git a/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fxa.html b/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fxa.html index b2c77456d3..f65f5e88da 100644 --- a/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fxa.html +++ b/bedrock/firefox/templates/firefox/whatsnew/whatsnew-fxa.html @@ -14,7 +14,7 @@ {% block site_header %}{% endblock %} {% block page_css %} - {% stylesheet 'firefox_whatsnew_fxa' %} + {{ css_bundle('firefox_whatsnew_fxa') }} {% endblock %} {% block content %} @@ -50,6 +50,6 @@ {% endblock %} {% block js %} - {% javascript 'firefox_whatsnew' %} - {% javascript 'firefox_whatsnew_fxa' %} + {{ js_bundle('firefox_whatsnew') }} + {{ js_bundle('firefox_whatsnew_fxa') }} {% endblock %} diff --git a/bedrock/foundation/templates/foundation/annualreport/2011.html b/bedrock/foundation/templates/foundation/annualreport/2011.html index 6da44ca9da..edf2729c70 100644 --- a/bedrock/foundation/templates/foundation/annualreport/2011.html +++ b/bedrock/foundation/templates/foundation/annualreport/2011.html @@ -11,15 +11,15 @@ {% block body_class %}sand{% endblock %} {% block page_css %} - {% stylesheet 'annual_2011' %} + {{ css_bundle('annual_2011') }} {% endblock %} {% block js %} - {% javascript 'annual_2011' %} + {{ js_bundle('annual_2011') }} {% endblock %} diff --git a/bedrock/foundation/templates/foundation/annualreport/2011faq.html b/bedrock/foundation/templates/foundation/annualreport/2011faq.html index 9e5357214d..def7dc58f3 100644 --- a/bedrock/foundation/templates/foundation/annualreport/2011faq.html +++ b/bedrock/foundation/templates/foundation/annualreport/2011faq.html @@ -11,12 +11,12 @@ {% block body_class %}sand{% endblock %} {% block page_css %} - {% stylesheet 'annual_2011' %} + {{ css_bundle('annual_2011') }} {% endblock %} {% block js %} - {% javascript 'annual_2011' %} + {{ js_bundle('annual_2011') }} {% endblock %} diff --git a/bedrock/foundation/templates/foundation/annualreport/2012/faq.html b/bedrock/foundation/templates/foundation/annualreport/2012/faq.html index acfeb40c4b..e631d245e9 100644 --- a/bedrock/foundation/templates/foundation/annualreport/2012/faq.html +++ b/bedrock/foundation/templates/foundation/annualreport/2012/faq.html @@ -10,7 +10,7 @@ {% block body_id %}annual-2012-faq{% endblock %} {% block page_css %} - {% stylesheet 'annual_2012' %} + {{ css_bundle('annual_2012') }} {% endblock %} {% block site_header %} diff --git a/bedrock/foundation/templates/foundation/annualreport/2012/index.html b/bedrock/foundation/templates/foundation/annualreport/2012/index.html index 195ec129c4..4385727202 100644 --- a/bedrock/foundation/templates/foundation/annualreport/2012/index.html +++ b/bedrock/foundation/templates/foundation/annualreport/2012/index.html @@ -8,7 +8,7 @@ {% block body_id %}annual-2012{% endblock %} {% block page_css %} - {% stylesheet 'annual_2012' %} + {{ css_bundle('annual_2012') }} {% endblock %} {% block site_header %} @@ -229,5 +229,5 @@ {% endblock %} {% block js %} - {% javascript 'annual_2012' %} + {{ js_bundle('annual_2012') }} {% endblock %} diff --git a/bedrock/foundation/templates/foundation/annualreport/2013/faq.html b/bedrock/foundation/templates/foundation/annualreport/2013/faq.html index 3fd449e68a..95ee578dcd 100644 --- a/bedrock/foundation/templates/foundation/annualreport/2013/faq.html +++ b/bedrock/foundation/templates/foundation/annualreport/2013/faq.html @@ -10,7 +10,7 @@ {% block body_id %}annual-2013-faq{% endblock %} {% block page_css %} - {% stylesheet 'annual_2013' %} + {{ css_bundle('annual_2013') }} {% endblock %} {% block site_header %} diff --git a/bedrock/foundation/templates/foundation/annualreport/2013/index.html b/bedrock/foundation/templates/foundation/annualreport/2013/index.html index e41cf3cd0b..d0a5a4324c 100644 --- a/bedrock/foundation/templates/foundation/annualreport/2013/index.html +++ b/bedrock/foundation/templates/foundation/annualreport/2013/index.html @@ -8,7 +8,7 @@ {% block body_id %}annual-2013{% endblock %} {% block page_css %} - {% stylesheet 'annual_2013' %} + {{ css_bundle('annual_2013') }} {% endblock %} {% block site_header %} @@ -153,5 +153,5 @@ {% endblock %} {% block js %} - {% javascript 'annual_2013' %} + {{ js_bundle('annual_2013') }} {% endblock %} diff --git a/bedrock/foundation/templates/foundation/annualreport/2014/faq.html b/bedrock/foundation/templates/foundation/annualreport/2014/faq.html index 16bb56e5ca..7bebe7258f 100644 --- a/bedrock/foundation/templates/foundation/annualreport/2014/faq.html +++ b/bedrock/foundation/templates/foundation/annualreport/2014/faq.html @@ -10,7 +10,7 @@ {% block body_id %}annual-2014-faq{% endblock %} {% block page_css %} - {% stylesheet 'annual_2014' %} + {{ css_bundle('annual_2014') }} {% endblock %} {% block site_header %} diff --git a/bedrock/foundation/templates/foundation/annualreport/2014/index.html b/bedrock/foundation/templates/foundation/annualreport/2014/index.html index 2c48416c34..3f003692e7 100644 --- a/bedrock/foundation/templates/foundation/annualreport/2014/index.html +++ b/bedrock/foundation/templates/foundation/annualreport/2014/index.html @@ -8,7 +8,7 @@ {% block body_id %}annual-2014{% endblock %} {% block page_css %} - {% stylesheet 'annual_2014' %} + {{ css_bundle('annual_2014') }} {% endblock %} {% block site_header %} @@ -99,5 +99,5 @@ {% endblock %} {% block js %} - {% javascript 'annual_2013' %} + {{ js_bundle('annual_2013') }} {% endblock %} diff --git a/bedrock/foundation/templates/foundation/annualreport/2015/faq.html b/bedrock/foundation/templates/foundation/annualreport/2015/faq.html index 936388a74a..18fadf39c5 100644 --- a/bedrock/foundation/templates/foundation/annualreport/2015/faq.html +++ b/bedrock/foundation/templates/foundation/annualreport/2015/faq.html @@ -10,7 +10,7 @@ {% block body_id %}annual-2015-faq{% endblock %} {% block page_css %} - {% stylesheet 'annual_2015' %} + {{ css_bundle('annual_2015') }} {% endblock %} {% block site_header %} diff --git a/bedrock/foundation/templates/foundation/annualreport/2015/index.html b/bedrock/foundation/templates/foundation/annualreport/2015/index.html index e486c15208..a80a423525 100644 --- a/bedrock/foundation/templates/foundation/annualreport/2015/index.html +++ b/bedrock/foundation/templates/foundation/annualreport/2015/index.html @@ -8,7 +8,7 @@ {% block body_id %}annual-2015{% endblock %} {% block page_css %} - {% stylesheet 'annual_2015' %} + {{ css_bundle('annual_2015') }} {% endblock %} {% block site_header %} diff --git a/bedrock/foundation/templates/foundation/annualreport/2016/index.html b/bedrock/foundation/templates/foundation/annualreport/2016/index.html index ea7dbff983..5238ecfdaf 100644 --- a/bedrock/foundation/templates/foundation/annualreport/2016/index.html +++ b/bedrock/foundation/templates/foundation/annualreport/2016/index.html @@ -8,7 +8,7 @@ {% block body_id %}annual-2016{% endblock %} {% block page_css %} - {% stylesheet 'annual_2016' %} + {{ css_bundle('annual_2016') }} {% endblock %} {% block tabzilla_tab %}{% endblock %} diff --git a/bedrock/foundation/templates/foundation/base-resp.html b/bedrock/foundation/templates/foundation/base-resp.html index 48b94330ed..441a996b9a 100644 --- a/bedrock/foundation/templates/foundation/base-resp.html +++ b/bedrock/foundation/templates/foundation/base-resp.html @@ -8,7 +8,7 @@ {% block page_title_suffix %}{% endblock %} {% block page_css %} - {% stylesheet 'foundation' %} + {{ css_bundle('foundation') }} {% endblock %} {% block body_class %}sand{% endblock %} diff --git a/bedrock/grants/templates/grants/base.html b/bedrock/grants/templates/grants/base.html index f47762050c..267f56501f 100644 --- a/bedrock/grants/templates/grants/base.html +++ b/bedrock/grants/templates/grants/base.html @@ -7,7 +7,7 @@ {% block body_class %}sand{% endblock %} {% block page_css %} - {% stylesheet 'grants' %} + {{ css_bundle('grants') }} {% endblock %} {% block breadcrumbs %} diff --git a/bedrock/legal/templates/legal/base-resp.html b/bedrock/legal/templates/legal/base-resp.html index df178c8518..6b9bf1319b 100644 --- a/bedrock/legal/templates/legal/base-resp.html +++ b/bedrock/legal/templates/legal/base-resp.html @@ -6,7 +6,7 @@ {% extends "base-resp.html" %} {% block page_css %} - {% stylesheet 'legal' %} + {{ css_bundle('legal') }} {% endblock %} {% block body_class %}sand{% endblock %} diff --git a/bedrock/legal/templates/legal/eula.html b/bedrock/legal/templates/legal/eula.html index e4b90a0b62..baa8b9c7f1 100644 --- a/bedrock/legal/templates/legal/eula.html +++ b/bedrock/legal/templates/legal/eula.html @@ -7,7 +7,7 @@ {% block breadcrumbs %}{% endblock %} {% block page_css %} - {% stylesheet 'legal-eula' %} + {{ css_bundle('legal-eula') }} {% endblock %} {% block content %} diff --git a/bedrock/legal/templates/legal/eula/firefox-2-eula.html b/bedrock/legal/templates/legal/eula/firefox-2-eula.html index 9aca101ca0..2ca9bc6271 100644 --- a/bedrock/legal/templates/legal/eula/firefox-2-eula.html +++ b/bedrock/legal/templates/legal/eula/firefox-2-eula.html @@ -6,7 +6,7 @@ {% block body_class %}sand{% endblock %} {% block page_css %} - {% stylesheet 'legal-eula' %} + {{ css_bundle('legal-eula') }} {% endblock %} {% block page_title %}Mozilla Firefox End-User Software License Agreement - Version 2.0 — Archived, May 2014{% endblock %} diff --git a/bedrock/legal/templates/legal/eula/firefox-3-eula.html b/bedrock/legal/templates/legal/eula/firefox-3-eula.html index b3bf48f51b..b1c0fe45fc 100644 --- a/bedrock/legal/templates/legal/eula/firefox-3-eula.html +++ b/bedrock/legal/templates/legal/eula/firefox-3-eula.html @@ -6,7 +6,7 @@ {% block body_class %}sand{% endblock %} {% block page_css %} - {% stylesheet 'legal-eula' %} + {{ css_bundle('legal-eula') }} {% endblock %} {% block page_title %}Mozilla Firefox End-User Software License Agreement - Version 3.0 — Archived, May 2014{% endblock %} diff --git a/bedrock/legal/templates/legal/eula/thunderbird-1.5-eula.html b/bedrock/legal/templates/legal/eula/thunderbird-1.5-eula.html index 8efead7b4c..86569af45c 100644 --- a/bedrock/legal/templates/legal/eula/thunderbird-1.5-eula.html +++ b/bedrock/legal/templates/legal/eula/thunderbird-1.5-eula.html @@ -6,7 +6,7 @@ {% block body_class %}sand{% endblock %} {% block page_css %} - {% stylesheet 'legal-eula' %} + {{ css_bundle('legal-eula') }} {% endblock %} {% block page_title %}Mozilla Thunderbird End-User Software License Agreement — Version 1.5, Archived{% endblock %} diff --git a/bedrock/legal/templates/legal/eula/thunderbird-2-eula.html b/bedrock/legal/templates/legal/eula/thunderbird-2-eula.html index b9fe92eddc..940af2a80e 100644 --- a/bedrock/legal/templates/legal/eula/thunderbird-2-eula.html +++ b/bedrock/legal/templates/legal/eula/thunderbird-2-eula.html @@ -6,7 +6,7 @@ {% block body_class %}sand{% endblock %} {% block page_css %} - {% stylesheet 'legal-eula' %} + {{ css_bundle('legal-eula') }} {% endblock %} {% block page_title %}Mozilla Thunderbird End-User Software License Agreement — Version 2.0, Archived{% endblock %} diff --git a/bedrock/legal/templates/legal/fraud-report.html b/bedrock/legal/templates/legal/fraud-report.html index b9ffddd57e..75a6ac841d 100644 --- a/bedrock/legal/templates/legal/fraud-report.html +++ b/bedrock/legal/templates/legal/fraud-report.html @@ -5,7 +5,7 @@ {% block body_class %}sand{% endblock %} {% block page_css %} - {% stylesheet 'legal_fraud_report' %} + {{ css_bundle('legal_fraud_report') }} {% endblock %} {% block content %} @@ -202,5 +202,5 @@ {% block email_form %}{% endblock %} {% block js %} - {% javascript 'legal_fraud_report' %} + {{ js_bundle('legal_fraud_report') }} {% endblock %} diff --git a/bedrock/mozorg/management/commands/debundle_templates.py b/bedrock/mozorg/management/commands/debundle_templates.py new file mode 100644 index 0000000000..95f01fde8b --- /dev/null +++ b/bedrock/mozorg/management/commands/debundle_templates.py @@ -0,0 +1,60 @@ +from __future__ import print_function, unicode_literals + +import re + +from django.conf import settings +from django.core.management.base import BaseCommand + +from bedrock.settings.static_media import PIPELINE_CSS, PIPELINE_JS + + +ROOT = settings.ROOT_PATH +PIPELINE_RE = re.compile(r"\{\% (stylesheet|javascript) '([^']+)' \%\}") +SPACE_RE = re.compile(r'^\s+') +BUNDLES = { + 'javascript': PIPELINE_JS, + 'stylesheet': PIPELINE_CSS, +} +STYLE_TEMPLATE = "{{ css_bundle('%s') }}" +JS_TEMPLATE = "{{ js_bundle('%s') }}" + + +def get_leading_space(line): + match = SPACE_RE.match(line) + if match: + return match.group(0) + + return '' + + +class Command(BaseCommand): + """Command to convert all templates from Pipeline bundles to individual assets. + + TODO: Delete me after pipeline removal. + """ + def handle(self, *args, **options): + for template in ROOT.glob('bedrock/*/templates/**/*.html'): + print('===============') + print(template) + lines = [] + modified = False + with template.open('r') as tf: + for line in tf: + match = PIPELINE_RE.search(line) + if match: + print(line) + mtype, bundle = match.groups() + indent = get_leading_space(line) + if mtype == 'stylesheet': + lines.append(indent + STYLE_TEMPLATE % bundle + '\n') + else: + lines.append(indent + JS_TEMPLATE % bundle + '\n') + + modified = True + print(lines[-1]) + else: + lines.append(line) + + if modified: + with template.open('w') as tf: + tf.writelines(lines) diff --git a/bedrock/mozorg/management/commands/static_bundles_json.py b/bedrock/mozorg/management/commands/static_bundles_json.py new file mode 100644 index 0000000000..bbdd491043 --- /dev/null +++ b/bedrock/mozorg/management/commands/static_bundles_json.py @@ -0,0 +1,31 @@ +from __future__ import print_function, unicode_literals + +import json + +from django.core.management.base import BaseCommand + +from bedrock.settings.static_media import PIPELINE_CSS, PIPELINE_JS + + +class Command(BaseCommand): + """Command to output pipeline bundle configs as JSON. + + TODO: Delete me after pipeline removal. + """ + def handle(self, *args, **options): + output = { + 'css': [], + 'js': [], + } + for name, bundle in PIPELINE_CSS.iteritems(): + output['css'].append({ + 'name': name, + 'files': bundle['source_filenames'], + }) + for name, bundle in PIPELINE_JS.iteritems(): + output['js'].append({ + 'name': name, + 'files': bundle['source_filenames'], + }) + + print(json.dumps(output, indent=2)) diff --git a/bedrock/mozorg/templates/mozorg/about-base-resp.html b/bedrock/mozorg/templates/mozorg/about-base-resp.html index b9066d797f..a1e320415d 100644 --- a/bedrock/mozorg/templates/mozorg/about-base-resp.html +++ b/bedrock/mozorg/templates/mozorg/about-base-resp.html @@ -16,7 +16,7 @@ ] -%} {% block page_css %} - {% stylesheet 'about-base-resp' %} + {{ css_bundle('about-base-resp') }} {% endblock %} {% block body_attrs %}{{ super() }} data-global-nav-current-link="about-us"{% endblock %} diff --git a/bedrock/mozorg/templates/mozorg/about.html b/bedrock/mozorg/templates/mozorg/about.html index 5b4c1c42bc..686c2deaa7 100644 --- a/bedrock/mozorg/templates/mozorg/about.html +++ b/bedrock/mozorg/templates/mozorg/about.html @@ -10,7 +10,7 @@ {% block body_attrs %}{{ super() }} data-global-nav-current-link="about-us"{% endblock %} {% block page_css %} - {% stylesheet 'about' %} + {{ css_bundle('about') }} {% endblock %} {% block content %} @@ -121,5 +121,5 @@ {% endblock %} {% block js %} - {% javascript 'about_video' %} + {{ js_bundle('about_video') }} {% endblock %} diff --git a/bedrock/mozorg/templates/mozorg/about/forums/cancellation.html b/bedrock/mozorg/templates/mozorg/about/forums/cancellation.html index 6822cafa60..07737f241c 100644 --- a/bedrock/mozorg/templates/mozorg/about/forums/cancellation.html +++ b/bedrock/mozorg/templates/mozorg/about/forums/cancellation.html @@ -8,7 +8,7 @@ {% block body_id %}about-forum-cancellation{% endblock %} {% block page_css %} - {% stylesheet 'about-forums' %} + {{ css_bundle('about-forums') }} {% endblock %} {% block article %} diff --git a/bedrock/mozorg/templates/mozorg/about/forums/etiquette.html b/bedrock/mozorg/templates/mozorg/about/forums/etiquette.html index a56de3c57f..2497b878ff 100644 --- a/bedrock/mozorg/templates/mozorg/about/forums/etiquette.html +++ b/bedrock/mozorg/templates/mozorg/about/forums/etiquette.html @@ -8,7 +8,7 @@ {% block body_id %}about-forum-etiquette{% endblock %} {% block page_css %} - {% stylesheet 'about-forums' %} + {{ css_bundle('about-forums') }} {% endblock %} {% block article %} diff --git a/bedrock/mozorg/templates/mozorg/about/forums/forums.html b/bedrock/mozorg/templates/mozorg/about/forums/forums.html index 43385a0348..28b2f40ccd 100644 --- a/bedrock/mozorg/templates/mozorg/about/forums/forums.html +++ b/bedrock/mozorg/templates/mozorg/about/forums/forums.html @@ -11,7 +11,7 @@ {% block body_id %}about-forums{% endblock %} {% block page_css %} - {% stylesheet 'about-forums' %} + {{ css_bundle('about-forums') }} {% endblock %} {% block article %} diff --git a/bedrock/mozorg/templates/mozorg/about/governance/policies/commit/access-policy.html b/bedrock/mozorg/templates/mozorg/about/governance/policies/commit/access-policy.html index e56d570644..d66c309e0c 100644 --- a/bedrock/mozorg/templates/mozorg/about/governance/policies/commit/access-policy.html +++ b/bedrock/mozorg/templates/mozorg/about/governance/policies/commit/access-policy.html @@ -9,7 +9,7 @@ {% block page_css %} {{ super() }} - {% stylesheet 'commit-access-policy' %} + {{ css_bundle('commit-access-policy') }} {% endblock %} {% block article %} diff --git a/bedrock/mozorg/templates/mozorg/about/governance/policies/commit/requirements.html b/bedrock/mozorg/templates/mozorg/about/governance/policies/commit/requirements.html index 5d5a67228c..97c43e06e3 100644 --- a/bedrock/mozorg/templates/mozorg/about/governance/policies/commit/requirements.html +++ b/bedrock/mozorg/templates/mozorg/about/governance/policies/commit/requirements.html @@ -9,7 +9,7 @@ {% block page_css %} {{ super() }} - {% stylesheet 'commit-access-requirements' %} + {{ css_bundle('commit-access-requirements') }} {% endblock %} {% block article %} diff --git a/bedrock/mozorg/templates/mozorg/about/history.html b/bedrock/mozorg/templates/mozorg/about/history.html index e41c263ada..2eece6f63f 100644 --- a/bedrock/mozorg/templates/mozorg/about/history.html +++ b/bedrock/mozorg/templates/mozorg/about/history.html @@ -12,11 +12,11 @@ {% block body_attrs %}{{ super() }} data-global-nav-current-link="about-us"{% endblock %} {% block page_css %} - {% stylesheet 'history-slides' %} + {{ css_bundle('history-slides') }} {% endblock %} {% block js %} - {% javascript 'history-slides' %} + {{ js_bundle('history-slides') }} {% endblock %} {% block site_header_logo %}{% endblock %} diff --git a/bedrock/mozorg/templates/mozorg/about/leadership.html b/bedrock/mozorg/templates/mozorg/about/leadership.html index c2e5bbe9fa..6d908ff0a1 100644 --- a/bedrock/mozorg/templates/mozorg/about/leadership.html +++ b/bedrock/mozorg/templates/mozorg/about/leadership.html @@ -10,11 +10,11 @@ {% block body_attrs %}{{ super() }} data-global-nav-current-link="about-us"{% endblock %} {% block page_css %} - {% stylesheet 'about-leadership' %} + {{ css_bundle('about-leadership') }} {% endblock %} {% block js %} - {% javascript 'about-leadership' %} + {{ js_bundle('about-leadership') }} {% endblock %} {% block site_header_logo %}{% endblock %} diff --git a/bedrock/mozorg/templates/mozorg/about/manifesto.html b/bedrock/mozorg/templates/mozorg/about/manifesto.html index d5524fe755..6aab1c1f8b 100644 --- a/bedrock/mozorg/templates/mozorg/about/manifesto.html +++ b/bedrock/mozorg/templates/mozorg/about/manifesto.html @@ -44,7 +44,7 @@ {% endblock %} {% block page_css %} - {% stylesheet 'manifesto' %} + {{ css_bundle('manifesto') }} {% endblock %} {% block site_header_logo %}{% endblock %} @@ -399,7 +399,7 @@ {% endblock %} {% block js %} - {% javascript 'manifesto' %} + {{ js_bundle('manifesto') }} {% endblock %} {#- End the redesigned landing page -#} diff --git a/bedrock/mozorg/templates/mozorg/about/policy/lean-data.html b/bedrock/mozorg/templates/mozorg/about/policy/lean-data.html index b15a3ce781..682916800f 100644 --- a/bedrock/mozorg/templates/mozorg/about/policy/lean-data.html +++ b/bedrock/mozorg/templates/mozorg/about/policy/lean-data.html @@ -9,7 +9,7 @@ {% block page_css %} - {% stylesheet 'about-lean-data' %} + {{ css_bundle('about-lean-data') }} {% endblock %} {% block content %} diff --git a/bedrock/mozorg/templates/mozorg/about/policy/patents/guide.html b/bedrock/mozorg/templates/mozorg/about/policy/patents/guide.html index 72acb8af01..b7eb2c0cee 100644 --- a/bedrock/mozorg/templates/mozorg/about/policy/patents/guide.html +++ b/bedrock/mozorg/templates/mozorg/about/policy/patents/guide.html @@ -10,11 +10,11 @@ {% block page_css %} - {% stylesheet 'about-patents' %} + {{ css_bundle('about-patents') }} {% endblock %} {% block js %} - {% javascript 'accordion' %} + {{ js_bundle('accordion') }} {% endblock %} {% block article %} diff --git a/bedrock/mozorg/templates/mozorg/about/policy/patents/index.html b/bedrock/mozorg/templates/mozorg/about/policy/patents/index.html index ca4812f82a..56add29bce 100644 --- a/bedrock/mozorg/templates/mozorg/about/policy/patents/index.html +++ b/bedrock/mozorg/templates/mozorg/about/policy/patents/index.html @@ -10,11 +10,11 @@ {% block page_css %} - {% stylesheet 'about-patents' %} + {{ css_bundle('about-patents') }} {% endblock %} {% block js %} - {% javascript 'accordion' %} + {{ js_bundle('accordion') }} {% endblock %} {% block article %} diff --git a/bedrock/mozorg/templates/mozorg/about/policy/patents/license-1.0.html b/bedrock/mozorg/templates/mozorg/about/policy/patents/license-1.0.html index 5c540e3222..c408a4b308 100644 --- a/bedrock/mozorg/templates/mozorg/about/policy/patents/license-1.0.html +++ b/bedrock/mozorg/templates/mozorg/about/policy/patents/license-1.0.html @@ -10,11 +10,11 @@ {% block page_css %} - {% stylesheet 'about-patents' %} + {{ css_bundle('about-patents') }} {% endblock %} {% block js %} - {% javascript 'accordion' %} + {{ js_bundle('accordion') }} {% endblock %} {% block article %} diff --git a/bedrock/mozorg/templates/mozorg/about/policy/patents/license.html b/bedrock/mozorg/templates/mozorg/about/policy/patents/license.html index 150cb51797..af3749691b 100644 --- a/bedrock/mozorg/templates/mozorg/about/policy/patents/license.html +++ b/bedrock/mozorg/templates/mozorg/about/policy/patents/license.html @@ -10,11 +10,11 @@ {% block page_css %} - {% stylesheet 'about-patents' %} + {{ css_bundle('about-patents') }} {% endblock %} {% block js %} - {% javascript 'accordion' %} + {{ js_bundle('accordion') }} {% endblock %} {% block article %} diff --git a/bedrock/mozorg/templates/mozorg/about/policy/transparency/index.html b/bedrock/mozorg/templates/mozorg/about/policy/transparency/index.html index 8c3799a205..20a57c323b 100644 --- a/bedrock/mozorg/templates/mozorg/about/policy/transparency/index.html +++ b/bedrock/mozorg/templates/mozorg/about/policy/transparency/index.html @@ -8,14 +8,14 @@ {% block body_class %}sand about-transparency{% endblock %} {% block page_css %} - {% stylesheet 'about-transparency' %} + {{ css_bundle('about-transparency') }} {% endblock %} {% block js %} - {% javascript 'about-transparency' %} + {{ js_bundle('about-transparency') }} {% endblock %} {% block content %} diff --git a/bedrock/mozorg/templates/mozorg/about/policy/transparency/report-base.html b/bedrock/mozorg/templates/mozorg/about/policy/transparency/report-base.html index 12a709eda9..f8aebd2a12 100644 --- a/bedrock/mozorg/templates/mozorg/about/policy/transparency/report-base.html +++ b/bedrock/mozorg/templates/mozorg/about/policy/transparency/report-base.html @@ -8,14 +8,14 @@ {% block body_class %}sand about-transparency{% endblock %} {% block page_css %} - {% stylesheet 'about-transparency' %} + {{ css_bundle('about-transparency') }} {% endblock %} {% block js %} - {% javascript 'about-transparency' %} + {{ js_bundle('about-transparency') }} {% endblock %} {% block content %} diff --git a/bedrock/mozorg/templates/mozorg/book.html b/bedrock/mozorg/templates/mozorg/book.html index 5eba787465..9ac827f3f5 100644 --- a/bedrock/mozorg/templates/mozorg/book.html +++ b/bedrock/mozorg/templates/mozorg/book.html @@ -8,7 +8,7 @@ The Book of Mozilla {% block page_css %} - {% stylesheet 'book' %} + {{ css_bundle('book') }} {% endblock %} diff --git a/bedrock/mozorg/templates/mozorg/browser-test.html b/bedrock/mozorg/templates/mozorg/browser-test.html index 1d43893be1..68842fdee5 100644 --- a/bedrock/mozorg/templates/mozorg/browser-test.html +++ b/bedrock/mozorg/templates/mozorg/browser-test.html @@ -16,7 +16,7 @@ {% block body_class %}{% endblock %} {% block page_css %} - {% stylesheet 'browser-test' %} + {{ css_bundle('browser-test') }} {% endblock %} {% block site_header %} diff --git a/bedrock/mozorg/templates/mozorg/contact/contact-base.html b/bedrock/mozorg/templates/mozorg/contact/contact-base.html index d811efa861..ae96a5fcf1 100644 --- a/bedrock/mozorg/templates/mozorg/contact/contact-base.html +++ b/bedrock/mozorg/templates/mozorg/contact/contact-base.html @@ -11,7 +11,7 @@ {% block body_attrs %}{{ super() }} data-global-nav-current-link="about-us"{% endblock %} {% block extrahead %} - {% stylesheet 'contact-spaces' %} + {{ css_bundle('contact-spaces') }} {% endblock %} {% block site_header %} @@ -68,5 +68,5 @@ {% endblock %} {% block js %} - {% javascript 'contact-spaces' %} + {{ js_bundle('contact-spaces') }} {% endblock %} diff --git a/bedrock/mozorg/templates/mozorg/contribute/contribute-base.html b/bedrock/mozorg/templates/mozorg/contribute/contribute-base.html index 6c8bdd6546..83311a09b2 100644 --- a/bedrock/mozorg/templates/mozorg/contribute/contribute-base.html +++ b/bedrock/mozorg/templates/mozorg/contribute/contribute-base.html @@ -12,11 +12,11 @@ {% block body_attrs %}{{ super() }} data-global-nav-current-link="get-involved"{% endblock %} {% block page_css %} - {% stylesheet 'contribute-base' %} + {{ css_bundle('contribute-base') }} {% endblock %} {% block js %} - {% javascript 'contribute-base' %} + {{ js_bundle('contribute-base') }} {% endblock %} {% block site_header_nav %}{% endblock %} diff --git a/bedrock/mozorg/templates/mozorg/contribute/contribute-embed.html b/bedrock/mozorg/templates/mozorg/contribute/contribute-embed.html index dd0af664b4..253d76af45 100644 --- a/bedrock/mozorg/templates/mozorg/contribute/contribute-embed.html +++ b/bedrock/mozorg/templates/mozorg/contribute/contribute-embed.html @@ -16,10 +16,10 @@ - {% stylesheet 'responsive' %} - {% stylesheet 'contribute-embed' %} + {{ css_bundle('responsive') }} + {{ css_bundle('contribute-embed') }} - {% javascript 'site' %} + {{ js_bundle('site') }} {% include 'includes/google-analytics.html' %} @@ -29,6 +29,6 @@

{{ _('Volunteer Opportunities at Mozilla') }}

{{ _('Join a global community of game-changers.') }} - {% javascript 'common' %} + {{ js_bundle('common') }} diff --git a/bedrock/mozorg/templates/mozorg/contribute/friends.html b/bedrock/mozorg/templates/mozorg/contribute/friends.html index a5f7a19936..e27b8e998d 100644 --- a/bedrock/mozorg/templates/mozorg/contribute/friends.html +++ b/bedrock/mozorg/templates/mozorg/contribute/friends.html @@ -13,7 +13,7 @@ {% block global_nav %}{% endblock %} {% block page_css %} - {% stylesheet 'contribute-friends' %} + {{ css_bundle('contribute-friends') }} {% endblock %} {% block contrib_page_title %}{{ _('Join Firefox Friends today!') }}{% endblock %} @@ -120,5 +120,5 @@ {% block contrib_footer %}{% endblock contrib_footer %} {% block js %} - {% javascript 'contribute-friends' %} + {{ js_bundle('contribute-friends') }} {% endblock %} diff --git a/bedrock/mozorg/templates/mozorg/contribute/index.html b/bedrock/mozorg/templates/mozorg/contribute/index.html index 484dee4ff1..42d0cfa00a 100644 --- a/bedrock/mozorg/templates/mozorg/contribute/index.html +++ b/bedrock/mozorg/templates/mozorg/contribute/index.html @@ -151,6 +151,6 @@ {% endblock contrib_content %} {% block js %} - {% javascript 'contribute-base' %} - {% javascript 'contribute-landing' %} + {{ js_bundle('contribute-base') }} + {{ js_bundle('contribute-landing') }} {% endblock %} diff --git a/bedrock/mozorg/templates/mozorg/contribute/signup.html b/bedrock/mozorg/templates/mozorg/contribute/signup.html index b808416649..a4963ac057 100644 --- a/bedrock/mozorg/templates/mozorg/contribute/signup.html +++ b/bedrock/mozorg/templates/mozorg/contribute/signup.html @@ -10,7 +10,7 @@ {% block page_css %} {{ super() }} - {% stylesheet 'contribute-signup' %} + {{ css_bundle('contribute-signup') }} {% endblock %} {% block contrib_nav_cta %}{% endblock %} @@ -142,5 +142,5 @@ {% block js %} {{ super() }} - {% javascript 'contribute-signup' %} + {{ js_bundle('contribute-signup') }} {% endblock %} diff --git a/bedrock/mozorg/templates/mozorg/contribute/stories-base.html b/bedrock/mozorg/templates/mozorg/contribute/stories-base.html index b126951e28..e70222f473 100644 --- a/bedrock/mozorg/templates/mozorg/contribute/stories-base.html +++ b/bedrock/mozorg/templates/mozorg/contribute/stories-base.html @@ -48,5 +48,5 @@ {% block js %} {{ super() }} - {% javascript 'contribute-stories' %} + {{ js_bundle('contribute-stories') }} {% endblock %} diff --git a/bedrock/mozorg/templates/mozorg/contribute/studentambassadors/landing.html b/bedrock/mozorg/templates/mozorg/contribute/studentambassadors/landing.html index eb0d80a65d..c8dfeb73bd 100644 --- a/bedrock/mozorg/templates/mozorg/contribute/studentambassadors/landing.html +++ b/bedrock/mozorg/templates/mozorg/contribute/studentambassadors/landing.html @@ -8,7 +8,7 @@ {% block page_desc %}{{ _('A new program is coming to campuses this September to supercharge College and University students around the world. Let\'s Teach, Build and Protect the Open Web together! ') }}{% endblock %} {% block page_image %}{{ static('img/contribute/studentambassadors/hero.jpg') }}{% endblock %} {% block page_css %} - {% stylesheet 'contribute-studentambassadors-landing' %} + {{ css_bundle('contribute-studentambassadors-landing') }} {% endblock %} {% block body_id %}contribute-studentambassadors-landing{% endblock %} diff --git a/bedrock/mozorg/templates/mozorg/contribute/tasks/taskview-base.html b/bedrock/mozorg/templates/mozorg/contribute/tasks/taskview-base.html index 6b4f528fe9..b0a746f00c 100644 --- a/bedrock/mozorg/templates/mozorg/contribute/tasks/taskview-base.html +++ b/bedrock/mozorg/templates/mozorg/contribute/tasks/taskview-base.html @@ -7,7 +7,7 @@ {% block body_class %}taskview{% endblock %} {% block page_css %} - {% stylesheet 'contribute-taskview' %} + {{ css_bundle('contribute-taskview') }} {% endblock %} {% block site_header_nav %}{% endblock %} @@ -59,5 +59,5 @@ {% block site_footer %}{% endblock %} {% block js %} - {% javascript 'contribute-taskview' %} + {{ js_bundle('contribute-taskview') }} {% endblock %} diff --git a/bedrock/mozorg/templates/mozorg/credits.html b/bedrock/mozorg/templates/mozorg/credits.html index 3caced1efb..93282eab06 100644 --- a/bedrock/mozorg/templates/mozorg/credits.html +++ b/bedrock/mozorg/templates/mozorg/credits.html @@ -8,7 +8,7 @@ Our Contributors {% block page_css %} - {% stylesheet 'credits' %} + {{ css_bundle('credits') }} {% endblock %} diff --git a/bedrock/mozorg/templates/mozorg/csrf-failure.html b/bedrock/mozorg/templates/mozorg/csrf-failure.html index c6a51b4abd..eb8b67345e 100644 --- a/bedrock/mozorg/templates/mozorg/csrf-failure.html +++ b/bedrock/mozorg/templates/mozorg/csrf-failure.html @@ -8,7 +8,7 @@ {% block body_id %}csrf-failure{% endblock %} {% block page_css %} - {% stylesheet 'csrf-failure' %} + {{ css_bundle('csrf-failure') }} {% endblock %} {% block content %} diff --git a/bedrock/mozorg/templates/mozorg/developer/css-grid-demo.html b/bedrock/mozorg/templates/mozorg/developer/css-grid-demo.html index 23eb0fe136..925bb5c736 100644 --- a/bedrock/mozorg/templates/mozorg/developer/css-grid-demo.html +++ b/bedrock/mozorg/templates/mozorg/developer/css-grid-demo.html @@ -13,7 +13,7 @@ {% block body_class %}{% endblock %} {% block page_css %} - {% stylesheet 'css-grid-demo' %} + {{ css_bundle('css-grid-demo') }} {% endblock %} {% block site_header %}{% endblock %} @@ -659,5 +659,5 @@ {% block email_form %}{% endblock %} {% block js %} - {% javascript 'css-grid-demo' %} + {{ js_bundle('css-grid-demo') }} {% endblock %} diff --git a/bedrock/mozorg/templates/mozorg/developer/index.html b/bedrock/mozorg/templates/mozorg/developer/index.html index f2307242a8..37cb0556ef 100644 --- a/bedrock/mozorg/templates/mozorg/developer/index.html +++ b/bedrock/mozorg/templates/mozorg/developer/index.html @@ -16,7 +16,7 @@ {% block body_attrs %}{{ super() }} data-global-nav-current-link="technology"{% endblock %} {% block page_css %} - {% stylesheet 'developer-hub' %} + {{ css_bundle('developer-hub') }} {% endblock %} {% block site_header %} @@ -422,5 +422,5 @@ {% block email_form %}{% endblock %} {% block js %} - {% javascript 'developer-hub' %} + {{ js_bundle('developer-hub') }} {% endblock %} diff --git a/bedrock/mozorg/templates/mozorg/home/home-a.html b/bedrock/mozorg/templates/mozorg/home/home-a.html index a5fa6760bd..d1d5bff462 100644 --- a/bedrock/mozorg/templates/mozorg/home/home-a.html +++ b/bedrock/mozorg/templates/mozorg/home/home-a.html @@ -35,7 +35,7 @@ {% endblock %} {% block page_css %} - {% stylesheet 'home-2018' %} + {{ css_bundle('home-2018') }} {% endblock %} {% block site_header %} @@ -401,5 +401,5 @@ {% endblock %} {% block js %} - {% javascript 'home' %} + {{ js_bundle('home') }} {% endblock %} diff --git a/bedrock/mozorg/templates/mozorg/home/home.html b/bedrock/mozorg/templates/mozorg/home/home.html index 2cd896d00e..79eb808a50 100644 --- a/bedrock/mozorg/templates/mozorg/home/home.html +++ b/bedrock/mozorg/templates/mozorg/home/home.html @@ -32,7 +32,7 @@ {% block experiments %} {% if switch('experiment-home-2018', ['en-US']) %} - {% javascript 'experiment-home' %} + {{ js_bundle('experiment-home') }} {% endif %} {% endblock %} @@ -44,7 +44,7 @@ {% endblock %} {% block page_css %} - {% stylesheet 'home' %} + {{ css_bundle('home') }} {% endblock %} {% block site_header %} diff --git a/bedrock/mozorg/templates/mozorg/internet-health/decentralization.html b/bedrock/mozorg/templates/mozorg/internet-health/decentralization.html index eb22769317..4853116cc4 100644 --- a/bedrock/mozorg/templates/mozorg/internet-health/decentralization.html +++ b/bedrock/mozorg/templates/mozorg/internet-health/decentralization.html @@ -16,7 +16,7 @@ {% block body_attrs %}{{ super() }} data-global-nav-current-link="internet-health"{% endblock %} {% block page_css %} - {% stylesheet 'health-subpage' %} + {{ css_bundle('health-subpage') }} {% endblock %} {% block site_header %} @@ -500,5 +500,5 @@ {% block email_form %}{% endblock %} {% block js %} - {% javascript 'internet-health-subpage' %} + {{ js_bundle('internet-health-subpage') }} {% endblock %} diff --git a/bedrock/mozorg/templates/mozorg/internet-health/digital-inclusion.html b/bedrock/mozorg/templates/mozorg/internet-health/digital-inclusion.html index 88b7bc9463..4340cbcd42 100644 --- a/bedrock/mozorg/templates/mozorg/internet-health/digital-inclusion.html +++ b/bedrock/mozorg/templates/mozorg/internet-health/digital-inclusion.html @@ -16,7 +16,7 @@ {% block body_attrs %}{{ super() }} data-global-nav-current-link="internet-health"{% endblock %} {% block page_css %} - {% stylesheet 'health-subpage' %} + {{ css_bundle('health-subpage') }} {% endblock %} {% block site_header %} @@ -432,5 +432,5 @@ {% block email_form %}{% endblock %} {% block js %} - {% javascript 'internet-health-subpage' %} + {{ js_bundle('internet-health-subpage') }} {% endblock %} diff --git a/bedrock/mozorg/templates/mozorg/internet-health/index.html b/bedrock/mozorg/templates/mozorg/internet-health/index.html index 67397133c1..235b0aab33 100644 --- a/bedrock/mozorg/templates/mozorg/internet-health/index.html +++ b/bedrock/mozorg/templates/mozorg/internet-health/index.html @@ -20,7 +20,7 @@ {% block body_attrs %}{{ super() }} data-global-nav-current-link="internet-health"{% endblock %} {% block page_css %} - {% stylesheet 'internet-health-hub' %} + {{ css_bundle('internet-health-hub') }} {% endblock %} {% block site_header %} @@ -208,5 +208,5 @@ {% block email_form %}{% endblock %} {% block js %} - {% javascript 'internet-health-hub' %} + {{ js_bundle('internet-health-hub') }} {% endblock %} diff --git a/bedrock/mozorg/templates/mozorg/internet-health/open-innovation.html b/bedrock/mozorg/templates/mozorg/internet-health/open-innovation.html index fabfb728b1..a22abdefe7 100644 --- a/bedrock/mozorg/templates/mozorg/internet-health/open-innovation.html +++ b/bedrock/mozorg/templates/mozorg/internet-health/open-innovation.html @@ -16,7 +16,7 @@ {% block body_attrs %}{{ super() }} data-global-nav-current-link="internet-health"{% endblock %} {% block page_css %} - {% stylesheet 'health-subpage' %} + {{ css_bundle('health-subpage') }} {% endblock %} {% block site_header %} @@ -409,5 +409,5 @@ {% block email_form %}{% endblock %} {% block js %} - {% javascript 'internet-health-subpage' %} + {{ js_bundle('internet-health-subpage') }} {% endblock %} diff --git a/bedrock/mozorg/templates/mozorg/internet-health/privacy-security.html b/bedrock/mozorg/templates/mozorg/internet-health/privacy-security.html index 71e9400692..fbcdff8d21 100644 --- a/bedrock/mozorg/templates/mozorg/internet-health/privacy-security.html +++ b/bedrock/mozorg/templates/mozorg/internet-health/privacy-security.html @@ -16,10 +16,10 @@ {% block body_attrs %}{{ super() }} data-global-nav-current-link="internet-health"{% endblock %} {% block page_css %} - {% stylesheet 'health-subpage' %} + {{ css_bundle('health-subpage') }} {% if switch('data-privacy-day-2017') %} - {% stylesheet 'privacy-day-egg' %} + {{ css_bundle('privacy-day-egg') }} {% endif %} {% endblock %} @@ -505,8 +505,8 @@ {% block email_form %}{% endblock %} {% block js %} - {% javascript 'internet-health-subpage' %} + {{ js_bundle('internet-health-subpage') }} {% if switch('data-privacy-day-2017') %} - {% javascript 'privacy-day-egg' %} + {{ js_bundle('privacy-day-egg') }} {% endif %} {% endblock %} diff --git a/bedrock/mozorg/templates/mozorg/internet-health/web-literacy.html b/bedrock/mozorg/templates/mozorg/internet-health/web-literacy.html index ea28ff16ae..ea39f474bf 100644 --- a/bedrock/mozorg/templates/mozorg/internet-health/web-literacy.html +++ b/bedrock/mozorg/templates/mozorg/internet-health/web-literacy.html @@ -16,7 +16,7 @@ {% block body_attrs %}{{ super() }} data-global-nav-current-link="internet-health"{% endblock %} {% block page_css %} - {% stylesheet 'health-subpage' %} + {{ css_bundle('health-subpage') }} {% endblock %} {% block site_header %} @@ -414,5 +414,5 @@ {% block email_form %}{% endblock %} {% block js %} - {% javascript 'internet-health-subpage' %} + {{ js_bundle('internet-health-subpage') }} {% endblock %} diff --git a/bedrock/mozorg/templates/mozorg/itu.html b/bedrock/mozorg/templates/mozorg/itu.html index 6038941f27..7aa8c083d2 100644 --- a/bedrock/mozorg/templates/mozorg/itu.html +++ b/bedrock/mozorg/templates/mozorg/itu.html @@ -6,7 +6,7 @@ {% block body_class %}sand{% endblock %} {% block page_css %} - {% stylesheet 'itu' %} + {{ css_bundle('itu') }} {% endblock %} {% block content %} diff --git a/bedrock/mozorg/templates/mozorg/mission.html b/bedrock/mozorg/templates/mozorg/mission.html index 56790c6c11..f28fe4089c 100644 --- a/bedrock/mozorg/templates/mozorg/mission.html +++ b/bedrock/mozorg/templates/mozorg/mission.html @@ -10,11 +10,11 @@ {% block body_attrs %}{{ super() }} data-global-nav-current-link="about-us"{% endblock %} {% block page_css %} - {% stylesheet 'mission' %} + {{ css_bundle('mission') }} {% endblock %} {% block js %} - {% javascript 'about_video' %} + {{ js_bundle('about_video') }} {% endblock %} {% block content %} diff --git a/bedrock/mozorg/templates/mozorg/moss/base.html b/bedrock/mozorg/templates/mozorg/moss/base.html index 61938f8edb..c23aaac7c3 100644 --- a/bedrock/mozorg/templates/mozorg/moss/base.html +++ b/bedrock/mozorg/templates/mozorg/moss/base.html @@ -17,7 +17,7 @@ {% endblock %} {% block page_css %} - {% stylesheet 'moss' %} + {{ css_bundle('moss') }} {% endblock %} {% block body_class %}{% endblock %} diff --git a/bedrock/mozorg/templates/mozorg/mpl/1.1/annotated/index.html b/bedrock/mozorg/templates/mozorg/mpl/1.1/annotated/index.html index 14dafceb41..8a37547cb8 100644 --- a/bedrock/mozorg/templates/mozorg/mpl/1.1/annotated/index.html +++ b/bedrock/mozorg/templates/mozorg/mpl/1.1/annotated/index.html @@ -6,7 +6,7 @@ Mozilla Public License version 1.1 {% block page_css %} - {% stylesheet 'mpl-1-1-annotated' %} + {{ css_bundle('mpl-1-1-annotated') }} {% endblock %} diff --git a/bedrock/mozorg/templates/mozorg/mpl/1.1/faq.html b/bedrock/mozorg/templates/mozorg/mpl/1.1/faq.html index c3b4c17eb6..24ef9a4094 100644 --- a/bedrock/mozorg/templates/mozorg/mpl/1.1/faq.html +++ b/bedrock/mozorg/templates/mozorg/mpl/1.1/faq.html @@ -9,7 +9,7 @@ {% block page_desc %}{{ _('MPL 1.1 FAQ- HISTORICAL USE ONLY') }}{% endblock %} {% block page_css %} - {% stylesheet 'mpl' %} + {{ css_bundle('mpl') }} {% endblock %} {% block content %} diff --git a/bedrock/mozorg/templates/mozorg/mpl/1.1/index.html b/bedrock/mozorg/templates/mozorg/mpl/1.1/index.html index cb2c5837d4..ba31fd6ffc 100644 --- a/bedrock/mozorg/templates/mozorg/mpl/1.1/index.html +++ b/bedrock/mozorg/templates/mozorg/mpl/1.1/index.html @@ -3,7 +3,7 @@ Mozilla Public License version 1.1 {% block page_css %} - {% stylesheet 'mpl-1-1' %} + {{ css_bundle('mpl-1-1') }} {% endblock %} diff --git a/bedrock/mozorg/templates/mozorg/mpl/2.0/combining-mpl-and-gpl.html b/bedrock/mozorg/templates/mozorg/mpl/2.0/combining-mpl-and-gpl.html index 646be46877..1d44651387 100644 --- a/bedrock/mozorg/templates/mozorg/mpl/2.0/combining-mpl-and-gpl.html +++ b/bedrock/mozorg/templates/mozorg/mpl/2.0/combining-mpl-and-gpl.html @@ -9,7 +9,7 @@ {% block page_desc %}{{ _('Combining MPL-Licensed files with an (L)GPL-Licensed Project: Guidelines for Developers') }}{% endblock %} {% block page_css %} - {% stylesheet 'mpl' %} + {{ css_bundle('mpl') }} {% endblock %} {% block content %} diff --git a/bedrock/mozorg/templates/mozorg/mpl/2.0/differences.html b/bedrock/mozorg/templates/mozorg/mpl/2.0/differences.html index d677c7f56e..83140238b4 100644 --- a/bedrock/mozorg/templates/mozorg/mpl/2.0/differences.html +++ b/bedrock/mozorg/templates/mozorg/mpl/2.0/differences.html @@ -7,7 +7,7 @@ Mozilla Public License 2.0: Changes from MPL 1.1 {% block page_css %} - {% stylesheet 'mpl-differences' %} + {{ css_bundle('mpl-differences') }} {% endblock %} diff --git a/bedrock/mozorg/templates/mozorg/mpl/2.0/faq.html b/bedrock/mozorg/templates/mozorg/mpl/2.0/faq.html index 7f3769e37d..27ce3c16e6 100644 --- a/bedrock/mozorg/templates/mozorg/mpl/2.0/faq.html +++ b/bedrock/mozorg/templates/mozorg/mpl/2.0/faq.html @@ -9,7 +9,7 @@ {% block page_desc %}{{ _('MPL 2.0 FAQ') }}{% endblock %} {% block page_css %} - {% stylesheet 'mpl' %} + {{ css_bundle('mpl') }} {% endblock %} {% block content %} diff --git a/bedrock/mozorg/templates/mozorg/mpl/2.0/index.html b/bedrock/mozorg/templates/mozorg/mpl/2.0/index.html index 5a5a780667..7a58cccd73 100644 --- a/bedrock/mozorg/templates/mozorg/mpl/2.0/index.html +++ b/bedrock/mozorg/templates/mozorg/mpl/2.0/index.html @@ -9,7 +9,7 @@ {% block page_css %} - {% stylesheet 'mpl-2-0' %} + {{ css_bundle('mpl-2-0') }} {% endblock %} diff --git a/bedrock/mozorg/templates/mozorg/mpl/2.0/permissive-code-into-mpl.html b/bedrock/mozorg/templates/mozorg/mpl/2.0/permissive-code-into-mpl.html index 1ed0281f20..43bac6f4fe 100644 --- a/bedrock/mozorg/templates/mozorg/mpl/2.0/permissive-code-into-mpl.html +++ b/bedrock/mozorg/templates/mozorg/mpl/2.0/permissive-code-into-mpl.html @@ -10,7 +10,7 @@ for Developers') }}{% endblock %} {% block page_css %} - {% stylesheet 'mpl' %} + {{ css_bundle('mpl') }} {% endblock %} {% block content %} diff --git a/bedrock/mozorg/templates/mozorg/mpl/2.0/revision-faq.html b/bedrock/mozorg/templates/mozorg/mpl/2.0/revision-faq.html index 0f09cb7e2a..ee648d4bea 100644 --- a/bedrock/mozorg/templates/mozorg/mpl/2.0/revision-faq.html +++ b/bedrock/mozorg/templates/mozorg/mpl/2.0/revision-faq.html @@ -9,7 +9,7 @@ {% block page_desc %}{{ _('About MPL 2.0: Revision Process and Changes FAQ') }}{% endblock %} {% block page_css %} - {% stylesheet 'mpl' %} + {{ css_bundle('mpl') }} {% endblock %} {% block content %} diff --git a/bedrock/mozorg/templates/mozorg/mpl/headers/index.html b/bedrock/mozorg/templates/mozorg/mpl/headers/index.html index 254ba53211..2c8ebd794a 100644 --- a/bedrock/mozorg/templates/mozorg/mpl/headers/index.html +++ b/bedrock/mozorg/templates/mozorg/mpl/headers/index.html @@ -9,7 +9,7 @@ {% block page_desc %}{{ _('Mozilla License Headers') }}{% endblock %} {% block page_css %} - {% stylesheet 'mpl' %} + {{ css_bundle('mpl') }} {% endblock %} {% block content %} diff --git a/bedrock/mozorg/templates/mozorg/mpl/historical.html b/bedrock/mozorg/templates/mozorg/mpl/historical.html index 2e6d06f6ae..7829435a46 100644 --- a/bedrock/mozorg/templates/mozorg/mpl/historical.html +++ b/bedrock/mozorg/templates/mozorg/mpl/historical.html @@ -9,7 +9,7 @@ {% block page_desc %}{{ _('Historical Licensing Documents') }}{% endblock %} {% block page_css %} - {% stylesheet 'mpl' %} + {{ css_bundle('mpl') }} {% endblock %} {% block content %} diff --git a/bedrock/mozorg/templates/mozorg/mpl/index.html b/bedrock/mozorg/templates/mozorg/mpl/index.html index a200a78d7e..6441ff29d2 100644 --- a/bedrock/mozorg/templates/mozorg/mpl/index.html +++ b/bedrock/mozorg/templates/mozorg/mpl/index.html @@ -9,7 +9,7 @@ {% block page_desc %}{{ _('About the Licence') }}{% endblock %} {% block page_css %} - {% stylesheet 'mpl' %} + {{ css_bundle('mpl') }} {% endblock %} {% block content %} diff --git a/bedrock/mozorg/templates/mozorg/mpl/license-policy.html b/bedrock/mozorg/templates/mozorg/mpl/license-policy.html index 685a779fe0..4ca957645e 100644 --- a/bedrock/mozorg/templates/mozorg/mpl/license-policy.html +++ b/bedrock/mozorg/templates/mozorg/mpl/license-policy.html @@ -9,7 +9,7 @@ {% block page_desc %}{{ _('Mozilla Foundation License Policy') }}{% endblock %} {% block page_css %} - {% stylesheet 'mpl' %} + {{ css_bundle('mpl') }} {% endblock %} {% block content %} diff --git a/bedrock/mozorg/templates/mozorg/namespaces.html b/bedrock/mozorg/templates/mozorg/namespaces.html index 6dedbb4bb0..2372751958 100644 --- a/bedrock/mozorg/templates/mozorg/namespaces.html +++ b/bedrock/mozorg/templates/mozorg/namespaces.html @@ -5,7 +5,7 @@ Mozilla XML Namespace {% block page_css %} - {% stylesheet 'namespaces' %} + {{ css_bundle('namespaces') }} {% endblock %} diff --git a/bedrock/mozorg/templates/mozorg/partnerships-distribution.html b/bedrock/mozorg/templates/mozorg/partnerships-distribution.html index 3e9776096c..235c828576 100644 --- a/bedrock/mozorg/templates/mozorg/partnerships-distribution.html +++ b/bedrock/mozorg/templates/mozorg/partnerships-distribution.html @@ -1,7 +1,7 @@ {% extends "base-pebbles.html" %} {% block page_css %} - {% stylesheet 'partnerships-distribution' %} + {{ css_bundle('partnerships-distribution') }} {% endblock %} {% block page_title %}Mozilla Partnerships{% endblock %} diff --git a/bedrock/mozorg/templates/mozorg/plugincheck.html b/bedrock/mozorg/templates/mozorg/plugincheck.html index 7d3065f313..affb7f0a25 100644 --- a/bedrock/mozorg/templates/mozorg/plugincheck.html +++ b/bedrock/mozorg/templates/mozorg/plugincheck.html @@ -21,7 +21,7 @@ {% block body_id %}plugincheck{% endblock %} {% block page_css %} - {% stylesheet 'plugincheck' %} + {{ css_bundle('plugincheck') }} {% endblock %} @@ -112,5 +112,5 @@ {% block email_form %}{% endblock %} {% block js %} - {% javascript 'plugincheck' %} + {{ js_bundle('plugincheck') }} {% endblock %} diff --git a/bedrock/mozorg/templates/mozorg/powered-by.html b/bedrock/mozorg/templates/mozorg/powered-by.html index e5cab5401d..1224108335 100644 --- a/bedrock/mozorg/templates/mozorg/powered-by.html +++ b/bedrock/mozorg/templates/mozorg/powered-by.html @@ -10,7 +10,7 @@ {% block body_class %}sand{% endblock %} {% block page_css %} - {% stylesheet 'powered-by' %} + {{ css_bundle('powered-by') }} {% endblock %} {% block content %} diff --git a/bedrock/mozorg/templates/mozorg/projects/mozilla-based.html b/bedrock/mozorg/templates/mozorg/projects/mozilla-based.html index d7b9217535..65a9bc7e83 100644 --- a/bedrock/mozorg/templates/mozorg/projects/mozilla-based.html +++ b/bedrock/mozorg/templates/mozorg/projects/mozilla-based.html @@ -4,7 +4,7 @@ {% block body_id %}projects{% endblock %} {% block page_css %} - {% stylesheet 'projects_mozilla_based' %} + {{ css_bundle('projects_mozilla_based') }} {% endblock %} {% block breadcrumbs %} diff --git a/bedrock/mozorg/templates/mozorg/technology.html b/bedrock/mozorg/templates/mozorg/technology.html index 6547d2092a..0442c04206 100644 --- a/bedrock/mozorg/templates/mozorg/technology.html +++ b/bedrock/mozorg/templates/mozorg/technology.html @@ -17,7 +17,7 @@ {% block body_attrs %}{{ super() }} data-global-nav-current-link="technology"{% endblock %} {% block page_css %} - {% stylesheet 'technology' %} + {{ css_bundle('technology') }} {% endblock %} {% block site_header %} @@ -190,6 +190,6 @@ {% block js %} {% if LANG.startswith('en-') %} - {% javascript 'technology' %} + {{ js_bundle('technology') }} {% endif %} {% endblock %} diff --git a/bedrock/newsletter/templates/newsletter/base.html b/bedrock/newsletter/templates/newsletter/base.html index 0262c4e052..be209db213 100644 --- a/bedrock/newsletter/templates/newsletter/base.html +++ b/bedrock/newsletter/templates/newsletter/base.html @@ -9,7 +9,7 @@ {% block site_css %} {{ super() }} - {% stylesheet 'newsletter' %} + {{ css_bundle('newsletter') }} {% endblock %} {# Don't display an email signup form in the footer of this page, #} diff --git a/bedrock/newsletter/templates/newsletter/developer.html b/bedrock/newsletter/templates/newsletter/developer.html index 03a944bbd9..5457854898 100644 --- a/bedrock/newsletter/templates/newsletter/developer.html +++ b/bedrock/newsletter/templates/newsletter/developer.html @@ -12,11 +12,11 @@ {% block body_class %}newsletter-developer{% endblock %} {% block page_css %} - {% stylesheet 'newsletter-developer' %} + {{ css_bundle('newsletter-developer') }} {% endblock %} {% block js %} - {% javascript 'newsletter-developer' %} + {{ js_bundle('newsletter-developer') }} {% endblock %} {% block site_header %}{% endblock %} diff --git a/bedrock/newsletter/templates/newsletter/firefox.html b/bedrock/newsletter/templates/newsletter/firefox.html index 15ee2a857e..a7a42714e2 100644 --- a/bedrock/newsletter/templates/newsletter/firefox.html +++ b/bedrock/newsletter/templates/newsletter/firefox.html @@ -12,11 +12,11 @@ {% block body_class %}newsletter-mozilla{% endblock %} {% block page_css %} - {% stylesheet 'newsletter-firefox' %} + {{ css_bundle('newsletter-firefox') }} {% endblock %} {% block js %} - {% javascript 'newsletter-firefox' %} + {{ js_bundle('newsletter-firefox') }} {% endblock %} {% block site_header %}{% endblock %} diff --git a/bedrock/newsletter/templates/newsletter/mozilla.html b/bedrock/newsletter/templates/newsletter/mozilla.html index 5e5d5c101f..3b535a893f 100644 --- a/bedrock/newsletter/templates/newsletter/mozilla.html +++ b/bedrock/newsletter/templates/newsletter/mozilla.html @@ -26,11 +26,11 @@ {% block body_class %}newsletter-mozilla{% endblock %} {% block page_css %} - {% stylesheet 'newsletter-mozilla' %} + {{ css_bundle('newsletter-mozilla') }} {% endblock %} {% block js %} - {% javascript 'newsletter-mozilla' %} + {{ js_bundle('newsletter-mozilla') }} {% endblock %} {% block site_header %}{% endblock %} diff --git a/bedrock/newsletter/templates/newsletter/one_newsletter_signup.html b/bedrock/newsletter/templates/newsletter/one_newsletter_signup.html index 8b3f16aa9b..956e7f7f47 100644 --- a/bedrock/newsletter/templates/newsletter/one_newsletter_signup.html +++ b/bedrock/newsletter/templates/newsletter/one_newsletter_signup.html @@ -21,7 +21,7 @@ {% block site_css %} {{ super() }} - {% stylesheet 'newsletter' %} + {{ css_bundle('newsletter') }} {% endblock %} {% block content %} diff --git a/bedrock/newsletter/templates/newsletter/opt-out-confirmation.html b/bedrock/newsletter/templates/newsletter/opt-out-confirmation.html index 26208bc9ff..7ee63ab5e5 100644 --- a/bedrock/newsletter/templates/newsletter/opt-out-confirmation.html +++ b/bedrock/newsletter/templates/newsletter/opt-out-confirmation.html @@ -10,7 +10,7 @@ {% block canonical_urls %}{% endblock %} {% block page_css %} - {% stylesheet 'newsletter-opt-out-confirmation' %} + {{ css_bundle('newsletter-opt-out-confirmation') }} {% endblock %} {% block content %} @@ -80,5 +80,5 @@ {% endblock %} {% block js %} - {% javascript 'newsletter-mozilla' %} + {{ js_bundle('newsletter-mozilla') }} {% endblock %} diff --git a/bedrock/press/templates/press/press-inquiry.html b/bedrock/press/templates/press/press-inquiry.html index 2fe261cf75..f1d98111ea 100644 --- a/bedrock/press/templates/press/press-inquiry.html +++ b/bedrock/press/templates/press/press-inquiry.html @@ -4,7 +4,7 @@ {% block body_class %}sand{% endblock %} {% block page_css %} - {% stylesheet 'press' %} + {{ css_bundle('press') }} {% endblock %} {% block content %} diff --git a/bedrock/press/templates/press/speaker-request.html b/bedrock/press/templates/press/speaker-request.html index 856924af65..8683139b44 100644 --- a/bedrock/press/templates/press/speaker-request.html +++ b/bedrock/press/templates/press/speaker-request.html @@ -5,7 +5,7 @@ {% block body_class %}sand{% endblock %} {% block page_css %} - {% stylesheet 'press' %} + {{ css_bundle('press') }} {% endblock %} {% block content %} @@ -270,5 +270,5 @@ {% block email_form %}{% endblock %} {% block js %} - {% javascript 'press_speaker_request' %} + {{ js_bundle('press_speaker_request') }} {% endblock %} diff --git a/bedrock/privacy/templates/privacy/base-quantum.html b/bedrock/privacy/templates/privacy/base-quantum.html index 53042d7af4..fc7eaec2e1 100644 --- a/bedrock/privacy/templates/privacy/base-quantum.html +++ b/bedrock/privacy/templates/privacy/base-quantum.html @@ -10,7 +10,7 @@ {% endblock %} {% block page_css %} - {% stylesheet 'privacy_quantum' %} + {{ css_bundle('privacy_quantum') }} {% endblock %} {% block body_class %}privacy-policy{% endblock %} @@ -75,5 +75,5 @@ {% endblock %} {% block js %} - {% javascript 'privacy_quantum' %} + {{ js_bundle('privacy_quantum') }} {% endblock %} diff --git a/bedrock/privacy/templates/privacy/base-resp.html b/bedrock/privacy/templates/privacy/base-resp.html index 30c723da61..e0695bf5fe 100644 --- a/bedrock/privacy/templates/privacy/base-resp.html +++ b/bedrock/privacy/templates/privacy/base-resp.html @@ -6,7 +6,7 @@ {% extends "base-resp.html" %} {% block page_css %} - {% stylesheet 'privacy' %} + {{ css_bundle('privacy') }} {% endblock %} {% block body_class %}sand{% endblock %} @@ -46,5 +46,5 @@ {% block email_form %}{% endblock %} {% block js %} - {% javascript 'privacy' %} + {{ js_bundle('privacy') }} {% endblock %} diff --git a/bedrock/privacy/templates/privacy/base.html b/bedrock/privacy/templates/privacy/base.html deleted file mode 100644 index 6b44fb4da6..0000000000 --- a/bedrock/privacy/templates/privacy/base.html +++ /dev/null @@ -1,37 +0,0 @@ -{# 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/. -#} - -{% extends "base-pebbles.html" %} - -{% block page_title %} - {{ doc.body.section.h2.get_text() }} -{% endblock %} - -{% block page_css %} - {% stylesheet 'firefox_privacy' %} -{% endblock %} - -{% block body_id %}firefox-notice{% endblock %} - -{% block string_data %} - data-tabpanel-open-text="{{ _('Show All') }}" - data-tabpanel-close-text="{{ _('Hide All') }}" - data-choices-copy="{{ _('Choose how you want to share this data in Firefox.') }}" - data-choices-button="{{ _('Choose…') }}" -{% endblock %} - -{% block tabzilla_tab %}{% endblock %} - -{% set header = doc.body.section.extract() %} -{% set lead_in = doc.body.section.extract() %} -{% set footnote = doc.body.select('#footnote') %} -{% if footnote %} - {% set footnote = footnote[0].extract() %} -{% endif %} - -{% block content %}{% endblock %} - -{% block js %} - {% javascript 'firefox_privacy' %} -{% endblock %} diff --git a/bedrock/privacy/templates/privacy/notices/facebook.html b/bedrock/privacy/templates/privacy/notices/facebook.html index afda245645..53f7f94452 100644 --- a/bedrock/privacy/templates/privacy/notices/facebook.html +++ b/bedrock/privacy/templates/privacy/notices/facebook.html @@ -7,7 +7,7 @@ {% block page_title %}{{ doc.h1.string }}{% endblock %} {% block page_css %} - {% stylesheet 'fb_privacy' %} + {{ css_bundle('fb_privacy') }} {% endblock %} {% block body_id %}fb-privacy{% endblock %} diff --git a/bedrock/privacy/templates/privacy/notices/firefox-cliqz-quantum.html b/bedrock/privacy/templates/privacy/notices/firefox-cliqz-quantum.html index ea2ec7afa7..c04588255c 100644 --- a/bedrock/privacy/templates/privacy/notices/firefox-cliqz-quantum.html +++ b/bedrock/privacy/templates/privacy/notices/firefox-cliqz-quantum.html @@ -7,5 +7,5 @@ {% block body_class %}{{ super() }} product-firefox{% endblock %} {% block js %} - {% javascript 'privacy_quantum_firefox' %} + {{ js_bundle('privacy_quantum_firefox') }} {% endblock %} diff --git a/bedrock/privacy/templates/privacy/notices/firefox-quantum.html b/bedrock/privacy/templates/privacy/notices/firefox-quantum.html index ea2ec7afa7..c04588255c 100644 --- a/bedrock/privacy/templates/privacy/notices/firefox-quantum.html +++ b/bedrock/privacy/templates/privacy/notices/firefox-quantum.html @@ -7,5 +7,5 @@ {% block body_class %}{{ super() }} product-firefox{% endblock %} {% block js %} - {% javascript 'privacy_quantum_firefox' %} + {{ js_bundle('privacy_quantum_firefox') }} {% endblock %} diff --git a/bedrock/security/templates/security/base.html b/bedrock/security/templates/security/base.html index 8fbbc9f7da..6d35857b00 100644 --- a/bedrock/security/templates/security/base.html +++ b/bedrock/security/templates/security/base.html @@ -5,7 +5,7 @@ {% extends "base-pebbles-basic.html" %} {% block page_css %} - {% stylesheet 'security' %} + {{ css_bundle('security') }} {% endblock %} {% set navigation_bar_security = [ diff --git a/bedrock/security/templates/security/bug-bounty/hall-of-fame.html b/bedrock/security/templates/security/bug-bounty/hall-of-fame.html index aa866d0edb..d43acee0e6 100644 --- a/bedrock/security/templates/security/bug-bounty/hall-of-fame.html +++ b/bedrock/security/templates/security/bug-bounty/hall-of-fame.html @@ -5,11 +5,11 @@ {% block page_css %} {{ super() }} - {% stylesheet 'security-bug-bounty-hall-of-fame' %} + {{ css_bundle('security-bug-bounty-hall-of-fame') }} {% endblock %} {% block js %} - {% javascript 'accordion' %} + {{ js_bundle('accordion') }} {% endblock %} {% block article %} diff --git a/bedrock/security/templates/security/bug-bounty/web-hall-of-fame.html b/bedrock/security/templates/security/bug-bounty/web-hall-of-fame.html index 1bd4cf620e..3d1351f6c4 100644 --- a/bedrock/security/templates/security/bug-bounty/web-hall-of-fame.html +++ b/bedrock/security/templates/security/bug-bounty/web-hall-of-fame.html @@ -5,11 +5,11 @@ {% block page_css %} {{ super() }} - {% stylesheet 'security-bug-bounty-hall-of-fame' %} + {{ css_bundle('security-bug-bounty-hall-of-fame') }} {% endblock %} {% block js %} - {% javascript 'accordion' %} + {{ js_bundle('accordion') }} {% endblock %} {% block article %} diff --git a/bedrock/settings/__init__.py b/bedrock/settings/__init__.py index 332a5038b8..510a09a784 100644 --- a/bedrock/settings/__init__.py +++ b/bedrock/settings/__init__.py @@ -74,10 +74,7 @@ logging.config.dictConfig(LOGGING) if (len(sys.argv) > 1 and sys.argv[1] == 'test') or sys.argv[0].endswith('py.test'): # Using the CachedStaticFilesStorage for tests breaks all the things. - STATICFILES_STORAGE = 'pipeline.storage.PipelineStorage' - # Turn off less compilation in tests - PIPELINE['PIPELINE_ENABLED'] = True - PIPELINE['PIPELINE_COLLECTOR_ENABLED'] = False + STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage' # TEMPLATE_DEBUG has to be True for Jinja to call the template_rendered # signal which Django's test client uses to save away the contexts for your # test to look at later. @@ -89,4 +86,3 @@ if (len(sys.argv) > 1 and sys.argv[1] == 'test') or sys.argv[0].endswith('py.tes 'ENGINE': 'django.db.backends.sqlite3', 'NAME': ':memory:' } - DATABASE_ROUTERS = [] diff --git a/bedrock/settings/base.py b/bedrock/settings/base.py index 36ce069b02..593d47e5d9 100644 --- a/bedrock/settings/base.py +++ b/bedrock/settings/base.py @@ -14,7 +14,6 @@ import dj_database_url from everett.manager import ListOf from pathlib2 import Path -from .static_media import PIPELINE_CSS, PIPELINE_JS # noqa from bedrock.base.config_manager import config @@ -325,46 +324,15 @@ MEDIA_URL = config('MEDIA_URL', default='/user-media/') MEDIA_ROOT = config('MEDIA_ROOT', default=path('media')) STATIC_URL = config('STATIC_URL', default='/media/') STATIC_ROOT = config('STATIC_ROOT', default=path('static')) -STATICFILES_STORAGE = ('pipeline.storage.NonPackagingPipelineStorage' if DEBUG else - 'bedrock.base.pipeline_storage.ManifestPipelineStorage') +STATICFILES_STORAGE = ('django.contrib.staticfiles.storage.StaticFilesStorage' if DEBUG else + 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage') STATICFILES_FINDERS = ( 'django.contrib.staticfiles.finders.FileSystemFinder', - 'django.contrib.staticfiles.finders.AppDirectoriesFinder', - 'pipeline.finders.CachedFileFinder', - 'pipeline.finders.PipelineFinder', ) STATICFILES_DIRS = ( - path('media'), - path('node_modules/@mozilla-protocol/core') + path('static_final'), ) -PIPELINE = { - 'STYLESHEETS': PIPELINE_CSS, - 'JAVASCRIPT': PIPELINE_JS, - 'DISABLE_WRAPPER': True, - 'SHOW_ERRORS_INLINE': False, - 'COMPILERS': ( - 'pipeline.compilers.less.LessCompiler', - 'pipeline.compilers.sass.SASSCompiler', - ), - 'SASS_BINARY': config('PIPELINE_SASS_BINARY', - default=path('node_modules', '.bin', 'node-sass')), - 'SASS_ARGUMENTS': config('PIPELINE_SASS_ARGUMENTS', default=''), - 'LESS_BINARY': config('PIPELINE_LESS_BINARY', - default=path('node_modules', 'less', 'bin', 'lessc')), - 'LESS_ARGUMENTS': config('PIPELINE_LESS_ARGUMENTS', default='-s'), - 'JS_COMPRESSOR': 'pipeline.compressors.uglifyjs.UglifyJSCompressor', - 'UGLIFYJS_BINARY': config('PIPELINE_UGLIFYJS_BINARY', - default=path('node_modules', '.bin', 'uglifyjs')), - 'UGLIFYJS_ARGUMENTS': config('PIPELINE_UGLIFYJS_ARGUMENTS', default='--support-ie8'), - 'CSS_COMPRESSOR': 'bedrock.base.pipeline_compressors.CleanCSSCompressor', - 'CLEANCSS_BINARY': config('PIPELINE_CLEANCSS_BINARY', - default=path('node_modules', '.bin', 'cleancss')), - 'CLEANCSS_ARGUMENTS': config('PIPELINE_CLEANCSS_ARGUMENTS', default='--compatibility ie7'), - 'PIPELINE_ENABLED': config('PIPELINE_ENABLED', default=str(not DEBUG), parser=bool), - 'PIPELINE_COLLECTOR_ENABLED': config('PIPELINE_COLLECTOR_ENABLED', default=str(not DEBUG), parser=bool), -} - def set_whitenoise_headers(headers, path, url): if '/fonts/' in url or '/caldata/' in url: @@ -451,7 +419,6 @@ INSTALLED_APPS = ( 'django_jinja_markdown', 'django_statsd', 'pagedown', - 'pipeline', 'localflavor', 'django_jinja', 'raven.contrib.django.raven_compat', @@ -571,7 +538,6 @@ TEMPLATES = [ 'lib.l10n_utils.template.l10n_blocks', 'lib.l10n_utils.template.lang_blocks', 'django_jinja_markdown.extensions.MarkdownExtension', - 'pipeline.jinja2.PipelineExtension', ], } }, @@ -640,10 +606,6 @@ BASKET_TIMEOUT = config('BASKET_TIMEOUT', parser=int, default='10') BOUNCER_URL = config('BOUNCER_URL', default='https://download.mozilla.org/') -# This prefixes /b/ on all URLs generated by `reverse` so that links -# work on the dev site while we have a mix of Python/PHP -FORCE_SLASH_B = False - # reCAPTCHA keys RECAPTCHA_PUBLIC_KEY = config('RECAPTCHA_PUBLIC_KEY', default='') RECAPTCHA_PRIVATE_KEY = config('RECAPTCHA_PRIVATE_KEY', default='') diff --git a/bedrock/styleguide/templates/styleguide/index.html b/bedrock/styleguide/templates/styleguide/index.html index 994420c5b2..f8e2aa1cc3 100644 --- a/bedrock/styleguide/templates/styleguide/index.html +++ b/bedrock/styleguide/templates/styleguide/index.html @@ -9,7 +9,7 @@ {% block page_desc %}{{ _('These guides serve as resources to bring together all our brands and to help define their visual and stylistic elements. They exist to provide you with the tools and assets you need to further our mission through communications, websites, products and more.') }}{% endblock %} {% block page_css %} - {% stylesheet 'styleguide' %} + {{ css_bundle('styleguide') }} {% endblock %} {% block content %} diff --git a/bin/bootstrap.sh b/bin/bootstrap.sh index f60413ed9a..64e4f75601 100755 --- a/bin/bootstrap.sh +++ b/bin/bootstrap.sh @@ -6,6 +6,10 @@ if [ ! -e ./manage.py ]; then cd $script_parent_dir fi +if [[ ! -f .env ]]; then + cp .env-dist .env +fi + # get legal-docs git submodule sync git submodule update --init --recursive diff --git a/bin/docker-compose.sh b/bin/docker-compose.sh new file mode 100755 index 0000000000..5a012ab8a7 --- /dev/null +++ b/bin/docker-compose.sh @@ -0,0 +1,5 @@ +#!/bin/bash -e + +source docker/bin/set_git_env_vars.sh + +docker-compose "$@" diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000000..af99571918 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,88 @@ +version: '3.4' +services: + # Run browser-sync and compile static assets. + # + # This is the primary server and it proxies + # the Django app so that it can add the fancy + # browser refresh JS. + assets: + build: + context: . + target: assets + image: mozorg/bedrock_assets:${GIT_COMMIT:-latest} + command: gulp watch + ports: + - "3000:3000" + - "3001:3001" + volumes: + - ./media/:/app/media:delegated + - ./bedrock/:/app/bedrock:delegated + environment: + BS_PROXY_URL: "app:8000" + BS_OPEN_BROWSER: "false" + + # the django app + app: + build: + context: . + target: devapp + image: mozorg/bedrock_test:${GIT_COMMIT:-latest} + command: python manage.py runserver 0.0.0.0:8000 + env_file: .env + ports: + - "8000:8000" + volumes: + - ./bedrock/:/app/bedrock:delegated + - ./bin/:/app/bin:delegated + - ./docker/:/app/docker:delegated + - ./etc/:/app/etc:delegated + - ./lib/:/app/lib:delegated + - ./media/:/app/media:delegated + - ./root_files/:/app/root_files:delegated + - ./scripts/:/app/scripts:delegated + - ./vendor-local/:/app/vendor-local:delegated + - ./wsgi/:/app/wsgi:delegated + + # run the tests against local changes + test: + image: mozorg/bedrock_test:${GIT_COMMIT:-latest} + env_file: docker/envfiles/test.env + volumes: + - ./bedrock/:/app/bedrock:delegated + - ./bin/:/app/bin:delegated + - ./docker/:/app/docker:delegated + - ./etc/:/app/etc:delegated + - ./lib/:/app/lib:delegated + - ./media/:/app/media:delegated + - ./root_files/:/app/root_files:delegated + - ./scripts/:/app/scripts:delegated + - ./test/:/app/test:delegated + - ./vendor-local/:/app/vendor-local:delegated + - ./wsgi/:/app/wsgi:delegated + + # run tests with no volumes + test-image: + image: mozorg/bedrock_test:${GIT_COMMIT:-latest} + env_file: docker/envfiles/test.env + + # the django app + release: + build: + context: . + target: release + args: + GIT_SHA: ${GIT_COMMIT:-latest} + BRANCH_NAME: ${BRANCH_NAME:-latest} + image: mozorg/bedrock:${BRANCH_AND_COMMIT:-latest} + + builder: + build: + context: . + target: python-builder + image: mozorg/bedrock_build:${GIT_COMMIT:-latest} + + app-base: + build: + context: . + target: app-base + image: mozorg/bedrock_code:${GIT_COMMIT:-latest} diff --git a/docker/bin/build_images.sh b/docker/bin/build_images.sh deleted file mode 100755 index f582e0501e..0000000000 --- a/docker/bin/build_images.sh +++ /dev/null @@ -1,86 +0,0 @@ -#!/bin/bash - -set -exo pipefail - -BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -source $BIN_DIR/set_git_env_vars.sh - -BUILD_IMAGE_TAG="mozorg/bedrock_build:${GIT_COMMIT}" -CODE_IMAGE_TAG="mozorg/bedrock_code:${GIT_COMMIT}" -DOCKER_REBUILD=false -DOCKER_CP_ITERATION=1 - -# test mode will build the unit testing image containing the testing requirements -TEST_MODE=false - -# parse cli args -while [[ $# -gt 0 ]]; do - key="$1" - case $key in - -r|--rebuild) - DOCKER_REBUILD=true - ;; - -t|--test) - TEST_MODE=true - ;; - esac - shift # past argument or value -done - -function imageExists() { - if $DOCKER_REBUILD; then - return 1 - fi - if [[ "$1" == "l10n" ]]; then - DOCKER_TAG="${BRANCH_NAME/\//-}-${GIT_COMMIT}" - else - DOCKER_TAG="${GIT_COMMIT}" - fi - docker history -q "mozorg/bedrock_${1}:${DOCKER_TAG}" > /dev/null 2>&1 - return $? -} - -function docker_cp() { - image_tag="mozorg/bedrock_${1}:${GIT_COMMIT}" - container_name="bedrock_${1}_${GIT_COMMIT}_${DOCKER_CP_ITERATION}" - DOCKER_CP_ITERATION=$(( DOCKER_CP_ITERATION + 1 )) - cp_src="$2" - cp_dst="$3" - docker create --name "$container_name" "$image_tag" - docker cp "${container_name}:${cp_src}" "${cp_dst}" - # don't do this part if it's running on CircleCI - if [[ -z "$CIRCLE_SHA1" ]]; then - docker rm "${container_name}" - fi -} - -if ! imageExists "base"; then - docker/bin/docker_build.sh --pull "base" -fi - -# build the static files using the builder image -# and include those and the app in a code image -if ! imageExists "code"; then - # build a staticfiles builder image - if ! imageExists "build"; then - docker/bin/docker_build.sh "build" - fi - docker_cp build /app/static/. ./static - docker_cp build /app/node_modules/. ./node_modules - echo "${GIT_COMMIT}" > ./static/revision.txt - docker/bin/docker_build.sh "code" -fi - -# build a tester image for non-demo deploys -if $TEST_MODE && ! imageExists "test"; then - docker/bin/docker_build.sh "test" -fi - -if ! imageExists "l10n"; then - if [[ "$BRANCH_NAME" == "prod" ]]; then - ENVFILE="prod"; - else - ENVFILE="master"; - fi - docker/bin/docker_build.sh "l10n" -fi diff --git a/docker/bin/build_staticfiles.sh b/docker/bin/build_staticfiles.sh index 6422c31997..6004d15823 100755 --- a/docker/bin/build_staticfiles.sh +++ b/docker/bin/build_staticfiles.sh @@ -2,5 +2,5 @@ set -euxo pipefail -python manage.py collectstatic --link --noinput -v 0 -python docker/bin/softlinkstatic.py +python manage.py collectstatic -l --noinput -v 0 +docker/bin/softlinkstatic.py diff --git a/docker/bin/cleanup_after_functional_tests.sh b/docker/bin/cleanup_after_functional_tests.sh index b44c52a9c2..c135e8ae2c 100755 --- a/docker/bin/cleanup_after_functional_tests.sh +++ b/docker/bin/cleanup_after_functional_tests.sh @@ -3,14 +3,14 @@ BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" source $BIN_DIR/set_git_env_vars.sh -docker stop bedrock-code-${GIT_COMMIT_SHORT} +docker stop bedrock-code-${BRANCH_AND_COMMIT} for NODE_NUMBER in `seq ${NUMBER_OF_NODES:-5}`; do - docker stop bedrock-selenium-node-${NODE_NUMBER}-${GIT_COMMIT_SHORT} + docker stop bedrock-selenium-node-${NODE_NUMBER}-${BRANCH_AND_COMMIT} done; -docker stop bedrock-selenium-hub-${GIT_COMMIT_SHORT} +docker stop bedrock-selenium-hub-${BRANCH_AND_COMMIT} # always report success exit 0 diff --git a/docker/bin/docker_build.sh b/docker/bin/docker_build.sh deleted file mode 100755 index 21ddbffec7..0000000000 --- a/docker/bin/docker_build.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/bash - -set -exo pipefail - -BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -source $BIN_DIR/set_git_env_vars.sh - -DOCKER_REPO="${DOCKER_REPO:-mozorg}" -DOCKER_NO_CACHE=false -DOCKER_PULL=false -DOCKER_CTX='.' -DOCKERFILE='base' - -# parse cli args -while [[ $# -gt 1 ]]; do - key="$1" - case $key in - -c|--context) - DOCKER_CTX="$2" - shift - ;; - -n|--no-cache) - DOCKER_NO_CACHE=true - ;; - -p|--pull) - DOCKER_PULL=true - ;; - esac - shift # past argument or value -done - -DOCKERFILE="$1" -BRANCH_NAME_SAFE="${BRANCH_NAME/\//-}" -if [[ "$DOCKERFILE" == "l10n" ]]; then - DOCKER_TAG="${BRANCH_NAME_SAFE}-${GIT_COMMIT}" -else - DOCKER_TAG="${GIT_COMMIT}" -fi -FINAL_DOCKERFILE="${DOCKER_CTX}/Dockerfile-$DOCKERFILE" -DOCKER_IMAGE_TAG="${DOCKER_REPO}/bedrock_${DOCKERFILE}:${DOCKER_TAG}" - -# generate the dockerfile -rm -f "$FINAL_DOCKERFILE" -sed -e "s/\${GIT_COMMIT}/${GIT_COMMIT}/g;s/\${BRANCH_NAME}/${BRANCH_NAME_SAFE}/g" "docker/dockerfiles/bedrock_$DOCKERFILE" > "$FINAL_DOCKERFILE" - -# build the docker image -docker build -t "$DOCKER_IMAGE_TAG" \ - --pull="$DOCKER_PULL" \ - --no-cache="$DOCKER_NO_CACHE" \ - -f "$FINAL_DOCKERFILE" \ - "$DOCKER_CTX" diff --git a/docker/bin/push2deis.sh b/docker/bin/push2deis.sh index fe2a35c29d..52e5d1f19b 100755 --- a/docker/bin/push2deis.sh +++ b/docker/bin/push2deis.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Needs DEIS_PROFILE, DOCKER_REPOSITORY, DEIS_APPLICATION, NEWRELIC_API_KEY and +# Needs DEIS_PROFILE, DEIS_APPLICATION, NEWRELIC_API_KEY and # NEWRELIC_APP_NAME environment variables. # # To set them go to Job -> Configure -> Build Environment -> Inject @@ -12,9 +12,8 @@ BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" source $BIN_DIR/set_git_env_vars.sh DEIS_BIN="${DEIS_BIN:-deis2}" -DOCKER_REPO="mozorg/bedrock:${BRANCH_NAME/\//-}-${GIT_COMMIT}" -$DEIS_BIN pull "$DOCKER_REPO" -a $DEIS_APPLICATION +$DEIS_BIN pull "$DEPLOYMENT_DOCKER_IMAGE" -a $DEIS_APPLICATION if [[ -n "$NEWRELIC_API_KEY" ]]; then curl -H "x-api-key:$NEWRELIC_API_KEY" \ -d "deployment[app_name]=$NEWRELIC_APP_NAME" \ diff --git a/docker/bin/push2dockerhub.sh b/docker/bin/push2dockerhub.sh index a5a3788ab1..9782a0ae7b 100755 --- a/docker/bin/push2dockerhub.sh +++ b/docker/bin/push2dockerhub.sh @@ -5,30 +5,23 @@ # To set them go to Job -> Configure -> Build Environment -> Inject # passwords and Inject env variables # -set -ex +set -exo pipefail BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" source $BIN_DIR/set_git_env_vars.sh -docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD - -if [[ "$FROM_DOCKER_REPOSITORY" == "mozorg/bedrock_l10n" ]]; then - DOCKER_TAG="${BRANCH_NAME/\//-}-${GIT_COMMIT}" +if [[ "$FROM_DOCKER_REPOSITORY" == "mozorg/bedrock" ]]; then + DOCKER_TAG="${BRANCH_AND_COMMIT}" else DOCKER_TAG="${GIT_COMMIT}" fi -if [[ "$FROM_DOCKER_REPOSITORY" != "$DOCKER_REPOSITORY" ]]; then - # Tag using git hash - docker tag $FROM_DOCKER_REPOSITORY:${DOCKER_TAG} $DOCKER_REPOSITORY:${DOCKER_TAG} -fi - # Push to docker hub -docker push $DOCKER_REPOSITORY:${DOCKER_TAG} +docker push $FROM_DOCKER_REPOSITORY:${DOCKER_TAG} if [[ "$GIT_TAG_DATE_BASED" == true ]]; then - docker tag $FROM_DOCKER_REPOSITORY:${DOCKER_TAG} $DOCKER_REPOSITORY:$GIT_TAG - docker push $DOCKER_REPOSITORY:$GIT_TAG - docker tag $FROM_DOCKER_REPOSITORY:${DOCKER_TAG} $DOCKER_REPOSITORY:latest - docker push $DOCKER_REPOSITORY:latest -fi; + docker tag $FROM_DOCKER_REPOSITORY:${DOCKER_TAG} $FROM_DOCKER_REPOSITORY:$GIT_TAG + docker tag $FROM_DOCKER_REPOSITORY:${DOCKER_TAG} $FROM_DOCKER_REPOSITORY:latest + docker push $FROM_DOCKER_REPOSITORY:$GIT_TAG + docker push $FROM_DOCKER_REPOSITORY:latest +fi diff --git a/docker/bin/run_integration_tests.sh b/docker/bin/run_integration_tests.sh index 4429218ddc..ec05a47c2c 100755 --- a/docker/bin/run_integration_tests.sh +++ b/docker/bin/run_integration_tests.sh @@ -50,15 +50,13 @@ BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" source $BIN_DIR/set_git_env_vars.sh if [ -z "${BASE_URL}" ]; then - BRANCH_NAME_SAFE="${BRANCH_NAME/\//-}" - DOCKER_TAG="${BRANCH_NAME_SAFE}-${GIT_COMMIT}" # start bedrock docker run -d --rm \ - --name bedrock-code-${GIT_COMMIT_SHORT} \ + --name bedrock-code-${BRANCH_AND_COMMIT} \ --env-file docker/envfiles/prod.env \ - mozorg/bedrock_l10n:${DOCKER_TAG} bin/run-prod.sh + ${DEPLOYMENT_DOCKER_IMAGE} bin/run-prod.sh - DOCKER_LINKS=(--link bedrock-code-${GIT_COMMIT_SHORT}:bedrock) + DOCKER_LINKS=(--link bedrock-code-${BRANCH_AND_COMMIT}:bedrock) BASE_URL="http://bedrock:8000" fi @@ -74,20 +72,20 @@ if [ "${DRIVER}" = "Remote" ]; then # start selenium grid hub docker run -d --rm \ - --name bedrock-selenium-hub-${GIT_COMMIT_SHORT} \ + --name bedrock-selenium-hub-${BRANCH_AND_COMMIT} \ selenium/hub:${SELENIUM_VERSION} - DOCKER_LINKS=(${DOCKER_LINKS[@]} --link bedrock-selenium-hub-${GIT_COMMIT_SHORT}:hub) + DOCKER_LINKS=(${DOCKER_LINKS[@]} --link bedrock-selenium-hub-${BRANCH_AND_COMMIT}:hub) SELENIUM_HOST="hub" # start selenium grid nodes for NODE_NUMBER in `seq ${NUMBER_OF_NODES:-5}`; do docker run -d --rm --shm-size 2g \ - --name bedrock-selenium-node-${NODE_NUMBER}-${GIT_COMMIT_SHORT} \ + --name bedrock-selenium-node-${NODE_NUMBER}-${BRANCH_AND_COMMIT} \ ${DOCKER_LINKS[@]} \ selenium/node-firefox:${SELENIUM_VERSION} while ! ${SELENIUM_READY}; do - IP=`docker inspect --format '{{ .NetworkSettings.IPAddress }}' bedrock-selenium-node-${NODE_NUMBER}-${GIT_COMMIT_SHORT}` - CMD="docker run --rm --link bedrock-selenium-hub-${GIT_COMMIT_SHORT}:hub tutum/curl curl http://hub:4444/grid/api/proxy/?id=http://${IP}:5555 | grep 'proxy found'" + IP=`docker inspect --format '{{ .NetworkSettings.IPAddress }}' bedrock-selenium-node-${NODE_NUMBER}-${BRANCH_AND_COMMIT}` + CMD="docker run --rm --link bedrock-selenium-hub-${BRANCH_AND_COMMIT}:hub tutum/curl curl http://hub:4444/grid/api/proxy/?id=http://${IP}:5555 | grep 'proxy found'" if eval ${CMD}; then SELENIUM_READY=true; fi done done diff --git a/docker/bin/run_tests.sh b/docker/bin/run_tests.sh index b9e3a7e537..eae81ed0f7 100755 --- a/docker/bin/run_tests.sh +++ b/docker/bin/run_tests.sh @@ -4,8 +4,6 @@ # set -exo pipefail -BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -source $BIN_DIR/set_git_env_vars.sh +source docker/bin/set_git_env_vars.sh -TEST_IMAGE_TAG="mozorg/bedrock_test:${GIT_COMMIT}" -docker run --rm --env-file docker/envfiles/test.env "$TEST_IMAGE_TAG" +exec docker-compose run test-image diff --git a/docker/bin/set_git_env_vars.sh b/docker/bin/set_git_env_vars.sh index 10a2c4cf4b..906b8971d9 100644 --- a/docker/bin/set_git_env_vars.sh +++ b/docker/bin/set_git_env_vars.sh @@ -15,3 +15,8 @@ if [[ -z "$GIT_BRANCH" ]]; then export GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD) export BRANCH_NAME="$GIT_BRANCH" fi +export BRANCH_NAME_SAFE="${BRANCH_NAME/\//-}" +export BRANCH_AND_COMMIT="${BRANCH_NAME_SAFE}-${GIT_COMMIT}" +# Docker Hub Stuff +export DEPLOYMENT_DOCKER_REPO="mozorg/bedrock" +export DEPLOYMENT_DOCKER_IMAGE="${DEPLOYMENT_DOCKER_REPO}:${BRANCH_AND_COMMIT}" diff --git a/docker/dockerfiles/bedrock_base b/docker/dockerfiles/bedrock_base deleted file mode 100644 index 08e2ddfc87..0000000000 --- a/docker/dockerfiles/bedrock_base +++ /dev/null @@ -1,28 +0,0 @@ -FROM python:2-stretch - -# from https://github.com/mozmeao/docker-pythode/blob/master/Dockerfile.footer - -# Extra python env -ENV PYTHONDONTWRITEBYTECODE=1 -ENV PYTHONUNBUFFERED=1 -ENV PIP_DISABLE_PIP_VERSION_CHECK=1 - -# add non-priviledged user -RUN adduser --uid 1000 --disabled-password --gecos '' --no-create-home webdev - -# Add apt script -COPY docker/bin/apt-install /usr/local/bin/ - -# end from Dockerfile.footer - -WORKDIR /app -EXPOSE 8000 -CMD ["./bin/run.sh"] - -RUN apt-install gettext build-essential libxml2-dev libxslt1-dev libxslt1.1 git - -COPY ./requirements /app/requirements - -# Install Python deps -RUN pip install --no-cache-dir -r requirements/prod.txt -RUN pip install --no-cache-dir -r requirements/docker.txt diff --git a/docker/dockerfiles/bedrock_build b/docker/dockerfiles/bedrock_build deleted file mode 100644 index 36187010fd..0000000000 --- a/docker/dockerfiles/bedrock_build +++ /dev/null @@ -1,84 +0,0 @@ -FROM mozorg/bedrock_base:${GIT_COMMIT} - -### from the official nodejs dockerfile ### -# https://github.com/nodejs/docker-node/blob/master/6/slim/Dockerfile - -# gpg keys listed at https://github.com/nodejs/node#release-team -RUN set -ex \ - && for key in \ - 94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \ - FD3A5288F042B6850C66B31F09FE44734EB7990E \ - 71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \ - DD8F2338BAE7501E3DD5AC78C273792F7D83545D \ - C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \ - B9AE9905FFD7803F25714661B63B535A4C206CA9 \ - 56730D5401028683275BD23C23EFEFE93C4CFFFE \ - 77984A986EBC2AA786BC0F66B01FBB92821C587A \ - ; do \ - gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \ - gpg --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \ - gpg --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \ - done - -ENV NODE_VERSION 6.14.1 - -RUN buildDeps='xz-utils' \ - && ARCH= && dpkgArch="$(dpkg --print-architecture)" \ - && case "${dpkgArch##*-}" in \ - amd64) ARCH='x64';; \ - ppc64el) ARCH='ppc64le';; \ - s390x) ARCH='s390x';; \ - arm64) ARCH='arm64';; \ - armhf) ARCH='armv7l';; \ - i386) ARCH='x86';; \ - *) echo "unsupported architecture"; exit 1 ;; \ - esac \ - && set -x \ - && apt-get update && apt-get install -y $buildDeps --no-install-recommends \ - && rm -rf /var/lib/apt/lists/* \ - && curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz" \ - && curl -SLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \ - && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \ - && grep " node-v$NODE_VERSION-linux-$ARCH.tar.xz\$" SHASUMS256.txt | sha256sum -c - \ - && tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \ - && rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \ - && apt-get purge -y --auto-remove $buildDeps \ - && ln -s /usr/local/bin/node /usr/local/bin/nodejs - -ENV YARN_VERSION 1.5.1 - -RUN set -ex \ - && for key in \ - 6A010C5166006599AA17F08146C2130DFD2497F5 \ - ; do \ - gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \ - gpg --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \ - gpg --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \ - done \ - && curl -fSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" \ - && curl -fSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" \ - && gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \ - && mkdir -p /opt \ - && tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ \ - && ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn \ - && ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg \ - && rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz - -### End official Node image ### - -ENV PATH=/app/node_modules/.bin:$PATH -ENV PIPELINE_LESS_BINARY=lessc -ENV PIPELINE_SASS_BINARY=node-sass -ENV PIPELINE_UGLIFYJS_BINARY=uglifyjs -ENV PIPELINE_CLEANCSS_BINARY=cleancss -ENV NODE_ENV=production - -COPY package.json yarn.lock ./ -RUN yarn install --pure-lockfile && rm -rf /usr/local/share/.cache/yarn - -COPY manage.py ./ -COPY ./lib ./lib -COPY ./docker ./docker -COPY ./bedrock ./bedrock -COPY ./media ./media -RUN honcho run --env docker/envfiles/prod.env docker/bin/build_staticfiles.sh diff --git a/docker/dockerfiles/bedrock_code b/docker/dockerfiles/bedrock_code deleted file mode 100644 index 1fed4589f4..0000000000 --- a/docker/dockerfiles/bedrock_code +++ /dev/null @@ -1,23 +0,0 @@ -FROM mozorg/bedrock_base:${GIT_COMMIT} - -# changes infrequently -COPY ./bin ./bin -COPY ./etc ./etc -COPY ./lib ./lib -COPY ./root_files ./root_files -COPY ./scripts ./scripts -COPY ./wsgi ./wsgi -COPY manage.py LICENSE newrelic.ini contribute.json ./ - -# changes more frequently -COPY ./docker ./docker -COPY ./vendor-local ./vendor-local -COPY ./bedrock ./bedrock -COPY ./media ./media -COPY ./static ./static -COPY ./node_modules ./node_modules - -ENV GIT_SHA ${GIT_COMMIT} -# Change User -RUN chown webdev.webdev -R . -USER webdev diff --git a/docker/dockerfiles/bedrock_demo b/docker/dockerfiles/bedrock_demo deleted file mode 100644 index be94e95a03..0000000000 --- a/docker/dockerfiles/bedrock_demo +++ /dev/null @@ -1,11 +0,0 @@ -FROM mozorg/bedrock_code:${GIT_COMMIT} - -COPY ./locale ./locale -COPY ./root_files/sitemap.xml ./root_files/ -COPY ./root_files/default-urls.json ./root_files/ -COPY ./bedrock.db ./ - -# Change User -USER root -RUN chown webdev.webdev -R . -USER webdev diff --git a/docker/dockerfiles/bedrock_dev b/docker/dockerfiles/bedrock_dev deleted file mode 100644 index 73ff1c85bc..0000000000 --- a/docker/dockerfiles/bedrock_dev +++ /dev/null @@ -1,13 +0,0 @@ -FROM bedrock_base - -ENV PATH=/node_modules/.bin:$PATH -ENV PIPELINE_LESS_BINARY=lessc -ENV PIPELINE_SASS_BINARY=node-sass -ENV PIPELINE_UGLIFYJS_BINARY=uglifyjs -ENV PIPELINE_CLEANCSS_BINARY=cleancss - -COPY ./node_modules / -COPY package.json / -COPY lockdown.json / -# --unsafe-perm required for lockdown to function -RUN cd / && npm install --production --unsafe-perm diff --git a/docker/dockerfiles/bedrock_dev_final b/docker/dockerfiles/bedrock_dev_final deleted file mode 100644 index 95f481354d..0000000000 --- a/docker/dockerfiles/bedrock_dev_final +++ /dev/null @@ -1,9 +0,0 @@ -FROM bedrock_dev - -COPY . ./ -RUN ./manage.py collectstatic -lv 0 --noinput -RUN ./docker/bin/softlinkstatic.py - -# Change User -RUN chown webdev.webdev -R . -USER webdev diff --git a/docker/dockerfiles/bedrock_l10n b/docker/dockerfiles/bedrock_l10n deleted file mode 100644 index 8cbd4d5d1b..0000000000 --- a/docker/dockerfiles/bedrock_l10n +++ /dev/null @@ -1,9 +0,0 @@ -FROM mozorg/bedrock_code:${GIT_COMMIT} - -ENV BRANCH_NAME=${BRANCH_NAME} -RUN bin/run-sync-all.sh - -# Change User -USER root -RUN chown webdev.webdev -R . -USER webdev diff --git a/docker/dockerfiles/bedrock_test b/docker/dockerfiles/bedrock_test deleted file mode 100644 index 4c84b6a1e1..0000000000 --- a/docker/dockerfiles/bedrock_test +++ /dev/null @@ -1,11 +0,0 @@ -FROM mozorg/bedrock_code:${GIT_COMMIT} - -CMD ["./bin/run-tests.sh"] -USER root - -RUN pip install --no-cache-dir -r requirements/test.txt -COPY ./setup.cfg ./ -COPY ./tests ./tests - -RUN chown webdev.webdev -R . -USER webdev diff --git a/docs/install.rst b/docs/install.rst index 23ae3cc77f..8b685644ae 100644 --- a/docs/install.rst +++ b/docs/install.rst @@ -4,56 +4,95 @@ .. _install: -================== Installing Bedrock ================== -Installation ------------- +There are two primary methods of installing bedrock: Docker and Local. Whichever you choose you'll start by getting the source:: -These instructions assume you have `git` and `pip` installed. If you don't have `pip` installed -(you probably do) you can install it with the instructions in `the pip docs `_. - -Start by getting the source:: - - $ git clone git://github.com/mozilla/bedrock.git + $ git clone --recursive git://github.com/mozilla/bedrock.git $ cd bedrock +Now configure the application to run locally by creating your local settings environment file +(You shouldn't need to customize anything in there yet):: + + $ cp .env-dist .env + +After these basic steps you can choose your install method below. Docker is the easiest and recommended way, but local is also possible +and may be preferred by people for various reasons. + +Docker Installation +------------------- + +.. note:: + + This method assumes you have `Docker installed for your platform `_. + If not please do that now or skip to the ``Local Installation`` section. + +This is the simplest way to get started developing for bedrock. If you're on Linux or Mac (and possibly Windows 10 with the +Linux subsystem) you can run a script that will pull our production docker images and use those to build developer ones:: + + $ make clean + $ make run + +.. note:: + + You can start the server any other time with:: + + $ make run + +You should see a number of things happening, but when it's done it will output something saying that the server is running +at `localhost:3000 `_. Go to that URL in a browser and you should see the mozilla.org home page. +In this mode the site will refresh itself when you make changes to any template or media file. Simply open your editor of +choice and modify things and you should see those changes reflected in your browser. + +If you don't have or want to use Make you can call the docker and compose commands directly:: + + $ docker-compose pull app assets + $ git submodule sync + $ git submodule update --init --recursive + $ docker-compose build app assets + +Then starting it all is simply:: + + $ docker-compose up app assets + +All of the building is handled by the ``Makefile`` script and called by Make if you follow the above directions. +You **DO NOT** need to do both. + +Local Installation +------------------ + +These instructions assume you have Python, pip, and NodeJS installed. If you don't have `pip` installed +(you probably do) you can install it with the instructions in `the pip docs `_. + You need to create a virtual environment for Python libraries. Skip the first instruction if you already have virtualenv installed:: $ pip install virtualenv # installs virtualenv, skip if already have it $ virtualenv -p python2.7 venv # create a virtual env in the folder `venv` $ source venv/bin/activate # activate the virtual env. On Windows, run: venv\Scripts\activate.bat $ pip install -U pip # securely upgrade pip - $ pip install -r requirements/test.txt # installs dependencies + $ pip install -r requirements/dev.txt # installs dependencies If you are on OSX and some of the compiled dependencies fails to compile, try explicitly setting the arch flags and try again:: $ export ARCHFLAGS="-arch i386 -arch x86_64" - $ pip install -r requirements/test.txt + $ pip install -r requirements/dev.txt If you are on Linux, you will need at least the following packages or their equivalent for your distro:: $ python-dev libxslt-dev -Now configure the application to run locally by creating your local settings environment file:: - - $ cp .env-dist .env - -You shouldn't need to customize anything in there yet. - Sync the database and all of the external data locally. This gets product-details, security-advisories, credits, release notes, localizations, legal-docs etc:: $ bin/bootstrap.sh -Lastly, you need to have `Node.js `_ and -`Yarn `_ installed. The node -dependencies for running the site can be installed with ``yarn``:: +Next, you need to have `Node.js `_ and `Yarn `_ installed. +The node dependencies for running the site can be installed with ``yarn``:: $ yarn -You may also need to install the `Gulp `_ cli globally:: +You'll also need to install the `Gulp `_ cli globally:: $ npm install -g gulp-cli @@ -67,23 +106,32 @@ You may also need to install the `Gulp `_ cli globally:: .. _run-python-tests: Run the tests -------------- - -.. Important:: - - We're working on fixing this, but for now you need the localization files for the tests to pass. - See the `Localization`_ section below for instructions on checking those out. +============= Now that we have everything installed, let's make sure all of our tests pass. This will be important during development so that you can easily know when -you've broken something with a change. You should still have your virtualenv +you've broken something with a change. + +Docker +------ + +We manage our local docker environment with docker-compose and Make. All you need to do here is run:: + + $ make test + +If you don't have Make you can simply run ``docker-compose run test``. + +Local +----- + +From the local install instructions above you should still have your virtualenv activated, so running the tests is as simple as:: $ py.test lib bedrock To test a single app, specify the app by name in the command above. e.g.:: - $ py.test lib bedrock/firefox + $ py.test bedrock/firefox .. note:: @@ -95,38 +143,41 @@ To test a single app, specify the app by name in the command above. e.g.:: copying ``docker/envfiles/demo.env`` to ``.env``, and running tests again. Make it run ------------ +=========== -To make the server run, make sure you are inside a virtualenv, and then +Docker +------ + +You can simply run the ``make run`` script mentioned above, or use docker-compose directly:: + + $ docker-compose up app assets + +Local +----- + +To make the server run, make sure your virtualenv is activated, and then run the server:: - $ ./manage.py runserver + $ npm start If you are not inside a virtualenv, you can activate it by doing:: $ source venv/bin/activate -If you get the error "NoneType is not iterable", you didn't check out the latest product-details. See the above section for that. +Browsersync +----------- -Front-end assets -~~~~~~~~~~~~~~~~ - -Next, in a new terminal tab run gulp to watch for local file changes:: - - $ gulp - -This will automatically copy over CSS, JavaScript and image files to the /static directory as and when they change, which is needed for Django Pipeline to serve the assets as pages are requested. - -If you have problems with gulp, or you for some reason don't want to use it you can set:: - - PIPELINE_COLLECTOR_ENABLED=True - -in your ``.env`` file or otherwise set it in your environment and it will collect media for you as you make changes. The reason that this is not the preferred method is that it is much slower than using gulp. - -To make it easier to debug, the development environment does not bundle files. If you want to simulate production assets you can set DEBUG=False in your ``.env`` file and run `` ./manage.py collectstatic`` in the virtual environment. +Both the Docker and Local methods of running the site use `Browsersync `_ to serve +the development static-assets (CSS, JS, etc.) as well as refresh the browser tab for you when you change files. The +refreshing of the page works by injecting a small JS snippet into the page that listens to the browsersync service +and will refresh the page when it receives a signal. It also injects a script that shows a small notification in the +top-right corner of the page to inform you that a refresh is happening and when the page connects to or is disconnected +from the browsersync service. We've not seen issues with this, but since it is modifying the page it is possible that this +could conflict with something on the page itself. Please let us know if you suspect this is happening for you. This notification +can be disabled in the browsersync options in the ``gulpfile.js`` by setting ``notify: false`` in the ``browser-sync`` task. Legal Docs ------------- +========== Legal docs (for example: the privacy policy) are generated from markdown files in the [legal-docs](https://github.com/mozilla/legal-docs) repo. @@ -135,18 +186,18 @@ To view them or update to a more recent version update the submodule:: $ git submodule update --init --recursive Localization ------------- +============ -Localization (or L10n) files were fetched by the `bootstrap.sh` command your ran earlier. -If you need to update them or switch to a different repo or branch after changing settings -you can run the following command:: +Localization (or L10n) files were fetched by the `bootstrap.sh` command your ran earlier and are +included in the docker images. If you need to update them or switch to a different repo or branch +after changing settings you can run the following command:: $ ./manage.py l10n_update You can read more details about how to localize content :ref:`here`. Feature Flipping (aka Switches) ----------------- +=============================== Environment variables are used to configure behavior and/or features of select pages on bedrock via a template helper function called ``switch()``. It will take whatever name you pass to it @@ -188,9 +239,9 @@ To configure switches for a demo branch. Follow the `configuration instructions Traffic Cop ~~~~~~~~~~~ -Currently, these switches are used to enable/disable `Traffic Cop `_ experiments -on many pages of the site. We only add the Traffic Cop JavaScript snippet to a page when there is an active test. You -can see the current state of these switches and other configuration values in our `configuration +Currently, these switches are used to enable/disable `Traffic Cop `_ experiments +on many pages of the site. We only add the Traffic Cop JavaScript snippet to a page when there is an active test. You +can see the current state of these switches and other configuration values in our `configuration repo `_. To work with/test these experiment switches locally, you must add the switches to your local environment. For example:: diff --git a/docs/pipeline.rst b/docs/pipeline.rst index a2cf597154..862bd61e5b 100644 --- a/docs/pipeline.rst +++ b/docs/pipeline.rst @@ -213,7 +213,7 @@ A `bug for the IRC plugin`_ has been raised. .. _bedrock_integration_tests_runner: https://ci.us-west.moz.works/view/Bedrock/job/bedrock_integration_tests_runner/ .. _configured in Jenkins: https://ci.us-west.moz.works/configure .. _become unresponsive: https://issues.jenkins-ci.org/browse/JENKINS-28175 -.. _test dependencies: https://github.com/mozilla/bedrock/blob/master/requirements/test.txt +.. _test dependencies: https://github.com/mozilla/bedrock/blob/master/requirements/dev.txt .. _Selenium Docker versions: https://hub.docker.com/r/selenium/hub/tags/ .. _Sauce Labs platform configurator: https://wiki.saucelabs.com/display/DOCS/Platform+Configurator/ .. _enhancement request: https://issues.jenkins-ci.org/browse/JENKINS-26210 diff --git a/docs/redirects.rst b/docs/redirects.rst index 598ca9193c..4b0fb029e8 100644 --- a/docs/redirects.rst +++ b/docs/redirects.rst @@ -166,7 +166,7 @@ following commands: .. code-block:: bash $ source venv/bin/activate - $ pip install -r requirements/test.txt + $ pip install -r requirements/dev.txt Running the tests ~~~~~~~~~~~~~~~~~ diff --git a/docs/testing.rst b/docs/testing.rst index e5efcd3a5f..074ebccb4d 100644 --- a/docs/testing.rst +++ b/docs/testing.rst @@ -31,7 +31,7 @@ installed by using the following commands: .. code-block:: bash $ source venv/bin/activate - $ pip install -r requirements/test.txt + $ pip install -r requirements/dev.txt Running Jasmine tests using Karma --------------------------------- diff --git a/gulpfile.js b/gulpfile.js index d480d325b1..bee94b6c35 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -2,37 +2,287 @@ * 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/. */ -/* global __dirname, require */ +/* global __dirname, require, process, global */ const gulp = require('gulp'); +const cached = require('gulp-cached'); +const filter = require('gulp-filter'); +const log = require('fancy-log'); +const colors = require('ansi-colors'); +const gulpif = require('gulp-if'); +const sass = require('gulp-sass'); +const less = require('gulp-less'); +const cleanCSS = require('gulp-clean-css'); +const uglify = require('gulp-uglify'); +const concat = require('gulp-concat'); +const sourcemaps = require('gulp-sourcemaps'); +const watch = require('gulp-watch'); const del = require('del'); const karma = require('karma'); const eslint = require('gulp-eslint'); -const watch = require('gulp-watch'); const gulpStylelint = require('gulp-stylelint'); +const argv = require('yargs').argv; +const browserSync = require('browser-sync').create(); +const merge = require('merge-stream'); +const staticBundles = require('./static-bundles.json'); +// directory for building LESS, SASS, and bundles +const buildDir = 'static_build'; +// directory for the final assets ready for consumption +const finalDir = 'static_final'; const lintPathsJS = [ 'media/js/**/*.js', '!media/js/libs/*.js', 'tests/unit/spec/**/*.js', 'gulpfile.js' ]; - const lintPathsCSS = [ 'media/css/**/*.scss', 'media/css/**/*.less', 'media/css/**/*.css', '!media/css/libs/*' ]; +const cachedOpts = { + optimizeMemory: true +}; +global.watching = false; +// gulp build --production +const production = !!argv.production; -gulp.task('media:watch', () => { - return gulp.src('./media/**/*') - .pipe(watch('./media/**/*', { - 'verbose': true - })) - .pipe(gulp.dest('./static')); +const allBundleFiles = (fileType, fileExt) => { + let allFiles = []; + staticBundles[fileType].forEach(bundle => { + bundle.files.forEach(bFile => { + if (bFile.endsWith(fileExt)) { + allFiles.push(bFile); + } + }); + }); + return allFiles; +}; + +const handleError = task => { + return err => { + log.warn(colors.bold(colors.red(`[ERROR] ${task}:`)), colors.red(err)); + }; +}; + +const bundleCssFiles = bundle => { + let bundleFilename = `css/BUNDLES/${bundle.name}.css`; + if (global.watching) { + log.info(`building: ${bundleFilename}`); + } + let cssFiles = bundle.files.map(fileName => { + if (!fileName.endsWith('.css')) { + return fileName.replace(/\.(less|scss)$/i, '.css'); + } + return fileName; + }); + return gulp.src(cssFiles, {base: finalDir, 'cwd': finalDir}) + .pipe(concat(bundleFilename)) + .pipe(gulp.dest(finalDir)); +}; + +const bundleJsFiles = bundle => { + let bundleFilename = `js/BUNDLES/${bundle.name}.js`; + if (global.watching) { + log.info(`building: ${bundleFilename}`); + } + return gulp.src(bundle.files, {base: finalDir, cwd: finalDir}) + .pipe(gulpif(!production, sourcemaps.init())) + .pipe(concat(bundleFilename)) + .pipe(gulpif(!production, sourcemaps.write({ + 'includeContent': true + }))) + .pipe(gulp.dest(finalDir)); +}; + +const sassPipeline = () => { + return gulp.src(allBundleFiles('css', '.scss'), { base: buildDir, cwd: buildDir }) + .pipe(gulpif(!production, sourcemaps.init())) + .pipe(sass({ + sourceComments: !production, + outputStyle: production ? 'compressed' : 'nested' + }).on('error', handleError('SASS'))) + .pipe(gulpif(!production, sourcemaps.write({ + 'includeContent': true + }))) + .pipe(gulp.dest(finalDir)); +}; + +/*********************** + * Start Tasks + */ + +/** + * Delete the static_build directory and start fresh. + */ +gulp.task('clean', () => { + return del([buildDir, finalDir]); }); +/** + * Copy assets from various sources into the static_build dir for processing. + */ +gulp.task('assets', () => { + return merge([ + // SASS and LESS go to build dir + gulp.src([ + 'media/**/*.{scss,less}', + 'node_modules/@mozilla-protocol/core/**/*', + '!node_modules/@mozilla-protocol/core/*']) + .pipe(gulpif(global.watching, cached('all', cachedOpts))) + .pipe(gulp.dest(buildDir)), + // Everything else goes to final dir + gulp.src([ + 'media/**/*', + '!media/**/*.{scss,less}', + 'node_modules/@mozilla-protocol/core/**/*', + '!node_modules/@mozilla-protocol/core/**/*.scss', + '!node_modules/@mozilla-protocol/core/*']) + .pipe(gulpif(global.watching, cached('all', cachedOpts))) + .pipe(gulp.dest(finalDir)), + ]); +}); + +/** + * Find all SASS files from bundles in the static_build directory and compile them. + */ +gulp.task('sass', ['assets'], sassPipeline); +gulp.task('sass:no-assets', sassPipeline); + +/** + * Watch and only compile those SASS files that have changed + */ +gulp.task('sass:watch', () => { + return watch(buildDir + '/css/**/*.scss', {base: buildDir}) + // filter out internal imports (files starting with "_" ) + .pipe(filter(file => { + return !file.relative.startsWith('_'); + })) + .pipe(sourcemaps.init()) + .pipe(sass({ + sourceComments: !production, + outputStyle: production ? 'compressed' : 'nested' + }).on('error', handleError('SASS'))) + .pipe(sourcemaps.write({ + 'includeContent': true + })) + .pipe(gulp.dest(finalDir)); +}); + +/** + * Find all LESS files from bundles in the static_build directory and compile them. + */ +gulp.task('less', ['assets'], () => { + return gulp.src(allBundleFiles('css', '.less'), {base: buildDir, cwd: buildDir}) + //filter out unchanged less files, only works when watching + .pipe(gulpif(global.watching, cached('less', cachedOpts))) + .pipe(gulpif(!production, sourcemaps.init())) + .pipe(less({inlineJavaScript: true, ieCompat: true}).on('error', handleError('LESS'))) + // we don't serve the source files + // so include scss content inside the sourcemaps + .pipe(gulpif(!production, sourcemaps.write({ + 'includeContent': true + }))) + .pipe(gulp.dest(finalDir)); +}); + +/** + * Watch all LESS files from bundles in the static_build directory and compile them. + */ +gulp.task('less:watch', () => { + return watch(buildDir + '/css/**/*.less', {base: buildDir}) + .pipe(sourcemaps.init()) + .pipe(less({inlineJavaScript: true, ieCompat: true}).on('error', handleError('LESS'))) + .pipe(sourcemaps.write({ + 'includeContent': true + })) + .pipe(gulp.dest(finalDir)); +}); + +/** + * Combine the CSS files after SASS/LESS compilation into bundles + * based on definitions in the `static-bundles.json` file. + */ +gulp.task('css:compile', ['sass', 'less'], () => { + return merge(staticBundles.css.map(bundleCssFiles)); +}); + + +gulp.task('css:watch', () => { + return gulp.watch(finalDir + '/css/**/*.css', { debounceDelay: 200 }, event => { + let modBundles = staticBundles.css.filter(bundle => { + let contains = false; + bundle.files.every(filename => { + let cssfn = filename.replace(/\.(less|scss)$/i, '.css'); + if (event.path.endsWith(cssfn)) { + contains = true; + return false; + } + return true; + }); + return contains; + }); + if (modBundles) { + modBundles.map(bundleCssFiles); + browserSync.reload(); + } + }); +}); + +/** + * Combine the JS files into bundles + * based on definitions in the `static-bundles.json` file. + */ +gulp.task('js:compile', ['assets'], () => { + return merge(staticBundles.js.map(bundleJsFiles)); +}); + +/** + * Watch all JS and rebundle as necessary. + */ +gulp.task('js:watch', () => { + return gulp.watch(finalDir + '/js/**/*.js', { debounceDelay: 200 }, event => { + let modBundles = staticBundles.js.filter(bundle => { + let contains = false; + bundle.files.every(filename => { + if (event.path.endsWith(filename)) { + contains = true; + return false; + } + return true; + }); + return contains; + }); + if (modBundles) { + modBundles.map(bundleJsFiles); + browserSync.reload(); + } + }); +}); + +/** + * Minify all of the CSS files after compilation. + */ +gulp.task('css:minify', ['css:compile'], () => { + return gulp.src(finalDir + '/css/**/*.css', {base: buildDir}) + .pipe(cleanCSS().on('error', handleError('CLEANCSS'))) + .pipe(gulp.dest(finalDir)); +}); + +/** + * Minify all of the JS files after compilation. + */ +gulp.task('js:minify', ['js:compile'], () => { + return gulp.src(finalDir + '/js/**/*.js', {base: buildDir}) + .pipe(uglify({ie8: true}).on('error', handleError('UGLIFY'))) + .pipe(gulp.dest(finalDir)); +}); + +/** + * Run the JS test suite. + */ gulp.task('js:test', done => { new karma.Server({ configFile: `${__dirname}/tests/unit/karma.conf.js`, @@ -40,6 +290,9 @@ gulp.task('js:test', done => { }, done).start(); }); +/** + * Run eslint style check on all JS. + */ gulp.task('js:lint', () => { return gulp.src(lintPathsJS) .pipe(eslint()) @@ -47,7 +300,9 @@ gulp.task('js:lint', () => { .pipe(eslint.failAfterError()); }); - +/** + * Run CSS style check on all CSS. + */ gulp.task('css:lint', () => { return gulp.src(lintPathsCSS) .pipe(gulpStylelint({ @@ -58,27 +313,78 @@ gulp.task('css:lint', () => { })); }); -gulp.task('static:clean', () => { - return del(['static/**', '!static', '!static/.gitignore']); +gulp.task('all:watch', ['js:compile', 'css:compile'], () => { + // send everything but scss and less to the final dir + watch([ + 'media/**/*', + '!media/**/*.{scss,less}'], {base: 'media'}) + .pipe(cached('all', cachedOpts)) + .pipe(gulp.dest(finalDir)); + // send scss and less to the build dir + watch('media/**/*.{scss,less}', {base: 'media'}) + .pipe(cached('all', cachedOpts)) + .pipe(gulp.dest(buildDir)); }); -gulp.task('default', () => { - gulp.start('media:watch'); - - gulp.watch(lintPathsJS).on('change', file => { - return gulp.src(file.path) - .pipe(eslint()) - .pipe(eslint.format()); - }); - - gulp.watch(lintPathsCSS).on('change', file => { - return gulp.src(file.path) - .pipe(gulpStylelint({ - failAfterError: false, - reporters: [{ - formatter: 'string', - console: true - }] - })); +/** + * Start the browser-sync daemon for local development. + */ +gulp.task('browser-sync', ['all:watch'], () => { + const proxyURL = process.env.BS_PROXY_URL || 'localhost:8000'; + const openBrowser = !(process.env.BS_OPEN_BROWSER === 'false'); + return browserSync.init({ + proxy: proxyURL, + open: openBrowser, + notify: true, + reloadDelay: 300, + reloadDebounce: 500, + injectChanges: false, + serveStatic: [{ + route: '/media', + dir: finalDir + }] }); }); + +/** + * Reload tasks used by `gulp watch`. + */ +gulp.task('reload-sass', ['sass:no-assets'], browserSync.reload); +gulp.task('reload', browserSync.reload); + +// -------------------------- +// DEV/WATCH TASK +// -------------------------- +gulp.task('watch', ['browser-sync'], () => { + global.watching = true; + + gulp.start('sass:watch'); + gulp.start('less:watch'); + gulp.start('css:watch'); + gulp.start('js:watch'); + + // -------------------------- + // watch:sass library files + // -------------------------- + gulp.watch(buildDir + '/css/**/_*.scss', ['reload-sass']); + + // -------------------------- + // watch:js + // -------------------------- + gulp.watch('media/js/**/*.js', ['js:lint']); + + // -------------------------- + // watch:html + // -------------------------- + gulp.watch('bedrock/*/templates/**/*.html', ['reload']); + + log.info(colors.green('Watching for changes...')); +}); + +/** + * Build all assets in prep for production. + * Pass the `--production` flag to turn off sourcemaps. + */ +gulp.task('build', ['assets', 'js:minify', 'css:minify']); + +gulp.task('default', ['watch']); diff --git a/jenkins/default.groovy b/jenkins/default.groovy index 965d3bc3c3..4fd30322a0 100644 --- a/jenkins/default.groovy +++ b/jenkins/default.groovy @@ -11,16 +11,14 @@ stage ('Build Images') { } utils.ircNotification([stage: 'Test & Deploy', status: 'starting']) lock ("bedrock-docker-${env.GIT_COMMIT}") { - command = "docker/bin/build_images.sh" - if (config.smoke_tests || config.integration_tests) { - command += ' --test' - } try { - sh command + sh "make clean build-ci" } catch(err) { utils.ircNotification([stage: 'Docker Build', status: 'failure']) throw err } + // save the files for later + stash 'workspace' } } @@ -32,8 +30,8 @@ if ( config.smoke_tests ) { smoke_tests: utils.integrationTestJob('smoke'), unit_tests: { node { - unstash 'scripts' - sh 'docker/bin/run_tests.sh' + unstash 'workspace' + sh 'make test-ci' } }, ]) @@ -50,17 +48,18 @@ if ( config.push_public_registry != false ) { stage ('Push Public Images') { try { if (config.demo) { - utils.pushDockerhub('mozorg/bedrock_l10n', 'mozorg/bedrock') + utils.pushDockerhub('mozorg/bedrock') } else { - utils.pushDockerhub('mozorg/bedrock_base') - utils.pushDockerhub('mozorg/bedrock_build') utils.pushDockerhub('mozorg/bedrock_test') + utils.pushDockerhub('mozorg/bedrock_assets') utils.pushDockerhub('mozorg/bedrock_code') - utils.pushDockerhub('mozorg/bedrock_l10n', 'mozorg/bedrock') + utils.pushDockerhub('mozorg/bedrock_build') + utils.pushDockerhub('mozorg/bedrock') } } catch(err) { - utils.ircNotification([stage: 'Dockerhub Push Failed', status: 'warning']) + utils.ircNotification([stage: 'Dockerhub Push Failed', status: 'failure']) + throw err } } } diff --git a/jenkins/utils.groovy b/jenkins/utils.groovy index 7f2335e483..d5672f7d69 100644 --- a/jenkins/utils.groovy +++ b/jenkins/utils.groovy @@ -28,14 +28,12 @@ def ircNotification(Map args) { sh command } -def pushDockerhub(from_repo, to_repo='') { - to_repo = to_repo ?: from_repo +def pushDockerhub(from_repo) { withCredentials([[$class: 'StringBinding', credentialsId: 'DOCKER_PASSWORD', variable: 'DOCKER_PASSWORD']]) { withEnv(['DOCKER_USERNAME=mozjenkins', - "FROM_DOCKER_REPOSITORY=${from_repo}", - "DOCKER_REPOSITORY=${to_repo}"]) { + "FROM_DOCKER_REPOSITORY=${from_repo}"]) { retry(2) { sh 'docker/bin/push2dockerhub.sh' } @@ -46,8 +44,7 @@ def pushDockerhub(from_repo, to_repo='') { def integrationTestJob(propFileName, appURL='') { return { node { - unstash 'scripts' - unstash 'tests' + unstash 'workspace' def testScript = "docker/bin/run_integration_tests.sh ${propFileName}".toString() withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'SAUCELABS_CREDENTIALS', diff --git a/media/css/protocol/protocol.scss b/media/css/protocol/protocol.scss index e25629779c..24e7da5070 100644 --- a/media/css/protocol/protocol.scss +++ b/media/css/protocol/protocol.scss @@ -5,7 +5,7 @@ $font-path: '/media/fonts'; $image-path: '/media/protocol/img'; -@import "../../../node_modules/@mozilla-protocol/core/protocol/css/protocol.scss"; +@import "../../protocol/css/protocol.scss"; // TODO port these components to Protocol. @import "components/global-nav"; diff --git a/package.json b/package.json index f91ba025b9..c260f34140 100644 --- a/package.json +++ b/package.json @@ -5,10 +5,24 @@ "private": true, "dependencies": { "@mozilla-protocol/core": "1.0.0", + "ansi-colors": "^1.1.0", "clean-css-cli": "4.0.5", - "less": "2.7.1", - "node-sass": "4.5.0", - "uglify-js": "2.7.5" + "del": "^3.0.0", + "gulp": "^3.9.1", + "gulp-cached": "^1.1.1", + "gulp-clean-css": "^3.9.3", + "gulp-concat": "^2.6.1", + "gulp-eslint": "^3.0.1", + "gulp-filter": "^5.1.0", + "gulp-if": "^2.0.2", + "gulp-less": "^3.5.0", + "gulp-sass": "^4.0.1", + "gulp-sourcemaps": "^2.6.4", + "gulp-stylelint": "^3.9.0", + "gulp-uglify": "^3.0.0", + "gulp-watch": "^5.0.0", + "merge-stream": "^1.0.1", + "yargs": "^11.0.0" }, "repository": { "type": "git", @@ -20,16 +34,19 @@ "url": "https://bugzilla.mozilla.org/" }, "devDependencies": { - "del": "^2.2.2", - "gulp": "^3.9.1", - "gulp-eslint": "^3.0.1", - "gulp-stylelint": "^3.9.0", - "gulp-watch": "^4.3.6", + "browser-sync": "^2.23.7", + "concurrently": "^3.5.1", "jasmine-core": "^2.4.1", "karma": "^0.13.22", "karma-coverage": "^0.5.5", "karma-firefox-launcher": "^0.1.7", "karma-jasmine": "^0.3.8", "sinon": "^1.17.3" + }, + "bin": { + "browser-sync": "/.bin/browser-sync" + }, + "scripts": { + "start": "concurrently --kill-others \"python manage.py runserver\" \"gulp\"" } } diff --git a/requirements/base.txt b/requirements/base.txt index 81a2a3e2e4..c9c70c558c 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,9 +1,13 @@ Django==1.8.18 \ --hash=sha256:d8e2fd119756ab10b43a31052c3c8efbc262064b81eecb7871372de4d37b1a94 \ --hash=sha256:c7611cdd5e2539a443b7960c7cafd867d986c2720a1b44808deaa60ce3da50c7 -django-pipeline==1.6.8 \ - --hash=sha256:a6a9ce2003ae10e729768b6d79a4b3db330d876b86225eb7743b6f5696bafa59 \ - --hash=sha256:b7cdc2efe27e478ddd38e878dd7b5e5ac121c2898fd85accf3187e19137fe6b7 +MarkupSafe==1.0 \ + --hash=sha256:a6be69091dac236ea9c6bc7d012beab42010fa914c459791d627dad4910eb665 +lxml==2.3.3 \ + --hash=sha256:2a3ca34f63b062ee8e059ca2460ac18040ec9622f0a31e143383f0db944ceb36 +Jinja2==2.10 \ + --hash=sha256:74c935a1b8bb9a3947c50a54766a969d4846290e1e788ea44c1392163723c3bd \ + --hash=sha256:f84be1bb0040caca4cea721fcbbbbd61f9be9464ca236387158b0feea01914a4 icalendar==3.8.3 \ --hash=sha256:41949b09031611799136e019168b84eb5ed899c8e4e692117d2d38504659fd16 django-statsd-mozilla==0.3.14 \ @@ -193,3 +197,6 @@ envcat==0.1.1 \ --hash=sha256:6831806d205b7b1c8456bba5d9cd7ced90f52cf2fc8cfbe234d48d3fdb91111d timeago==1.0.8 \ --hash=sha256:f2acf144a9aabbc1e46a7f84387e6dd17bf41ff5fd87822c878621d06ef6b77c +honcho==1.0.1 \ + --hash=sha256:af5806bf13e3b20acdcb9ff8c0beb91eee6fe07393c3448dfad89667e6ac7576 \ + --hash=sha256:c189402ad2e337777283c6a12d0f4f61dc6dd20c254c9a3a4af5087fc66cea6e diff --git a/requirements/compiled.txt b/requirements/compiled.txt deleted file mode 100644 index 332bc6ec0c..0000000000 --- a/requirements/compiled.txt +++ /dev/null @@ -1,7 +0,0 @@ -MarkupSafe==1.0 \ - --hash=sha256:a6be69091dac236ea9c6bc7d012beab42010fa914c459791d627dad4910eb665 -lxml==2.3.3 \ - --hash=sha256:2a3ca34f63b062ee8e059ca2460ac18040ec9622f0a31e143383f0db944ceb36 -Jinja2==2.10 \ - --hash=sha256:74c935a1b8bb9a3947c50a54766a969d4846290e1e788ea44c1392163723c3bd \ - --hash=sha256:f84be1bb0040caca4cea721fcbbbbd61f9be9464ca236387158b0feea01914a4 diff --git a/requirements/dev.txt b/requirements/dev.txt index 4a72c4fe4d..ce0e44e3b6 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -1,11 +1,10 @@ -r base.txt --r compiled.txt Sphinx==1.0.7 \ --hash=sha256:80d62f3f7913c3322bf279ec26bfb12c1ce70404b00f4c87dc3ac190d150b0ab -Pygments==2.0.2 \ - --hash=sha256:0a3a2265e1efb0defa722d1f429730dc9df975adc3c60ac7d2b432bdf03c041d \ - --hash=sha256:7320919084e6dac8f4540638a46447a3bd730fca172afc17d2c03eed22cf4f51 +Pygments==2.2.0 \ + --hash=sha256:78f3f434bcc5d6ee09020f92ba487f95ba50f1e3ef83ae96b9d5ffa1bab25c5d \ + --hash=sha256:dbae1046def0efb574852fab9e90209b23f556367b5a320c0bcb871c77c3e8cc flake8==2.0 \ --hash=sha256:8dce4f7e64cc202cc6da93eab84b2ce660110ff684b6738bba64a0a431b3bc69 mccabe==0.3 \ @@ -33,3 +32,89 @@ responses==0.5.1 \ cookies==2.2.1 \ --hash=sha256:15bee753002dff684987b8df8c235288eb8d45f8191ae056254812dfd42c81d3 \ --hash=sha256:d6b698788cae4cfa4e62ef8643a9ca332b79bd96cb314294b864ae8d7eb3ee8e +greenlet==0.4.12 \ + --hash=sha256:96888e47898a471073b394ea641b7d675c1d054c580dd4a04a382bd34e67d89e \ + --hash=sha256:bc339de0e0969de5118d0b62a080a7611e2ba729a90f4a3ad78559c51bc5576d \ + --hash=sha256:b8ab98f8ae25938326dc4c21e3689a933531500ae4f3bfcefe36e3e25fda4dbf \ + --hash=sha256:d2d5103f6cba131e1be660230018e21f276911d2b68b629ead1c5cb5e5472ac7 \ + --hash=sha256:416a3328d7e0a19aa1df3ec09524a109061fd7b80e010ef0dff9f695b4ac5e20 \ + --hash=sha256:6803d8c6b235c861c50afddf00c7467ffbcd5ab960d137ff0f9c36f2cb11ee4b \ + --hash=sha256:76dab055476dd4dabb00a967b4df1990b25542d17eaa40a18f66971d10193e0b \ + --hash=sha256:21232907c8c26838b16915bd8fbbf82fc70c996073464cc70981dd4a96bc841c \ + --hash=sha256:70b9ff28921f5a3c03df4896ec8c55f5f94c593d7a79abd98b4c5c4a692ba873 \ + --hash=sha256:7114b757b4146f4c87a0f00f1e58abd4c4729836679af0fc37266910a4a72eb0 \ + --hash=sha256:0d90c709355ed13f16676f84e5a9cd67826a9f5c5143381c21e8fc3100ade1f1 \ + --hash=sha256:ebae83b6247f83b1e8d887733dfa8046ce6e29d8b3e2a7380256e9de5c6ae55d \ + --hash=sha256:e841e3ece633acae5e2bf6102140a605ffee7d5d4921dca1625c5fdc0f0b3248 \ + --hash=sha256:3e5e9be157ece49e4f97f3225460caf758ccb00f934fcbc5db34367cc1ff0aee \ + --hash=sha256:e77b708c37b652c7501b9f8f6056b23633c567aaa0d29edfef1c11673c64b949 \ + --hash=sha256:0da1fc809c3bdb93fbacd0f921f461aacd53e554a7b7d4e9953ba09131c4206e \ + --hash=sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 \ + --hash=sha256:e5451e1ce06b74a4861576c2db74405a4398c4809a105774550a9e52cfc8c4da \ + --hash=sha256:9c407aa6adfd4eea1232e81aa9f3cb3d9b955a9891c4819bf9b498c77efba14b \ + --hash=sha256:b56ac981f07b77e72ad5154278b93396d706572ea52c2fce79fee2abfcc8bfa6 \ + --hash=sha256:e4c99c6010a5d153d481fdaf63b8a0782825c0721506d880403a3b9b82ae347e +idna==2.6 \ + --hash=sha256:8c7309c718f94b3a625cb648ace320157ad16ff131ae0af362c9f21b80ef6ec4 \ + --hash=sha256:2c6a5de3089009e3da7c5dde64a141dbc8551d5b7f6cf4ed7c2568d0cc520a8f +urllib3==1.22 \ + --hash=sha256:06330f386d6e4b195fbfc736b297f58c5a892e4440e54d294d7004e3a9bbea1b \ + --hash=sha256:cc44da8e1145637334317feebd728bd869a35285b93cbb4cca2577da7e62db4f +blessings==1.6.1 \ + --hash=sha256:26dbaf2f89c3e6dee11c10f7c0b85756ed75cf602b1bb7935b4efd8ed67a000f \ + --hash=sha256:466e43ff45723b272311de0437649df464b33b4daba7a54c69493212958e19c7 \ + --hash=sha256:74919575885552e14bc24a68f8b539690bd1b5629180faa830b1a25b8c7fb6ea +wcwidth==0.1.7 \ + --hash=sha256:f4ebe71925af7b40a864553f761ed559b43544f8f71746c2d756c7fe788ade7c \ + --hash=sha256:3df37372226d6e63e1b1e1eda15c594bca98a22d33a23832a90998faa96bc65e +typing==3.6.4 \ + --hash=sha256:b2c689d54e1144bbcfd191b0832980a21c2dbcf7b5ff7a66248a60c90e951eb8 \ + --hash=sha256:3a887b021a77b292e151afb75323dea88a7bc1b3dfa92176cff8e44c8b68bddf \ + --hash=sha256:d400a9344254803a2368533e4533a4200d21eb7b6b729c173bc38201a74db3f2 +curtsies==0.3.0 \ + --hash=sha256:89c802ec051d01dec6fc983e9856a3706e4ea8265d2940b1f6d504a9e26ed3a9 +bpython==0.17.1 \ + --hash=sha256:6cd1b165888c232f2fcdd4313577b6066155d6c94b3d42c0f11649c000394417 \ + --hash=sha256:8907c510bca3c4d9bc0a157279bdc5e3b739cc68c0f247167279b6fe4becb02f +apipkg==1.4 \ + --hash=sha256:2e38399dbe842891fe85392601aab8f40a8f4cc5a9053c326de35a1cc0297ac6 \ + --hash=sha256:65d2aa68b28e7d31233bb2ba8eb31cda40e4671f8ac2d6b241e358c9652a74b9 +braceexpand==0.1.1 \ + --hash=sha256:f967ca39bdb98e16299a69c45a944c5d4345393615ed6470bb1e62ca3506bf41 +execnet==1.4.1 \ + --hash=sha256:f66dd4a7519725a1b7e14ad9ae7d3df8e09b2da88062386e08e941cafc0ef3e6 \ + --hash=sha256:d2b909c7945832e1c19cfacd96e78da68bdadc656440cfc7dfe59b766744eb8c +py==1.4.31 \ + --hash=sha256:4a3e4f3000c123835ac39cab5ccc510642153bc47bc1f13e2bbb53039540ae69 \ + --hash=sha256:a6501963c725fc2554dabfece8ae9a8fb5e149c0ac0a42fd2b02c5c1c57fc114 +PyPOM==1.0 \ + --hash=sha256:a8728981970404c3c9a14efeb23da92191749a4a4ad489130fd855e4cf8f154e \ + --hash=sha256:5c98e3d8ef2c7f96c3365a3b8295560446f2447eecdcfe393a30abf2fcc16d96 +pytest==3.0.1 \ + --hash=sha256:ba6ae459222c3ee650d9e7a3f8cbf69c23c20ed6977496e9081f3b8da19107d0 \ + --hash=sha256:e82bc0596ee96b2287c08705cfcb6898db1fe4b5c87db3b6823f1fdd77fb3ff1 +pytest-django==3.0.0 \ + --hash=sha256:7898731205fa245926c800273dcffcd9b25e0b660a363ecb6cc2901ffe4aa1cc \ + --hash=sha256:5952283b0e6e0f9d8cb46803636e3940e1c77da8a529f03a8a4320f52d9bf560 +pytest-html==1.14.1 \ + --hash=sha256:bc6007504193e93b135aa48eedd798957beef895c090a557984a65e97fb2c59e \ + --hash=sha256:6f2dd32a98e76503cd1bfa8647268d8622b848c7c99dbef5840a426dd124e8f0 +pytest-selenium==1.11.1 \ + --hash=sha256:b98f97f7fc1f24b9806ab369df3077cf43cce0884e427ad7a21b9239ac8bef47 \ + --hash=sha256:91a94a1221d180c7d455b5b1bd50d5cbce797f0ca81d28239075048abbf416b4 +pytest-variables==1.5.1 \ + --hash=sha256:1365c5f2c3be70d1b165272c1ab76ba0692c901db9b98c0b09062cc70b55a36d \ + --hash=sha256:8f2b7c16c54bfe93561c7a36a5e9d8780bdcd36e6e37d9f7b3b51b656449e2ea +selenium==3.5.0 \ + --hash=sha256:69b479bdfa1ab2fee86a75086f7d5c6ef93cdad8cb6521cb0596554c6722f3eb \ + --hash=sha256:267418f5fde1a4f8c180e5b8f45bd57c6d45b1f7d8fa5ad699a48e9a98fa79a3 +pytest-xdist==1.15.0 \ + --hash=sha256:6238395f8bd050f9288a3b10f34330edece80f4424cf2b4204d6e7d622f0f00b +pytest-rerunfailures==2.0.1 \ + --hash=sha256:5b77224649ec1df6d5f0234a87cdea76ce1e74f5172e1dd8b80d79bbb8a6fdff +pytest-base-url==1.1.0 \ + --hash=sha256:90a1ce6a00a558231117b5aee32300edecbc0c2fd701c13e8cec62177900d28c \ + --hash=sha256:001c1b2678dae82c2891db415251361b29ed6824cb2085e4821635119499071e +pytest-metadata==1.3.0 \ + --hash=sha256:2aa89161636c12418b2f8dfe226b6007a50ce3570f2b09fe23d72506fb21a3bc \ + --hash=sha256:b8735ad24a4974b35ca2d37a443596a26e0986754b0841c46231f4a6f6fa92c9 diff --git a/requirements/docker.txt b/requirements/docker.txt deleted file mode 100644 index 6ae8984fb6..0000000000 --- a/requirements/docker.txt +++ /dev/null @@ -1,41 +0,0 @@ -gunicorn==19.7.1 \ - --hash=sha256:75af03c99389535f218cc596c7de74df4763803f7b63eb09d77e92b3956b36c6 \ - --hash=sha256:eee1169f0ca667be05db3351a0960765620dad53f53434262ff8901b68a1b622 -apscheduler==3.0.5 \ - --hash=sha256:3f2d93e51d8c7716a007fc3822f4eab5ce6ba0e9b78d1c8828079888bc9f45bb \ - --hash=sha256:009dcf552035b30ee967f2677d0d7a49a88f2d36291c42669aa069dd549da9e4 -tzlocal==1.2.2 \ - --hash=sha256:cbbaa4e9d25c36386f12af9febe315139fdd39317b91abcb42d782a5e93e525d -supervisor==3.2.3 \ - --hash=sha256:3d6f0304c8ce74ab2100dfc4ab0f70050568504216f9508a81b8ed269aec9705 -meld3==1.0.2 \ - --hash=sha256:b28a9bfac342aadb4557aa144bea9f8e6208bfb0596190570d10a892d35ff7dc \ - --hash=sha256:f7b754a0fde7a4429b2ebe49409db240b5699385a572501bb0d5627d299f9558 -meinheld==0.6.1 \ - --hash=sha256:40d9dbce0165b2d9142f364d26fd6d59d3682f89d0dfe2117717a8ddad1f4133 \ - --hash=sha256:293eff4983b7fcbd9134b47706b22189883fe354993bd10163c65869d141e565 -greenlet==0.4.12 \ - --hash=sha256:96888e47898a471073b394ea641b7d675c1d054c580dd4a04a382bd34e67d89e \ - --hash=sha256:bc339de0e0969de5118d0b62a080a7611e2ba729a90f4a3ad78559c51bc5576d \ - --hash=sha256:b8ab98f8ae25938326dc4c21e3689a933531500ae4f3bfcefe36e3e25fda4dbf \ - --hash=sha256:d2d5103f6cba131e1be660230018e21f276911d2b68b629ead1c5cb5e5472ac7 \ - --hash=sha256:416a3328d7e0a19aa1df3ec09524a109061fd7b80e010ef0dff9f695b4ac5e20 \ - --hash=sha256:6803d8c6b235c861c50afddf00c7467ffbcd5ab960d137ff0f9c36f2cb11ee4b \ - --hash=sha256:76dab055476dd4dabb00a967b4df1990b25542d17eaa40a18f66971d10193e0b \ - --hash=sha256:21232907c8c26838b16915bd8fbbf82fc70c996073464cc70981dd4a96bc841c \ - --hash=sha256:70b9ff28921f5a3c03df4896ec8c55f5f94c593d7a79abd98b4c5c4a692ba873 \ - --hash=sha256:7114b757b4146f4c87a0f00f1e58abd4c4729836679af0fc37266910a4a72eb0 \ - --hash=sha256:0d90c709355ed13f16676f84e5a9cd67826a9f5c5143381c21e8fc3100ade1f1 \ - --hash=sha256:ebae83b6247f83b1e8d887733dfa8046ce6e29d8b3e2a7380256e9de5c6ae55d \ - --hash=sha256:e841e3ece633acae5e2bf6102140a605ffee7d5d4921dca1625c5fdc0f0b3248 \ - --hash=sha256:3e5e9be157ece49e4f97f3225460caf758ccb00f934fcbc5db34367cc1ff0aee \ - --hash=sha256:e77b708c37b652c7501b9f8f6056b23633c567aaa0d29edfef1c11673c64b949 \ - --hash=sha256:0da1fc809c3bdb93fbacd0f921f461aacd53e554a7b7d4e9953ba09131c4206e \ - --hash=sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 \ - --hash=sha256:e5451e1ce06b74a4861576c2db74405a4398c4809a105774550a9e52cfc8c4da \ - --hash=sha256:9c407aa6adfd4eea1232e81aa9f3cb3d9b955a9891c4819bf9b498c77efba14b \ - --hash=sha256:b56ac981f07b77e72ad5154278b93396d706572ea52c2fce79fee2abfcc8bfa6 \ - --hash=sha256:e4c99c6010a5d153d481fdaf63b8a0782825c0721506d880403a3b9b82ae347e -honcho==1.0.1 \ - --hash=sha256:af5806bf13e3b20acdcb9ff8c0beb91eee6fe07393c3448dfad89667e6ac7576 \ - --hash=sha256:c189402ad2e337777283c6a12d0f4f61dc6dd20c254c9a3a4af5087fc66cea6e diff --git a/requirements/prod.txt b/requirements/prod.txt index 701351feb4..28f625ff22 100644 --- a/requirements/prod.txt +++ b/requirements/prod.txt @@ -1,5 +1,42 @@ -r base.txt --r compiled.txt +gunicorn==19.7.1 \ + --hash=sha256:75af03c99389535f218cc596c7de74df4763803f7b63eb09d77e92b3956b36c6 \ + --hash=sha256:eee1169f0ca667be05db3351a0960765620dad53f53434262ff8901b68a1b622 +apscheduler==3.0.5 \ + --hash=sha256:3f2d93e51d8c7716a007fc3822f4eab5ce6ba0e9b78d1c8828079888bc9f45bb \ + --hash=sha256:009dcf552035b30ee967f2677d0d7a49a88f2d36291c42669aa069dd549da9e4 +tzlocal==1.2.2 \ + --hash=sha256:cbbaa4e9d25c36386f12af9febe315139fdd39317b91abcb42d782a5e93e525d +supervisor==3.2.3 \ + --hash=sha256:3d6f0304c8ce74ab2100dfc4ab0f70050568504216f9508a81b8ed269aec9705 +meld3==1.0.2 \ + --hash=sha256:b28a9bfac342aadb4557aa144bea9f8e6208bfb0596190570d10a892d35ff7dc \ + --hash=sha256:f7b754a0fde7a4429b2ebe49409db240b5699385a572501bb0d5627d299f9558 +meinheld==0.6.1 \ + --hash=sha256:40d9dbce0165b2d9142f364d26fd6d59d3682f89d0dfe2117717a8ddad1f4133 \ + --hash=sha256:293eff4983b7fcbd9134b47706b22189883fe354993bd10163c65869d141e565 +greenlet==0.4.12 \ + --hash=sha256:96888e47898a471073b394ea641b7d675c1d054c580dd4a04a382bd34e67d89e \ + --hash=sha256:bc339de0e0969de5118d0b62a080a7611e2ba729a90f4a3ad78559c51bc5576d \ + --hash=sha256:b8ab98f8ae25938326dc4c21e3689a933531500ae4f3bfcefe36e3e25fda4dbf \ + --hash=sha256:d2d5103f6cba131e1be660230018e21f276911d2b68b629ead1c5cb5e5472ac7 \ + --hash=sha256:416a3328d7e0a19aa1df3ec09524a109061fd7b80e010ef0dff9f695b4ac5e20 \ + --hash=sha256:6803d8c6b235c861c50afddf00c7467ffbcd5ab960d137ff0f9c36f2cb11ee4b \ + --hash=sha256:76dab055476dd4dabb00a967b4df1990b25542d17eaa40a18f66971d10193e0b \ + --hash=sha256:21232907c8c26838b16915bd8fbbf82fc70c996073464cc70981dd4a96bc841c \ + --hash=sha256:70b9ff28921f5a3c03df4896ec8c55f5f94c593d7a79abd98b4c5c4a692ba873 \ + --hash=sha256:7114b757b4146f4c87a0f00f1e58abd4c4729836679af0fc37266910a4a72eb0 \ + --hash=sha256:0d90c709355ed13f16676f84e5a9cd67826a9f5c5143381c21e8fc3100ade1f1 \ + --hash=sha256:ebae83b6247f83b1e8d887733dfa8046ce6e29d8b3e2a7380256e9de5c6ae55d \ + --hash=sha256:e841e3ece633acae5e2bf6102140a605ffee7d5d4921dca1625c5fdc0f0b3248 \ + --hash=sha256:3e5e9be157ece49e4f97f3225460caf758ccb00f934fcbc5db34367cc1ff0aee \ + --hash=sha256:e77b708c37b652c7501b9f8f6056b23633c567aaa0d29edfef1c11673c64b949 \ + --hash=sha256:0da1fc809c3bdb93fbacd0f921f461aacd53e554a7b7d4e9953ba09131c4206e \ + --hash=sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 \ + --hash=sha256:e5451e1ce06b74a4861576c2db74405a4398c4809a105774550a9e52cfc8c4da \ + --hash=sha256:9c407aa6adfd4eea1232e81aa9f3cb3d9b955a9891c4819bf9b498c77efba14b \ + --hash=sha256:b56ac981f07b77e72ad5154278b93396d706572ea52c2fce79fee2abfcc8bfa6 \ + --hash=sha256:e4c99c6010a5d153d481fdaf63b8a0782825c0721506d880403a3b9b82ae347e newrelic==2.96.0.80 \ --hash=sha256:fc7125f3caed2b678c884468c1416ab87e7150ede0d46c738fca08d88c8bd008 diff --git a/requirements/test.txt b/requirements/test.txt deleted file mode 100644 index 1779704481..0000000000 --- a/requirements/test.txt +++ /dev/null @@ -1,44 +0,0 @@ --r dev.txt - -apipkg==1.4 \ - --hash=sha256:2e38399dbe842891fe85392601aab8f40a8f4cc5a9053c326de35a1cc0297ac6 \ - --hash=sha256:65d2aa68b28e7d31233bb2ba8eb31cda40e4671f8ac2d6b241e358c9652a74b9 -braceexpand==0.1.1 \ - --hash=sha256:f967ca39bdb98e16299a69c45a944c5d4345393615ed6470bb1e62ca3506bf41 -execnet==1.4.1 \ - --hash=sha256:f66dd4a7519725a1b7e14ad9ae7d3df8e09b2da88062386e08e941cafc0ef3e6 \ - --hash=sha256:d2b909c7945832e1c19cfacd96e78da68bdadc656440cfc7dfe59b766744eb8c -py==1.4.31 \ - --hash=sha256:4a3e4f3000c123835ac39cab5ccc510642153bc47bc1f13e2bbb53039540ae69 \ - --hash=sha256:a6501963c725fc2554dabfece8ae9a8fb5e149c0ac0a42fd2b02c5c1c57fc114 -PyPOM==1.0 \ - --hash=sha256:a8728981970404c3c9a14efeb23da92191749a4a4ad489130fd855e4cf8f154e \ - --hash=sha256:5c98e3d8ef2c7f96c3365a3b8295560446f2447eecdcfe393a30abf2fcc16d96 -pytest==3.0.1 \ - --hash=sha256:ba6ae459222c3ee650d9e7a3f8cbf69c23c20ed6977496e9081f3b8da19107d0 \ - --hash=sha256:e82bc0596ee96b2287c08705cfcb6898db1fe4b5c87db3b6823f1fdd77fb3ff1 -pytest-django==3.0.0 \ - --hash=sha256:7898731205fa245926c800273dcffcd9b25e0b660a363ecb6cc2901ffe4aa1cc \ - --hash=sha256:5952283b0e6e0f9d8cb46803636e3940e1c77da8a529f03a8a4320f52d9bf560 -pytest-html==1.14.1 \ - --hash=sha256:bc6007504193e93b135aa48eedd798957beef895c090a557984a65e97fb2c59e \ - --hash=sha256:6f2dd32a98e76503cd1bfa8647268d8622b848c7c99dbef5840a426dd124e8f0 -pytest-selenium==1.11.1 \ - --hash=sha256:b98f97f7fc1f24b9806ab369df3077cf43cce0884e427ad7a21b9239ac8bef47 \ - --hash=sha256:91a94a1221d180c7d455b5b1bd50d5cbce797f0ca81d28239075048abbf416b4 -pytest-variables==1.5.1 \ - --hash=sha256:1365c5f2c3be70d1b165272c1ab76ba0692c901db9b98c0b09062cc70b55a36d \ - --hash=sha256:8f2b7c16c54bfe93561c7a36a5e9d8780bdcd36e6e37d9f7b3b51b656449e2ea -selenium==3.5.0 \ - --hash=sha256:69b479bdfa1ab2fee86a75086f7d5c6ef93cdad8cb6521cb0596554c6722f3eb \ - --hash=sha256:267418f5fde1a4f8c180e5b8f45bd57c6d45b1f7d8fa5ad699a48e9a98fa79a3 -pytest-xdist==1.15.0 \ - --hash=sha256:6238395f8bd050f9288a3b10f34330edece80f4424cf2b4204d6e7d622f0f00b -pytest-rerunfailures==2.0.1 \ - --hash=sha256:5b77224649ec1df6d5f0234a87cdea76ce1e74f5172e1dd8b80d79bbb8a6fdff -pytest-base-url==1.1.0 \ - --hash=sha256:90a1ce6a00a558231117b5aee32300edecbc0c2fd701c13e8cec62177900d28c \ - --hash=sha256:001c1b2678dae82c2891db415251361b29ed6824cb2085e4821635119499071e -pytest-metadata==1.3.0 \ - --hash=sha256:2aa89161636c12418b2f8dfe226b6007a50ce3570f2b09fe23d72506fb21a3bc \ - --hash=sha256:b8735ad24a4974b35ca2d37a443596a26e0986754b0841c46231f4a6f6fa92c9 diff --git a/static-bundles.json b/static-bundles.json new file mode 100644 index 0000000000..985fe1a319 --- /dev/null +++ b/static-bundles.json @@ -0,0 +1,1389 @@ +{ + "css": [ + { + "files": [ + "css/mozorg/internet-health/privacy-day-egg.scss" + ], + "name": "privacy-day-egg" + }, + { + "files": [ + "css/mozorg/projects/mozilla-based.less" + ], + "name": "projects_mozilla_based" + }, + { + "files": [ + "css/firefox/accounts-features.scss" + ], + "name": "firefox_accounts_features" + }, + { + "files": [ + "css/firefox/whatsnew/whatsnew-nightly.scss" + ], + "name": "nightly_whatsnew" + }, + { + "files": [ + "css/base/mozilla-video-poster.less", + "css/newsletter/moznewsletter-subscribe.less", + "css/mozorg/mission.less" + ], + "name": "mission" + }, + { + "files": [ + "css/base/notification-banner.less", + "css/firefox/firstrun/firstrun.less", + "css/base/mozilla-fxa-iframe.less" + ], + "name": "firefox_firstrun" + }, + { + "files": [ + "css/base/page-not-found.scss" + ], + "name": "page_not_found" + }, + { + "files": [ + "css/sandstone/oldIE.less" + ], + "name": "oldIE" + }, + { + "files": [ + "css/mozorg/browser-test.scss" + ], + "name": "browser-test" + }, + { + "files": [ + "css/firefox/new/scene2.scss" + ], + "name": "firefox_new_scene2" + }, + { + "files": [ + "css/sandstone/sandstone-resp.less", + "css/base/global-nav.less", + "css/base/notification-banner.less", + "css/tabzilla/tabzilla-static.less" + ], + "name": "responsive" + }, + { + "files": [ + "css/mozorg/itu.less" + ], + "name": "itu" + }, + { + "files": [ + "css/mozorg/namespaces.scss" + ], + "name": "namespaces" + }, + { + "files": [ + "css/mozorg/about-forums.less" + ], + "name": "about-forums" + }, + { + "files": [ + "css/base/mozilla-modal.less", + "css/mozorg/developer/index.scss" + ], + "name": "developer-hub" + }, + { + "files": [ + "css/etc/firefox/retention/thank-you.scss", + "css/etc/firefox/retention/thank-you-a.scss" + ], + "name": "etc-firefox-retention-thank-you-a" + }, + { + "files": [ + "css/base/menu-resp.less", + "css/firefox/releasenotes.less" + ], + "name": "firefox_releasenotes" + }, + { + "files": [ + "css/base/menu-resp.less", + "css/base/mozilla-modal.less", + "css/firefox/installer-help.less" + ], + "name": "installer_help" + }, + { + "files": [ + "css/firefox/developer/developer.scss", + "css/firefox/developer/firstrun.scss" + ], + "name": "firefox_developer_quantum_firstrun" + }, + { + "files": [ + "css/mozorg/partnerships-distribution.scss" + ], + "name": "partnerships-distribution" + }, + { + "files": [ + "css/base/social-widgets.less", + "css/mozorg/contribute/studentambassadors/landing.less" + ], + "name": "contribute-studentambassadors-landing" + }, + { + "files": [ + "css/firefox/new/berlin-herz.scss" + ], + "name": "firefox_new_berlin_herz" + }, + { + "files": [ + "css/mozorg/mpl-differences.scss" + ], + "name": "mpl-differences" + }, + { + "files": [ + "css/base/menu-resp.less", + "css/firefox/releases-index.less" + ], + "name": "firefox_releases_index" + }, + { + "files": [ + "css/mozorg/mpl.less" + ], + "name": "mpl" + }, + { + "files": [ + "css/base/mozilla-modal.less", + "css/foundation/annual2012.less" + ], + "name": "annual_2012" + }, + { + "files": [ + "css/base/mozilla-share-cta.less", + "css/firefox/feedback.less" + ], + "name": "firefox_feedback" + }, + { + "files": [ + "css/firefox/features/sync.scss" + ], + "name": "firefox-features-sync" + }, + { + "files": [ + "css/press/press.less" + ], + "name": "press" + }, + { + "files": [ + "css/mozorg/mpl-1-1-annotated.scss" + ], + "name": "mpl-1-1-annotated" + }, + { + "files": [ + "css/firefox/developer/developer.scss" + ], + "name": "firefox_developer" + }, + { + "files": [ + "css/foundation/annual2011.less" + ], + "name": "annual_2011" + }, + { + "files": [ + "css/grants/grants.less" + ], + "name": "grants" + }, + { + "files": [ + "css/foundation/annual2013.less", + "css/foundation/annual2014.less" + ], + "name": "annual_2014" + }, + { + "files": [ + "css/firefox/new/scene1.scss" + ], + "name": "firefox_new_scene1" + }, + { + "files": [ + "css/security/security.scss" + ], + "name": "security" + }, + { + "files": [ + "css/firefox/testflight.less" + ], + "name": "firefox_ios_testflight" + }, + { + "files": [ + "css/firefox/new/reggie-watts.scss" + ], + "name": "firefox_new_reggie_watts" + }, + { + "files": [ + "css/base/mozilla-modal.less", + "css/mozorg/contribute/contribute-base.less" + ], + "name": "contribute-base" + }, + { + "files": [ + "css/security/hall-of-fame.scss", + "css/base/mozilla-accordion.less" + ], + "name": "security-bug-bounty-hall-of-fame" + }, + { + "files": [ + "css/etc/firefox/retention/thank-you.scss", + "css/etc/firefox/retention/thank-you-b.scss" + ], + "name": "etc-firefox-retention-thank-you-b" + }, + { + "files": [ + "css/mozorg/manifesto.scss" + ], + "name": "manifesto" + }, + { + "files": [ + "css/firefox/features/detail.scss" + ], + "name": "firefox-features-hub-detail" + }, + { + "files": [ + "css/newsletter/moznewsletter-subscribe.less", + "css/mozorg/home/home.scss" + ], + "name": "home" + }, + { + "files": [ + "css/newsletter/newsletter.less" + ], + "name": "newsletter" + }, + { + "files": [ + "css/legal/eula.less" + ], + "name": "legal-eula" + }, + { + "files": [ + "css/pebbles/global.scss" + ], + "name": "pebbles" + }, + { + "files": [ + "css/mozorg/mpl-1-1.scss" + ], + "name": "mpl-1-1" + }, + { + "files": [ + "css/newsletter/moznewsletter-subscribe.less", + "css/mozorg/contribute/taskview.less" + ], + "name": "contribute-taskview" + }, + { + "files": [ + "css/mozorg/home/home-2018.scss" + ], + "name": "home-2018" + }, + { + "files": [ + "css/pebbles/base/oldIE.scss" + ], + "name": "oldIE-pebbles" + }, + { + "files": [ + "css/legal/legal.less", + "css/newsletter/moznewsletter-subscribe.less" + ], + "name": "legal" + }, + { + "files": [ + "css/base/mozilla-accordion.less", + "css/mozorg/about-transparency.less" + ], + "name": "about-transparency" + }, + { + "files": [ + "css/base/mozilla-modal.less", + "css/base/notification-modal.less" + ], + "name": "firefox-update-notification-firstrun-whatsnew" + }, + { + "files": [ + "css/base/mozilla-modal.less", + "css/foundation/annual2013.less" + ], + "name": "annual_2013" + }, + { + "files": [ + "css/sandstone/sandstone-resp.less", + "css/csrf-failure.less" + ], + "name": "csrf-failure" + }, + { + "files": [ + "css/foundation/annual2016.scss" + ], + "name": "annual_2016" + }, + { + "files": [ + "css/base/mozilla-accordion.less" + ], + "name": "mozilla_accordion" + }, + { + "files": [ + "css/foundation/annual2013.less", + "css/foundation/annual2015.less" + ], + "name": "annual_2015" + }, + { + "files": [ + "css/newsletter/moznewsletter-subscribe.less", + "css/foundation/foundation.less" + ], + "name": "foundation" + }, + { + "files": [ + "css/pebbles/basic.scss" + ], + "name": "pebbles-basic" + }, + { + "files": [ + "css/etc/firefox/retention/thank-you.scss", + "css/etc/firefox/retention/thank-you-referral.scss" + ], + "name": "etc-firefox-retention-thank-you-referral" + }, + { + "files": [ + "css/firefox/firstrun/firstrun-facebook-container.scss" + ], + "name": "firefox_firstrun_facebook_container" + }, + { + "files": [ + "css/firefox/tracking-protection-tour.less" + ], + "name": "tracking-protection-tour" + }, + { + "files": [ + "css/mozorg/credits.scss" + ], + "name": "credits" + }, + { + "files": [ + "css/mozorg/contribute/signup.less" + ], + "name": "contribute-signup" + }, + { + "files": [ + "css/firefox/developer/developer.scss", + "css/firefox/developer/whatsnew.scss" + ], + "name": "firefox_developer_quantum_whatsnew" + }, + { + "files": [ + "css/mozorg/about-patents.less", + "css/base/mozilla-accordion.less" + ], + "name": "about-patents" + }, + { + "files": [ + "css/firefox/whatsnew/whatsnew-rocket.scss" + ], + "name": "firefox-whatsnew-rocket" + }, + { + "files": [ + "css/base/mozilla-video-poster.less", + "css/newsletter/moznewsletter-subscribe.less", + "css/mozorg/about.less" + ], + "name": "about" + }, + { + "files": [ + "css/styleguide/styleguide.scss" + ], + "name": "styleguide" + }, + { + "files": [ + "css/mozorg/internet-health/health-subpage.scss" + ], + "name": "health-subpage" + }, + { + "files": [ + "css/newsletter/newsletter-mozilla.scss" + ], + "name": "newsletter-mozilla" + }, + { + "files": [ + "css/mozorg/contribute/friends.less" + ], + "name": "contribute-friends" + }, + { + "files": [ + "css/firefox/whatsnew/whatsnew.scss" + ], + "name": "firefox_whatsnew" + }, + { + "files": [ + "css/firefox/nightly_firstrun.less" + ], + "name": "nightly_firstrun" + }, + { + "files": [ + "css/mozorg/internet-health/index.scss" + ], + "name": "internet-health-hub" + }, + { + "files": [ + "css/mozorg/developer/css-grid-demo.scss" + ], + "name": "css-grid-demo" + }, + { + "files": [ + "css/firefox/home-fbvideochat-funnelcake.scss" + ], + "name": "firefox-home-fbvideochat-funnelcake" + }, + { + "files": [ + "css/mozorg/history-slides.less" + ], + "name": "history-slides" + }, + { + "files": [ + "css/firefox/whatsnew/whatsnew-60.scss" + ], + "name": "firefox_whatsnew_60" + }, + { + "files": [ + "css/mozorg/commit-access-policy.less" + ], + "name": "commit-access-policy" + }, + { + "files": [ + "css/mozorg/contribute/contribute-embed.less" + ], + "name": "contribute-embed" + }, + { + "files": [ + "css/mozorg/about-base.less" + ], + "name": "about-base-resp" + }, + { + "files": [ + "css/firefox/whatsnew/whatsnew-57.scss" + ], + "name": "firefox-whatsnew-57" + }, + { + "files": [ + "css/privacy/privacy.less" + ], + "name": "privacy" + }, + { + "files": [ + "css/firefox/new/wait-face.scss" + ], + "name": "firefox_new_wait_face" + }, + { + "files": [ + "css/firefox/switch.scss" + ], + "name": "firefox-switch" + }, + { + "files": [ + "css/firefox/new/common.scss" + ], + "name": "firefox_new_common" + }, + { + "files": [ + "css/legal/fraud-report.less" + ], + "name": "legal_fraud_report" + }, + { + "files": [ + "css/newsletter/newsletter-developer.scss" + ], + "name": "newsletter-developer" + }, + { + "files": [ + "css/base/mozilla-fxa-iframe.scss", + "css/firefox/whatsnew/whatsnew-fxa.scss" + ], + "name": "firefox_whatsnew_fxa" + }, + { + "files": [ + "css/firefox/firstrun/firstrun-quantum.scss", + "css/base/mozilla-fxa-iframe.scss" + ], + "name": "firefox_firstrun_quantum" + }, + { + "files": [ + "css/newsletter/newsletter-opt-out-confirmation.scss" + ], + "name": "newsletter-opt-out-confirmation" + }, + { + "files": [ + "css/base/mozilla-share-cta.less", + "css/base/menu-resp.less", + "css/newsletter/fxnewsletter-subscribe.less", + "css/firefox/all.less" + ], + "name": "firefox_all" + }, + { + "files": [ + "css/mozorg/about-lean-data.less" + ], + "name": "about-lean-data" + }, + { + "files": [ + "css/mozorg/powered-by.less" + ], + "name": "powered-by" + }, + { + "files": [ + "css/firefox/new/berlin.scss", + "css/firefox/new/berlin-b.scss" + ], + "name": "firefox_new_berlin_b" + }, + { + "files": [ + "css/firefox/features/index.scss" + ], + "name": "firefox-features-index" + }, + { + "files": [ + "css/base/menu-resp.less", + "css/firefox/unsupported-systems.less" + ], + "name": "firefox_unsupported_systems" + }, + { + "files": [ + "css/base/mozilla-modal.less", + "css/mozorg/technology.scss" + ], + "name": "technology" + }, + { + "files": [ + "css/protocol/protocol.scss" + ], + "name": "protocol-core" + }, + { + "files": [ + "css/firefox/features/common.scss" + ], + "name": "firefox-features-hub-common" + }, + { + "files": [ + "css/firefox/home.scss" + ], + "name": "firefox-home" + }, + { + "files": [ + "css/firefox/whatsnew/whatsnew-57-letter.scss" + ], + "name": "firefox-whatsnew-57-letter" + }, + { + "files": [ + "css/mozorg/book.scss" + ], + "name": "book" + }, + { + "files": [ + "css/firefox/enterprise.scss" + ], + "name": "firefox_enterprise" + }, + { + "files": [ + "css/firefox/releasenotes-firefox.less" + ], + "name": "firefox_releasenotes_firefox" + }, + { + "files": [ + "css/firefox/new/berlin.scss" + ], + "name": "firefox_new_berlin" + }, + { + "files": [ + "css/firefox/whatsnew/whatsnew-zh-tw.scss" + ], + "name": "firefox_whatsnew_zh_tw" + }, + { + "files": [ + "css/newsletter/newsletter-firefox.scss" + ], + "name": "newsletter-firefox" + }, + { + "files": [ + "css/mozorg/mpl-2-0.scss" + ], + "name": "mpl-2-0" + }, + { + "files": [ + "css/libs/magnific-popup.css", + "css/mozorg/contact-spaces.scss" + ], + "name": "contact-spaces" + }, + { + "files": [ + "css/plugincheck/plugincheck.scss" + ], + "name": "plugincheck" + }, + { + "files": [ + "css/newsletter/moznewsletter-subscribe.less", + "css/mozorg/leadership.scss" + ], + "name": "about-leadership" + }, + { + "files": [ + "css/mozorg/moss/common.scss" + ], + "name": "moss" + }, + { + "files": [ + "css/base/send-to-device.less", + "css/firefox/mobile.scss" + ], + "name": "firefox-mobile" + }, + { + "files": [ + "css/base/mozilla-fxa-iframe.scss", + "css/firefox/accounts.scss" + ], + "name": "firefox_accounts" + }, + { + "files": [ + "css/privacy/fb-privacy.less" + ], + "name": "fb_privacy" + }, + { + "files": [ + "css/privacy/privacy-quantum.scss" + ], + "name": "privacy_quantum" + }, + { + "files": [ + "css/firefox/facebook-container.scss" + ], + "name": "firefox_facebook_container" + }, + { + "files": [ + "css/mozorg/internet-health.scss" + ], + "name": "internet-health" + }, + { + "files": [ + "css/firefox/organizations.less" + ], + "name": "firefox_organizations" + }, + { + "files": [ + "css/base/mozilla-modal.less", + "css/firefox/dev-firstrun.less" + ], + "name": "firefox_developer_firstrun" + }, + { + "files": [ + "css/firefox/new/portland.scss" + ], + "name": "firefox_new_portland" + }, + { + "files": [ + "css/newsletter/fxnewsletter-subscribe.less", + "css/firefox/channel.less" + ], + "name": "firefox_channel" + }, + { + "files": [ + "css/mozorg/commit-access-requirements.less" + ], + "name": "commit-access-requirements" + } + ], + "js": [ + { + "files": [ + "js/mozorg/contribute/contribute-nav.js" + ], + "name": "contribute-base" + }, + { + "files": [ + "js/firefox/new/variation-scene1.js", + "js/firefox/new/berlin-scene1-herz.js" + ], + "name": "firefox_new_scene1_berlin_herz" + }, + { + "files": [ + "js/base/mozilla-video-poster.js", + "js/firefox/facebook-container-video.js" + ], + "name": "firefox_facebook_container_video" + }, + { + "files": [ + "js/base/mozilla-notification-banner.js", + "js/base/mozilla-notification-banner-init.js" + ], + "name": "firefox-update-notification" + }, + { + "files": [ + "js/base/mozilla-traffic-cop.js", + "js/firefox/accounts-features-experiment.js" + ], + "name": "firefox_accounts_features_experiment" + }, + { + "files": [ + "js/base/mozilla-smoothscroll.js", + "js/libs/jquery.waypoints.min.js", + "js/libs/jquery.waypoints-sticky.min.js", + "js/mozorg/developer/css-grid-demo.js" + ], + "name": "css-grid-demo" + }, + { + "files": [ + "js/base/site.js", + "js/base/dnt-helper.js", + "js/base/mozilla-cookie-helper.js", + "js/base/core-datalayer-page-id.js" + ], + "name": "site" + }, + { + "files": [ + "js/base/mozilla-fxa-iframe.js", + "js/firefox/firstrun/firstrun.js" + ], + "name": "firefox_firstrun" + }, + { + "files": [ + "js/firefox/new/variation-scene1.js" + ], + "name": "firefox_new_scene1_variation" + }, + { + "files": [ + "js/base/mozilla-fxa-iframe.js", + "js/base/send-to-device.js", + "js/firefox/whatsnew/whatsnew-60.js" + ], + "name": "firefox_whatsnew_60" + }, + { + "files": [ + "js/base/mozilla-modal.js", + "js/firefox/new/scene1.js" + ], + "name": "firefox_new_scene1" + }, + { + "files": [ + "js/etc/firefox/retention/confetti.js" + ], + "name": "etc-firefox-retention-thank-you" + }, + { + "files": [ + "js/firefox/new/scene2.js" + ], + "name": "firefox_new_scene2" + }, + { + "files": [ + "js/base/stub-attribution.js", + "js/base/stub-attribution-init.js" + ], + "name": "stub-attribution" + }, + { + "files": [ + "js/base/mozilla-lazy-load.js", + "js/base/mozilla-modal.js", + "js/libs/jquery.waypoints.min.js", + "js/mozorg/home/home.js" + ], + "name": "home" + }, + { + "files": [ + "js/libs/matchMedia.addListener.js" + ], + "name": "matchmedia_addlistener" + }, + { + "files": [ + "js/libs/jquery.waypoints.min.js", + "js/libs/jquery.waypoints-sticky.min.js", + "js/hubs/sub-nav.js", + "js/base/mozilla-modal.js", + "js/mozorg/technology.js" + ], + "name": "technology" + }, + { + "files": [ + "js/libs/jquery-3.2.1.min.js", + "js/base/uitour-lib.js", + "js/firefox/tracking-protection-tour.js", + "js/firefox/tracking-protection-tour-init.js" + ], + "name": "tracking-protection-tour" + }, + { + "files": [ + "js/mozorg/contribute/contribute-stories.js" + ], + "name": "contribute-stories" + }, + { + "files": [ + "js/firefox/facebook-container-funnelcake.js" + ], + "name": "firefox_facebook_container_funnelcake" + }, + { + "files": [ + "js/libs/jquery.waypoints.min.js", + "js/libs/jquery.waypoints-sticky.min.js", + "js/hubs/sub-nav.js", + "js/base/mozilla-modal.js", + "js/base/mozilla-lazy-load.js", + "js/mozorg/developer/developer-hub.js" + ], + "name": "developer-hub" + }, + { + "files": [ + "js/privacy/privacy-quantum.js" + ], + "name": "privacy_quantum" + }, + { + "files": [ + "js/base/mozilla-video-poster.js", + "js/mozorg/about-video.js" + ], + "name": "about_video" + }, + { + "files": [ + "js/libs/jquery.waypoints.min.js", + "js/libs/jquery.cycle2.min.js", + "js/base/mozilla-modal.js", + "js/mozorg/contribute/contribute-landing.js" + ], + "name": "contribute-landing" + }, + { + "files": [ + "js/base/mozilla-svg-image-fallback.js", + "js/mozorg/contribute/friends.js" + ], + "name": "contribute-friends" + }, + { + "files": [ + "js/base/mozilla-modal.js", + "js/firefox/installer-help.js" + ], + "name": "installer_help" + }, + { + "files": [ + "js/base/mozilla-modal.js", + "js/base/send-to-device.js", + "js/base/mozilla-smoothscroll.js", + "js/libs/jquery.waypoints.min.js", + "js/libs/jquery.waypoints-sticky.min.js", + "js/hubs/sub-nav.js", + "js/firefox/mobile/features-scroller.js", + "js/firefox/mobile/mobile.js" + ], + "name": "firefox-mobile" + }, + { + "files": [ + "js/libs/jquery.waypoints.min.js", + "js/libs/jquery.waypoints-sticky.min.js", + "js/firefox/releasenotes.js" + ], + "name": "releasenotes" + }, + { + "files": [ + "js/firefox/new/variation-scene1.js", + "js/firefox/new/portland-scene1.js" + ], + "name": "firefox_new_scene1_portland" + }, + { + "files": [ + "js/libs/jquery.sequence.js", + "js/mozorg/history-slides.js" + ], + "name": "history-slides" + }, + { + "files": [ + "js/base/uitour-lib.js", + "js/privacy/privacy-quantum.js", + "js/privacy/privacy-quantum-firefox.js" + ], + "name": "privacy_quantum_firefox" + }, + { + "files": [ + "js/base/uitour-lib.js", + "js/base/mozilla-fxa-iframe.js", + "js/firefox/whatsnew/whatsnew-fxa.js" + ], + "name": "firefox_whatsnew_fxa" + }, + { + "files": [ + "js/base/mozilla-accordion.js", + "js/base/mozilla-accordion-gatrack.js", + "js/mozorg/about-transparency.js" + ], + "name": "about-transparency" + }, + { + "files": [ + "js/base/mozilla-traffic-cop.js", + "js/firefox/new/berlin-experiment.js" + ], + "name": "firefox_new_berlin_experiment" + }, + { + "files": [ + "js/libs/jquery.waypoints.min.js", + "js/libs/jquery.waypoints-sticky.min.js", + "js/hubs/sub-nav.js" + ], + "name": "firefox-switch" + }, + { + "files": [ + "js/base/mozilla-modal.js", + "js/base/mozilla-notification-banner.js", + "js/base/mozilla-notification-banner-firstrun-whatsnew-init.js" + ], + "name": "firefox-update-notification-firstrun-whatsnew" + }, + { + "files": [ + "js/libs/jquery.waypoints.min.js", + "js/libs/jquery.waypoints-sticky.min.js", + "js/hubs/sub-nav.js", + "js/base/mozilla-smoothscroll.js", + "js/base/mozilla-video-poster.js", + "js/firefox/home/features-scroller.js", + "js/firefox/home/main.js" + ], + "name": "firefox-home" + }, + { + "files": [ + "js/libs/jquery.hoverIntent.min.js", + "js/libs/jquery.waypoints.min.js", + "js/libs/jquery.jcarousel.min.js", + "js/foundation/annual2011.js" + ], + "name": "annual_2011" + }, + { + "files": [ + "js/libs/konami-code.js", + "js/mozorg/internet-health/privacy-day-egg.js" + ], + "name": "privacy-day-egg" + }, + { + "files": [ + "js/newsletter/firefox.js" + ], + "name": "newsletter-firefox" + }, + { + "files": [ + "js/base/mozilla-pixel.js", + "js/base/mozilla-pixel-init.js" + ], + "name": "firefox_new_pixel" + }, + { + "files": [ + "js/base/gtm-snippet.js" + ], + "name": "gtm-snippet" + }, + { + "files": [ + "js/libs/jquery.magnific-popup.min.js", + "js/mozorg/contact-spaces.js" + ], + "name": "contact-spaces" + }, + { + "files": [ + "js/libs/jquery.validate.js", + "js/legal/fraud-report.js" + ], + "name": "legal_fraud_report" + }, + { + "files": [ + "js/libs/jquery.waypoints.min.js", + "js/libs/jquery.waypoints-sticky.min.js", + "js/hubs/sub-nav.js", + "js/base/mozilla-smoothscroll.js", + "js/mozorg/internet-health/health-subpage.js" + ], + "name": "internet-health-subpage" + }, + { + "files": [ + "js/base/mozilla-modal.js", + "js/firefox/dev-whatsnew.js" + ], + "name": "firefox_developer_whatsnew" + }, + { + "files": [ + "js/base/mozilla-traffic-cop.js", + "js/mozorg/home/experiment-home.js" + ], + "name": "experiment-home" + }, + { + "files": [ + "js/firefox/home/fbvideochat-funnelcake.js" + ], + "name": "firefox-home-fbvideochat-funnelcake" + }, + { + "files": [ + "js/newsletter/developer.js" + ], + "name": "newsletter-developer" + }, + { + "files": [ + "js/base/mozilla-modal.js", + "js/mozorg/about-leadership.js" + ], + "name": "about-leadership" + }, + { + "files": [ + "js/base/mozilla-share-cta.js" + ], + "name": "firefox_feedback" + }, + { + "files": [ + "js/base/uitour-lib.js", + "js/firefox/features/sync.js", + "js/firefox/features/sync-init.js" + ], + "name": "firefox-features-sync" + }, + { + "files": [ + "js/mozorg/contribute/signup.js" + ], + "name": "contribute-signup" + }, + { + "files": [ + "js/base/mozilla-modal.js", + "js/foundation/annual2012.js" + ], + "name": "annual_2012" + }, + { + "files": [ + "js/libs/jquery-1.11.3.min.js", + "js/ie8/mozilla-utils-ie8.js", + "js/base/mozilla-client.js", + "js/ie8/base-page-init-ie8.js", + "js/base/core-datalayer.js", + "js/base/core-datalayer-init.js", + "js/base/search-params.js" + ], + "name": "common-ie8" + }, + { + "files": [ + "js/libs/jquery.waypoints.min.js", + "js/libs/jquery.waypoints-sticky.min.js", + "js/hubs/sub-nav.js" + ], + "name": "firefox_developer" + }, + { + "files": [ + "js/base/mozilla-fxa-iframe.js", + "js/base/uitour-lib.js", + "js/firefox/accounts.js" + ], + "name": "firefox_accounts" + }, + { + "files": [ + "js/mozorg/contribute/taskview.js" + ], + "name": "contribute-taskview" + }, + { + "files": [ + "js/base/uitour-lib.js", + "js/base/mozilla-fxa-iframe.js", + "js/firefox/firstrun/firstrun_quantum.js" + ], + "name": "firefox_firstrun_quantum" + }, + { + "files": [ + "js/libs/jquery.waypoints.min.js", + "js/libs/jquery.waypoints-sticky.min.js", + "js/hubs/sub-nav.js" + ], + "name": "internet-health-hub" + }, + { + "files": [ + "js/firefox/new/variation-scene1.js", + "js/firefox/new/berlin-scene1.js" + ], + "name": "firefox_new_scene1_berlin" + }, + { + "files": [ + "js/base/mozilla-share-cta.js", + "js/base/mozilla-pager.js", + "js/firefox/firefox-language-search.js" + ], + "name": "firefox_all" + }, + { + "files": [ + "js/plugincheck/plugincheck.js" + ], + "name": "plugincheck" + }, + { + "files": [ + "js/base/mozilla-accordion.js", + "js/base/mozilla-accordion-gatrack.js" + ], + "name": "accordion" + }, + { + "files": [ + "js/libs/jquery.waypoints.min.js", + "js/libs/jquery.waypoints-sticky.min.js", + "js/hubs/sub-nav.js" + ], + "name": "firefox-features-hub" + }, + { + "files": [ + "js/base/send-to-device.js", + "js/firefox/whatsnew/whatsnew.js" + ], + "name": "firefox_whatsnew" + }, + { + "files": [ + "js/privacy/privacy.js" + ], + "name": "privacy" + }, + { + "files": [ + "js/base/mozilla-modal.js", + "js/base/mozilla-share-cta.js", + "js/mozorg/manifesto.js" + ], + "name": "manifesto" + }, + { + "files": [ + "js/base/mozilla-modal.js", + "js/firefox/dev-firstrun.js" + ], + "name": "firefox_developer_firstrun" + }, + { + "files": [ + "js/libs/jquery-3.2.1.min.js", + "js/libs/spin.min.js", + "js/base/mozilla-utils.js", + "js/newsletter/form.js", + "js/base/mozilla-client.js", + "js/base/mozilla-image-helper.js", + "js/base/nav-main-resp.js", + "js/base/class-list-polyfill.js", + "js/base/mozilla-global-nav.js", + "js/base/base-page-init.js", + "js/base/core-datalayer.js", + "js/base/core-datalayer-init.js", + "js/base/search-params.js" + ], + "name": "common" + }, + { + "files": [ + "js/libs/matchMedia.js", + "js/libs/matchMedia.addListener.js" + ], + "name": "matchmedia" + }, + { + "files": [ + "js/libs/jquery.validate.js", + "js/libs/modernizr.custom.inputtypes.js", + "js/press/speaker-request.js" + ], + "name": "press_speaker_request" + }, + { + "files": [ + "js/base/mozilla-modal.js", + "js/foundation/annual2013.js" + ], + "name": "annual_2013" + }, + { + "files": [ + "js/base/mozilla-traffic-cop.js", + "js/firefox/firstrun/experiment-firstrun-copy.js" + ], + "name": "experiment_firstrun_copy" + }, + { + "files": [ + "js/newsletter/mozilla.js" + ], + "name": "newsletter-mozilla" + } + ] +} diff --git a/static/.gitignore b/static/.gitignore deleted file mode 100644 index 5e7d2734cf..0000000000 --- a/static/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# Ignore everything in this directory -* -# Except this file -!.gitignore diff --git a/yarn.lock b/yarn.lock index 26e170312c..ed8a699b0d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,23 @@ # yarn lockfile v1 +"@gulp-sourcemaps/identity-map@1.X": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@gulp-sourcemaps/identity-map/-/identity-map-1.0.1.tgz#cfa23bc5840f9104ce32a65e74db7e7a974bbee1" + dependencies: + acorn "^5.0.3" + css "^2.2.1" + normalize-path "^2.1.1" + source-map "^0.5.6" + through2 "^2.0.3" + +"@gulp-sourcemaps/map-sources@1.X": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz#890ae7c5d8c877f6d384860215ace9d7ec945bda" + dependencies: + normalize-path "^2.0.1" + through2 "^2.0.3" + "@mozilla-protocol/core@1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@mozilla-protocol/core/-/core-1.0.0.tgz#bf2db3084469364e863923f1f1cf1ea7e8d43968" @@ -28,12 +45,42 @@ accepts@1.3.3: mime-types "~2.1.11" negotiator "0.6.1" +accepts@~1.3.3, accepts@~1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" + dependencies: + mime-types "~2.1.18" + negotiator "0.6.1" + +accord@^0.28.0: + version "0.28.0" + resolved "https://registry.yarnpkg.com/accord/-/accord-0.28.0.tgz#bec516a2f722e7d50f5f9f42f81b77f3b95448ba" + dependencies: + convert-source-map "^1.5.0" + glob "^7.0.5" + indx "^0.2.3" + lodash.clone "^4.3.2" + lodash.defaults "^4.0.1" + lodash.flatten "^4.2.0" + lodash.merge "^4.4.0" + lodash.partialright "^4.1.4" + lodash.pick "^4.2.1" + lodash.uniq "^4.3.0" + resolve "^1.5.0" + semver "^5.3.0" + uglify-js "^2.8.22" + when "^3.7.8" + 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@5.X, acorn@^5.0.3: + version "5.5.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9" + acorn@^3.0.4: version "3.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" @@ -50,7 +97,7 @@ ajv-keywords@^1.0.0: version "1.5.1" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" -ajv@^4.7.0: +ajv@^4.7.0, ajv@^4.9.1: version "4.11.8" resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" dependencies: @@ -78,10 +125,32 @@ amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" +ansi-colors@^1.0.1, ansi-colors@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9" + dependencies: + ansi-wrap "^0.1.0" + +ansi-cyan@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-cyan/-/ansi-cyan-0.1.1.tgz#538ae528af8982f28ae30d86f2f17456d2609873" + dependencies: + ansi-wrap "0.1.0" + ansi-escapes@^1.1.0: version "1.4.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" +ansi-red@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-red/-/ansi-red-0.1.1.tgz#8c638f9d1080800a353c9c28c8a81ca4705d946c" + dependencies: + ansi-wrap "0.1.0" + +ansi-regex@^0.2.0, ansi-regex@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-0.2.1.tgz#0d8e946967a3d8143f93e24e298525fc1b2235f9" + ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -90,6 +159,10 @@ 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@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.1.0.tgz#eaecbf66cd706882760b2f4691582b8f55d7a7de" + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -100,6 +173,16 @@ ansi-styles@^3.1.0: dependencies: color-convert "^1.9.0" +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + dependencies: + color-convert "^1.9.0" + +ansi-wrap@0.1.0, ansi-wrap@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" + anymatch@^1.3.0: version "1.3.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" @@ -107,6 +190,13 @@ anymatch@^1.3.0: micromatch "^2.1.5" normalize-path "^2.0.0" +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + aproba@^1.0.3: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" @@ -128,16 +218,35 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +arr-diff@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-1.1.0.tgz#687c32758163588fef7de7b36fabe495eb1a399a" + dependencies: + arr-flatten "^1.0.1" + array-slice "^0.2.3" + 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: +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + +arr-flatten@^1.0.1, arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" +arr-union@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-2.1.0.tgz#20f9eab5ec70f5c7d215b1077b1c39161d292c7d" + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + array-differ@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" @@ -172,10 +281,18 @@ array-unique@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + arraybuffer.slice@0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca" +arraybuffer.slice@~0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" + arrify@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -192,6 +309,18 @@ 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" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + +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@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" @@ -200,18 +329,26 @@ async-foreach@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" -async@1.x, async@^1.4.0: +async-limiter@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" + +async@1.5.2, async@1.x, async@^1.4.0: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" -async@~0.2.6: - version "0.2.10" - resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" +atob@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.1.tgz#ae2d5a729477f289d60dd7f96a6314a22dd6c22a" + +atob@~1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/atob/-/atob-1.1.3.tgz#95f13629b12c3a51a5d215abdce2aa9f32f80773" + autoprefixer@^6.0.0: version "6.7.7" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" @@ -223,10 +360,18 @@ autoprefixer@^6.0.0: postcss "^5.2.16" 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" + aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" +aws4@^1.2.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.7.0.tgz#d4d0e9b9dbfca77bf08eeb0a8a471550fe39e289" + aws4@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" @@ -259,7 +404,19 @@ base64id@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" -batch@^0.5.3: +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +batch@0.5.3, batch@^0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/batch/-/batch-0.5.3.tgz#3f3414f380321743bfc1042f9a83ff1d5824d464" @@ -312,6 +469,12 @@ body-parser@^1.12.4: raw-body "2.3.2" type-is "~1.6.15" +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" + boom@4.x.x: version "4.3.1" resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" @@ -345,6 +508,64 @@ braces@^1.8.2: preserve "^0.2.0" repeat-element "^1.1.2" +braces@^2.3.0, braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +browser-sync-ui@v1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browser-sync-ui/-/browser-sync-ui-1.0.1.tgz#9740527b26d1d7ace259acc0c79e5b5e37d0fdf2" + dependencies: + async-each-series "0.1.1" + connect-history-api-fallback "^1.1.0" + immutable "^3.7.6" + server-destroy "1.0.1" + socket.io-client "2.0.4" + stream-throttle "^0.1.3" + +browser-sync@^2.23.7: + version "2.23.7" + resolved "https://registry.yarnpkg.com/browser-sync/-/browser-sync-2.23.7.tgz#26002648115a9f99fd762bc6e6e9cfbf10c4a00a" + dependencies: + browser-sync-ui v1.0.1 + bs-recipes "1.3.4" + chokidar "1.7.0" + connect "3.5.0" + connect-history-api-fallback "^1.5.0" + dev-ip "^1.0.1" + easy-extender "2.3.2" + eazy-logger "3.0.2" + emitter-steward "^1.0.0" + etag "^1.8.1" + fresh "^0.5.2" + fs-extra "3.0.1" + http-proxy "1.15.2" + immutable "3.8.2" + 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 "2.0.4" + ua-parser-js "0.7.12" + yargs "6.4.0" + browserslist@^1.1.1, browserslist@^1.1.3, browserslist@^1.7.6: version "1.7.7" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" @@ -352,6 +573,10 @@ browserslist@^1.1.1, browserslist@^1.1.3, browserslist@^1.7.6: caniuse-db "^1.0.30000639" electron-to-chromium "^1.2.7" +bs-recipes@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/bs-recipes/-/bs-recipes-1.3.4.tgz#0d2d4d48a718c8c044769fdc4f89592dc8b69585" + bufferstreams@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/bufferstreams/-/bufferstreams-1.1.1.tgz#0161373060ac5988eff99058731114f6e195d51e" @@ -366,6 +591,20 @@ bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + caller-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" @@ -387,7 +626,7 @@ camelcase-keys@^2.0.0: camelcase "^2.0.0" map-obj "^1.0.0" -camelcase@^1.0.2: +camelcase@^1.0.2, camelcase@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" @@ -399,10 +638,18 @@ camelcase@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + caniuse-db@^1.0.30000187, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: version "1.0.30000733" resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000733.tgz#3a625bc41c7a9f99d59d64552857dd1af0edd9d4" +caseless@~0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" + caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -414,6 +661,16 @@ center-align@^0.1.1: align-text "^0.1.3" lazy-cache "^1.0.3" +chalk@0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.5.1.tgz#663b3a648b68b55d04690d49167aa837858f2174" + dependencies: + ansi-styles "^1.1.0" + escape-string-regexp "^1.0.0" + has-ansi "^0.1.0" + strip-ansi "^0.3.0" + supports-color "^0.2.0" + 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" @@ -432,7 +689,15 @@ chalk@^2.0.1: escape-string-regexp "^1.0.5" supports-color "^4.0.0" -chokidar@^1.4.1, chokidar@^1.6.1: +chalk@^2.3.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chokidar@1.7.0, chokidar@^1.4.1: version "1.7.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" dependencies: @@ -447,10 +712,41 @@ chokidar@^1.4.1, chokidar@^1.6.1: optionalDependencies: fsevents "^1.0.0" +chokidar@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.3.tgz#dcbd4f6cbb2a55b4799ba8a840ac527e5f4b1176" + dependencies: + anymatch "^2.0.0" + async-each "^1.0.0" + braces "^2.3.0" + glob-parent "^3.1.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^2.1.1" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + upath "^1.0.0" + optionalDependencies: + fsevents "^1.1.2" + +chownr@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" + circular-json@^0.3.1: version "0.3.3" resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + clean-css-cli@4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/clean-css-cli/-/clean-css-cli-4.0.5.tgz#ad6d2a01434eb1fa0ad5a91976598a7d82ef18d9" @@ -458,6 +754,12 @@ clean-css-cli@4.0.5: clean-css "^4.0.5" commander "2.x" +clean-css@4.1.11: + version "4.1.11" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.11.tgz#2ecdf145aba38f54740f26cefd0ff3e03e125d6a" + dependencies: + source-map "0.5.x" + clean-css@^4.0.5: version "4.1.9" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.9.tgz#35cee8ae7687a49b98034f70de00c4edd3826301" @@ -490,6 +792,18 @@ cliui@^3.0.3, cliui@^3.2.0: strip-ansi "^3.0.1" wrap-ansi "^2.0.0" +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + 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-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/clone-regexp/-/clone-regexp-1.0.0.tgz#eae0a2413f55c0942f818c229fefce845d7f3b1c" @@ -501,6 +815,10 @@ 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" @@ -509,6 +827,18 @@ 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.1.2" + resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.2.tgz#d591dee4a8f8bc15da43ce97dceeba13d43e2a65" + dependencies: + inherits "^2.0.1" + process-nextick-args "^2.0.0" + readable-stream "^2.3.5" + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -517,6 +847,13 @@ 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" +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + color-convert@^1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" @@ -556,10 +893,18 @@ combined-stream@^1.0.5, combined-stream@~1.0.5: dependencies: delayed-stream "~1.0.0" +commander@2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.6.0.tgz#9df7e52fb2a0cb0fb89058ee80c3104225f37e1d" + commander@2.x: version "2.11.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" +commander@^2.2.0, commander@^2.9.0, commander@~2.15.0: + version "2.15.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" + component-bind@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" @@ -568,7 +913,7 @@ 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: +component-emitter@1.2.1, component-emitter@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" @@ -588,6 +933,38 @@ concat-stream@^1.5.2: readable-stream "^2.2.2" typedarray "^0.0.6" +concat-with-sourcemaps@^1.0.0: + version "1.0.7" + resolved "https://registry.yarnpkg.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.0.7.tgz#9420e100fb984cbde11a78dca2d818306bc8f0d2" + dependencies: + source-map "^0.6.1" + +concurrently@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-3.5.1.tgz#ee8b60018bbe86b02df13e5249453c6ececd2521" + dependencies: + chalk "0.5.1" + commander "2.6.0" + date-fns "^1.23.0" + lodash "^4.5.1" + rx "2.3.24" + spawn-command "^0.0.2-1" + supports-color "^3.2.3" + tree-kill "^1.1.0" + +connect-history-api-fallback@^1.1.0, connect-history-api-fallback@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#b06873934bc5e344fef611a196a6faae0aee015a" + +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" + connect@^3.3.5: version "3.6.4" resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.4.tgz#52ea19c38607318784269297b0218ed074a01687" @@ -605,10 +982,18 @@ content-type@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" +convert-source-map@1.X, convert-source-map@^1.5.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" + cookie@0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + core-js@^2.1.0: version "2.5.1" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.1.tgz#ae6874dc66937789b80754ff5428df66819ca50b" @@ -636,6 +1021,20 @@ cross-spawn@^3.0.0: lru-cache "^4.0.1" which "^1.2.9" +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" + cryptiles@3.x.x: version "3.1.2" resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" @@ -662,6 +1061,15 @@ css-tokenize@^1.0.1: inherits "^2.0.1" readable-stream "^1.0.33" +css@2.X, css@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/css/-/css-2.2.1.tgz#73a4c81de85db664d4ee674f7d47085e3b2d55dc" + dependencies: + inherits "^2.0.1" + source-map "^0.1.38" + source-map-resolve "^0.3.0" + urix "^0.1.0" + currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" @@ -684,6 +1092,10 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" +date-fns@^1.23.0: + version "1.29.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6" + dateformat@^1.0.6: version "1.0.12" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9" @@ -695,7 +1107,15 @@ 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-fabulous@1.X: + version "1.1.0" + resolved "https://registry.yarnpkg.com/debug-fabulous/-/debug-fabulous-1.1.0.tgz#af8a08632465224ef4174a9f06308c3c2a1ebc8e" + dependencies: + debug "3.X" + memoizee "0.4.X" + object-assign "4.X" + +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: @@ -707,16 +1127,38 @@ debug@2.3.3: 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, debug@^2.1.1, debug@^2.2.0, debug@^2.6.0: version "2.6.8" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" dependencies: ms "2.0.0" +debug@3.X, debug@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + dependencies: + ms "2.0.0" + +debug@^2.1.2, debug@^2.3.3, debug@~2.6.4, debug@~2.6.6: + 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" +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + deep-equal@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" @@ -742,11 +1184,30 @@ define-properties@^1.1.2: foreach "^2.0.5" object-keys "^1.0.8" +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + defined@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" -del@^2.0.2, del@^2.2.2: +del@^2.0.2: version "2.2.2" resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" dependencies: @@ -758,6 +1219,17 @@ del@^2.0.2, del@^2.2.2: pinkie-promise "^2.0.0" rimraf "^2.2.8" +del@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" + dependencies: + globby "^6.1.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + p-map "^1.1.1" + pify "^3.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" @@ -770,16 +1242,36 @@ depd@1.1.1, depd@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" +depd@~1.1.0, depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + 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" +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + +detect-newline@2.X: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + +dev-ip@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dev-ip/-/dev-ip-1.0.1.tgz#a76a3ed1855be7a012bb8ac16cb80f3c00dc28f0" + di@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" @@ -827,6 +1319,27 @@ duplexer@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" +duplexify@^3.5.0: + version "3.5.4" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.4.tgz#4bb46c1796eabebeec4ca9a2e66b808cb7a3d8b4" + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^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" @@ -841,10 +1354,20 @@ electron-to-chromium@^1.2.7: version "1.3.21" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.21.tgz#a967ebdcfe8ed0083fc244d1894022a8e8113ea2" +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.1" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + 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" @@ -868,6 +1391,22 @@ engine.io-client@~1.8.4: xmlhttprequest-ssl "1.5.3" yeast "0.1.2" +engine.io-client@~3.1.0: + version "3.1.6" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.1.6.tgz#5bdeb130f8b94a50ac5cbeb72583e7a4a063ddfd" + dependencies: + component-emitter "1.2.1" + component-inherit "0.0.3" + debug "~3.1.0" + engine.io-parser "~2.1.1" + has-cors "1.1.0" + indexof "0.0.1" + parseqs "0.0.5" + parseuri "0.0.5" + ws "~3.3.1" + xmlhttprequest-ssl "~1.5.4" + yeast "0.1.2" + engine.io-parser@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a" @@ -879,6 +1418,16 @@ engine.io-parser@1.3.2: has-binary "0.1.7" wtf-8 "1.0.0" +engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.2.tgz#4c0f4cff79aaeecbbdcfdea66a823c6085409196" + dependencies: + after "0.8.2" + arraybuffer.slice "~0.0.7" + base64-arraybuffer "0.1.5" + blob "0.0.4" + has-binary2 "~1.0.2" + engine.io@~1.8.4: version "1.8.4" resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.4.tgz#77bce12b80e5d60429337fec3b0daf691ebc9003" @@ -890,6 +1439,19 @@ engine.io@~1.8.4: engine.io-parser "1.3.2" ws "1.1.4" +engine.io@~3.1.0: + version "3.1.5" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.1.5.tgz#0e7ef9d690eb0b35597f1d4ad02a26ca2dba3845" + dependencies: + accepts "~1.3.4" + base64id "1.0.0" + cookie "0.3.1" + debug "~3.1.0" + engine.io-parser "~2.1.0" + ws "~3.3.1" + optionalDependencies: + uws "~9.14.0" + ent@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" @@ -931,6 +1493,14 @@ es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14: es6-iterator "2" es6-symbol "~3.1" +es5-ext@^0.10.30, es5-ext@^0.10.35, es5-ext@~0.10.2: + version "0.10.42" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.42.tgz#8c07dd33af04d5dcd1310b5cef13bea63a89ba8d" + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.1" + next-tick "1" + es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512" @@ -939,6 +1509,14 @@ es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1: es5-ext "^0.10.14" es6-symbol "^3.1" +es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + es6-map@^0.1.3: version "0.1.5" resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" @@ -967,7 +1545,7 @@ es6-symbol@3.1.1, es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1, es6-symbo d "1" es5-ext "~0.10.14" -es6-weak-map@^2.0.1: +es6-weak-map@^2.0.1, es6-weak-map@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" dependencies: @@ -980,7 +1558,7 @@ 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: +escape-string-regexp@^1.0.0, 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" @@ -1084,7 +1662,11 @@ esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" -event-emitter@~0.3.5: +etag@^1.8.1, etag@~1.8.0: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + +event-emitter@^0.3.5, event-emitter@~0.3.5: version "0.3.5" resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" dependencies: @@ -1095,6 +1677,18 @@ eventemitter3@1.x.x: version "1.2.0" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" +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" + execall@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execall/-/execall-1.0.0.tgz#73d0904e395b3cab0658b08d09ec25307f29bb73" @@ -1119,6 +1713,18 @@ expand-brackets@^0.1.4: dependencies: is-posix-bracket "^0.1.0" +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + expand-range@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044" @@ -1144,7 +1750,26 @@ expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" -extend@^3.0.0, extend@~3.0.1: +extend-shallow@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-1.1.4.tgz#19d6bf94dfc09d76ba711f39b872d21ff4dd9071" + dependencies: + kind-of "^1.1.0" + +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-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@^3.0.0, extend@~3.0.0, extend@~3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" @@ -1154,6 +1779,19 @@ extglob@^0.3.1: dependencies: is-extglob "^1.0.0" +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + extsprintf@1.3.0, extsprintf@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -1201,6 +1839,25 @@ fill-range@^2.1.0: repeat-element "^1.1.2" repeat-string "^1.5.2" +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +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" + finalhandler@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.5.tgz#a701303d257a1bc82fea547a33e5ae89531723df" @@ -1224,6 +1881,12 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" +find-up@^2.1.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" + findup-sync@^0.4.2: version "0.4.3" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.4.3.tgz#40043929e7bc60adf0b7f4827c4c6e75a0deca12" @@ -1276,7 +1939,7 @@ for-each@~0.3.2: dependencies: is-function "~1.0.0" -for-in@^1.0.1: +for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -1300,6 +1963,18 @@ forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" +fork-stream@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/fork-stream/-/fork-stream-0.0.4.tgz#db849fce77f6708a5f8f386ae533a0907b54ae70" + +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" + form-data@~2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.1.tgz#6fb94fbd71885306d73d15cc497fe4cc4ecd44bf" @@ -1314,10 +1989,38 @@ formatio@1.1.1: dependencies: samsam "~1.1" +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + dependencies: + map-cache "^0.2.2" + +fresh@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e" + +fresh@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + 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-minipass@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" + dependencies: + minipass "^2.2.1" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -1329,6 +2032,13 @@ fsevents@^1.0.0: nan "^2.3.0" node-pre-gyp "^0.6.36" +fsevents@^1.1.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.3.tgz#08292982e7059f6674c93d8b829c1e8604979ac0" + dependencies: + nan "^2.9.2" + node-pre-gyp "^0.9.0" + fstream-ignore@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" @@ -1401,6 +2111,14 @@ get-stdin@^5.0.0: 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" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" @@ -1420,7 +2138,7 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" -glob-parent@^3.0.1: +glob-parent@^3.0.1, glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" dependencies: @@ -1469,6 +2187,16 @@ glob@^5.0.15: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@~7.1.1, glob@~7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" @@ -1519,7 +2247,7 @@ globby@^5.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" -globby@^6.0.0: +globby@^6.0.0, globby@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" dependencies: @@ -1555,20 +2283,44 @@ glogg@^1.0.0: dependencies: sparkles "^1.0.0" +graceful-fs@4.X, 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@^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.1.2: - 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" +gulp-cached@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/gulp-cached/-/gulp-cached-1.1.1.tgz#fe7cd4f87f37601e6073cfedee5c2bdaf8b6acce" + dependencies: + lodash.defaults "^4.2.0" + through2 "^2.0.1" + +gulp-clean-css@^3.9.3: + version "3.9.3" + resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-3.9.3.tgz#47bf7ad62f44970f86e4ac4bdeed68ad904e65c5" + dependencies: + clean-css "4.1.11" + plugin-error "1.0.1" + through2 "2.0.3" + vinyl-sourcemaps-apply "0.2.1" + +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-eslint@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/gulp-eslint/-/gulp-eslint-3.0.1.tgz#04e57e3e18c6974267c12cf6855dc717d4a313bd" @@ -1577,6 +2329,69 @@ gulp-eslint@^3.0.1: eslint "^3.0.0" gulp-util "^3.0.6" +gulp-filter@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/gulp-filter/-/gulp-filter-5.1.0.tgz#a05e11affb07cf7dcf41a7de1cb7b63ac3783e73" + dependencies: + multimatch "^2.0.0" + plugin-error "^0.1.2" + streamfilter "^1.0.5" + +gulp-if@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/gulp-if/-/gulp-if-2.0.2.tgz#a497b7e7573005041caa2bc8b7dda3c80444d629" + dependencies: + gulp-match "^1.0.3" + ternary-stream "^2.0.1" + through2 "^2.0.1" + +gulp-less@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/gulp-less/-/gulp-less-3.5.0.tgz#8014f469ddfc6544d7dda50098def0371bbb4f78" + dependencies: + accord "^0.28.0" + less "2.6.x || ^2.7.1" + object-assign "^4.0.1" + plugin-error "^0.1.2" + replace-ext "^1.0.0" + through2 "^2.0.0" + vinyl-sourcemaps-apply "^0.2.0" + +gulp-match@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/gulp-match/-/gulp-match-1.0.3.tgz#91c7c0d7f29becd6606d57d80a7f8776a87aba8e" + dependencies: + minimatch "^3.0.3" + +gulp-sass@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/gulp-sass/-/gulp-sass-4.0.1.tgz#7f43d117eb2d303524968a1b48494af1bc64d1d9" + dependencies: + chalk "^2.3.0" + lodash.clonedeep "^4.3.2" + node-sass "^4.8.3" + plugin-error "^1.0.1" + replace-ext "^1.0.0" + strip-ansi "^4.0.0" + through2 "^2.0.0" + vinyl-sourcemaps-apply "^0.2.0" + +gulp-sourcemaps@^2.6.4: + version "2.6.4" + resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-2.6.4.tgz#cbb2008450b1bcce6cd23bf98337be751bf6e30a" + dependencies: + "@gulp-sourcemaps/identity-map" "1.X" + "@gulp-sourcemaps/map-sources" "1.X" + acorn "5.X" + convert-source-map "1.X" + css "2.X" + debug-fabulous "1.X" + detect-newline "2.X" + graceful-fs "4.X" + source-map "~0.6.0" + strip-bom-string "1.X" + through2 "2.X" + gulp-stylelint@^3.9.0: version "3.9.0" resolved "https://registry.yarnpkg.com/gulp-stylelint/-/gulp-stylelint-3.9.0.tgz#a09a67af490b1fb28eb910b4cbfb5412c7f0bb71" @@ -1589,6 +2404,18 @@ gulp-stylelint@^3.9.0: stylelint "^7.9.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" + 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.6, 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" @@ -1612,19 +2439,19 @@ gulp-util@^3.0.0, gulp-util@^3.0.6, gulp-util@^3.0.7, gulp-util@^3.0.8: through2 "^2.0.0" vinyl "^0.5.0" -gulp-watch@^4.3.6: - version "4.3.11" - resolved "https://registry.yarnpkg.com/gulp-watch/-/gulp-watch-4.3.11.tgz#162fc563de9fc770e91f9a7ce3955513a9a118c0" +gulp-watch@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/gulp-watch/-/gulp-watch-5.0.0.tgz#6fb03ab1735972e0d2866475b568555836dfd0eb" dependencies: anymatch "^1.3.0" - chokidar "^1.6.1" + chokidar "^2.0.0" glob-parent "^3.0.1" gulp-util "^3.0.7" object-assign "^4.1.0" path-is-absolute "^1.0.1" readable-stream "^2.2.2" slash "^1.0.0" - vinyl "^1.2.0" + vinyl "^2.1.0" vinyl-file "^2.0.0" gulp@^3.9.1: @@ -1661,10 +2488,30 @@ handlebars@^4.0.1: 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-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" +har-validator@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" + dependencies: + chalk "^1.1.1" + commander "^2.9.0" + is-my-json-valid "^2.12.4" + pinkie-promise "^2.0.0" + +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" + har-validator@~5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" @@ -1672,12 +2519,24 @@ har-validator@~5.0.3: ajv "^5.1.0" har-schema "^2.0.0" +has-ansi@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-0.1.0.tgz#84f265aae8c0e6a88a12d7022894b7568894c62e" + dependencies: + ansi-regex "^0.2.0" + 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-binary2@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.2.tgz#e83dba49f0b9be4d026d27365350d9f03f54be98" + dependencies: + isarray "2.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" @@ -1696,6 +2555,10 @@ has-flag@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + has-gulplog@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce" @@ -1706,12 +2569,48 @@ has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + has@^1.0.1, 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: + 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" + hawk@~6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" @@ -1721,6 +2620,10 @@ hawk@~6.0.2: hoek "4.x.x" sntp "2.x.x" +hoek@2.x.x: + version "2.16.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + hoek@4.x.x: version "4.2.0" resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d" @@ -1748,6 +2651,30 @@ http-errors@1.6.2, http-errors@~1.6.2: setprototypeof "1.0.3" statuses ">= 1.3.1 < 2" +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.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 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-proxy@^1.13.0: version "1.16.2" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742" @@ -1755,6 +2682,14 @@ http-proxy@^1.13.0: 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" + http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -1767,6 +2702,18 @@ iconv-lite@0.4.19: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" +iconv-lite@^0.4.4: + version "0.4.21" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.21.tgz#c47f8733d02171189ebc4a400f3218d348094798" + dependencies: + safer-buffer "^2.1.0" + +ignore-walk@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" + dependencies: + minimatch "^3.0.4" + ignore@^3.2.0: version "3.3.5" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.5.tgz#c4e715455f6073a8d7e5dae72d2fc9d71663dba6" @@ -1775,6 +2722,10 @@ image-size@~0.5.0: version "0.5.5" resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" +immutable@3.8.2, 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" @@ -1797,6 +2748,10 @@ indexof@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" +indx@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/indx/-/indx-0.2.3.tgz#15dcf56ee9cf65c0234c513c27fbd580e70fbc50" + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -1857,6 +2812,18 @@ is-absolute@^0.2.3: is-relative "^0.2.1" is-windows "^0.2.0" +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + dependencies: + kind-of "^6.0.0" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -1881,10 +2848,38 @@ is-callable@^1.1.1, is-callable@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + dependencies: + kind-of "^6.0.0" + is-date-object@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + is-directory@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" @@ -1899,15 +2894,21 @@ is-equal-shallow@^0.1.3: dependencies: is-primitive "^2.0.0" -is-extendable@^0.1.1: +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-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + dependencies: + is-plain-object "^2.0.4" + 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: +is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -1943,6 +2944,16 @@ is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" +is-glob@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" + dependencies: + is-extglob "^2.1.1" + +is-my-ip-valid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz#7b351b8e8edd4d3995d4d066680e664d94696824" + is-my-json-valid@^2.10.0: version "2.16.1" resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz#5a846777e2c2620d1e69104e5d3a03b1f6088f11" @@ -1952,6 +2963,22 @@ is-my-json-valid@^2.10.0: jsonpointer "^4.0.0" xtend "^4.0.0" +is-my-json-valid@^2.12.4: + version "2.17.2" + resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz#6b2103a288e94ef3de5cf15d29dd85fc4b78d65c" + dependencies: + generate-function "^2.0.0" + generate-object-property "^1.1.0" + is-my-ip-valid "^1.0.0" + jsonpointer "^4.0.0" + xtend "^4.0.0" + +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@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" @@ -1968,6 +2995,16 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + +is-odd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz#7646624671fd7ea558ccd9a2795182f2958f1b24" + dependencies: + is-number "^4.0.0" + 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" @@ -1984,7 +3021,7 @@ is-path-inside@^1.0.0: dependencies: path-is-inside "^1.0.1" -is-plain-object@^2.0.3: +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" dependencies: @@ -1998,6 +3035,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: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + is-property@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" @@ -2024,6 +3065,10 @@ is-resolvable@^1.0.0: dependencies: tryit "^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" @@ -2050,6 +3095,10 @@ is-windows@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c" +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" @@ -2058,6 +3107,10 @@ 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" +isarray@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" + isbinaryfile@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621" @@ -2144,6 +3197,12 @@ 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" + jsonfilter@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/jsonfilter/-/jsonfilter-1.1.2.tgz#21ef7cedc75193813c75932e96a98be205ba5a11" @@ -2219,7 +3278,11 @@ karma@^0.13.22: source-map "^0.5.3" useragent "^2.1.6" -kind-of@^3.0.2: +kind-of@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-1.1.0.tgz#140a3d2d41a36d2efcfa9377b62c24f8495a5c44" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" dependencies: @@ -2231,6 +3294,14 @@ kind-of@^4.0.0: dependencies: is-buffer "^1.1.5" +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + known-css-properties@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.2.0.tgz#899c94be368e55b42d7db8d5be7d73a4a4a41454" @@ -2252,9 +3323,9 @@ ldjson-stream@^1.2.1: split2 "^0.2.1" through2 "^0.6.1" -less@2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/less/-/less-2.7.1.tgz#6cbfea22b3b830304e9a5fb371d54fa480c9d7cf" +"less@2.6.x || ^2.7.1": + version "2.7.3" + resolved "https://registry.yarnpkg.com/less/-/less-2.7.3.tgz#cc1260f51c900a9ec0d91fb6998139e02507b63b" optionalDependencies: errno "^0.1.1" graceful-fs "^4.1.2" @@ -2262,6 +3333,7 @@ less@2.7.1: mime "^1.2.11" mkdirp "^0.5.0" promise "^7.1.1" + request "2.81.0" source-map "^0.5.3" levn@^0.3.0, levn@~0.3.0: @@ -2285,6 +3357,10 @@ liftoff@^2.1.0: rechoir "^0.6.2" resolve "^1.1.7" +limiter@^1.0.5: + version "1.1.3" + resolved "https://registry.yarnpkg.com/limiter/-/limiter-1.1.3.tgz#32e2eb55b2324076943e5d04c1185ffb387968ef" + 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" @@ -2295,6 +3371,22 @@ load-json-file@^1.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" + +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" @@ -2335,16 +3427,28 @@ lodash.assign@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" +lodash.clone@^4.3.2: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clone/-/lodash.clone-4.5.0.tgz#195870450f5a13192478df4bc3d23d2dea1907b6" + lodash.clonedeep@^4.3.2: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" +lodash.defaults@^4.0.1, lodash.defaults@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" + 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.flatten@^4.2.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + lodash.isarguments@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" @@ -2353,6 +3457,10 @@ lodash.isarray@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" +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" @@ -2373,10 +3481,22 @@ lodash.mapvalues@^4.4.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" +lodash.merge@^4.4.0: + version "4.6.1" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.1.tgz#adc25d9cb99b9391c59624f379fbba60d7111d54" + lodash.mergewith@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55" +lodash.partialright@^4.1.4: + version "4.2.1" + resolved "https://registry.yarnpkg.com/lodash.partialright/-/lodash.partialright-4.2.1.tgz#0130d80e83363264d40074f329b8a3e7a8a1cc4b" + +lodash.pick@^4.2.1: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" + lodash.restparam@^3.0.0: version "3.6.1" resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" @@ -2402,7 +3522,11 @@ lodash.templatesettings@^3.0.0: lodash._reinterpolate "^3.0.0" lodash.escape "^3.0.0" -lodash@^3.8.0: +lodash.uniq@^4.3.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + +lodash@^3.10.1, lodash@^3.8.0: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" @@ -2410,6 +3534,10 @@ lodash@^4.0.0, lodash@^4.1.0, lodash@^4.17.4, lodash@^4.3.0, lodash@~4.17.4: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" +lodash@^4.13.1, lodash@^4.5.1: + version "4.17.10" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" + lodash@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/lodash/-/lodash-1.0.2.tgz#8f57560c83b59fc270bd3d561b690043430e2551" @@ -2457,7 +3585,23 @@ lru-cache@^4.0.1: pseudomap "^1.0.2" yallist "^2.1.2" -map-cache@^0.2.0: +lru-queue@0.1: + version "0.1.0" + resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" + dependencies: + es5-ext "~0.10.2" + +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.4" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.4.tgz#19978ed575f9e9545d2ff8c13e33b5d18a67d535" + +map-cache@^0.2.0, map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -2465,6 +3609,12 @@ 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-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + dependencies: + object-visit "^1.0.0" + mathml-tag-names@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.0.1.tgz#8d41268168bf86d1102b98109e28e531e7a34578" @@ -2473,6 +3623,25 @@ media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + dependencies: + mimic-fn "^1.0.0" + +memoizee@0.4.X: + version "0.4.12" + resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.12.tgz#780e99a219c50c549be6d0fc61765080975c58fb" + dependencies: + d "1" + es5-ext "^0.10.30" + es6-weak-map "^2.0.2" + event-emitter "^0.3.5" + is-promise "^2.1" + lru-queue "0.1" + next-tick "1" + timers-ext "^0.1.2" + meow@^3.3.0, meow@^3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" @@ -2488,7 +3657,13 @@ meow@^3.3.0, meow@^3.7.0: redent "^1.0.0" trim-newlines "^1.0.0" -micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.7: +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.11, micromatch@^2.3.7: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" dependencies: @@ -2506,21 +3681,61 @@ micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.7: parse-glob "^3.0.4" regex-cache "^0.4.2" +micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.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-db@~1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" + mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.17: 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.11, mime@^1.3.4: +mime-types@~2.1.18, mime-types@~2.1.7: + version "2.1.18" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" + dependencies: + mime-db "~1.33.0" + +mime@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" + +mime@^1.2.11: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + +mime@^1.3.4: version "1.4.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.0.tgz#69e9e0db51d44f2a3b56e48b7817d7d137f1a343" -"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4, minimatch@~3.0.2: +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + +"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: @@ -2551,6 +3766,26 @@ minimist@~0.0.1: version "0.0.10" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" +minipass@^2.2.1, minipass@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.2.4.tgz#03c824d84551ec38a8d1bb5bc350a5a30a354a40" + dependencies: + safe-buffer "^5.1.1" + yallist "^3.0.0" + +minizlib@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb" + dependencies: + minipass "^2.2.1" + +mixin-deep@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" @@ -2565,6 +3800,14 @@ 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" @@ -2588,10 +3831,31 @@ mute-stream@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" -nan@^2.3.0, nan@^2.3.2: +nan@^2.10.0, nan@^2.9.2: + version "2.10.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" + +nan@^2.3.0: version "2.7.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46" +nanomatch@^1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2" + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-odd "^2.0.0" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + natives@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.0.tgz#e9ff841418a6b2ec7a495e939984f78f163e6e31" @@ -2600,10 +3864,22 @@ natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" +needle@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.1.tgz#b5e325bd3aae8c2678902fa296f729455d1d3a7d" + dependencies: + debug "^2.1.2" + iconv-lite "^0.4.4" + sax "^1.2.4" + negotiator@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" +next-tick@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + node-gyp@^3.3.1: version "3.6.2" resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.6.2.tgz#9bfbe54562286284838e750eac05295853fa1c60" @@ -2637,9 +3913,24 @@ node-pre-gyp@^0.6.36: tar "^2.2.1" tar-pack "^3.4.0" -node-sass@4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.5.0.tgz#532e37bad0ce587348c831535dbc98ea4289508b" +node-pre-gyp@^0.9.0: + version "0.9.1" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.9.1.tgz#f11c07516dd92f87199dbc7e1838eab7cd56c9e0" + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.0" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.1.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4" + +node-sass@^4.8.3: + version "4.9.0" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.9.0.tgz#d1b8aa855d98ed684d6848db929a20771cc2ae52" dependencies: async-foreach "^0.1.3" chalk "^1.1.1" @@ -2653,12 +3944,13 @@ node-sass@4.5.0: lodash.mergewith "^4.6.0" meow "^3.7.0" mkdirp "^0.5.1" - nan "^2.3.2" + nan "^2.10.0" node-gyp "^3.3.1" npmlog "^4.0.0" - request "^2.61.0" - sass-graph "^2.1.1" + request "~2.79.0" + sass-graph "^2.2.4" stdout-stream "^1.4.0" + "true-case-path" "^1.0.2" "nopt@2 || 3", nopt@3.x: version "3.0.6" @@ -2682,7 +3974,7 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.0, normalize-path@^2.0.1: +normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" dependencies: @@ -2696,6 +3988,23 @@ normalize-selector@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/normalize-selector/-/normalize-selector-0.2.0.tgz#d0b145eb691189c63a78d201dc4fdb1293ef0c03" +npm-bundled@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.3.tgz#7e71703d973af3370a9591bafe3a63aca0be2308" + +npm-packlist@^1.1.6: + version "1.1.10" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.10.tgz#1039db9e985727e464df066f4cf0ab6ef85c398a" + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + +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@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" @@ -2713,7 +4022,7 @@ 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.2: +oauth-sign@~0.8.1, oauth-sign@~0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" @@ -2721,18 +4030,26 @@ 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@4.X, 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-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.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-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + object-inspect@~1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.3.0.tgz#5b1eb8e6742e2ee83342a637034d844928ba2f6d" @@ -2741,6 +4058,16 @@ object-keys@^1.0.8: version "1.0.11" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" +object-path@^0.9.0: + version "0.9.2" + resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.9.2.tgz#0fd9a74fc5fad1ae3968b586bda5c632bd6c05a5" + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + dependencies: + isobject "^3.0.0" + object.defaults@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" @@ -2757,7 +4084,7 @@ object.omit@^2.0.0: for-own "^0.1.4" is-extendable "^0.1.1" -object.pick@^1.2.0: +object.pick@^1.2.0, object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" dependencies: @@ -2769,7 +4096,7 @@ on-finished@~2.3.0: dependencies: ee-first "1.1.1" -once@1.x, once@^1.3.0, once@^1.3.3: +once@1.x, 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: @@ -2789,6 +4116,17 @@ 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" @@ -2833,6 +4171,14 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" +os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + dependencies: + execa "^0.7.0" + lcid "^1.0.0" + mem "^1.1.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" @@ -2844,6 +4190,30 @@ osenv@0, osenv@^0.1.4: 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-limit@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.2.0.tgz#0e92b6bedcb59f022c13d0f1949dc82d15909f1c" + dependencies: + p-try "^1.0.0" + +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-map@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + parse-filepath@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.1.tgz#159d6155d43904d16c10ef698911da1e91969b73" @@ -2889,10 +4259,14 @@ parseuri@0.0.5: dependencies: better-assert "~1.0.0" -parseurl@~1.3.2: +parseurl@~1.3.1, parseurl@~1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" @@ -2903,6 +4277,10 @@ 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, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -2911,6 +4289,10 @@ path-is-inside@^1.0.1: 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" + path-parse@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" @@ -2933,6 +4315,10 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" +performance-now@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" + performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" @@ -2941,6 +4327,10 @@ 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" @@ -2958,6 +4348,25 @@ pipetteur@^2.0.0: onecolor "^3.0.4" synesthesia "^1.0.1" +plugin-error@1.0.1, plugin-error@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-1.0.1.tgz#77016bd8919d0ac377fdcdd0322328953ca5781c" + dependencies: + ansi-colors "^1.0.1" + arr-diff "^4.0.0" + arr-union "^3.1.0" + extend-shallow "^3.0.2" + +plugin-error@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-0.1.2.tgz#3b9bb3335ccf00f425e07437e19276967da47ace" + dependencies: + ansi-cyan "^0.1.1" + ansi-red "^0.1.1" + arr-diff "^1.0.1" + arr-union "^2.0.1" + extend-shallow "^1.1.2" + plur@^2.0.0, plur@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/plur/-/plur-2.1.2.tgz#7482452c1a0f508e3e344eaec312c91c29dc655a" @@ -2968,6 +4377,17 @@ pluralize@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" +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" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + postcss-less@^0.14.0: version "0.14.0" resolved "https://registry.yarnpkg.com/postcss-less/-/postcss-less-0.14.0.tgz#c631b089c6cce422b9a10f3a958d2bedd3819324" @@ -3039,6 +4459,10 @@ 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@^2.0.0, process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + 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" @@ -3065,10 +4489,22 @@ punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" +qs@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.1.tgz#ce03c5ff0935bc1d9d69a9f14cbd18e568d67625" + qs@6.5.1, qs@~6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" +qs@~6.3.0: + version "6.3.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c" + +qs@~6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" + randomatic@^1.1.3: version "1.1.7" resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" @@ -3076,6 +4512,10 @@ randomatic@^1.1.3: 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" + raw-body@2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89" @@ -3133,6 +4573,18 @@ readable-stream@^1.0.33, readable-stream@~1.1.9: isarray "0.0.1" string_decoder "~0.10.x" +readable-stream@^2.0.0, readable-stream@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + readable-stream@^2.0.1, readable-stream@^2.0.2, 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" @@ -3181,6 +4633,13 @@ regex-cache@^0.4.2: dependencies: is-equal-shallow "^0.1.3" +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + 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" @@ -3193,7 +4652,7 @@ repeat-string@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae" -repeat-string@^1.5.2: +repeat-string@^1.5.2, repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" @@ -3207,7 +4666,11 @@ replace-ext@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" -request@2, request@^2.61.0, request@^2.81.0: +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, request@^2.81.0: version "2.82.0" resolved "https://registry.yarnpkg.com/request/-/request-2.82.0.tgz#2ba8a92cd7ac45660ea2b10a53ae67cd247516ea" dependencies: @@ -3234,6 +4697,58 @@ request@2, request@^2.61.0, request@^2.81.0: tunnel-agent "^0.6.0" uuid "^3.1.0" +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" + +request@~2.79.0: + version "2.79.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.11.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~2.0.6" + 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" + qs "~6.3.0" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "~0.4.1" + 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" @@ -3272,6 +4787,10 @@ resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" +resolve-url@^0.2.1, resolve-url@~0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + resolve@1.1.x: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" @@ -3282,6 +4801,19 @@ resolve@^1.1.6, resolve@^1.1.7, resolve@~1.4.0: dependencies: path-parse "^1.0.5" +resolve@^1.5.0: + version "1.7.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3" + 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" + restore-cursor@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" @@ -3295,6 +4827,10 @@ resumer@~0.0.0: dependencies: through "~2.3.4" +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + right-align@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" @@ -3317,10 +4853,32 @@ rx-lite@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" +rx@2.3.24: + version "2.3.24" + resolved "https://registry.yarnpkg.com/rx/-/rx-2.3.24.tgz#14f950a4217d7e35daa71bbcbe58eff68ea4b2b7" + +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.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" +safe-buffer@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + dependencies: + ret "~0.1.10" + +safer-buffer@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + samsam@1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.1.2.tgz#bec11fdc83a9fda063401210e40176c3024d1567" @@ -3329,7 +4887,7 @@ samsam@~1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.1.3.tgz#9f5087419b4d091f232571e7fa52e90b0f552621" -sass-graph@^2.1.1: +sass-graph@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" dependencies: @@ -3338,6 +4896,10 @@ sass-graph@^2.1.1: scss-tokenizer "^0.2.3" yargs "^7.0.0" +sax@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + scss-tokenizer@^0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" @@ -3357,10 +4919,53 @@ semver@~5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" +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" @@ -3369,10 +4974,46 @@ 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" +set-value@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.1" + to-object-path "^0.3.0" + +set-value@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +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" +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + +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" + shelljs@^0.7.5: version "0.7.8" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3" @@ -3406,6 +5047,39 @@ slice-ansi@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +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" + sntp@2.x.x: version "2.0.2" resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.0.2.tgz#5064110f0af85f7cfdb7d6b67a40028ce52b4b2b" @@ -3419,6 +5093,10 @@ socket.io-adapter@0.5.0: debug "2.3.3" socket.io-parser "2.3.1" +socket.io-adapter@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" + socket.io-client@1.7.4: version "1.7.4" resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.7.4.tgz#ec9f820356ed99ef6d357f0756d648717bdd4281" @@ -3435,6 +5113,24 @@ socket.io-client@1.7.4: socket.io-parser "2.3.1" to-array "0.1.4" +socket.io-client@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.0.4.tgz#0918a552406dc5e540b380dcd97afc4a64332f8e" + dependencies: + backo2 "1.0.2" + base64-arraybuffer "0.1.5" + component-bind "1.0.0" + component-emitter "1.2.1" + debug "~2.6.4" + engine.io-client "~3.1.0" + has-cors "1.1.0" + indexof "0.0.1" + object-component "0.0.3" + parseqs "0.0.5" + parseuri "0.0.5" + socket.io-parser "~3.1.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" @@ -3444,6 +5140,25 @@ socket.io-parser@2.3.1: isarray "0.0.1" json3 "3.3.2" +socket.io-parser@~3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.1.3.tgz#ed2da5ee79f10955036e3da413bfd7f1e4d86c8e" + dependencies: + component-emitter "1.2.1" + debug "~3.1.0" + has-binary2 "~1.0.2" + isarray "2.0.1" + +socket.io@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.0.4.tgz#c1a4590ceff87ecf13c72652f046f716b29e6014" + dependencies: + debug "~2.6.6" + engine.io "~3.1.0" + socket.io-adapter "~1.1.0" + socket.io-client "2.0.4" + socket.io-parser "~3.1.1" + socket.io@^1.4.5: version "1.7.4" resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.7.4.tgz#2f7ecedc3391bf2d5c73e291fe233e6e34d4dd00" @@ -3456,16 +5171,53 @@ socket.io@^1.4.5: socket.io-client "1.7.4" socket.io-parser "2.3.1" +source-map-resolve@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.3.1.tgz#610f6122a445b8dd51535a2a71b783dfc1248761" + dependencies: + atob "~1.1.0" + resolve-url "~0.2.1" + source-map-url "~0.3.0" + urix "~0.1.0" + +source-map-resolve@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.1.tgz#7ad0f593f2281598e854df80f19aae4b92d7a11a" + dependencies: + atob "^2.0.0" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + +source-map-url@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.3.0.tgz#7ecaf13b57bcd09da8a40c5d269db33799d4aaf9" + source-map@0.5.x, 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.1.38: + version "0.1.43" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" + dependencies: + amdefine ">=0.0.4" + source-map@^0.4.2, 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.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + source-map@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" @@ -3476,6 +5228,10 @@ sparkles@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3" +spawn-command@^0.0.2-1: + version "0.0.2-1" + resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" + spdx-correct@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" @@ -3494,6 +5250,12 @@ specificity@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/specificity/-/specificity-0.3.1.tgz#f1b068424ce317ae07478d95de3c21cf85e8d567" +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + dependencies: + extend-shallow "^3.0.0" + split2@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/split2/-/split2-0.2.1.tgz#02ddac9adc03ec0bb78c1282ec079ca6e85ae900" @@ -3518,10 +5280,21 @@ sshpk@^1.7.0: jsbn "~0.1.0" tweetnacl "~0.14.0" -"statuses@>= 1.3.1 < 2", statuses@~1.3.1: +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"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" +"statuses@>= 1.4.0 < 2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + stdout-stream@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b" @@ -3539,6 +5312,23 @@ 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" + +streamfilter@^1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/streamfilter/-/streamfilter-1.0.7.tgz#ae3e64522aa5a35c061fd17f67620c7653c643c9" + dependencies: + readable-stream "^2.0.2" + 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" @@ -3547,7 +5337,7 @@ 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.0.0: +string-width@^2.0.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: @@ -3572,10 +5362,22 @@ string_decoder@~1.0.3: dependencies: safe-buffer "~5.1.0" -stringstream@~0.0.5: +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + dependencies: + safe-buffer "~5.1.0" + +stringstream@~0.0.4, stringstream@~0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" +strip-ansi@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.3.0.tgz#25f48ea22ca79187f3174a4db8759347bb126220" + dependencies: + ansi-regex "^0.2.1" + 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" @@ -3595,6 +5397,10 @@ strip-bom-stream@^2.0.0: first-chunk-stream "^2.0.0" strip-bom "^2.0.0" +strip-bom-string@1.X: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" + strip-bom@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-1.0.0.tgz#85b8862f3844b5a6d5ec8467a93598173a36f794" @@ -3612,6 +5418,10 @@ strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" +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" @@ -3692,6 +5502,10 @@ sugarss@^0.2.0: dependencies: postcss "^5.2.4" +supports-color@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a" + supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -3708,6 +5522,12 @@ supports-color@^4.0.0: dependencies: has-flag "^2.0.0" +supports-color@^5.3.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" + dependencies: + has-flag "^3.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" @@ -3779,10 +5599,45 @@ tar@^2.0.0, tar@^2.2.1: fstream "^1.0.2" inherits "2" +tar@^4: + version "4.4.2" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.2.tgz#60685211ba46b38847b1ae7ee1a24d744a2cd462" + dependencies: + chownr "^1.0.1" + fs-minipass "^1.2.5" + minipass "^2.2.4" + minizlib "^1.1.0" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.2" + +ternary-stream@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ternary-stream/-/ternary-stream-2.0.1.tgz#064e489b4b5bf60ba6a6b7bc7f2f5c274ecf8269" + dependencies: + duplexify "^3.5.0" + fork-stream "^0.0.4" + merge-stream "^1.0.0" + through2 "^2.0.1" + text-table@^0.2.0, 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" + dependencies: + chalk "^1.1.1" + object-path "^0.9.0" + +through2@2.0.3, through2@2.X, through2@^2.0.0, through2@^2.0.1, through2@^2.0.3: + 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" + through2@^0.6.1, through2@^0.6.3, through2@~0.6.1: version "0.6.5" resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" @@ -3790,13 +5645,6 @@ through2@^0.6.1, through2@^0.6.3, through2@~0.6.1: 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.3: - 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.2.7 <3", through@^2.3.6, through@~2.3.4, through@~2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -3811,6 +5659,13 @@ time-stamp@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" +timers-ext@^0.1.2: + version "0.1.5" + resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.5.tgz#77147dd4e76b660c2abb8785db96574cbbd12922" + dependencies: + es5-ext "~0.10.14" + next-tick "1" + tmp@0.0.x: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -3821,16 +5676,54 @@ to-array@0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +tough-cookie@~2.3.0: + version "2.3.4" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" + dependencies: + punycode "^1.4.1" + tough-cookie@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" dependencies: punycode "^1.4.1" +tree-kill@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.0.tgz#5846786237b4239014f05db156b643212d4c6f36" + trim-newlines@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" +"true-case-path@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.2.tgz#7ec91130924766c7f573be3020c34f8fdfd00d62" + dependencies: + glob "^6.0.4" + tryit@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" @@ -3841,6 +5734,10 @@ tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" +tunnel-agent@~0.4.1: + version "0.4.3" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" + tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" @@ -3862,16 +5759,11 @@ typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" -uglify-js@2.7.5: - version "2.7.5" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.7.5.tgz#4612c0c7baaee2ba7c487de4904ae122079f2ca8" - dependencies: - async "~0.2.6" - source-map "~0.5.1" - uglify-to-browserify "~1.0.0" - yargs "~3.10.0" +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: +uglify-js@^2.6, uglify-js@^2.8.22: version "2.8.29" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" dependencies: @@ -3880,6 +5772,13 @@ uglify-js@^2.6: optionalDependencies: uglify-to-browserify "~1.0.0" +uglify-js@^3.0.5: + version "3.3.22" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.3.22.tgz#e5f0e50ddd386b7e35b728b51600bf7a7ad0b0dc" + dependencies: + commander "~2.15.0" + source-map "~0.6.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" @@ -3892,10 +5791,23 @@ ultron@1.0.x: version "1.0.2" resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" +ultron@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" + 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" +union-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^0.4.3" + uniq@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" @@ -3904,10 +5816,35 @@ unique-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-1.0.0.tgz#d59a4a75427447d9aa6c91e70263f8d26a4b104b" +universalify@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7" + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.0.5.tgz#02cab9ecebe95bbec6d5fc2566325725ab6d1a73" + +urix@^0.1.0, urix@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + +use@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.0.tgz#14716bf03fdfefd03040aef58d8b4b85f3a7c544" + dependencies: + kind-of "^6.0.2" + user-home@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" @@ -3935,14 +5872,26 @@ util-deprecate@~1.0.1: 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" + utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" +uuid@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" + uuid@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" +uws@~9.14.0: + version "9.14.0" + resolved "https://registry.yarnpkg.com/uws/-/uws-9.14.0.tgz#fac8386befc33a7a3705cbd58dc47b430ca4dd95" + v8flags@^2.0.2: version "2.1.1" resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" @@ -3988,6 +5937,12 @@ vinyl-fs@^0.3.0: through2 "^0.6.1" vinyl "^0.4.0" +vinyl-sourcemaps-apply@0.2.1, vinyl-sourcemaps-apply@^0.2.0: + 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: version "0.4.6" resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.4.6.tgz#2f356c87a550a255461f36bbeb2a5ba8bf784847" @@ -4003,7 +5958,7 @@ vinyl@^0.5.0: clone-stats "^0.0.1" replace-ext "0.0.1" -vinyl@^1.1.0, vinyl@^1.2.0: +vinyl@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-1.2.0.tgz#5c88036cf565e5df05558bfc911f8656df218884" dependencies: @@ -4011,14 +5966,33 @@ vinyl@^1.1.0, vinyl@^1.2.0: clone-stats "^0.0.1" replace-ext "0.0.1" +vinyl@^2.0.0, vinyl@^2.1.0: + 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" + void-elements@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" +when@^3.7.8: + version "3.7.8" + resolved "https://registry.yarnpkg.com/when/-/when-3.7.8.tgz#c7130b6a7ea04693e842cdc9e7a1f2aa39a39f82" + which-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + which@1, which@^1.1.1, which@^1.2.12, which@^1.2.9: version "1.3.0" resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" @@ -4035,10 +6009,14 @@ 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.4: +window-size@^0.1.2, window-size@^0.1.4: 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" @@ -4086,6 +6064,14 @@ ws@1.1.4: options ">=0.0.5" ultron "1.0.x" +ws@~3.3.1: + version "3.3.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" + dependencies: + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + ultron "~1.1.0" + wtf-8@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a" @@ -4094,6 +6080,10 @@ xmlhttprequest-ssl@1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d" +xmlhttprequest-ssl@~1.5.4: + version "1.5.5" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" + "xtend@>=4.0.0 <4.1.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" @@ -4106,16 +6096,79 @@ yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" +yallist@^3.0.0, yallist@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" + +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-parser@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" dependencies: camelcase "^3.0.0" +yargs-parser@^9.0.2: + version "9.0.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" + dependencies: + camelcase "^4.1.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@^1.2.6: version "1.3.3" resolved "https://registry.yarnpkg.com/yargs/-/yargs-1.3.3.tgz#054de8b61f22eefdb7207059eaef9d6b83fb931a" +yargs@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.0.0.tgz#c052931006c5eee74610e5fc0354bedfd08a201b" + dependencies: + cliui "^4.0.0" + decamelize "^1.1.1" + find-up "^2.1.0" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^9.0.2" + yargs@^3.5.4: version "3.32.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995"