Compare commits
No commits in common. "angular.ossez.com" and "aio" have entirely different histories.
angular.os
...
aio
@ -23,12 +23,14 @@ integration/cli-hello-world-ivy-compat/node_modules
|
|||||||
integration/cli-hello-world-ivy-i18n/node_modules
|
integration/cli-hello-world-ivy-i18n/node_modules
|
||||||
integration/cli-hello-world-ivy-minimal/node_modules
|
integration/cli-hello-world-ivy-minimal/node_modules
|
||||||
integration/cli-hello-world-lazy/node_modules
|
integration/cli-hello-world-lazy/node_modules
|
||||||
|
integration/cli-hello-world-lazy-rollup/node_modules
|
||||||
integration/dynamic-compiler/node_modules
|
integration/dynamic-compiler/node_modules
|
||||||
integration/hello_world__closure/node_modules
|
integration/hello_world__closure/node_modules
|
||||||
integration/hello_world__systemjs_umd/node_modules
|
integration/hello_world__systemjs_umd/node_modules
|
||||||
integration/i18n/node_modules
|
integration/i18n/node_modules
|
||||||
integration/injectable-def/node_modules
|
integration/injectable-def/node_modules
|
||||||
integration/ivy-i18n/node_modules
|
integration/ivy-i18n/node_modules
|
||||||
|
integration/language_service_plugin/node_modules
|
||||||
integration/ng_elements/node_modules
|
integration/ng_elements/node_modules
|
||||||
integration/ng_elements_schematics/node_modules
|
integration/ng_elements_schematics/node_modules
|
||||||
integration/ng_update/node_modules
|
integration/ng_update/node_modules
|
||||||
@ -49,12 +51,14 @@ integration/cli-hello-world-ivy-compat/.yarn_local_cache
|
|||||||
integration/cli-hello-world-ivy-i18n/.yarn_local_cache
|
integration/cli-hello-world-ivy-i18n/.yarn_local_cache
|
||||||
integration/cli-hello-world-ivy-minimal/.yarn_local_cache
|
integration/cli-hello-world-ivy-minimal/.yarn_local_cache
|
||||||
integration/cli-hello-world-lazy/.yarn_local_cache
|
integration/cli-hello-world-lazy/.yarn_local_cache
|
||||||
|
integration/cli-hello-world-lazy-rollup/.yarn_local_cache
|
||||||
integration/dynamic-compiler/.yarn_local_cache
|
integration/dynamic-compiler/.yarn_local_cache
|
||||||
integration/hello_world__closure/.yarn_local_cache
|
integration/hello_world__closure/.yarn_local_cache
|
||||||
integration/hello_world__systemjs_umd/.yarn_local_cache
|
integration/hello_world__systemjs_umd/.yarn_local_cache
|
||||||
integration/i18n/.yarn_local_cache
|
integration/i18n/.yarn_local_cache
|
||||||
integration/injectable-def/.yarn_local_cache
|
integration/injectable-def/.yarn_local_cache
|
||||||
integration/ivy-i18n/.yarn_local_cache
|
integration/ivy-i18n/.yarn_local_cache
|
||||||
|
integration/language_service_plugin/.yarn_local_cache
|
||||||
integration/ng_elements/.yarn_local_cache
|
integration/ng_elements/.yarn_local_cache
|
||||||
integration/ng_elements_schematics/.yarn_local_cache
|
integration/ng_elements_schematics/.yarn_local_cache
|
||||||
integration/ng_update/.yarn_local_cache
|
integration/ng_update/.yarn_local_cache
|
||||||
@ -75,12 +79,14 @@ integration/cli-hello-world-ivy-compat/NPM_PACKAGE_MANIFEST.json
|
|||||||
integration/cli-hello-world-ivy-i18n/NPM_PACKAGE_MANIFEST.json
|
integration/cli-hello-world-ivy-i18n/NPM_PACKAGE_MANIFEST.json
|
||||||
integration/cli-hello-world-ivy-minimal/NPM_PACKAGE_MANIFEST.json
|
integration/cli-hello-world-ivy-minimal/NPM_PACKAGE_MANIFEST.json
|
||||||
integration/cli-hello-world-lazy/NPM_PACKAGE_MANIFEST.json
|
integration/cli-hello-world-lazy/NPM_PACKAGE_MANIFEST.json
|
||||||
|
integration/cli-hello-world-lazy-rollup/NPM_PACKAGE_MANIFEST.json
|
||||||
integration/dynamic-compiler/NPM_PACKAGE_MANIFEST.json
|
integration/dynamic-compiler/NPM_PACKAGE_MANIFEST.json
|
||||||
integration/hello_world__closure/NPM_PACKAGE_MANIFEST.json
|
integration/hello_world__closure/NPM_PACKAGE_MANIFEST.json
|
||||||
integration/hello_world__systemjs_umd/NPM_PACKAGE_MANIFEST.json
|
integration/hello_world__systemjs_umd/NPM_PACKAGE_MANIFEST.json
|
||||||
integration/i18n/NPM_PACKAGE_MANIFEST.json
|
integration/i18n/NPM_PACKAGE_MANIFEST.json
|
||||||
integration/injectable-def/NPM_PACKAGE_MANIFEST.json
|
integration/injectable-def/NPM_PACKAGE_MANIFEST.json
|
||||||
integration/ivy-i18n/NPM_PACKAGE_MANIFEST.json
|
integration/ivy-i18n/NPM_PACKAGE_MANIFEST.json
|
||||||
|
integration/language_service_plugin/NPM_PACKAGE_MANIFEST.json
|
||||||
integration/ng_elements/NPM_PACKAGE_MANIFEST.json
|
integration/ng_elements/NPM_PACKAGE_MANIFEST.json
|
||||||
integration/ng_elements_schematics/NPM_PACKAGE_MANIFEST.json
|
integration/ng_elements_schematics/NPM_PACKAGE_MANIFEST.json
|
||||||
integration/ng_update/NPM_PACKAGE_MANIFEST.json
|
integration/ng_update/NPM_PACKAGE_MANIFEST.json
|
||||||
|
16
.bazelrc
16
.bazelrc
@ -114,14 +114,18 @@ build:remote --cpu=k8
|
|||||||
build:remote --host_cpu=k8
|
build:remote --host_cpu=k8
|
||||||
|
|
||||||
# Toolchain and platform related flags
|
# Toolchain and platform related flags
|
||||||
build:remote --crosstool_top=//dev-infra/bazel/remote-execution/cpp:cc_toolchain_suite
|
build:remote --host_javabase=@rbe_ubuntu1604_angular//java:jdk
|
||||||
build:remote --extra_toolchains=//dev-infra/bazel/remote-execution/cpp:cc_toolchain
|
build:remote --javabase=@rbe_ubuntu1604_angular//java:jdk
|
||||||
build:remote --extra_execution_platforms=//dev-infra/bazel/remote-execution:platform
|
build:remote --host_java_toolchain=@bazel_tools//tools/jdk:toolchain_hostjdk8
|
||||||
build:remote --host_platform=//dev-infra/bazel/remote-execution:platform
|
build:remote --java_toolchain=@bazel_tools//tools/jdk:toolchain_hostjdk8
|
||||||
build:remote --platforms=//dev-infra/bazel/remote-execution:platform
|
build:remote --crosstool_top=@rbe_ubuntu1604_angular//cc:toolchain
|
||||||
|
build:remote --extra_toolchains=@rbe_ubuntu1604_angular//config:cc-toolchain
|
||||||
|
build:remote --extra_execution_platforms=//tools:rbe_ubuntu1604-angular
|
||||||
|
build:remote --host_platform=//tools:rbe_ubuntu1604-angular
|
||||||
|
build:remote --platforms=//tools:rbe_ubuntu1604-angular
|
||||||
|
|
||||||
# Remote instance and caching
|
# Remote instance and caching
|
||||||
build:remote --remote_instance_name=projects/internal-200822/instances/primary_instance
|
build:remote --remote_instance_name=projects/internal-200822/instances/default_instance
|
||||||
build:remote --project_id=internal-200822
|
build:remote --project_id=internal-200822
|
||||||
build:remote --remote_cache=remotebuildexecution.googleapis.com
|
build:remote --remote_cache=remotebuildexecution.googleapis.com
|
||||||
build:remote --remote_executor=remotebuildexecution.googleapis.com
|
build:remote --remote_executor=remotebuildexecution.googleapis.com
|
||||||
|
@ -1 +1,3 @@
|
|||||||
4.0.0
|
4.0.0
|
||||||
|
# [NB: this comment has to be after the first line, see https://github.com/bazelbuild/bazelisk/issues/117]
|
||||||
|
# When updating the Bazel version you also need to update the RBE toolchains version in package.bzl
|
||||||
|
@ -19,25 +19,19 @@ version: 2.1
|
|||||||
# 1) yarn lock file changes --> cached "node_modules" are different.
|
# 1) yarn lock file changes --> cached "node_modules" are different.
|
||||||
# 2) bazel repository definitions change --> cached bazel repositories are different.
|
# 2) bazel repository definitions change --> cached bazel repositories are different.
|
||||||
# Windows needs its own cache key because binaries in node_modules are different.
|
# Windows needs its own cache key because binaries in node_modules are different.
|
||||||
# **NOTE 1 **: In order to avoid the cache from growing indefinitely and causing slow-downs, we invalidate the cache monthly.
|
# **NOTE 1 **: If you change the cache key prefix, also sync the cache_key_fallback to match.
|
||||||
# (See https://support.circleci.com/hc/en-us/articles/360012618473-Creating-a-daily-cache.)
|
# **NOTE 2 **: Keep the static part of the cache key as prefix to enable correct fallbacks.
|
||||||
# **NOTE 2 **: If you change the cache key prefix, also sync the cache_key_fallback to match.
|
|
||||||
# **NOTE 3 **: Keep the static part of the cache key as prefix to enable correct fallbacks.
|
|
||||||
# See https://circleci.com/docs/2.0/caching/#restoring-cache for how prefixes work in CircleCI.
|
# See https://circleci.com/docs/2.0/caching/#restoring-cache for how prefixes work in CircleCI.
|
||||||
var_3: &cache_key v4-angular-node-14-{{ checksum "month.txt" }}-{{ checksum ".bazelversion" }}-{{ checksum "yarn.lock" }}-{{ checksum "WORKSPACE" }}-{{ checksum "aio/yarn.lock" }}
|
var_3: &cache_key v1-angular-node-12-{{ checksum ".bazelversion" }}-{{ checksum "yarn.lock" }}-{{ checksum "WORKSPACE" }}-{{ checksum "packages/bazel/package.bzl" }}-{{ checksum "aio/yarn.lock" }}
|
||||||
# We invalidate the cache if the Bazel version changes because otherwise the `bazelisk` cache
|
# We invalidate the cache if the Bazel version changes because otherwise the `bazelisk` cache
|
||||||
# folder will contain all previously used versions and ultimately cause the cache restoring to
|
# folder will contain all previously used versions and ultimately cause the cache restoring to
|
||||||
# be slower due to its growing size.
|
# be slower due to its growing size.
|
||||||
var_4: &cache_key_fallback v4-angular-node-14-{{ checksum "month.txt" }}-{{ checksum ".bazelversion" }}
|
var_4: &cache_key_fallback v1-angular-node-12-{{ checksum ".bazelversion" }}
|
||||||
|
|
||||||
# Windows needs its own cache key because binaries in node_modules are different.
|
|
||||||
var_3_win: &cache_key_win v4-angular-win-node-14-{{ checksum "month.txt" }}-{{ checksum ".bazelversion" }}-{{ checksum "yarn.lock" }}-{{ checksum "WORKSPACE" }}-{{ checksum "aio/yarn.lock" }}
|
|
||||||
var_4_win: &cache_key_win_fallback v4-angular-win-node-14-{{ checksum "month.txt" }}-{{ checksum ".bazelversion" }}
|
|
||||||
|
|
||||||
# Cache key for the `components-repo-unit-tests` job. **Note** when updating the SHA in the
|
# Cache key for the `components-repo-unit-tests` job. **Note** when updating the SHA in the
|
||||||
# cache keys also update the SHA for the "COMPONENTS_REPO_COMMIT" environment variable.
|
# cache keys also update the SHA for the "COMPONENTS_REPO_COMMIT" environment variable.
|
||||||
var_5: &components_repo_unit_tests_cache_key v1-angular-components-{{ checksum "month.txt" }}-d090617912da8e70aa336aa5b4d804b1b535402e
|
var_5: &components_repo_unit_tests_cache_key v1-angular-components-09e68db8ed5b1253f2fe38ff954ef0df019fc25a
|
||||||
var_6: &components_repo_unit_tests_cache_key_fallback v1-angular-components-{{ checksum "month.txt" }}
|
var_6: &components_repo_unit_tests_cache_key_fallback v1-angular-components-
|
||||||
|
|
||||||
# Workspace initially persisted by the `setup` job, and then enhanced by `build-npm-packages` and
|
# Workspace initially persisted by the `setup` job, and then enhanced by `build-npm-packages` and
|
||||||
# `build-ivy-npm-packages`.
|
# `build-ivy-npm-packages`.
|
||||||
@ -66,20 +60,11 @@ var_10: &only_on_master
|
|||||||
only:
|
only:
|
||||||
- master
|
- master
|
||||||
|
|
||||||
# Filter to run a job on all releasable branches.
|
|
||||||
var_11: &only_release_branches
|
|
||||||
filters:
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- master
|
|
||||||
- /\d+\.\d+\.x/
|
|
||||||
|
|
||||||
# Executor Definitions
|
# Executor Definitions
|
||||||
# https://circleci.com/docs/2.0/reusing-config/#authoring-reusable-executors
|
# https://circleci.com/docs/2.0/reusing-config/#authoring-reusable-executors
|
||||||
# **NOTE 1**: Pin to exact images using an ID (SHA). See https://circleci.com/docs/2.0/circleci-images/#using-a-docker-image-id-to-pin-an-image-to-a-fixed-version.
|
# **NOTE 1**: Pin to exact images using an ID (SHA). See https://circleci.com/docs/2.0/circleci-images/#using-a-docker-image-id-to-pin-an-image-to-a-fixed-version.
|
||||||
# (Using the tag in not necessary when pinning by ID, but include it anyway for documentation purposes.)
|
# (Using the tag in not necessary when pinning by ID, but include it anyway for documentation purposes.)
|
||||||
# **NOTE 2**: If you change the version of the docker images, also change the `cache_key` suffix.
|
# **NOTE 2**: If you change the version of the docker images, also change the `cache_key` suffix.
|
||||||
# **NOTE 3**: If you change the version of Node.js provided by the docker images, also update `.devcontainer/recommended-Dockerfile` to match the new version.
|
|
||||||
executors:
|
executors:
|
||||||
default-executor:
|
default-executor:
|
||||||
parameters:
|
parameters:
|
||||||
@ -87,7 +72,7 @@ executors:
|
|||||||
type: string
|
type: string
|
||||||
default: medium
|
default: medium
|
||||||
docker:
|
docker:
|
||||||
- image: circleci/node:14.16.1@sha256:951e12268fe692615bfd155c327bd910e10c99db98404badd03879f984c32b31
|
- image: circleci/node:12.14.1@sha256:f9de24fc0017059cc42ef7d07db060008af65a98b1f0cdd1ef3339213226bf6d
|
||||||
resource_class: << parameters.resource_class >>
|
resource_class: << parameters.resource_class >>
|
||||||
working_directory: ~/ng
|
working_directory: ~/ng
|
||||||
|
|
||||||
@ -105,7 +90,7 @@ executors:
|
|||||||
machine:
|
machine:
|
||||||
# Windows preview image that includes the following:
|
# Windows preview image that includes the following:
|
||||||
# - Visual Studio 2019 build tools
|
# - Visual Studio 2019 build tools
|
||||||
# - Node 14
|
# - Node 12
|
||||||
# - yarn 1.17
|
# - yarn 1.17
|
||||||
# - Python 3 3.7.4
|
# - Python 3 3.7.4
|
||||||
image: windows-server-2019-vs2019:201908-02
|
image: windows-server-2019-vs2019:201908-02
|
||||||
@ -155,8 +140,8 @@ commands:
|
|||||||
- run:
|
- run:
|
||||||
name: Set up environment
|
name: Set up environment
|
||||||
environment:
|
environment:
|
||||||
CIRCLE_GIT_BASE_REVISION: << pipeline.git.base_revision >>
|
CIRCLE_GIT_BASE_REVISION: << pipeline.git.base_revision >>
|
||||||
CIRCLE_GIT_REVISION: << pipeline.git.revision >>
|
CIRCLE_GIT_REVISION: << pipeline.git.revision >>
|
||||||
command: ./.circleci/env.sh
|
command: ./.circleci/env.sh
|
||||||
- run:
|
- run:
|
||||||
# Configure git as the CircleCI `checkout` command does.
|
# Configure git as the CircleCI `checkout` command does.
|
||||||
@ -190,13 +175,6 @@ commands:
|
|||||||
name: Setting up alias domain for local host.
|
name: Setting up alias domain for local host.
|
||||||
command: echo "127.0.0.1 $SAUCE_LOCALHOST_ALIAS_DOMAIN" | sudo tee -a /etc/hosts
|
command: echo "127.0.0.1 $SAUCE_LOCALHOST_ALIAS_DOMAIN" | sudo tee -a /etc/hosts
|
||||||
|
|
||||||
save_month_to_file:
|
|
||||||
description: Store the current year and month in a file, so that it can be used for computing the cache key.
|
|
||||||
steps:
|
|
||||||
- run:
|
|
||||||
name: Save month to file
|
|
||||||
command: date +%Y-%m > month.txt
|
|
||||||
|
|
||||||
# Normally this would be an individual job instead of a command.
|
# Normally this would be an individual job instead of a command.
|
||||||
# But startup and setup time for each individual windows job are high enough to discourage
|
# But startup and setup time for each individual windows job are high enough to discourage
|
||||||
# many small jobs, so instead we use a command for setup unless the gain becomes significant.
|
# many small jobs, so instead we use a command for setup unless the gain becomes significant.
|
||||||
@ -204,17 +182,11 @@ commands:
|
|||||||
description: Setup windows node environment
|
description: Setup windows node environment
|
||||||
steps:
|
steps:
|
||||||
- checkout
|
- checkout
|
||||||
- save_month_to_file
|
|
||||||
# Install Bazel pre-requisites that aren't in the preconfigured CircleCI Windows VM.
|
# Install Bazel pre-requisites that aren't in the preconfigured CircleCI Windows VM.
|
||||||
- run: ./.circleci/windows-env.ps1
|
- run: ./.circleci/windows-env.ps1
|
||||||
- run: node --version
|
- run: node --version
|
||||||
- run: yarn --version
|
- run: yarn --version
|
||||||
- restore_cache:
|
- run: yarn install --frozen-lockfile --non-interactive
|
||||||
keys:
|
|
||||||
- *cache_key_win
|
|
||||||
- *cache_key_win_fallback
|
|
||||||
# On Windows `~/` is not resolved when using as a CLI value. `../` results in the same path.
|
|
||||||
- run: yarn install --frozen-lockfile --non-interactive --cache-folder ../.cache/yarn
|
|
||||||
|
|
||||||
notify_webhook_on_fail:
|
notify_webhook_on_fail:
|
||||||
description: Notify a webhook about failure
|
description: Notify a webhook about failure
|
||||||
@ -238,7 +210,6 @@ jobs:
|
|||||||
executor: default-executor
|
executor: default-executor
|
||||||
steps:
|
steps:
|
||||||
- checkout
|
- checkout
|
||||||
- save_month_to_file
|
|
||||||
- init_environment
|
- init_environment
|
||||||
- run:
|
- run:
|
||||||
name: Rebase PR on target branch
|
name: Rebase PR on target branch
|
||||||
@ -260,10 +231,10 @@ jobs:
|
|||||||
- *cache_key_fallback
|
- *cache_key_fallback
|
||||||
- run:
|
- run:
|
||||||
name: Running Yarn install
|
name: Running Yarn install
|
||||||
command: yarn install --frozen-lockfile --non-interactive --cache-folder ~/.cache/yarn
|
command: yarn install --frozen-lockfile --non-interactive
|
||||||
# Yarn's requests sometimes take more than 10mins to complete.
|
# Yarn's requests sometimes take more than 10mins to complete.
|
||||||
no_output_timeout: 45m
|
no_output_timeout: 45m
|
||||||
- run: yarn --cwd aio install --frozen-lockfile --non-interactive --cache-folder ~/.cache/yarn
|
- run: yarn --cwd aio install --frozen-lockfile --non-interactive
|
||||||
# Make the bazel directories and add a file to them if they don't exist already so that
|
# Make the bazel directories and add a file to them if they don't exist already so that
|
||||||
# persist_to_workspace does not fail.
|
# persist_to_workspace does not fail.
|
||||||
- run: |
|
- run: |
|
||||||
@ -426,13 +397,17 @@ jobs:
|
|||||||
- run: yarn --cwd aio deploy-production
|
- run: yarn --cwd aio deploy-production
|
||||||
|
|
||||||
test_aio_local:
|
test_aio_local:
|
||||||
|
parameters:
|
||||||
|
viewengine:
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
executor: default-executor
|
executor: default-executor
|
||||||
steps:
|
steps:
|
||||||
- custom_attach_workspace
|
- custom_attach_workspace
|
||||||
- init_environment
|
- init_environment
|
||||||
- install_chrome_libs
|
- install_chrome_libs
|
||||||
# Build aio (with local Angular packages)
|
# Build aio (with local Angular packages)
|
||||||
- run: yarn --cwd aio build-local-ci
|
- run: yarn --cwd aio build-local<<# parameters.viewengine >>-with-viewengine<</ parameters.viewengine >>-ci
|
||||||
# Run unit tests
|
# Run unit tests
|
||||||
- run: yarn --cwd aio test --progress=false --watch=false
|
- run: yarn --cwd aio test --progress=false --watch=false
|
||||||
# Run e2e tests
|
# Run e2e tests
|
||||||
@ -440,10 +415,7 @@ jobs:
|
|||||||
# Run PWA-score tests
|
# Run PWA-score tests
|
||||||
- run: yarn --cwd aio test-pwa-score-localhost $CI_AIO_MIN_PWA_SCORE
|
- run: yarn --cwd aio test-pwa-score-localhost $CI_AIO_MIN_PWA_SCORE
|
||||||
# Check the bundle sizes.
|
# Check the bundle sizes.
|
||||||
- run: yarn --cwd aio payload-size aio-local
|
- run: yarn --cwd aio payload-size aio-local<<# parameters.viewengine >>-viewengine<</ parameters.viewengine >>
|
||||||
# Run tests with RxJS v7.
|
|
||||||
- run: yarn --cwd aio add rxjs@7.1.0
|
|
||||||
- run: yarn --cwd aio test --progress=false --watch=false
|
|
||||||
|
|
||||||
test_aio_tools:
|
test_aio_tools:
|
||||||
executor: default-executor
|
executor: default-executor
|
||||||
@ -451,13 +423,17 @@ jobs:
|
|||||||
- custom_attach_workspace
|
- custom_attach_workspace
|
||||||
- init_environment
|
- init_environment
|
||||||
# Install
|
# Install
|
||||||
- run: yarn --cwd aio install --frozen-lockfile --non-interactive --cache-folder ~/.cache/yarn
|
- run: yarn --cwd aio install --frozen-lockfile --non-interactive
|
||||||
- run: yarn --cwd aio extract-cli-command-docs
|
- run: yarn --cwd aio extract-cli-command-docs
|
||||||
# Run tools tests
|
# Run tools tests
|
||||||
- run: yarn --cwd aio tools-test
|
- run: yarn --cwd aio tools-test
|
||||||
- run: ./aio/aio-builds-setup/scripts/test.sh
|
- run: ./aio/aio-builds-setup/scripts/test.sh
|
||||||
|
|
||||||
test_docs_examples:
|
test_docs_examples:
|
||||||
|
parameters:
|
||||||
|
viewengine:
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
executor:
|
executor:
|
||||||
name: default-executor
|
name: default-executor
|
||||||
resource_class: xlarge
|
resource_class: xlarge
|
||||||
@ -467,21 +443,17 @@ jobs:
|
|||||||
- init_environment
|
- init_environment
|
||||||
- install_chrome_libs
|
- install_chrome_libs
|
||||||
# Install aio
|
# Install aio
|
||||||
- run: yarn --cwd aio install --frozen-lockfile --non-interactive --cache-folder ~/.cache/yarn
|
- run: yarn --cwd aio install --frozen-lockfile --non-interactive
|
||||||
# Run examples tests. The "CIRCLE_NODE_INDEX" will be set if "parallelism" is enabled.
|
# Run examples tests. The "CIRCLE_NODE_INDEX" will be set if "parallelism" is enabled.
|
||||||
# Since the parallelism is set to "5", there will be five parallel CircleCI containers.
|
# Since the parallelism is set to "5", there will be five parallel CircleCI containers.
|
||||||
# with either "0", "1", etc as node index. This can be passed to the "--shard" argument.
|
# with either "0", "1", etc as node index. This can be passed to the "--shard" argument.
|
||||||
- run: yarn --cwd aio example-e2e --setup --local --cliSpecsConcurrency=5 --shard=${CIRCLE_NODE_INDEX}/${CIRCLE_NODE_TOTAL}
|
- run: yarn --cwd aio example-e2e --setup --local <<# parameters.viewengine >>--viewengine<</ parameters.viewengine >> --cliSpecsConcurrency=5 --shard=${CIRCLE_NODE_INDEX}/${CIRCLE_NODE_TOTAL}
|
||||||
# Run tests with RxJS v7.
|
|
||||||
# (Exclude some examples that are not yet compatible with v7.)
|
|
||||||
- run: yarn --cwd aio/tools/examples/shared add rxjs@7.1.0 && yarn --cwd aio boilerplate:add
|
|
||||||
- run: yarn --cwd aio example-e2e --cliSpecsConcurrency=5 --shard=${CIRCLE_NODE_INDEX}/${CIRCLE_NODE_TOTAL} --exclude=practical-observable-usage --exclude=upgrade-module --exclude=upgrade-phonecat
|
|
||||||
|
|
||||||
# This job should only be run on PR builds, where `CI_PULL_REQUEST` is not `false`.
|
# This job should only be run on PR builds, where `CI_PULL_REQUEST` is not `false`.
|
||||||
aio_preview:
|
aio_preview:
|
||||||
executor: default-executor
|
executor: default-executor
|
||||||
environment:
|
environment:
|
||||||
AIO_SNAPSHOT_ARTIFACT_PATH: &aio_preview_artifact_path 'aio/tmp/snapshot.tgz'
|
AIO_SNAPSHOT_ARTIFACT_PATH: &aio_preview_artifact_path 'aio/tmp/snapshot.tgz'
|
||||||
steps:
|
steps:
|
||||||
- custom_attach_workspace
|
- custom_attach_workspace
|
||||||
- init_environment
|
- init_environment
|
||||||
@ -500,11 +472,12 @@ jobs:
|
|||||||
- custom_attach_workspace
|
- custom_attach_workspace
|
||||||
- init_environment
|
- init_environment
|
||||||
- install_chrome_libs
|
- install_chrome_libs
|
||||||
- run: yarn --cwd aio install --frozen-lockfile --non-interactive --cache-folder ~/.cache/yarn
|
- run: yarn --cwd aio install --frozen-lockfile --non-interactive
|
||||||
- run:
|
- run:
|
||||||
name: Wait for preview and run tests
|
name: Wait for preview and run tests
|
||||||
command: node aio/scripts/test-preview.js $CI_PULL_REQUEST $CI_COMMIT $CI_AIO_MIN_PWA_SCORE
|
command: node aio/scripts/test-preview.js $CI_PULL_REQUEST $CI_COMMIT $CI_AIO_MIN_PWA_SCORE
|
||||||
|
|
||||||
|
|
||||||
# The `build-npm-packages` tasks exist for backwards-compatibility with old scripts and
|
# The `build-npm-packages` tasks exist for backwards-compatibility with old scripts and
|
||||||
# tests that rely on the pre-Bazel `dist/packages-dist` output structure (build.sh).
|
# tests that rely on the pre-Bazel `dist/packages-dist` output structure (build.sh).
|
||||||
# Having multiple jobs that independently build in this manner duplicates some work; we build
|
# Having multiple jobs that independently build in this manner duplicates some work; we build
|
||||||
@ -527,16 +500,16 @@ jobs:
|
|||||||
root: *workspace_location
|
root: *workspace_location
|
||||||
paths:
|
paths:
|
||||||
- ng/dist/packages-dist
|
- ng/dist/packages-dist
|
||||||
- ng/dist/angular-in-memory-web-api-dist
|
|
||||||
- ng/dist/zone.js-dist
|
- ng/dist/zone.js-dist
|
||||||
|
|
||||||
# Save dependencies and bazel repository cache to use on subsequent runs.
|
# Save dependencies and bazel repository cache to use on subsequent runs.
|
||||||
- save_cache:
|
- save_cache:
|
||||||
key: *cache_key
|
key: *cache_key
|
||||||
paths:
|
paths:
|
||||||
- ~/.cache/yarn
|
- "node_modules"
|
||||||
- ~/bazel_repository_cache
|
- "aio/node_modules"
|
||||||
- ~/.cache/bazelisk
|
- "~/bazel_repository_cache"
|
||||||
|
- "~/.cache/bazelisk"
|
||||||
|
|
||||||
# Build the ivy npm packages.
|
# Build the ivy npm packages.
|
||||||
build-ivy-npm-packages:
|
build-ivy-npm-packages:
|
||||||
@ -553,7 +526,6 @@ jobs:
|
|||||||
root: *workspace_location
|
root: *workspace_location
|
||||||
paths:
|
paths:
|
||||||
- ng/dist/packages-dist-ivy-aot
|
- ng/dist/packages-dist-ivy-aot
|
||||||
- ng/dist/angular-in-memory-web-api-dist-ivy-aot
|
|
||||||
- ng/dist/zone.js-dist-ivy-aot
|
- ng/dist/zone.js-dist-ivy-aot
|
||||||
|
|
||||||
# This job creates compressed tarballs (`.tgz` files) for all Angular packages and stores them as
|
# This job creates compressed tarballs (`.tgz` files) for all Angular packages and stores them as
|
||||||
@ -564,8 +536,6 @@ jobs:
|
|||||||
publish_packages_as_artifacts:
|
publish_packages_as_artifacts:
|
||||||
executor: default-executor
|
executor: default-executor
|
||||||
environment:
|
environment:
|
||||||
AIMWA_PACKAGES_DIR: &aimwa_packages_dir 'dist/angular-in-memory-web-api-dist'
|
|
||||||
AIMWA_PACKAGES_ARCHIVES_DIR: &aimwa_packages_archives_dir 'dist/angular-in-memory-web-api-dist-archives'
|
|
||||||
NG_PACKAGES_DIR: &ng_packages_dir 'dist/packages-dist'
|
NG_PACKAGES_DIR: &ng_packages_dir 'dist/packages-dist'
|
||||||
NG_PACKAGES_ARCHIVES_DIR: &ng_packages_archives_dir 'dist/packages-dist-archives'
|
NG_PACKAGES_ARCHIVES_DIR: &ng_packages_archives_dir 'dist/packages-dist-archives'
|
||||||
ZONEJS_PACKAGES_DIR: &zonejs_packages_dir 'dist/zone.js-dist'
|
ZONEJS_PACKAGES_DIR: &zonejs_packages_dir 'dist/zone.js-dist'
|
||||||
@ -580,17 +550,9 @@ jobs:
|
|||||||
- store_artifacts:
|
- store_artifacts:
|
||||||
path: *ng_packages_archives_dir
|
path: *ng_packages_archives_dir
|
||||||
destination: angular
|
destination: angular
|
||||||
# Publish the `angular-in-memory-web-api` package.
|
# Publish `zone.js` package.
|
||||||
- run:
|
- run:
|
||||||
name: Create artifacts for the `angular-in-memory-web-api` package
|
name: Create artifacts for zone.js package
|
||||||
# Need to remove the zone.js.tgz before archive
|
|
||||||
command: ./scripts/ci/create-package-archives.sh $CI_BRANCH $CI_COMMIT $AIMWA_PACKAGES_DIR $AIMWA_PACKAGES_ARCHIVES_DIR
|
|
||||||
- store_artifacts:
|
|
||||||
path: *aimwa_packages_archives_dir
|
|
||||||
destination: angular-in-memory-web-api
|
|
||||||
# Publish the `zone.js` package.
|
|
||||||
- run:
|
|
||||||
name: Create artifacts for the `zone.js` package
|
|
||||||
# Need to remove the zone.js.tgz before archive
|
# Need to remove the zone.js.tgz before archive
|
||||||
command: rm -rf $ZONEJS_PACKAGES_DIR/archive && ./scripts/ci/create-package-archives.sh $CI_BRANCH $CI_COMMIT $ZONEJS_PACKAGES_DIR $ZONEJS_PACKAGES_ARCHIVES_DIR
|
command: rm -rf $ZONEJS_PACKAGES_DIR/archive && ./scripts/ci/create-package-archives.sh $CI_BRANCH $CI_COMMIT $ZONEJS_PACKAGES_DIR $ZONEJS_PACKAGES_ARCHIVES_DIR
|
||||||
- store_artifacts:
|
- store_artifacts:
|
||||||
@ -602,6 +564,18 @@ jobs:
|
|||||||
publish_snapshot:
|
publish_snapshot:
|
||||||
executor: default-executor
|
executor: default-executor
|
||||||
steps:
|
steps:
|
||||||
|
# See below - ideally this job should not trigger for non-upstream builds.
|
||||||
|
# But since it does, we have to check this condition.
|
||||||
|
- run:
|
||||||
|
name: Skip this job for Pull Requests and Fork builds
|
||||||
|
# Note: Using `CIRCLE_*` env variables (instead of those defined in `env.sh` so that this
|
||||||
|
# step can be run before `init_environment`.
|
||||||
|
command: >
|
||||||
|
if [[ -n "${CIRCLE_PR_NUMBER}" ]] ||
|
||||||
|
[[ "$CIRCLE_PROJECT_USERNAME" != "angular" ]] ||
|
||||||
|
[[ "$CIRCLE_PROJECT_REPONAME" != "angular" ]]; then
|
||||||
|
circleci step halt
|
||||||
|
fi
|
||||||
- custom_attach_workspace
|
- custom_attach_workspace
|
||||||
- init_environment
|
- init_environment
|
||||||
# CircleCI has a config setting to force SSH for all github connections
|
# CircleCI has a config setting to force SSH for all github connections
|
||||||
@ -616,14 +590,6 @@ jobs:
|
|||||||
command: 'openssl aes-256-cbc -d -in .circleci/github_token -md md5 -k "${KEY}" -out ~/.git_credentials'
|
command: 'openssl aes-256-cbc -d -in .circleci/github_token -md md5 -k "${KEY}" -out ~/.git_credentials'
|
||||||
- run: ./scripts/ci/publish-build-artifacts.sh
|
- run: ./scripts/ci/publish-build-artifacts.sh
|
||||||
|
|
||||||
aio_misc:
|
|
||||||
executor: default-executor
|
|
||||||
steps:
|
|
||||||
- custom_attach_workspace
|
|
||||||
- run:
|
|
||||||
name: Check website provided in contributors.json file
|
|
||||||
command: yarn node aio/scripts/test-external-urls.js
|
|
||||||
|
|
||||||
aio_monitoring_stable:
|
aio_monitoring_stable:
|
||||||
executor: default-executor
|
executor: default-executor
|
||||||
steps:
|
steps:
|
||||||
@ -676,6 +642,11 @@ jobs:
|
|||||||
name: Starting Saucelabs tunnel service
|
name: Starting Saucelabs tunnel service
|
||||||
command: ./tools/saucelabs/sauce-service.sh run
|
command: ./tools/saucelabs/sauce-service.sh run
|
||||||
background: true
|
background: true
|
||||||
|
# add module umd tsc compile option so the test can work
|
||||||
|
# properly in the legacy browsers
|
||||||
|
- run: yarn tsc -p packages --module UMD
|
||||||
|
- run: yarn tsc -p modules --module UMD
|
||||||
|
- run: yarn bazel build //packages/zone.js:npm_package
|
||||||
# Build test fixtures for a test that rely on Bazel-generated fixtures. Note that disabling
|
# Build test fixtures for a test that rely on Bazel-generated fixtures. Note that disabling
|
||||||
# specific tests which are reliant on such generated fixtures is not an option as SystemJS
|
# specific tests which are reliant on such generated fixtures is not an option as SystemJS
|
||||||
# in the Saucelabs legacy job always fetches referenced files, even if the imports would be
|
# in the Saucelabs legacy job always fetches referenced files, even if the imports would be
|
||||||
@ -684,26 +655,10 @@ jobs:
|
|||||||
- run:
|
- run:
|
||||||
name: Preparing Bazel-generated fixtures required in legacy tests
|
name: Preparing Bazel-generated fixtures required in legacy tests
|
||||||
command: |
|
command: |
|
||||||
yarn bazel build \
|
yarn bazel build //packages/core/test:downleveled_es5_fixture
|
||||||
//packages/core/test:downleveled_es5_fixture \
|
|
||||||
//packages/common/locales
|
|
||||||
|
|
||||||
# Needed for the ES5 downlevel reflector test in `packages/core/test/reflection`.
|
# Needed for the ES5 downlevel reflector test in `packages/core/test/reflection`.
|
||||||
mkdir -p dist/all/@angular/core/test/reflection/
|
|
||||||
cp dist/bin/packages/core/test/reflection/es5_downleveled_inheritance_fixture.js \
|
cp dist/bin/packages/core/test/reflection/es5_downleveled_inheritance_fixture.js \
|
||||||
dist/all/@angular/core/test/reflection/es5_downleveled_inheritance_fixture.js
|
dist/all/@angular/core/test/reflection/es5_downleveled_inheritance_fixture.js
|
||||||
# Locale files are needed for i18n tests running within Saucelabs. These are added
|
|
||||||
# directly as sources so that the TypeScript compilation of `/packages/tsconfig.json`
|
|
||||||
# can succeed. Note that the base locale and currencies files are checked-in, so
|
|
||||||
# we do not need to re-generate those through Bazel.
|
|
||||||
mkdir -p packages/common/locales/extra
|
|
||||||
cp dist/bin/packages/common/locales/*.ts packages/common/locales
|
|
||||||
cp dist/bin/packages/common/locales/extra/*.ts packages/common/locales/extra
|
|
||||||
# add module umd tsc compile option so the test can work
|
|
||||||
# properly in the legacy browsers
|
|
||||||
- run: yarn tsc -p packages/tsconfig-legacy-saucelabs.json --module UMD
|
|
||||||
- run: yarn tsc -p modules --module UMD
|
|
||||||
- run: yarn bazel build //packages/zone.js:npm_package
|
|
||||||
- run:
|
- run:
|
||||||
# Waiting on ready ensures that we don't run tests too early without Saucelabs not being ready.
|
# Waiting on ready ensures that we don't run tests too early without Saucelabs not being ready.
|
||||||
name: Waiting for Saucelabs tunnel to connect
|
name: Waiting for Saucelabs tunnel to connect
|
||||||
@ -739,31 +694,31 @@ jobs:
|
|||||||
# repository to be able to support arbitrary SHAs.
|
# repository to be able to support arbitrary SHAs.
|
||||||
- *components_repo_unit_tests_cache_key_fallback
|
- *components_repo_unit_tests_cache_key_fallback
|
||||||
- run:
|
- run:
|
||||||
name: 'Fetching angular/components repository'
|
name: "Fetching angular/components repository"
|
||||||
command: ./scripts/ci/clone_angular_components_repo.sh
|
command: ./scripts/ci/clone_angular_components_repo.sh
|
||||||
- run:
|
- run:
|
||||||
# Run yarn install to fetch the Bazel binaries as used in the components repo.
|
# Run yarn install to fetch the Bazel binaries as used in the components repo.
|
||||||
name: Installing dependencies.
|
name: Installing dependencies.
|
||||||
command: yarn --cwd ${COMPONENTS_REPO_TMP_DIR} install --frozen-lockfile --non-interactive --cache-folder ~/.cache/yarn
|
# TODO: remove this once the repo has been updated to use NodeJS v12 and Yarn 1.19.1.
|
||||||
|
# We temporarily ignore the "engines" because the Angular components repository has
|
||||||
|
# minimum dependency on NodeJS v12 and Yarn 1.19.1, but the framework repository uses
|
||||||
|
# older versions.
|
||||||
|
command: yarn --ignore-engines --cwd ${COMPONENTS_REPO_TMP_DIR} install --frozen-lockfile --non-interactive
|
||||||
- save_cache:
|
- save_cache:
|
||||||
key: *components_repo_unit_tests_cache_key
|
key: *components_repo_unit_tests_cache_key
|
||||||
paths:
|
paths:
|
||||||
# Temporary directory must be kept in sync with the `$COMPONENTS_REPO_TMP_DIR` env
|
# Temporary directory must be kept in sync with the `$COMPONENTS_REPO_TMP_DIR` env
|
||||||
# variable. It needs to be hardcoded here, because env variables interpolation is
|
# variable. It needs to be hardcoded here, because env variables interpolation is
|
||||||
# not supported.
|
# not supported.
|
||||||
- '/tmp/angular-components-repo'
|
- "/tmp/angular-components-repo"
|
||||||
- run:
|
- run:
|
||||||
# Updates the `angular/components` `package.json` file to refer to the release output
|
# Updates the `angular/components` `package.json` file to refer to the release output
|
||||||
# inside the `packages-dist` directory.
|
# inside the `packages-dist` directory. Note that it's not necessary to perform a yarn
|
||||||
name: Setting up framework release packages.
|
# install as Bazel runs Yarn automatically when needed.
|
||||||
command: node scripts/ci/update-framework-deps-to-dist-packages.js ${COMPONENTS_REPO_TMP_DIR}/package.json dist/packages-dist/
|
name: Setting up release packages.
|
||||||
|
command: node scripts/ci/update-deps-to-dist-packages.js ${COMPONENTS_REPO_TMP_DIR}/package.json dist/packages-dist/
|
||||||
- run:
|
- run:
|
||||||
# Run `yarn install` again to install the Angular packages from `packages-dist/` and update the lockfile.
|
name: "Running `angular/components` unit tests"
|
||||||
# NOTE: We cannot rely on Bazel to run `yarn install`, because it uses the `--frozen-lockfile` flag and fails.
|
|
||||||
name: Installing local Angular packages.
|
|
||||||
command: yarn --cwd ${COMPONENTS_REPO_TMP_DIR} install --non-interactive --cache-folder ~/.cache/yarn
|
|
||||||
- run:
|
|
||||||
name: 'Running `angular/components` unit tests'
|
|
||||||
command: ./scripts/ci/run_angular_components_unit_tests.sh
|
command: ./scripts/ci/run_angular_components_unit_tests.sh
|
||||||
|
|
||||||
test_zonejs:
|
test_zonejs:
|
||||||
@ -775,19 +730,19 @@ jobs:
|
|||||||
- init_environment
|
- init_environment
|
||||||
- install_java
|
- install_java
|
||||||
# Install
|
# Install
|
||||||
- run: yarn --cwd packages/zone.js install --frozen-lockfile --non-interactive --cache-folder ~/.cache/yarn
|
- run: yarn --cwd packages/zone.js install --frozen-lockfile --non-interactive
|
||||||
# Run zone.js tools tests
|
# Run zone.js tools tests
|
||||||
- run: yarn --cwd packages/zone.js promisetest
|
- run: yarn --cwd packages/zone.js promisetest
|
||||||
- run: yarn --cwd packages/zone.js promisefinallytest
|
- run: yarn --cwd packages/zone.js promisefinallytest
|
||||||
- run: yarn bazel build //packages/zone.js:npm_package &&
|
- run: yarn bazel build //packages/zone.js:npm_package &&
|
||||||
cp dist/bin/packages/zone.js/npm_package/bundles/zone-mix.umd.js ./packages/zone.js/test/extra/ &&
|
cp dist/bin/packages/zone.js/npm_package/bundles/zone-mix.umd.js ./packages/zone.js/test/extra/ &&
|
||||||
cp dist/bin/packages/zone.js/npm_package/bundles/zone-patch-electron.umd.js ./packages/zone.js/test/extra/ &&
|
cp dist/bin/packages/zone.js/npm_package/bundles/zone-patch-electron.umd.js ./packages/zone.js/test/extra/ &&
|
||||||
cp dist/bin/packages/zone.js/npm_package/bundles/zone.umd.js ./packages/zone.js/build/test/closure/zone.js
|
cp dist/bin/packages/zone.js/npm_package/bundles/zone.umd.js ./packages/zone.js/build/test/closure/zone.js
|
||||||
- run: yarn --cwd packages/zone.js jest:test
|
- run: yarn --cwd packages/zone.js jest:test
|
||||||
- run: yarn --cwd packages/zone.js jest:nodetest
|
- run: yarn --cwd packages/zone.js jest:nodetest
|
||||||
- run: yarn --cwd packages/zone.js electrontest
|
- run: yarn --cwd packages/zone.js electrontest
|
||||||
- run: yarn --cwd packages/zone.js closuretest
|
- run: yarn --cwd packages/zone.js closuretest
|
||||||
- run: yarn --cwd packages/zone.js/test/typings install --frozen-lockfile --non-interactive --cache-folder ~/.cache/yarn
|
- run: yarn --cwd packages/zone.js/test/typings install --frozen-lockfile --non-interactive
|
||||||
- run: yarn --cwd packages/zone.js/test/typings test
|
- run: yarn --cwd packages/zone.js/test/typings test
|
||||||
|
|
||||||
# Windows jobs
|
# Windows jobs
|
||||||
@ -798,11 +753,11 @@ jobs:
|
|||||||
- setup_win
|
- setup_win
|
||||||
- run:
|
- run:
|
||||||
name: Build all windows CI targets
|
name: Build all windows CI targets
|
||||||
command: yarn bazel build --build_tag_filters=-ivy-only //packages/compiler-cli/...
|
command: yarn bazel build --build_tag_filters=-ivy-only,-no-windows //packages/compiler-cli/... //tools/ts-api-guardian/...
|
||||||
no_output_timeout: 15m
|
no_output_timeout: 15m
|
||||||
- run:
|
- run:
|
||||||
name: Test all windows CI targets
|
name: Test all windows CI targets
|
||||||
command: yarn bazel test --test_tag_filters="-ivy-only,-browser:chromium-local" //packages/compiler-cli/...
|
command: yarn bazel test --build_tag_filters=-no-windows --test_tag_filters="-ivy-only,-no-windows,-browser:chromium-local" //packages/compiler-cli/... //tools/ts-api-guardian/...
|
||||||
no_output_timeout: 15m
|
no_output_timeout: 15m
|
||||||
|
|
||||||
test_ivy_aot_win:
|
test_ivy_aot_win:
|
||||||
@ -811,17 +766,13 @@ jobs:
|
|||||||
- setup_win
|
- setup_win
|
||||||
- run:
|
- run:
|
||||||
name: Build all windows CI targets
|
name: Build all windows CI targets
|
||||||
command: yarn bazel build --config=ivy --build_tag_filters=-no-ivy-aot,-fixme-ivy-aot //packages/compiler-cli/...
|
command: yarn bazel build --config=ivy --build_tag_filters=-no-ivy-aot,-no-windows,-fixme-ivy-aot //packages/compiler-cli/... //tools/ts-api-guardian/...
|
||||||
no_output_timeout: 15m
|
no_output_timeout: 15m
|
||||||
- run:
|
- run:
|
||||||
name: Test all windows CI targets
|
name: Test all windows CI targets
|
||||||
command: yarn bazel test --config=ivy --test_tag_filters="-no-ivy-aot,-fixme-ivy-aot,-browser:chromium-local" //packages/compiler-cli/... //packages/localize/...
|
command: yarn bazel test --config=ivy --build_tag_filters=-no-windows --test_tag_filters="-no-ivy-aot,-no-windows,-fixme-ivy-aot,-browser:chromium-local" //packages/compiler-cli/... //tools/ts-api-guardian/... //packages/localize/...
|
||||||
no_output_timeout: 15m
|
no_output_timeout: 15m
|
||||||
# Save dependencies to use on subsequent runs.
|
|
||||||
- save_cache:
|
|
||||||
key: *cache_key_win
|
|
||||||
paths:
|
|
||||||
- ~/.cache/yarn
|
|
||||||
|
|
||||||
workflows:
|
workflows:
|
||||||
version: 2
|
version: 2
|
||||||
@ -858,12 +809,22 @@ workflows:
|
|||||||
- test_aio_local:
|
- test_aio_local:
|
||||||
requires:
|
requires:
|
||||||
- build-npm-packages
|
- build-npm-packages
|
||||||
|
- test_aio_local:
|
||||||
|
name: test_aio_local_viewengine
|
||||||
|
viewengine: true
|
||||||
|
requires:
|
||||||
|
- build-npm-packages
|
||||||
- test_aio_tools:
|
- test_aio_tools:
|
||||||
requires:
|
requires:
|
||||||
- build-npm-packages
|
- build-npm-packages
|
||||||
- test_docs_examples:
|
- test_docs_examples:
|
||||||
requires:
|
requires:
|
||||||
- build-npm-packages
|
- build-npm-packages
|
||||||
|
- test_docs_examples:
|
||||||
|
name: test_docs_examples_viewengine
|
||||||
|
viewengine: true
|
||||||
|
requires:
|
||||||
|
- build-npm-packages
|
||||||
- aio_preview:
|
- aio_preview:
|
||||||
# Only run on PR builds. (There can be no previews for non-PR builds.)
|
# Only run on PR builds. (There can be no previews for non-PR builds.)
|
||||||
<<: *only_on_pull_requests
|
<<: *only_on_pull_requests
|
||||||
@ -876,22 +837,34 @@ workflows:
|
|||||||
requires:
|
requires:
|
||||||
- build-npm-packages
|
- build-npm-packages
|
||||||
- publish_snapshot:
|
- publish_snapshot:
|
||||||
<<: *only_release_branches
|
# Note: no filters on this job because we want it to run for all upstream branches
|
||||||
|
# We'd really like to filter out pull requests here, but not yet available:
|
||||||
|
# https://discuss.circleci.com/t/workflows-pull-request-filter/14396/4
|
||||||
|
# Instead, the job just exits immediately at the first step.
|
||||||
requires:
|
requires:
|
||||||
# Only publish if tests and integration tests pass
|
# Only publish if tests and integration tests pass
|
||||||
- test
|
- test
|
||||||
- test_ivy_aot
|
- test_ivy_aot
|
||||||
# Only publish if `aio`/`docs` tests using the locally built Angular packages pass
|
# Only publish if `aio`/`docs` tests using the locally built Angular packages pass
|
||||||
- test_aio_local
|
- test_aio_local
|
||||||
|
- test_aio_local_viewengine
|
||||||
- test_docs_examples
|
- test_docs_examples
|
||||||
|
- test_docs_examples_viewengine
|
||||||
# Get the artifacts to publish from the build-packages-dist job
|
# Get the artifacts to publish from the build-packages-dist job
|
||||||
# since the publishing script expects the legacy outputs layout.
|
# since the publishing script expects the legacy outputs layout.
|
||||||
- build-npm-packages
|
- build-npm-packages
|
||||||
- build-ivy-npm-packages
|
- build-ivy-npm-packages
|
||||||
- legacy-unit-tests-saucelabs
|
- legacy-unit-tests-saucelabs
|
||||||
- components-repo-unit-tests:
|
# Temporarily disabled components-repo-unit-tests to update rules_nodejs to 2.0.0. Breaking changes in
|
||||||
requires:
|
# rules_nodejs create a dependency sandwich between angular/angular & angular/components that are very
|
||||||
- build-npm-packages
|
# difficult and time consuming to resolve and involve patching @angular/bazel in components repo such
|
||||||
|
# as https://github.com/angular/components/commit/9e7ba251207df77164d73d66620e619bcbc4d2ad. It is simpler to
|
||||||
|
# 1) land angular/angular upgrade to rule_nodejs 2.0.0 which has breaking changes
|
||||||
|
# 2) land angular/components upgrade to rules_nodejs 2.0.0 using the @angular/bazel builds snapshot
|
||||||
|
# 3) update angular/angular to the landed components commit and re-enable these tests
|
||||||
|
# - components-repo-unit-tests:
|
||||||
|
# requires:
|
||||||
|
# - build-npm-packages
|
||||||
- test_zonejs:
|
- test_zonejs:
|
||||||
requires:
|
requires:
|
||||||
- setup
|
- setup
|
||||||
@ -905,9 +878,6 @@ workflows:
|
|||||||
monitoring:
|
monitoring:
|
||||||
jobs:
|
jobs:
|
||||||
- setup
|
- setup
|
||||||
- aio_misc:
|
|
||||||
requires:
|
|
||||||
- setup
|
|
||||||
- aio_monitoring_stable:
|
- aio_monitoring_stable:
|
||||||
requires:
|
requires:
|
||||||
- setup
|
- setup
|
||||||
@ -936,4 +906,4 @@ workflows:
|
|||||||
- schedule:
|
- schedule:
|
||||||
<<: *only_on_master
|
<<: *only_on_master
|
||||||
# Runs monitoring jobs at 10:00AM every day.
|
# Runs monitoring jobs at 10:00AM every day.
|
||||||
cron: '0 10 * * *'
|
cron: "0 10 * * *"
|
||||||
|
@ -74,7 +74,7 @@ setPublicVar COMPONENTS_REPO_TMP_DIR "/tmp/angular-components-repo"
|
|||||||
setPublicVar COMPONENTS_REPO_URL "https://github.com/angular/components.git"
|
setPublicVar COMPONENTS_REPO_URL "https://github.com/angular/components.git"
|
||||||
setPublicVar COMPONENTS_REPO_BRANCH "master"
|
setPublicVar COMPONENTS_REPO_BRANCH "master"
|
||||||
# **NOTE**: When updating the commit SHA, also update the cache key in the CircleCI `config.yml`.
|
# **NOTE**: When updating the commit SHA, also update the cache key in the CircleCI `config.yml`.
|
||||||
setPublicVar COMPONENTS_REPO_COMMIT "d090617912da8e70aa336aa5b4d804b1b535402e"
|
setPublicVar COMPONENTS_REPO_COMMIT "09e68db8ed5b1253f2fe38ff954ef0df019fc25a"
|
||||||
|
|
||||||
|
|
||||||
####################################################################################################
|
####################################################################################################
|
||||||
|
@ -41,8 +41,8 @@ copy .circleci\bazel.windows.rc ${Env:USERPROFILE}\.bazelrc
|
|||||||
####################################################################################################
|
####################################################################################################
|
||||||
# Install specific version of node.
|
# Install specific version of node.
|
||||||
####################################################################################################
|
####################################################################################################
|
||||||
nvm install 14.16.1
|
nvm install 12.14.1
|
||||||
nvm use 14.16.1
|
nvm use 12.14.1
|
||||||
|
|
||||||
# These Bazel prereqs aren't needed because the CircleCI image already includes them.
|
# These Bazel prereqs aren't needed because the CircleCI image already includes them.
|
||||||
# choco install yarn --version 1.16.0 --no-progress
|
# choco install yarn --version 1.16.0 --no-progress
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
# Image metadata and config.
|
# Image metadata and config.
|
||||||
# Ideally, the Node.js version should match what we use on CI.
|
# Ideally, the image version should be what we use on CI.
|
||||||
# See `executors > default-executor` in `.circleci/config.yml`.
|
# See `executors > browsers-executor` in `.circleci/config.yml`.
|
||||||
FROM circleci/node:14-browsers
|
FROM circleci/node:10-browsers
|
||||||
|
|
||||||
|
|
||||||
LABEL name="Angular dev environment" \
|
LABEL name="Angular dev environment" \
|
||||||
description="This image can be used to create a dev environment for building Angular." \
|
description="This image can be used to create a dev environment for building Angular." \
|
||||||
@ -16,9 +16,13 @@ EXPOSE 4000 4200 4433 5000 8080 9876
|
|||||||
USER root
|
USER root
|
||||||
|
|
||||||
|
|
||||||
# Configure `Node.js`/`npm`.
|
# Configure `Node.js`/`npm` and install utilities.
|
||||||
RUN npm config --global set user root
|
RUN npm config --global set user root
|
||||||
|
|
||||||
|
# Ideally, the version should be what we use on CI.
|
||||||
|
# See `commands > overwrite_yarn` in `.circleci/config.yml`.
|
||||||
|
RUN npm install --global yarn@latest
|
||||||
|
|
||||||
|
|
||||||
# Go! (And keep going.)
|
# Go! (And keep going.)
|
||||||
CMD ["tail", "--follow", "/dev/null"]
|
CMD ["tail", "--follow", "/dev/null"]
|
||||||
|
@ -1,23 +1,15 @@
|
|||||||
# http://editorconfig.org
|
# https://editorconfig.org
|
||||||
|
|
||||||
root = true
|
root = true
|
||||||
|
|
||||||
[*]
|
[*]
|
||||||
charset = utf-8
|
charset = utf-8
|
||||||
indent_style = space
|
indent_style = space
|
||||||
indent_size = 2
|
indent_size = 2
|
||||||
|
end_of_line = lf
|
||||||
insert_final_newline = true
|
insert_final_newline = true
|
||||||
trim_trailing_whitespace = true
|
trim_trailing_whitespace = true
|
||||||
|
|
||||||
|
|
||||||
[*.md]
|
[*.md]
|
||||||
max_line_length = 0
|
insert_final_newline = false
|
||||||
trim_trailing_whitespace = false
|
trim_trailing_whitespace = false
|
||||||
|
|
||||||
[*.jade]
|
|
||||||
max_line_length = 0
|
|
||||||
trim_trailing_whitespace = false
|
|
||||||
|
|
||||||
# Indentation override
|
|
||||||
#[lib/**.js]
|
|
||||||
#[{package.json,.travis.yml}]
|
|
||||||
#[**/**.js]
|
|
||||||
|
30
.eslintrc.js
30
.eslintrc.js
@ -1,30 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
"globals": {
|
|
||||||
"describe": true,
|
|
||||||
"beforeEach": true,
|
|
||||||
"it": true,
|
|
||||||
"expect": true
|
|
||||||
},
|
|
||||||
"env": {
|
|
||||||
"node": true
|
|
||||||
},
|
|
||||||
"extends": "eslint:recommended",
|
|
||||||
"rules": {
|
|
||||||
"indent": [
|
|
||||||
"error",
|
|
||||||
2
|
|
||||||
],
|
|
||||||
"linebreak-style": [
|
|
||||||
"error",
|
|
||||||
"unix"
|
|
||||||
],
|
|
||||||
"quotes": [
|
|
||||||
"error",
|
|
||||||
"single"
|
|
||||||
],
|
|
||||||
"semi": [
|
|
||||||
"error",
|
|
||||||
"always"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
};
|
|
@ -1,8 +0,0 @@
|
|||||||
{
|
|
||||||
"projects": {
|
|
||||||
"live": "angular-io",
|
|
||||||
"ngdocsdev": "ngdocsdev",
|
|
||||||
"kw-dev": "kw-angular-io",
|
|
||||||
"dev": "angular-io-dev"
|
|
||||||
}
|
|
||||||
}
|
|
3
.gitattributes
vendored
3
.gitattributes
vendored
@ -5,5 +5,8 @@
|
|||||||
*.js eol=lf
|
*.js eol=lf
|
||||||
*.ts eol=lf
|
*.ts eol=lf
|
||||||
|
|
||||||
|
# API guardian patch must always use LF for tests to work
|
||||||
|
*.patch eol=lf
|
||||||
|
|
||||||
# Must keep Windows line ending to be parsed correctly
|
# Must keep Windows line ending to be parsed correctly
|
||||||
scripts/windows/packages.txt eol=crlf
|
scripts/windows/packages.txt eol=crlf
|
||||||
|
4
.github/ISSUE_TEMPLATE.md
vendored
4
.github/ISSUE_TEMPLATE.md
vendored
@ -1,6 +1,10 @@
|
|||||||
|
🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑
|
||||||
|
|
||||||
Please help us process issues more efficiently by filing an
|
Please help us process issues more efficiently by filing an
|
||||||
issue using one of the following templates:
|
issue using one of the following templates:
|
||||||
|
|
||||||
https://github.com/angular/angular/issues/new/choose
|
https://github.com/angular/angular/issues/new/choose
|
||||||
|
|
||||||
Thank you!
|
Thank you!
|
||||||
|
|
||||||
|
🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑
|
||||||
|
69
.github/ISSUE_TEMPLATE/1-bug-report.md
vendored
Normal file
69
.github/ISSUE_TEMPLATE/1-bug-report.md
vendored
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
---
|
||||||
|
name: "\U0001F41E Bug report"
|
||||||
|
about: Report a bug in the Angular Framework
|
||||||
|
---
|
||||||
|
<!--🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅
|
||||||
|
|
||||||
|
Oh hi there! 😄
|
||||||
|
|
||||||
|
To expedite issue processing please search open and closed issues before submitting a new one.
|
||||||
|
Existing issues often contain information about workarounds, resolution, or progress updates.
|
||||||
|
|
||||||
|
🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅-->
|
||||||
|
|
||||||
|
|
||||||
|
# 🐞 bug report
|
||||||
|
|
||||||
|
### Affected Package
|
||||||
|
<!-- Can you pin-point one or more @angular/* packages as the source of the bug? -->
|
||||||
|
<!-- ✍️edit: --> The issue is caused by package @angular/....
|
||||||
|
|
||||||
|
|
||||||
|
### Is this a regression?
|
||||||
|
|
||||||
|
<!-- Did this behavior use to work in the previous version? -->
|
||||||
|
<!-- ✍️--> Yes, the previous version in which this bug was not present was: ....
|
||||||
|
|
||||||
|
|
||||||
|
### Description
|
||||||
|
|
||||||
|
<!-- ✍️--> A clear and concise description of the problem...
|
||||||
|
|
||||||
|
|
||||||
|
## 🔬 Minimal Reproduction
|
||||||
|
<!--
|
||||||
|
Please create and share minimal reproduction of the issue starting with this template: https://stackblitz.com/fork/angular-ivy
|
||||||
|
-->
|
||||||
|
<!-- ✍️--> https://stackblitz.com/...
|
||||||
|
|
||||||
|
<!--
|
||||||
|
If StackBlitz is not suitable for reproduction of your issue, please create a minimal GitHub repository with the reproduction of the issue.
|
||||||
|
A good way to make a minimal reproduction is to create a new app via `ng new repro-app` and add the minimum possible code to show the problem.
|
||||||
|
Share the link to the repo below along with step-by-step instructions to reproduce the problem, as well as expected and actual behavior.
|
||||||
|
|
||||||
|
Issues that don't have enough info and can't be reproduced will be closed.
|
||||||
|
|
||||||
|
You can read more about issue submission guidelines here: https://github.com/angular/angular/blob/master/CONTRIBUTING.md#submit-issue
|
||||||
|
-->
|
||||||
|
|
||||||
|
## 🔥 Exception or Error
|
||||||
|
<pre><code>
|
||||||
|
<!-- If the issue is accompanied by an exception or an error, please share it below: -->
|
||||||
|
<!-- ✍️-->
|
||||||
|
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
|
||||||
|
## 🌍 Your Environment
|
||||||
|
|
||||||
|
**Angular Version:**
|
||||||
|
<pre><code>
|
||||||
|
<!-- run `ng version` and paste output below -->
|
||||||
|
<!-- ✍️-->
|
||||||
|
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
**Anything else relevant?**
|
||||||
|
<!-- ✍️Is this a browser specific issue? If so, please specify the browser and version. -->
|
||||||
|
|
||||||
|
<!-- ✍️Do any of these matter: operating system, IDE, package manager, HTTP server, ...? If so, please mention it below. -->
|
84
.github/ISSUE_TEMPLATE/1-bug-report.yaml
vendored
84
.github/ISSUE_TEMPLATE/1-bug-report.yaml
vendored
@ -1,84 +0,0 @@
|
|||||||
name: Bug Report
|
|
||||||
description: Report a bug in the Angular Framework
|
|
||||||
|
|
||||||
body:
|
|
||||||
- type: dropdown
|
|
||||||
id: affected-packages
|
|
||||||
attributes:
|
|
||||||
label: Which @angular/* package(s) are the source of the bug?
|
|
||||||
options:
|
|
||||||
- animations
|
|
||||||
- bazel
|
|
||||||
- common
|
|
||||||
- compiler-cli
|
|
||||||
- compiler
|
|
||||||
- elements
|
|
||||||
- forms
|
|
||||||
- language-service
|
|
||||||
- localize
|
|
||||||
- platform-browser-dynamic
|
|
||||||
- platform-browser
|
|
||||||
- platform-server
|
|
||||||
- router
|
|
||||||
- service-worker
|
|
||||||
- upgrade
|
|
||||||
- Don't known / other
|
|
||||||
multiple: true
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: dropdown
|
|
||||||
id: is-regression
|
|
||||||
attributes:
|
|
||||||
label: Is this a regression?
|
|
||||||
options:
|
|
||||||
- 'Yes'
|
|
||||||
- 'No'
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: description
|
|
||||||
attributes:
|
|
||||||
label: Description
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: input
|
|
||||||
id: reproduction
|
|
||||||
attributes:
|
|
||||||
label: Please provide a link to a minimal reproduction of the bug
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: exception-or-error
|
|
||||||
attributes:
|
|
||||||
label: Please provide the exception or error you saw
|
|
||||||
render: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: environment
|
|
||||||
attributes:
|
|
||||||
label: Please provide the environment you discovered this bug in
|
|
||||||
render: true
|
|
||||||
placeholder: |
|
|
||||||
Angular CLI: 12.0.5
|
|
||||||
Node: 14.17.0
|
|
||||||
Package Manager: yarn 1.22.10
|
|
||||||
OS: linux x64
|
|
||||||
|
|
||||||
Angular: 12.0.5
|
|
||||||
... animations, cli, common, compiler, compiler-cli, core, forms
|
|
||||||
... platform-browser, platform-browser-dynamic, router
|
|
||||||
|
|
||||||
Package Version
|
|
||||||
---------------------------------------------------------
|
|
||||||
@angular-devkit/architect 0.1200.5
|
|
||||||
@angular-devkit/build-angular 12.0.5
|
|
||||||
@angular-devkit/core 12.0.5
|
|
||||||
rxjs 6.6.7
|
|
||||||
typescript 4.2.4
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: other
|
|
||||||
attributes:
|
|
||||||
label: Anything else?
|
|
32
.github/ISSUE_TEMPLATE/2-feature-request.md
vendored
Normal file
32
.github/ISSUE_TEMPLATE/2-feature-request.md
vendored
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
---
|
||||||
|
name: "\U0001F680 Feature request"
|
||||||
|
about: Suggest a feature for Angular Framework
|
||||||
|
|
||||||
|
---
|
||||||
|
<!--🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅
|
||||||
|
|
||||||
|
Oh hi there! 😄
|
||||||
|
|
||||||
|
To expedite issue processing please search open and closed issues before submitting a new one.
|
||||||
|
Existing issues often contain information about workarounds, resolution, or progress updates.
|
||||||
|
|
||||||
|
🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅-->
|
||||||
|
|
||||||
|
|
||||||
|
# 🚀 feature request
|
||||||
|
|
||||||
|
### Relevant Package
|
||||||
|
<!-- Can you pin-point one or more @angular/* packages the are relevant for this feature request? -->
|
||||||
|
<!-- ✍️edit: --> This feature request is for @angular/....
|
||||||
|
|
||||||
|
|
||||||
|
### Description
|
||||||
|
<!-- ✍️--> A clear and concise description of the problem or missing capability...
|
||||||
|
|
||||||
|
|
||||||
|
### Describe the solution you'd like
|
||||||
|
<!-- ✍️--> If you have a solution in mind, please describe it.
|
||||||
|
|
||||||
|
|
||||||
|
### Describe alternatives you've considered
|
||||||
|
<!-- ✍️--> Have you considered any alternative solutions or workarounds?
|
46
.github/ISSUE_TEMPLATE/2-feature-request.yaml
vendored
46
.github/ISSUE_TEMPLATE/2-feature-request.yaml
vendored
@ -1,46 +0,0 @@
|
|||||||
name: 'Feature Request'
|
|
||||||
description: Suggest a feature for Angular Framework
|
|
||||||
|
|
||||||
body:
|
|
||||||
- type: dropdown
|
|
||||||
id: affected-packages
|
|
||||||
attributes:
|
|
||||||
label: Which @angular/* package(s) are relevant/releated to the feature request?
|
|
||||||
options:
|
|
||||||
- animations
|
|
||||||
- bazel
|
|
||||||
- common
|
|
||||||
- compiler-cli
|
|
||||||
- compiler
|
|
||||||
- elements
|
|
||||||
- forms
|
|
||||||
- language-service
|
|
||||||
- localize
|
|
||||||
- platform-browser-dynamic
|
|
||||||
- platform-browser
|
|
||||||
- platform-server
|
|
||||||
- router
|
|
||||||
- service-worker
|
|
||||||
- upgrade
|
|
||||||
multiple: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: description
|
|
||||||
attributes:
|
|
||||||
label: Description
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: proposed-solution
|
|
||||||
attributes:
|
|
||||||
label: Proposed solution
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: alternatives-considered
|
|
||||||
attributes:
|
|
||||||
label: Alternatives considered
|
|
||||||
validations:
|
|
||||||
required: true
|
|
55
.github/ISSUE_TEMPLATE/3-docs-bug.md
vendored
Normal file
55
.github/ISSUE_TEMPLATE/3-docs-bug.md
vendored
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
---
|
||||||
|
name: "📚 Docs or angular.io issue report"
|
||||||
|
about: Report an issue in Angular's documentation or angular.io application
|
||||||
|
|
||||||
|
---
|
||||||
|
<!--🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅
|
||||||
|
|
||||||
|
Oh hi there! 😄
|
||||||
|
|
||||||
|
To expedite issue processing please search open and closed issues before submitting a new one.
|
||||||
|
Existing issues often contain information about workarounds, resolution, or progress updates.
|
||||||
|
|
||||||
|
🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅-->
|
||||||
|
|
||||||
|
# 📚 Docs or angular.io bug report
|
||||||
|
|
||||||
|
### Description
|
||||||
|
|
||||||
|
<!-- ✍️edit:--> A clear and concise description of the problem...
|
||||||
|
|
||||||
|
|
||||||
|
## 🔬 Minimal Reproduction
|
||||||
|
|
||||||
|
### What's the affected URL?**
|
||||||
|
<!-- ✍️edit:--> https://angular.io/...
|
||||||
|
|
||||||
|
### Reproduction Steps**
|
||||||
|
<!-- If applicable please list the steps to take to reproduce the issue -->
|
||||||
|
<!-- ✍️edit:-->
|
||||||
|
|
||||||
|
### Expected vs Actual Behavior**
|
||||||
|
<!-- If applicable please describe the difference between the expected and actual behavior after following the repro steps. -->
|
||||||
|
<!-- ✍️edit:-->
|
||||||
|
|
||||||
|
|
||||||
|
## 📷Screenshot
|
||||||
|
<!-- Often a screenshot can help to capture the issue better than a long description. -->
|
||||||
|
<!-- ✍️upload a screenshot:-->
|
||||||
|
|
||||||
|
|
||||||
|
## 🔥 Exception or Error
|
||||||
|
<pre><code>
|
||||||
|
<!-- If the issue is accompanied by an exception or an error, please share it below: -->
|
||||||
|
<!-- ✍️-->
|
||||||
|
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
|
||||||
|
## 🌍 Your Environment
|
||||||
|
|
||||||
|
### Browser info
|
||||||
|
<!-- ✍️Is this a browser specific issue? If so, please specify the device, browser, and version. -->
|
||||||
|
|
||||||
|
### Anything else relevant?
|
||||||
|
<!-- ✍️Please provide additional info if necessary. -->
|
42
.github/ISSUE_TEMPLATE/3-docs-bug.yaml
vendored
42
.github/ISSUE_TEMPLATE/3-docs-bug.yaml
vendored
@ -1,42 +0,0 @@
|
|||||||
name: 'Docs or angular.io Bug Report'
|
|
||||||
description: Report an issue in Angular's documentation or angular.io application
|
|
||||||
|
|
||||||
body:
|
|
||||||
- type: textarea
|
|
||||||
id: description
|
|
||||||
attributes:
|
|
||||||
label: Description
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: input
|
|
||||||
id: affected-url
|
|
||||||
attributes:
|
|
||||||
label: What is the affected URL?
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: reproduction-steps
|
|
||||||
attributes:
|
|
||||||
label: Please provide the steps to reproduce the issue
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: expected-vs-actual-behavior
|
|
||||||
attributes:
|
|
||||||
label: Please provide the expected behavior vs the actual behavior you encountered
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: screenshot
|
|
||||||
attributes:
|
|
||||||
label: Please provide a screenshot if possible
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: exception-or-error
|
|
||||||
attributes:
|
|
||||||
label: Please provide the exception or error you saw
|
|
||||||
render: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: browser-info
|
|
||||||
attributes:
|
|
||||||
label: Is this a browser-specific issue? If so, please specify the device, browser, and version.
|
|
||||||
render: true
|
|
@ -1,6 +1,11 @@
|
|||||||
---
|
---
|
||||||
name: Security Issue Disclosure
|
name: ⚠️ Security issue disclosure
|
||||||
about: Report a security issue in Angular Framework, Material, or CLI
|
about: Report a security issue in Angular Framework, Material, or CLI
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑
|
||||||
|
|
||||||
Please read https://angular.io/guide/security#report-issues on how to disclose security related issues.
|
Please read https://angular.io/guide/security#report-issues on how to disclose security related issues.
|
||||||
|
|
||||||
|
🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑
|
||||||
|
9
.github/ISSUE_TEMPLATE/5-support-request.md
vendored
9
.github/ISSUE_TEMPLATE/5-support-request.md
vendored
@ -1,11 +1,16 @@
|
|||||||
---
|
---
|
||||||
name: "Support Request"
|
name: "❓ Support request"
|
||||||
about: Questions and requests for support
|
about: Questions and requests for support
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑
|
||||||
|
|
||||||
Please do not file questions or support requests on the GitHub issues tracker.
|
Please do not file questions or support requests on the GitHub issues tracker.
|
||||||
|
|
||||||
You can get your questions answered using other communication channels. Please see:
|
You can get your questions answered using other communication channels. Please see:
|
||||||
https://github.com/angular/angular/blob/master/CONTRIBUTING.md#question
|
https://github.com/angular/angular/blob/master/CONTRIBUTING.md#question
|
||||||
|
|
||||||
Thank you!
|
Thank you!
|
||||||
|
|
||||||
|
🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑
|
||||||
|
7
.github/ISSUE_TEMPLATE/6-angular-cli.md
vendored
7
.github/ISSUE_TEMPLATE/6-angular-cli.md
vendored
@ -1,8 +1,13 @@
|
|||||||
---
|
---
|
||||||
name: "Angular CLI"
|
name: "\U0001F6E0️ Angular CLI"
|
||||||
about: Issues and feature requests for Angular CLI
|
about: Issues and feature requests for Angular CLI
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑
|
||||||
|
|
||||||
Please file any Angular CLI issues at: https://github.com/angular/angular-cli/issues/new
|
Please file any Angular CLI issues at: https://github.com/angular/angular-cli/issues/new
|
||||||
|
|
||||||
For the time being, we keep Angular CLI issues in a separate repository.
|
For the time being, we keep Angular CLI issues in a separate repository.
|
||||||
|
|
||||||
|
🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑
|
||||||
|
@ -1,8 +1,13 @@
|
|||||||
---
|
---
|
||||||
name: "Angular Components"
|
name: "\U0001F48E Angular Components"
|
||||||
about: Issues and feature requests for Angular Components
|
about: Issues and feature requests for Angular Components
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑
|
||||||
|
|
||||||
Please file any Angular Components issues at: https://github.com/angular/components/issues/new
|
Please file any Angular Components issues at: https://github.com/angular/components/issues/new
|
||||||
|
|
||||||
For the time being, we keep Angular Components issues in a separate repository.
|
For the time being, we keep Angular Components issues in a separate repository.
|
||||||
|
|
||||||
|
🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑
|
||||||
|
194
.github/angular-robot.yml
vendored
194
.github/angular-robot.yml
vendored
@ -4,7 +4,7 @@
|
|||||||
size:
|
size:
|
||||||
disabled: false
|
disabled: false
|
||||||
maxSizeIncrease: 2000
|
maxSizeIncrease: 2000
|
||||||
circleCiStatusName: 'ci/circleci: test_ivy_aot'
|
circleCiStatusName: "ci/circleci: test_ivy_aot"
|
||||||
|
|
||||||
# options for the merge plugin
|
# options for the merge plugin
|
||||||
merge:
|
merge:
|
||||||
@ -13,84 +13,85 @@ merge:
|
|||||||
# set to true to disable
|
# set to true to disable
|
||||||
disabled: false
|
disabled: false
|
||||||
# the name of the status
|
# the name of the status
|
||||||
context: 'ci/angular: merge status'
|
context: "ci/angular: merge status"
|
||||||
# text to show when all checks pass
|
# text to show when all checks pass
|
||||||
successText: 'All checks passed!'
|
successText: "All checks passed!"
|
||||||
# text to show when some checks are failing
|
# text to show when some checks are failing
|
||||||
failureText: 'The following checks are failing:'
|
failureText: "The following checks are failing:"
|
||||||
|
|
||||||
# the g3 status will be added to your pull requests if they include files that match the patterns
|
# the g3 status will be added to your pull requests if they include files that match the patterns
|
||||||
g3Status:
|
g3Status:
|
||||||
# set to true to disable
|
# set to true to disable
|
||||||
disabled: false
|
disabled: false
|
||||||
# the name of the status
|
# the name of the status
|
||||||
context: 'google3'
|
context: "google3"
|
||||||
# text to show when the status is pending, {{PRNumber}} will be replaced by the PR number
|
# text to show when the status is pending, {{PRNumber}} will be replaced by the PR number
|
||||||
pendingDesc: 'Googler: run g3sync presubmit {{PRNumber}}'
|
pendingDesc: "Googler: run g3sync presubmit {{PRNumber}}"
|
||||||
# text to show when the status is success
|
# text to show when the status is success
|
||||||
successDesc: 'Does not affect google3'
|
successDesc: "Does not affect google3"
|
||||||
# link to use for the details
|
# link to use for the details
|
||||||
url: 'http://go/angular/g3sync'
|
url: "http://go/angular/g3sync"
|
||||||
# list of patterns to check for the files changed by the PR
|
# list of patterns to check for the files changed by the PR
|
||||||
# this list must be manually kept in sync with google3/third_party/javascript/angular2/copy.bara.sky
|
# this list must be manually kept in sync with google3/third_party/javascript/angular2/copy.bara.sky
|
||||||
include:
|
include:
|
||||||
- 'LICENSE'
|
- "LICENSE"
|
||||||
- 'modules/benchmarks/**'
|
- "modules/benchmarks/**"
|
||||||
- 'modules/system.d.ts'
|
- "modules/system.d.ts"
|
||||||
- 'packages/**'
|
- "packages/**"
|
||||||
- 'dev-infra/benchmark/driver-utilities/**'
|
- "dev-infra/benchmark/driver-utilities/**"
|
||||||
# list of patterns to ignore for the files changed by the PR
|
# list of patterns to ignore for the files changed by the PR
|
||||||
exclude:
|
exclude:
|
||||||
- 'packages/*'
|
- "packages/*"
|
||||||
- 'packages/bazel/*'
|
- "packages/bazel/*"
|
||||||
- 'packages/bazel/src/api-extractor/**'
|
- "packages/bazel/src/api-extractor/**"
|
||||||
- 'packages/bazel/src/builders/**'
|
- "packages/bazel/src/builders/**"
|
||||||
- 'packages/bazel/src/ng_package/**'
|
- "packages/bazel/src/ng_package/**"
|
||||||
- 'packages/bazel/src/protractor/**'
|
- "packages/bazel/src/protractor/**"
|
||||||
- 'packages/bazel/src/schematics/**'
|
- "packages/bazel/src/schematics/**"
|
||||||
- 'packages/compiler-cli/src/ngcc/**'
|
- "packages/compiler-cli/src/ngcc/**"
|
||||||
- 'packages/compiler-cli/linker/**'
|
- "packages/compiler-cli/linker/**"
|
||||||
- 'packages/compiler-cli/ngcc/**'
|
- "packages/compiler-cli/ngcc/**"
|
||||||
- 'packages/compiler-cli/src/ngtsc/sourcemaps/**'
|
- "packages/compiler-cli/src/ngtsc/sourcemaps/**"
|
||||||
- 'packages/docs/**'
|
- "packages/docs/**"
|
||||||
- 'packages/elements/schematics/**'
|
- "packages/elements/schematics/**"
|
||||||
- 'packages/examples/**'
|
- "packages/examples/**"
|
||||||
- 'packages/language-service/**'
|
- "packages/language-service/**"
|
||||||
- 'packages/localize/**'
|
- "packages/localize/**"
|
||||||
- 'packages/private/**'
|
- "packages/private/**"
|
||||||
- 'packages/service-worker/**'
|
- "packages/service-worker/**"
|
||||||
- 'packages/common/locales/**'
|
- "packages/common/locales/**"
|
||||||
- 'packages/http/**'
|
- "packages/http/**"
|
||||||
- '**/.gitignore'
|
- "**/.gitignore"
|
||||||
- '**/.gitkeep'
|
- "**/.gitkeep"
|
||||||
- '**/yarn.lock'
|
- "**/yarn.lock"
|
||||||
- '**/package.json'
|
- "**/package.json"
|
||||||
- '**/third_party/**'
|
- "**/third_party/**"
|
||||||
- '**/tsconfig-build.json'
|
- "**/tsconfig-build.json"
|
||||||
- '**/tsconfig.json'
|
- "**/tsconfig.json"
|
||||||
- '**/rollup.config.js'
|
- "**/rollup.config.js"
|
||||||
- '**/BUILD.bazel'
|
- "**/BUILD.bazel"
|
||||||
- '**/*.md'
|
- "**/*.md"
|
||||||
- 'packages/**/integrationtest/**'
|
- "packages/**/integrationtest/**"
|
||||||
- 'packages/**/test/**'
|
- "packages/**/test/**"
|
||||||
- 'packages/zone.js/*'
|
- "packages/zone.js/*"
|
||||||
- 'packages/zone.js/dist/**'
|
- "packages/zone.js/dist/**"
|
||||||
- 'packages/zone.js/doc/**'
|
- "packages/zone.js/doc/**"
|
||||||
- 'packages/zone.js/example/**'
|
- "packages/zone.js/example/**"
|
||||||
- 'packages/zone.js/scripts/**'
|
- "packages/zone.js/scripts/**"
|
||||||
|
|
||||||
# comment that will be added to a PR when there is a conflict, leave empty or set to false to disable
|
# comment that will be added to a PR when there is a conflict, leave empty or set to false to disable
|
||||||
mergeConflictComment: "Hi @{{PRAuthor}}! This PR has merge conflicts due to recent upstream merges.\nPlease help to unblock it by resolving these conflicts. Thanks!"
|
mergeConflictComment: "Hi @{{PRAuthor}}! This PR has merge conflicts due to recent upstream merges.\nPlease help to unblock it by resolving these conflicts. Thanks!"
|
||||||
|
|
||||||
# label to monitor
|
# label to monitor
|
||||||
mergeLabel: 'action: merge'
|
mergeLabel: "action: merge"
|
||||||
|
|
||||||
# adding any of these labels will also add the merge label
|
# adding any of these labels will also add the merge label
|
||||||
mergeLinkedLabels:
|
mergeLinkedLabels:
|
||||||
- 'action: merge-assistance'
|
- "action: merge-assistance"
|
||||||
|
|
||||||
# list of checks that will determine if the merge label can be added
|
# list of checks that will determine if the merge label can be added
|
||||||
checks:
|
checks:
|
||||||
|
|
||||||
# require that the PR has reviews from all requested reviewers
|
# require that the PR has reviews from all requested reviewers
|
||||||
#
|
#
|
||||||
# This enables us to request reviews from both eng and tech writers, or multiple eng folks, and prevents accidental merges.
|
# This enables us to request reviews from both eng and tech writers, or multiple eng folks, and prevents accidental merges.
|
||||||
@ -101,25 +102,27 @@ merge:
|
|||||||
noConflict: true
|
noConflict: true
|
||||||
# list of labels that a PR needs to have, checked with a regexp (e.g. "target:" will work for the label "target: master")
|
# list of labels that a PR needs to have, checked with a regexp (e.g. "target:" will work for the label "target: master")
|
||||||
requiredLabels:
|
requiredLabels:
|
||||||
- 'target: *'
|
- "target: *"
|
||||||
- 'cla: yes'
|
- "cla: yes"
|
||||||
|
|
||||||
# list of labels that a PR shouldn't have, checked after the required labels with a regexp
|
# list of labels that a PR shouldn't have, checked after the required labels with a regexp
|
||||||
forbiddenLabels:
|
forbiddenLabels:
|
||||||
- 'target: TBD'
|
- "target: TBD"
|
||||||
- 'action: cleanup'
|
- "action: cleanup"
|
||||||
- 'action: review'
|
- "action: review"
|
||||||
- 'state: blocked'
|
- "state: blocked"
|
||||||
- 'cla: no'
|
- "cla: no"
|
||||||
|
|
||||||
# list of PR statuses that need to be successful
|
# list of PR statuses that need to be successful
|
||||||
requiredStatuses:
|
requiredStatuses:
|
||||||
- 'ci/circleci: build'
|
- "ci/circleci: build"
|
||||||
- 'ci/circleci: lint'
|
- "ci/circleci: lint"
|
||||||
- 'ci/angular: size'
|
- "ci/circleci: publish_snapshot"
|
||||||
- 'cla/google'
|
- "ci/angular: size"
|
||||||
- 'google3'
|
- "cla/google"
|
||||||
- 'pullapprove'
|
- "google3"
|
||||||
|
- "pullapprove"
|
||||||
|
|
||||||
|
|
||||||
# the comment that will be added when the merge label is added despite failing checks, leave empty or set to false to disable
|
# the comment that will be added when the merge label is added despite failing checks, leave empty or set to false to disable
|
||||||
# {{MERGE_LABEL}} will be replaced by the value of the mergeLabel option
|
# {{MERGE_LABEL}} will be replaced by the value of the mergeLabel option
|
||||||
@ -134,29 +137,40 @@ triage:
|
|||||||
defaultMilestone: 82,
|
defaultMilestone: 82,
|
||||||
# arrays of labels that determine if an issue has been triaged by the caretaker
|
# arrays of labels that determine if an issue has been triaged by the caretaker
|
||||||
l1TriageLabels:
|
l1TriageLabels:
|
||||||
- - 'comp: *'
|
-
|
||||||
|
- "comp: *"
|
||||||
# arrays of labels that determine if an issue has been fully triaged
|
# arrays of labels that determine if an issue has been fully triaged
|
||||||
l2TriageLabels:
|
l2TriageLabels:
|
||||||
- - 'P0'
|
-
|
||||||
- 'comp: *'
|
- "P0"
|
||||||
- - 'P1'
|
- "comp: *"
|
||||||
- 'comp: *'
|
-
|
||||||
- - 'P2'
|
- "P1"
|
||||||
- 'comp: *'
|
- "comp: *"
|
||||||
- - 'P3'
|
-
|
||||||
- 'comp: *'
|
- "P2"
|
||||||
- - 'P4'
|
- "comp: *"
|
||||||
- 'comp: *'
|
-
|
||||||
- - 'P5'
|
- "P3"
|
||||||
- 'comp: *'
|
- "comp: *"
|
||||||
- - 'feature'
|
-
|
||||||
- 'comp: *'
|
- "P4"
|
||||||
- - 'discussion'
|
- "comp: *"
|
||||||
- 'comp: *'
|
-
|
||||||
- - 'needs clarification'
|
- "P5"
|
||||||
- 'comp: *'
|
- "comp: *"
|
||||||
- - 'needs reproduction'
|
-
|
||||||
- 'comp: *'
|
- "feature"
|
||||||
|
- "comp: *"
|
||||||
|
-
|
||||||
|
- "discussion"
|
||||||
|
- "comp: *"
|
||||||
|
-
|
||||||
|
- "needs clarification"
|
||||||
|
- "comp: *"
|
||||||
|
-
|
||||||
|
- "needs reproduction"
|
||||||
|
- "comp: *"
|
||||||
|
|
||||||
# options for the triage PR plugin
|
# options for the triage PR plugin
|
||||||
triagePR:
|
triagePR:
|
||||||
@ -168,14 +182,16 @@ triagePR:
|
|||||||
defaultMilestone: 82,
|
defaultMilestone: 82,
|
||||||
# arrays of labels that determine if a PR has been triaged by the caretaker
|
# arrays of labels that determine if a PR has been triaged by the caretaker
|
||||||
l1TriageLabels:
|
l1TriageLabels:
|
||||||
- - 'comp: *'
|
-
|
||||||
|
- "comp: *"
|
||||||
# arrays of labels that determine if a PR has been fully triaged
|
# arrays of labels that determine if a PR has been fully triaged
|
||||||
l2TriageLabels:
|
l2TriageLabels:
|
||||||
- - 'comp: *'
|
-
|
||||||
|
- "comp: *"
|
||||||
|
|
||||||
# options for rerunning CI
|
# options for rerunning CI
|
||||||
rerunCircleCI:
|
rerunCircleCI:
|
||||||
# set to true to disable
|
# set to true to disable
|
||||||
disabled: false
|
disabled: false
|
||||||
# the label which when added triggers a rerun of the default CircleCI workflow
|
# the label which when added triggers a rerun of the default CircleCI workflow
|
||||||
triggerRerunLabel: 'action: rerun CI at HEAD'
|
triggerRerunLabel: "action: rerun CI at HEAD"
|
||||||
|
15
.github/workflows/feature-requests.yml
vendored
15
.github/workflows/feature-requests.yml
vendored
@ -1,15 +0,0 @@
|
|||||||
name: Feature request triage bot
|
|
||||||
|
|
||||||
on:
|
|
||||||
schedule:
|
|
||||||
# Run at 14:00 every day
|
|
||||||
- cron: '0 14 * * *'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
feature_triage:
|
|
||||||
if: github.repository == 'angular/angular'
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: angular/dev-infra/github-actions/feature-request@f83903fe1ac848407ef81465f66588e5accb6537
|
|
||||||
with:
|
|
||||||
angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }}
|
|
3
.gitignore
vendored
3
.gitignore
vendored
@ -50,5 +50,8 @@ baseline.json
|
|||||||
# Ignore .history for the xyz.local-history VSCode extension
|
# Ignore .history for the xyz.local-history VSCode extension
|
||||||
.history
|
.history
|
||||||
|
|
||||||
|
# CLDR data
|
||||||
|
tools/gulp-tasks/cldr/cldr-data/
|
||||||
|
|
||||||
# Husky
|
# Husky
|
||||||
.husky/_
|
.husky/_
|
||||||
|
1
.husky/.gitignore
vendored
Normal file
1
.husky/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
_
|
@ -1,30 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
if [ -z "$husky_skip_init" ]; then
|
|
||||||
debug () {
|
|
||||||
[ "$HUSKY_DEBUG" = "1" ] && echo "husky (debug) - $1"
|
|
||||||
}
|
|
||||||
|
|
||||||
readonly hook_name="$(basename "$0")"
|
|
||||||
debug "starting $hook_name..."
|
|
||||||
|
|
||||||
if [ "$HUSKY" = "0" ]; then
|
|
||||||
debug "HUSKY env variable is set to 0, skipping hook"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -f ~/.huskyrc ]; then
|
|
||||||
debug "sourcing ~/.huskyrc"
|
|
||||||
. ~/.huskyrc
|
|
||||||
fi
|
|
||||||
|
|
||||||
export readonly husky_skip_init=1
|
|
||||||
sh -e "$0" "$@"
|
|
||||||
exitCode="$?"
|
|
||||||
|
|
||||||
if [ $exitCode != 0 ]; then
|
|
||||||
echo "husky - $hook_name hook exited with code $exitCode (error)"
|
|
||||||
exit $exitCode
|
|
||||||
fi
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
fi
|
|
@ -1,11 +1,4 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
. "$(dirname $0)/_/husky.sh"
|
. "$(dirname $0)/_/husky.sh"
|
||||||
|
|
||||||
set +e
|
yarn -s ng-dev commit-message pre-commit-validate --file $1;
|
||||||
|
|
||||||
yarn -s ng-dev commit-message pre-commit-validate --file $1 2>/dev/null
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
echo "WARNING: failed to run commit message validation (ng-dev commit-mesage pre-commit-validate)"
|
|
||||||
fi
|
|
||||||
|
|
||||||
exit 0;
|
|
||||||
|
@ -1,11 +1,4 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
. "$(dirname $0)/_/husky.sh"
|
. "$(dirname $0)/_/husky.sh"
|
||||||
|
|
||||||
set +e
|
yarn -s ng-dev format staged;
|
||||||
yarn -s ng-dev format staged 2>/dev/null
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
echo "WARNING: failed to run file formatting (ng-dev format staged)"
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
exit 0;
|
|
||||||
|
@ -1,11 +1,4 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
. "$(dirname $0)/_/husky.sh"
|
. "$(dirname $0)/_/husky.sh"
|
||||||
|
|
||||||
set +e
|
yarn -s ng-dev commit-message restore-commit-message-draft $1 $2;
|
||||||
|
|
||||||
yarn -s ng-dev commit-message restore-commit-message-draft $1 $2 2>/dev/null
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
echo "WARNING: failed to attempt to restore commit message draft (ng-dev commit-message restore-commit-message-draft)"
|
|
||||||
fi
|
|
||||||
|
|
||||||
exit 0;
|
|
||||||
|
@ -1,8 +0,0 @@
|
|||||||
####################################################################################################
|
|
||||||
Command: ng-dev commit-message restore-commit-message-draft
|
|
||||||
Ran at: Mon Apr 05 2021 09:25:46 GMT-0400 (Eastern Daylight Time)
|
|
||||||
LOG: Skipping commit message restoration attempt
|
|
||||||
DEBUG: A commit message was already provided via the command with a -m or -F flag
|
|
||||||
####################################################################################################
|
|
||||||
Command ran in 4ms
|
|
||||||
Exit Code: 0
|
|
@ -15,6 +15,5 @@ export const caretaker: CaretakerConfig = {
|
|||||||
name: 'Initial Triage Queue',
|
name: 'Initial Triage Queue',
|
||||||
query: `is:open no:milestone`,
|
query: `is:open no:milestone`,
|
||||||
}
|
}
|
||||||
],
|
]
|
||||||
caretakerGroup: 'angular-caretaker',
|
|
||||||
};
|
};
|
||||||
|
@ -4,11 +4,6 @@ import {FormatConfig} from '../dev-infra/format/config';
|
|||||||
* Configuration for the `ng-dev format` command.
|
* Configuration for the `ng-dev format` command.
|
||||||
*/
|
*/
|
||||||
export const format: FormatConfig = {
|
export const format: FormatConfig = {
|
||||||
'prettier': {
|
|
||||||
'matchers': [
|
|
||||||
'**/*.{yaml,yml}',
|
|
||||||
]
|
|
||||||
},
|
|
||||||
'clang-format': {
|
'clang-format': {
|
||||||
'matchers': [
|
'matchers': [
|
||||||
'**/*.{js,ts}',
|
'**/*.{js,ts}',
|
||||||
@ -26,11 +21,6 @@ export const format: FormatConfig = {
|
|||||||
'!dev-infra/build-worker.js',
|
'!dev-infra/build-worker.js',
|
||||||
// Do not format compliance test-cases since they must match generated code
|
// Do not format compliance test-cases since they must match generated code
|
||||||
'!packages/compiler-cli/test/compliance/test_cases/**/*.js',
|
'!packages/compiler-cli/test/compliance/test_cases/**/*.js',
|
||||||
// Do not format the locale files which are checked-in for Google3, but generated using
|
|
||||||
// the `generate-locales-tool` from `packages/common/locales`.
|
|
||||||
'!packages/core/src/i18n/locale_en.ts',
|
|
||||||
'!packages/common/locales/closure-locale.ts',
|
|
||||||
'!packages/common/src/i18n/currencies.ts',
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
'buildifier': true
|
'buildifier': true
|
||||||
|
@ -14,7 +14,6 @@ export const merge: DevInfraMergeConfig['merge'] = async api => {
|
|||||||
mergeReadyLabel: /^action: merge(-assistance)?/,
|
mergeReadyLabel: /^action: merge(-assistance)?/,
|
||||||
caretakerNoteLabel: /^(action: merge-assistance)|(PullApprove: disable)/,
|
caretakerNoteLabel: /^(action: merge-assistance)|(PullApprove: disable)/,
|
||||||
commitMessageFixupLabel: 'commit message fixup',
|
commitMessageFixupLabel: 'commit message fixup',
|
||||||
breakingChangeLabel: 'flag: breaking change',
|
|
||||||
// We can pick any of the NPM packages as we are in a monorepo where all packages are
|
// We can pick any of the NPM packages as we are in a monorepo where all packages are
|
||||||
// published together with the same version and branching.
|
// published together with the same version and branching.
|
||||||
labels: await getDefaultTargetLabelConfiguration(api, github, release),
|
labels: await getDefaultTargetLabelConfiguration(api, github, release),
|
||||||
@ -25,9 +24,5 @@ export const merge: DevInfraMergeConfig['merge'] = async api => {
|
|||||||
'master': '5aeb9a4124922d8ac08eb73b8f322905a32b0b3a',
|
'master': '5aeb9a4124922d8ac08eb73b8f322905a32b0b3a',
|
||||||
'10.0.x': '27b95ba64a5d99757f4042073fd1860e20e3ed24',
|
'10.0.x': '27b95ba64a5d99757f4042073fd1860e20e3ed24',
|
||||||
},
|
},
|
||||||
// `dev-infra` and `docs-infra` are not affecting the public NPM packages. Similarly,
|
|
||||||
// the `bazel` package is not considered part of the public API so that features
|
|
||||||
// can land in patch branches.
|
|
||||||
targetLabelExemptScopes: ['dev-infra', 'docs-infra', 'bazel']
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import {join} from 'path';
|
import {join} from 'path';
|
||||||
|
import {exec} from 'shelljs';
|
||||||
import {ReleaseConfig} from '../dev-infra/release/config';
|
import {ReleaseConfig} from '../dev-infra/release/config';
|
||||||
|
|
||||||
/** Configuration for the `ng-dev release` command. */
|
/** Configuration for the `ng-dev release` command. */
|
||||||
@ -22,14 +23,15 @@ export const release: ReleaseConfig = {
|
|||||||
'@angular/service-worker',
|
'@angular/service-worker',
|
||||||
'@angular/upgrade',
|
'@angular/upgrade',
|
||||||
],
|
],
|
||||||
buildPackages: async (stampForRelease: boolean) => {
|
buildPackages: async () => {
|
||||||
// The buildTargetPackages function is loaded at runtime as the loading the script causes an
|
// The buildTargetPackages function is loaded at runtime as the loading the script causes an
|
||||||
// invocation of bazel.
|
// invocation of bazel.
|
||||||
const {buildTargetPackages} = require(join(__dirname, '../scripts/build/package-builder'));
|
const {buildTargetPackages} = require(join(__dirname, '../scripts/build/package-builder'));
|
||||||
return buildTargetPackages('dist/release-output', false, 'Release', stampForRelease);
|
return buildTargetPackages('dist/release-output', false, 'Release', true);
|
||||||
},
|
},
|
||||||
releaseNotes: {
|
// TODO: This can be removed once there is an org-wide tool for changelog generation.
|
||||||
hiddenScopes: ['aio', 'dev-infra', 'docs-infra', 'zone.js'],
|
generateReleaseNotesForHead: async () => {
|
||||||
|
exec('yarn -s gulp changelog', {cwd: join(__dirname, '../')});
|
||||||
},
|
},
|
||||||
releasePrLabels: ['comp: build & ci', 'action: merge', 'PullApprove: disable'],
|
releasePrLabels: ['comp: build & ci', 'action: merge', 'PullApprove: disable'],
|
||||||
};
|
};
|
||||||
|
@ -1,9 +0,0 @@
|
|||||||
{
|
|
||||||
"printWidth": 100,
|
|
||||||
"tabWidth": 2,
|
|
||||||
"tabs": false,
|
|
||||||
"singleQuote": true,
|
|
||||||
"semicolon": true,
|
|
||||||
"quoteProps": "preserve",
|
|
||||||
"bracketSpacing": false
|
|
||||||
}
|
|
250
.pullapprove.yml
250
.pullapprove.yml
@ -37,6 +37,7 @@
|
|||||||
# See reviewer list under `required-minimum-review` group. Team member names and
|
# See reviewer list under `required-minimum-review` group. Team member names and
|
||||||
# usernames are managed there.
|
# usernames are managed there.
|
||||||
|
|
||||||
|
|
||||||
####################################################################################
|
####################################################################################
|
||||||
# Approval Groups
|
# Approval Groups
|
||||||
####################################################################################
|
####################################################################################
|
||||||
@ -45,10 +46,10 @@
|
|||||||
# =========================================================
|
# =========================================================
|
||||||
# Used for approving minor changes, large-scale refactorings, and in emergency situations.
|
# Used for approving minor changes, large-scale refactorings, and in emergency situations.
|
||||||
#
|
#
|
||||||
# alxhub
|
|
||||||
# IgorMinar
|
# IgorMinar
|
||||||
# jelbourn
|
# jelbourn
|
||||||
# josephperrott
|
# josephperrott
|
||||||
|
# mhevery
|
||||||
#
|
#
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# @angular/framework-global-approvers-for-docs-only-changes
|
# @angular/framework-global-approvers-for-docs-only-changes
|
||||||
@ -57,8 +58,9 @@
|
|||||||
#
|
#
|
||||||
# aikidave
|
# aikidave
|
||||||
# gkalpak
|
# gkalpak
|
||||||
|
# kapunahelewong
|
||||||
# petebacondarwin
|
# petebacondarwin
|
||||||
# TeriGlover
|
|
||||||
|
|
||||||
version: 3
|
version: 3
|
||||||
|
|
||||||
@ -77,11 +79,15 @@ meta:
|
|||||||
#
|
#
|
||||||
# Also note that the ordering of groups matters in this file. The only groups visible to the current
|
# Also note that the ordering of groups matters in this file. The only groups visible to the current
|
||||||
# one are those that appear above it.
|
# one are those that appear above it.
|
||||||
no-groups-above-this-pending: &no-groups-above-this-pending len(groups.active.pending.exclude("required-minimum-review").exclude("global-approvers").exclude("global-docs-approvers")) == 0
|
no-groups-above-this-pending: &no-groups-above-this-pending
|
||||||
no-groups-above-this-rejected: &no-groups-above-this-rejected len(groups.active.rejected.exclude("required-minimum-review").exclude("global-approvers").exclude("global-docs-approvers")) == 0
|
len(groups.active.pending.exclude("required-minimum-review").exclude("global-approvers").exclude("global-docs-approvers")) == 0
|
||||||
|
no-groups-above-this-rejected: &no-groups-above-this-rejected
|
||||||
|
len(groups.active.rejected.exclude("required-minimum-review").exclude("global-approvers").exclude("global-docs-approvers")) == 0
|
||||||
|
no-groups-above-this-active: &no-groups-above-this-active
|
||||||
|
len(groups.active.exclude("required-minimum-review").exclude("global-approvers").exclude("global-docs-approvers")) == 0
|
||||||
|
|
||||||
can-be-global-approved: &can-be-global-approved '"global-approvers" not in groups.approved'
|
can-be-global-approved: &can-be-global-approved "\"global-approvers\" not in groups.approved"
|
||||||
can-be-global-docs-approved: &can-be-global-docs-approved '"global-docs-approvers" not in groups.approved'
|
can-be-global-docs-approved: &can-be-global-docs-approved "\"global-docs-approvers\" not in groups.approved"
|
||||||
defaults: &defaults
|
defaults: &defaults
|
||||||
reviews:
|
reviews:
|
||||||
# Authors provide their approval implicitly, this approval allows for a reviewer
|
# Authors provide their approval implicitly, this approval allows for a reviewer
|
||||||
@ -94,25 +100,25 @@ meta:
|
|||||||
# turn on 'draft' support
|
# turn on 'draft' support
|
||||||
# https://docs.pullapprove.com/config/github-api-version/
|
# https://docs.pullapprove.com/config/github-api-version/
|
||||||
# https://developer.github.com/v3/previews/#draft-pull-requests
|
# https://developer.github.com/v3/previews/#draft-pull-requests
|
||||||
github_api_version: 'shadow-cat-preview'
|
github_api_version: "shadow-cat-preview"
|
||||||
|
|
||||||
# https://docs.pullapprove.com/config/overrides/
|
pullapprove_conditions:
|
||||||
# Note that overrides are processed in order.
|
|
||||||
overrides:
|
|
||||||
# For PRs which are still being worked on, either still in draft mode or indicated through WIP in
|
# For PRs which are still being worked on, either still in draft mode or indicated through WIP in
|
||||||
# title or label, PullApprove stays in a pending state until its ready for review.
|
# title or label, PullApprove stays in a pending state until its ready for review.
|
||||||
- if: "draft or 'WIP' in title or 'PR state: WIP' in labels"
|
- condition: "'WIP' not in title"
|
||||||
status: pending
|
unmet_status: pending
|
||||||
explanation: 'Waiting to send reviews as PR is WIP'
|
explanation: "Waiting to send reviews as PR is WIP"
|
||||||
|
- condition: "'PR state: WIP' not in labels"
|
||||||
|
unmet_status: pending
|
||||||
|
explanation: "Waiting to send reviews as PR is WIP"
|
||||||
|
- condition: "not draft"
|
||||||
|
unmet_status: pending
|
||||||
|
explanation: "Waiting to send reviews as PR is in draft"
|
||||||
# Disable PullApprove on specific PRs by adding the `PullApprove: disable` label
|
# Disable PullApprove on specific PRs by adding the `PullApprove: disable` label
|
||||||
- if: "'PullApprove: disable' in labels"
|
- condition: "'PullApprove: disable' not in labels"
|
||||||
status: success
|
unmet_status: success
|
||||||
explanation: "PullApprove skipped because of 'PullApprove: disable' label"
|
explanation: "PullApprove skipped because of 'PullApprove: disable' label"
|
||||||
# If no file matching based groups are active, report this pull request as failing. Most likely,
|
|
||||||
# the PR author would need to update the PullApprove config, or create new group.
|
|
||||||
- if: len(groups.active.exclude("required-minimum-review").exclude("global-*")) == 0 and len(groups.approved.include("global-*")) == 0
|
|
||||||
status: failure
|
|
||||||
explanation: 'At least one group must match this PR. Please update an existing review group, or create a new group.'
|
|
||||||
|
|
||||||
groups:
|
groups:
|
||||||
# =========================================================
|
# =========================================================
|
||||||
@ -169,36 +175,41 @@ groups:
|
|||||||
reviewed_for: ignored # All reviews apply to this group whether noted via Reviewed-for or not
|
reviewed_for: ignored # All reviews apply to this group whether noted via Reviewed-for or not
|
||||||
reviewers:
|
reviewers:
|
||||||
users:
|
users:
|
||||||
- aikidave # Dave Shevitz
|
- aikidave # Dave Shevitz
|
||||||
- alan-agius4 # Alan Agius
|
- alan-agius4 # Alan Agius
|
||||||
- alxhub # Alex Rickabaugh
|
- alxhub # Alex Rickabaugh
|
||||||
- AndrewKushnir # Andrew Kushnir
|
- AndrewKushnir # Andrew Kushnir
|
||||||
- andrewseguin # Andrew Seguin
|
- andrewseguin # Andrew Seguin
|
||||||
- atscott # Andrew Scott
|
- atscott # Andrew Scott
|
||||||
- ayazhafiz # Ayaz Hafiz
|
- ayazhafiz # Ayaz Hafiz
|
||||||
- clydin # Charles Lyding
|
- clydin # Charles Lyding
|
||||||
- crisbeto # Kristiyan Kostadinov
|
- crisbeto # Kristiyan Kostadinov
|
||||||
- devversion # Paul Gschwendtner
|
- dennispbrown # Denny Brown
|
||||||
- dgp1130 # Doug Parker
|
- devversion # Paul Gschwendtner
|
||||||
- filipesilva # Filipe Silva
|
- dgp1130 # Doug Parker
|
||||||
- gkalpak # Georgios Kalpakas
|
- filipesilva # Filipe Silva
|
||||||
- gregmagolan # Greg Magolan
|
- gkalpak # Georgios Kalpakas
|
||||||
- IgorMinar # Igor Minar
|
- gregmagolan # Greg Magolan
|
||||||
- jbogarthyde # Judy Bogart
|
- IgorMinar # Igor Minar
|
||||||
- jelbourn # Jeremy Elbourn
|
- jbogarthyde # Judy Bogart
|
||||||
- jessicajaniuk # Jessica Janiuk
|
- jelbourn # Jeremy Elbourn
|
||||||
- JiaLiPassion # Jia Li
|
- jessicajaniuk # Jessica Janiuk
|
||||||
- JoostK # Joost Koehoorn
|
- JiaLiPassion # Jia Li
|
||||||
- josephperrott # Joey Perrott
|
- JoostK # Joost Koehoorn
|
||||||
- kyliau # Keen Yee Liau
|
- josephperrott # Joey Perrott
|
||||||
- manughub # Manu Murthy
|
- juleskremer # Jules Kremer
|
||||||
- mgechev # Minko Gechev
|
- kapunahelewong # Kapunahele Wong
|
||||||
- mmalerba # Miles Malerba
|
- kara # Kara Erickson
|
||||||
- petebacondarwin # Pete Bacon Darwin
|
- kyliau # Keen Yee Liau
|
||||||
- pkozlowski-opensource # Pawel Kozlowski
|
- manughub # Manu Murthy
|
||||||
- Splaktar # Michael Prentice
|
- mgechev # Minko Gechev
|
||||||
- twerske # Emma Twersky
|
- mhevery # Miško Hevery
|
||||||
- zarend # Zach Arend
|
- mmalerba # Miles Malerba
|
||||||
|
- petebacondarwin # Pete Bacon Darwin
|
||||||
|
- pkozlowski-opensource # Pawel Kozlowski
|
||||||
|
- Splaktar # Michael Prentice
|
||||||
|
- twerske # Emma Twersky
|
||||||
|
- zarend # Zach Arend
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# Framework: Animations
|
# Framework: Animations
|
||||||
@ -226,6 +237,7 @@ groups:
|
|||||||
- IgorMinar
|
- IgorMinar
|
||||||
- jelbourn
|
- jelbourn
|
||||||
|
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# Framework: Compiler
|
# Framework: Compiler
|
||||||
# =========================================================
|
# =========================================================
|
||||||
@ -246,11 +258,11 @@ groups:
|
|||||||
])
|
])
|
||||||
reviewers:
|
reviewers:
|
||||||
users:
|
users:
|
||||||
- AndrewKushnir
|
|
||||||
- alxhub
|
- alxhub
|
||||||
- atscott
|
- AndrewKushnir
|
||||||
- JoostK
|
- JoostK
|
||||||
|
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# Framework: Compiler / ngcc
|
# Framework: Compiler / ngcc
|
||||||
# =========================================================
|
# =========================================================
|
||||||
@ -267,6 +279,7 @@ groups:
|
|||||||
- JoostK
|
- JoostK
|
||||||
- petebacondarwin
|
- petebacondarwin
|
||||||
|
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# Framework: Migrations
|
# Framework: Migrations
|
||||||
# =========================================================
|
# =========================================================
|
||||||
@ -282,6 +295,7 @@ groups:
|
|||||||
- crisbeto
|
- crisbeto
|
||||||
- devversion
|
- devversion
|
||||||
|
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# Framework: Core
|
# Framework: Core
|
||||||
# =========================================================
|
# =========================================================
|
||||||
@ -321,8 +335,6 @@ groups:
|
|||||||
'aio/content/guide/component-styles.md',
|
'aio/content/guide/component-styles.md',
|
||||||
'aio/content/guide/view-encapsulation.md',
|
'aio/content/guide/view-encapsulation.md',
|
||||||
'aio/content/examples/component-styles/**',
|
'aio/content/examples/component-styles/**',
|
||||||
'aio/content/examples/content-projection/**',
|
|
||||||
'aio/content/guide/content-projection.md',
|
|
||||||
'aio/content/guide/dependency-injection.md',
|
'aio/content/guide/dependency-injection.md',
|
||||||
'aio/content/examples/dependency-injection/**',
|
'aio/content/examples/dependency-injection/**',
|
||||||
'aio/content/images/guide/dependency-injection/**',
|
'aio/content/images/guide/dependency-injection/**',
|
||||||
@ -410,20 +422,19 @@ groups:
|
|||||||
'aio/content/guide/template-statements.md',
|
'aio/content/guide/template-statements.md',
|
||||||
'aio/content/guide/user-input.md',
|
'aio/content/guide/user-input.md',
|
||||||
'aio/content/examples/user-input/**',
|
'aio/content/examples/user-input/**',
|
||||||
'aio/content/images/guide/user-input/**',
|
'aio/content/images/guide/user-input/**'
|
||||||
'aio/content/guide/view-encapsulation.md',
|
|
||||||
'aio/content/examples/view-encapsulation/**',
|
|
||||||
'aio/content/images/guide/view-encapsulation/**',
|
|
||||||
'aio/content/special-elements/**'
|
|
||||||
])
|
])
|
||||||
reviewers:
|
reviewers:
|
||||||
users:
|
users:
|
||||||
- alxhub
|
- alxhub
|
||||||
- AndrewKushnir
|
- AndrewKushnir
|
||||||
- atscott
|
- atscott
|
||||||
|
- ~kara # do not request reviews from Kara, but allow her to approve PRs
|
||||||
|
- mhevery
|
||||||
- jessicajaniuk
|
- jessicajaniuk
|
||||||
# OOO as of 2020-09-28 - pkozlowski-opensource
|
# OOO as of 2020-09-28 - pkozlowski-opensource
|
||||||
|
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# Framework: Common
|
# Framework: Common
|
||||||
# =========================================================
|
# =========================================================
|
||||||
@ -433,7 +444,7 @@ groups:
|
|||||||
- *can-be-global-approved
|
- *can-be-global-approved
|
||||||
- *can-be-global-docs-approved
|
- *can-be-global-docs-approved
|
||||||
- >
|
- >
|
||||||
contains_any_globs(files.exclude("packages/core/schematics/**").exclude("packages/common/http/**"), [
|
contains_any_globs(files.exclude("packages/core/schematics/**"), [
|
||||||
'packages/common/**',
|
'packages/common/**',
|
||||||
'packages/examples/common/**',
|
'packages/examples/common/**',
|
||||||
])
|
])
|
||||||
@ -442,9 +453,12 @@ groups:
|
|||||||
- alxhub
|
- alxhub
|
||||||
- AndrewKushnir
|
- AndrewKushnir
|
||||||
- atscott
|
- atscott
|
||||||
|
- ~kara # do not request reviews from Kara, but allow her to approve PRs
|
||||||
|
- mhevery
|
||||||
- jessicajaniuk
|
- jessicajaniuk
|
||||||
# OOO as of 2020-09-28 - pkozlowski-opensource
|
# OOO as of 2020-09-28 - pkozlowski-opensource
|
||||||
|
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# Framework: Http
|
# Framework: Http
|
||||||
# =========================================================
|
# =========================================================
|
||||||
@ -467,6 +481,7 @@ groups:
|
|||||||
- IgorMinar
|
- IgorMinar
|
||||||
- petebacondarwin
|
- petebacondarwin
|
||||||
|
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# Framework: Elements
|
# Framework: Elements
|
||||||
# =========================================================
|
# =========================================================
|
||||||
@ -487,6 +502,7 @@ groups:
|
|||||||
- andrewseguin
|
- andrewseguin
|
||||||
- gkalpak
|
- gkalpak
|
||||||
|
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# Framework: Forms
|
# Framework: Forms
|
||||||
# =========================================================
|
# =========================================================
|
||||||
@ -519,6 +535,7 @@ groups:
|
|||||||
users:
|
users:
|
||||||
- AndrewKushnir
|
- AndrewKushnir
|
||||||
|
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# Framework: i18n
|
# Framework: i18n
|
||||||
# =========================================================
|
# =========================================================
|
||||||
@ -549,8 +566,10 @@ groups:
|
|||||||
reviewers:
|
reviewers:
|
||||||
users:
|
users:
|
||||||
- AndrewKushnir
|
- AndrewKushnir
|
||||||
|
- mhevery
|
||||||
- petebacondarwin
|
- petebacondarwin
|
||||||
|
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# Framework: Platform Server
|
# Framework: Platform Server
|
||||||
# =========================================================
|
# =========================================================
|
||||||
@ -562,16 +581,15 @@ groups:
|
|||||||
- >
|
- >
|
||||||
contains_any_globs(files, [
|
contains_any_globs(files, [
|
||||||
'packages/platform-server/**',
|
'packages/platform-server/**',
|
||||||
'aio/content/guide/prerendering.md',
|
|
||||||
'aio/content/guide/universal.md',
|
'aio/content/guide/universal.md',
|
||||||
'aio/content/examples/universal/**'
|
'aio/content/examples/universal/**'
|
||||||
])
|
])
|
||||||
reviewers:
|
reviewers:
|
||||||
users:
|
users:
|
||||||
- alan-agius4
|
|
||||||
- alxhub
|
- alxhub
|
||||||
- kyliau
|
- kyliau
|
||||||
|
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# Framework: Router
|
# Framework: Router
|
||||||
# =========================================================
|
# =========================================================
|
||||||
@ -587,18 +605,15 @@ groups:
|
|||||||
'aio/content/guide/router.md',
|
'aio/content/guide/router.md',
|
||||||
'aio/content/guide/router-tutorial.md',
|
'aio/content/guide/router-tutorial.md',
|
||||||
'aio/content/guide/router-tutorial-toh.md',
|
'aio/content/guide/router-tutorial-toh.md',
|
||||||
'aio/content/guide/routing-overview.md',
|
|
||||||
'aio/content/guide/router-reference.md',
|
|
||||||
'aio/content/examples/router-tutorial/**',
|
'aio/content/examples/router-tutorial/**',
|
||||||
'aio/content/examples/router/**',
|
'aio/content/examples/router/**',
|
||||||
'aio/content/images/guide/router/**',
|
'aio/content/images/guide/router/**'
|
||||||
'aio/content/guide/routing-with-urlmatcher.md',
|
|
||||||
'aio/content/examples/routing-with-urlmatcher/**'
|
|
||||||
])
|
])
|
||||||
reviewers:
|
reviewers:
|
||||||
users:
|
users:
|
||||||
- atscott
|
- atscott
|
||||||
|
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# Framework: Service Worker
|
# Framework: Service Worker
|
||||||
# =========================================================
|
# =========================================================
|
||||||
@ -618,7 +633,6 @@ groups:
|
|||||||
'aio/content/guide/service-worker-config.md',
|
'aio/content/guide/service-worker-config.md',
|
||||||
'aio/content/guide/service-worker-devops.md',
|
'aio/content/guide/service-worker-devops.md',
|
||||||
'aio/content/guide/service-worker-intro.md',
|
'aio/content/guide/service-worker-intro.md',
|
||||||
'aio/content/guide/service-worker-notifications.md',
|
|
||||||
'aio/content/images/guide/service-worker/**'
|
'aio/content/images/guide/service-worker/**'
|
||||||
])
|
])
|
||||||
reviewers:
|
reviewers:
|
||||||
@ -627,6 +641,7 @@ groups:
|
|||||||
- gkalpak
|
- gkalpak
|
||||||
- IgorMinar
|
- IgorMinar
|
||||||
|
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# Framework: Upgrade
|
# Framework: Upgrade
|
||||||
# =========================================================
|
# =========================================================
|
||||||
@ -657,6 +672,7 @@ groups:
|
|||||||
- gkalpak
|
- gkalpak
|
||||||
- petebacondarwin
|
- petebacondarwin
|
||||||
|
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# Framework: Testing
|
# Framework: Testing
|
||||||
# =========================================================
|
# =========================================================
|
||||||
@ -666,7 +682,7 @@ groups:
|
|||||||
- *can-be-global-approved
|
- *can-be-global-approved
|
||||||
- *can-be-global-docs-approved
|
- *can-be-global-docs-approved
|
||||||
- >
|
- >
|
||||||
contains_any_globs(files.exclude('packages/compiler-cli/**').exclude('packages/language-service/**').exclude('packages/service-worker/**'), [
|
contains_any_globs(files.exclude('packages/compiler-cli/**').exclude('packages/language-service/**'), [
|
||||||
'packages/**/testing/**',
|
'packages/**/testing/**',
|
||||||
'aio/content/guide/testing.md',
|
'aio/content/guide/testing.md',
|
||||||
'aio/content/guide/test-debugging.md',
|
'aio/content/guide/test-debugging.md',
|
||||||
@ -686,6 +702,7 @@ groups:
|
|||||||
- IgorMinar
|
- IgorMinar
|
||||||
# OOO as of 2020-09-28 - pkozlowski-opensource
|
# OOO as of 2020-09-28 - pkozlowski-opensource
|
||||||
|
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# Framework: Benchmarks
|
# Framework: Benchmarks
|
||||||
# =========================================================
|
# =========================================================
|
||||||
@ -702,6 +719,7 @@ groups:
|
|||||||
- IgorMinar
|
- IgorMinar
|
||||||
# OOO as of 2020-09-28 - pkozlowski-opensource
|
# OOO as of 2020-09-28 - pkozlowski-opensource
|
||||||
|
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# Framework: Playground
|
# Framework: Playground
|
||||||
# =========================================================
|
# =========================================================
|
||||||
@ -719,6 +737,7 @@ groups:
|
|||||||
- jelbourn
|
- jelbourn
|
||||||
# OOO as of 2020-09-28 - pkozlowski-opensource
|
# OOO as of 2020-09-28 - pkozlowski-opensource
|
||||||
|
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# Framework: Security
|
# Framework: Security
|
||||||
# =========================================================
|
# =========================================================
|
||||||
@ -740,13 +759,15 @@ groups:
|
|||||||
reviewers:
|
reviewers:
|
||||||
users:
|
users:
|
||||||
- IgorMinar
|
- IgorMinar
|
||||||
|
- mhevery
|
||||||
- jelbourn
|
- jelbourn
|
||||||
# OOO as of 2020-09-28 - pkozlowski-opensource
|
# OOO as of 2020-09-28 - pkozlowski-opensource
|
||||||
reviews:
|
reviews:
|
||||||
request: -1 # request reviews from everyone
|
request: -1 # request reviews from everyone
|
||||||
required: 2 # require at least 2 approvals
|
required: 2 # require at least 2 approvals
|
||||||
reviewed_for: required
|
reviewed_for: required
|
||||||
|
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# Bazel
|
# Bazel
|
||||||
# =========================================================
|
# =========================================================
|
||||||
@ -765,6 +786,7 @@ groups:
|
|||||||
- josephperrott
|
- josephperrott
|
||||||
- kyliau
|
- kyliau
|
||||||
|
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# Language Service
|
# Language Service
|
||||||
# =========================================================
|
# =========================================================
|
||||||
@ -785,6 +807,7 @@ groups:
|
|||||||
- atscott
|
- atscott
|
||||||
- zarend
|
- zarend
|
||||||
|
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# zone.js
|
# zone.js
|
||||||
# =========================================================
|
# =========================================================
|
||||||
@ -801,6 +824,7 @@ groups:
|
|||||||
reviewers:
|
reviewers:
|
||||||
users:
|
users:
|
||||||
- JiaLiPassion
|
- JiaLiPassion
|
||||||
|
- mhevery
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# in-memory-web-api
|
# in-memory-web-api
|
||||||
@ -835,6 +859,7 @@ groups:
|
|||||||
- alxhub
|
- alxhub
|
||||||
- josephperrott
|
- josephperrott
|
||||||
|
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# Integration Tests
|
# Integration Tests
|
||||||
# =========================================================
|
# =========================================================
|
||||||
@ -850,6 +875,8 @@ groups:
|
|||||||
users:
|
users:
|
||||||
- IgorMinar
|
- IgorMinar
|
||||||
- josephperrott
|
- josephperrott
|
||||||
|
- mhevery
|
||||||
|
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# Docs: Contributors
|
# Docs: Contributors
|
||||||
@ -869,6 +896,7 @@ groups:
|
|||||||
- mgechev
|
- mgechev
|
||||||
- twerske
|
- twerske
|
||||||
|
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# Docs: Gettings Started & Tutorial
|
# Docs: Gettings Started & Tutorial
|
||||||
# =========================================================
|
# =========================================================
|
||||||
@ -903,6 +931,7 @@ groups:
|
|||||||
- IgorMinar
|
- IgorMinar
|
||||||
- jelbourn
|
- jelbourn
|
||||||
|
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# Docs: Marketing
|
# Docs: Marketing
|
||||||
# =========================================================
|
# =========================================================
|
||||||
@ -951,6 +980,7 @@ groups:
|
|||||||
users:
|
users:
|
||||||
- alxhub
|
- alxhub
|
||||||
|
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# Docs: Packaging, Tooling, Releasing
|
# Docs: Packaging, Tooling, Releasing
|
||||||
# =========================================================
|
# =========================================================
|
||||||
@ -968,7 +998,6 @@ groups:
|
|||||||
'aio/content/guide/releases.md',
|
'aio/content/guide/releases.md',
|
||||||
'aio/content/guide/updating.md',
|
'aio/content/guide/updating.md',
|
||||||
'aio/content/guide/deprecations.md',
|
'aio/content/guide/deprecations.md',
|
||||||
'aio/content/guide/migration-legacy-message-id.md',
|
|
||||||
'aio/content/guide/migration-renderer.md',
|
'aio/content/guide/migration-renderer.md',
|
||||||
'aio/content/guide/migration-undecorated-classes.md',
|
'aio/content/guide/migration-undecorated-classes.md',
|
||||||
'aio/content/guide/migration-dynamic-flag.md',
|
'aio/content/guide/migration-dynamic-flag.md',
|
||||||
@ -976,7 +1005,7 @@ groups:
|
|||||||
'aio/content/guide/migration-localize.md',
|
'aio/content/guide/migration-localize.md',
|
||||||
'aio/content/guide/migration-module-with-providers.md',
|
'aio/content/guide/migration-module-with-providers.md',
|
||||||
'aio/content/guide/static-query-migration.md',
|
'aio/content/guide/static-query-migration.md',
|
||||||
'aio/content/guide/updating-to-version-12.md',
|
'aio/content/guide/updating-to-version-11.md',
|
||||||
'aio/content/guide/ivy-compatibility.md',
|
'aio/content/guide/ivy-compatibility.md',
|
||||||
'aio/content/guide/ivy-compatibility-examples.md'
|
'aio/content/guide/ivy-compatibility-examples.md'
|
||||||
])
|
])
|
||||||
@ -985,23 +1014,6 @@ groups:
|
|||||||
- IgorMinar
|
- IgorMinar
|
||||||
- jelbourn
|
- jelbourn
|
||||||
|
|
||||||
# =========================================================
|
|
||||||
# Docs: Angular DevTools
|
|
||||||
# =========================================================
|
|
||||||
docs-devtools:
|
|
||||||
<<: *defaults
|
|
||||||
conditions:
|
|
||||||
- *can-be-global-approved
|
|
||||||
- *can-be-global-docs-approved
|
|
||||||
- >
|
|
||||||
contains_any_globs(files, [
|
|
||||||
'aio/content/guide/devtools.md',
|
|
||||||
'aio/content/images/guide/devtools/**'
|
|
||||||
])
|
|
||||||
reviewers:
|
|
||||||
users:
|
|
||||||
- mgechev
|
|
||||||
- twerske
|
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# Tooling: Compiler API shared with Angular CLI
|
# Tooling: Compiler API shared with Angular CLI
|
||||||
@ -1024,10 +1036,11 @@ groups:
|
|||||||
- kyliau
|
- kyliau
|
||||||
- IgorMinar
|
- IgorMinar
|
||||||
reviews:
|
reviews:
|
||||||
request: -1 # request reviews from everyone
|
request: -1 # request reviews from everyone
|
||||||
required: 2 # require at least 2 approvals
|
required: 2 # require at least 2 approvals
|
||||||
reviewed_for: required
|
reviewed_for: required
|
||||||
|
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# Docs: CLI
|
# Docs: CLI
|
||||||
# =========================================================
|
# =========================================================
|
||||||
@ -1063,6 +1076,7 @@ groups:
|
|||||||
- IgorMinar
|
- IgorMinar
|
||||||
- mgechev
|
- mgechev
|
||||||
|
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# Docs: CLI Libraries
|
# Docs: CLI Libraries
|
||||||
# =========================================================
|
# =========================================================
|
||||||
@ -1083,6 +1097,7 @@ groups:
|
|||||||
- IgorMinar
|
- IgorMinar
|
||||||
- mgechev
|
- mgechev
|
||||||
|
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# Docs: Schematics
|
# Docs: Schematics
|
||||||
# =========================================================
|
# =========================================================
|
||||||
@ -1105,6 +1120,7 @@ groups:
|
|||||||
- IgorMinar
|
- IgorMinar
|
||||||
- mgechev
|
- mgechev
|
||||||
|
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# Docs-infra
|
# Docs-infra
|
||||||
# =========================================================
|
# =========================================================
|
||||||
@ -1131,6 +1147,7 @@ groups:
|
|||||||
'aio/content/guide/reviewing-content.md',
|
'aio/content/guide/reviewing-content.md',
|
||||||
'aio/content/guide/updating-content-github-ui.md',
|
'aio/content/guide/updating-content-github-ui.md',
|
||||||
'aio/content/guide/updating-search-keywords.md',
|
'aio/content/guide/updating-search-keywords.md',
|
||||||
|
'aio/content/guide/visual-studio-2015.md'
|
||||||
])
|
])
|
||||||
reviewers:
|
reviewers:
|
||||||
users:
|
users:
|
||||||
@ -1138,6 +1155,7 @@ groups:
|
|||||||
- IgorMinar
|
- IgorMinar
|
||||||
- petebacondarwin
|
- petebacondarwin
|
||||||
|
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# Dev-infra
|
# Dev-infra
|
||||||
# =========================================================
|
# =========================================================
|
||||||
@ -1178,6 +1196,7 @@ groups:
|
|||||||
'tools/source-map-test/**',
|
'tools/source-map-test/**',
|
||||||
'tools/symbol-extractor/**',
|
'tools/symbol-extractor/**',
|
||||||
'tools/testing/**',
|
'tools/testing/**',
|
||||||
|
'tools/ts-api-guardian/**',
|
||||||
'tools/tslint/**',
|
'tools/tslint/**',
|
||||||
'tools/utils/**',
|
'tools/utils/**',
|
||||||
'tools/yarn/**',
|
'tools/yarn/**',
|
||||||
@ -1192,6 +1211,7 @@ groups:
|
|||||||
- IgorMinar
|
- IgorMinar
|
||||||
- josephperrott
|
- josephperrott
|
||||||
|
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# Public API
|
# Public API
|
||||||
# =========================================================
|
# =========================================================
|
||||||
@ -1221,13 +1241,13 @@ groups:
|
|||||||
- jelbourn
|
- jelbourn
|
||||||
- petebacondarwin
|
- petebacondarwin
|
||||||
- jessicajaniuk
|
- jessicajaniuk
|
||||||
- zarend
|
|
||||||
# OOO as of 2020-09-28 - pkozlowski-opensource
|
# OOO as of 2020-09-28 - pkozlowski-opensource
|
||||||
reviews:
|
reviews:
|
||||||
request: 4 # Request reviews from four people
|
request: 4 # Request reviews from four people
|
||||||
required: 3 # Require that three people approve
|
required: 3 # Require that three people approve
|
||||||
reviewed_for: required
|
reviewed_for: required
|
||||||
|
|
||||||
|
|
||||||
# ================================================
|
# ================================================
|
||||||
# Size tracking
|
# Size tracking
|
||||||
# ================================================
|
# ================================================
|
||||||
@ -1250,13 +1270,13 @@ groups:
|
|||||||
- jelbourn
|
- jelbourn
|
||||||
- petebacondarwin
|
- petebacondarwin
|
||||||
- jessicajaniuk
|
- jessicajaniuk
|
||||||
- zarend
|
|
||||||
# OOO as of 2020-09-28 - pkozlowski-opensource
|
# OOO as of 2020-09-28 - pkozlowski-opensource
|
||||||
reviews:
|
reviews:
|
||||||
request: 4 # Request reviews from four people
|
request: 4 # Request reviews from four people
|
||||||
required: 2 # Require that two people approve
|
required: 2 # Require that two people approve
|
||||||
reviewed_for: required
|
reviewed_for: required
|
||||||
|
|
||||||
|
|
||||||
# ================================================
|
# ================================================
|
||||||
# Circular dependencies
|
# Circular dependencies
|
||||||
# ================================================
|
# ================================================
|
||||||
@ -1279,12 +1299,12 @@ groups:
|
|||||||
- jelbourn
|
- jelbourn
|
||||||
- petebacondarwin
|
- petebacondarwin
|
||||||
- jessicajaniuk
|
- jessicajaniuk
|
||||||
- zarend
|
|
||||||
# OOO as of 2020-09-28 - pkozlowski-opensource
|
# OOO as of 2020-09-28 - pkozlowski-opensource
|
||||||
|
|
||||||
####################################################################################
|
|
||||||
# Special Cases
|
####################################################################################
|
||||||
####################################################################################
|
# Special Cases
|
||||||
|
####################################################################################
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# Code Ownership
|
# Code Ownership
|
||||||
@ -1305,3 +1325,37 @@ groups:
|
|||||||
- atscott
|
- atscott
|
||||||
- jelbourn
|
- jelbourn
|
||||||
- josephperrott
|
- josephperrott
|
||||||
|
- mhevery
|
||||||
|
|
||||||
|
|
||||||
|
# ====================================================
|
||||||
|
# Catch all for if no groups match the code change
|
||||||
|
# ====================================================
|
||||||
|
fallback:
|
||||||
|
<<: *defaults
|
||||||
|
# A group is considered to be `active` for a PR if at least one of group's
|
||||||
|
# conditions matches the PR.
|
||||||
|
#
|
||||||
|
# The PullApprove CI check should fail if a PR has no `active` groups, as
|
||||||
|
# this indicates the PR is modifying a file that has no owner.
|
||||||
|
#
|
||||||
|
# This is enforced through the pullapprove verification check done
|
||||||
|
# as part of the CircleCI lint job. Failures in this lint job should be
|
||||||
|
# fixed as part of the PR. This can be done by updating the
|
||||||
|
# `.pullapprove.yml` file cover the unmatched path.
|
||||||
|
# The pullapprove verification script is part of the ng-dev tool and can be
|
||||||
|
# run locally with the command: `yarn -s ng-dev pullapprove verify`
|
||||||
|
#
|
||||||
|
# For cases in which the verification check fails to ensure coverage, this
|
||||||
|
# group will be active. The expectation is that this should be remedied
|
||||||
|
# before merging the PR as described above. In an emergency situation
|
||||||
|
# `global-approvers` can still approve PRs that match this `fallback` rule,
|
||||||
|
# but that should be an exception and not an expectation.
|
||||||
|
conditions:
|
||||||
|
- *no-groups-above-this-active
|
||||||
|
# When any of the `global-*` groups is approved, they cause other groups to deactivate.
|
||||||
|
# In those cases, the condition above would evaluate to `true` while in reality, only a global
|
||||||
|
# approval has been provided. To ensure we don't activate the fallback group in such cases,
|
||||||
|
# ensure that no explicit global approval has been provided.
|
||||||
|
- *can-be-global-approved
|
||||||
|
- *can-be-global-docs-approved
|
||||||
|
47
.travis.yml
47
.travis.yml
@ -1,47 +0,0 @@
|
|||||||
dist: trusty
|
|
||||||
sudo: required
|
|
||||||
language: node_js
|
|
||||||
node_js:
|
|
||||||
- 12.14.1
|
|
||||||
os:
|
|
||||||
- linux
|
|
||||||
env:
|
|
||||||
global:
|
|
||||||
- DBUS_SESSION_BUS_ADDRESS=/dev/null
|
|
||||||
- DISPLAY=:99.0
|
|
||||||
- CHROME_BIN=chromium-browser
|
|
||||||
- LATEST_RELEASE=4.0.0
|
|
||||||
# Temporarily disabled until there is a new release branch for 4.0.0
|
|
||||||
# - LATEST_RELEASE_BRANCH=2.4.xk
|
|
||||||
- TASK_FLAGS="--dgeni-log=warn"
|
|
||||||
matrix:
|
|
||||||
# current angular release jobs
|
|
||||||
- TASK=lint
|
|
||||||
- TASK="run-e2e-tests --fast" SCRIPT=examples-install.sh
|
|
||||||
- TASK=build-compile SCRIPT=deploy-install.sh WAIT="travis_wait 50" POST_SCRIPT="check-docs.sh -v"
|
|
||||||
# current angular release branch jobs
|
|
||||||
# - TASK="run-e2e-tests --fast" SCRIPT=examples-install-preview.sh PREVIEW_BRANCH=$LATEST_RELEASE_BRANCH
|
|
||||||
# - TASK=build-compile SCRIPT=deploy-install-preview.sh PREVIEW_BRANCH=$LATEST_RELEASE_BRANCH WAIT="travis_wait 50" POST_SCRIPT="check-docs.sh -v"
|
|
||||||
# angular master jobs
|
|
||||||
- TASK="run-e2e-tests --fast" SCRIPT=examples-install-preview.sh PREVIEW_BRANCH=master
|
|
||||||
- TASK=build-compile SCRIPT=deploy-install-preview.sh PREVIEW_BRANCH=master WAIT="travis_wait 50" POST_SCRIPT="check-docs.sh -v"
|
|
||||||
matrix:
|
|
||||||
fast_finish: true
|
|
||||||
allow_failures:
|
|
||||||
# allow current angular release branch and master to fail
|
|
||||||
# these should be moved to a daily task instead of being ran on every PR
|
|
||||||
# - env: TASK="run-e2e-tests --fast" SCRIPT=examples-install-preview.sh PREVIEW_BRANCH=$LATEST_RELEASE_BRANCH
|
|
||||||
# - env: TASK=build-compile SCRIPT=deploy-install-preview.sh PREVIEW_BRANCH=$LATEST_RELEASE_BRANCH WAIT="travis_wait 50" POST_SCRIPT="check-docs.sh -v"
|
|
||||||
- env: TASK="run-e2e-tests --fast" SCRIPT=examples-install-preview.sh PREVIEW_BRANCH=master
|
|
||||||
- env: TASK=build-compile SCRIPT=deploy-install-preview.sh PREVIEW_BRANCH=master WAIT="travis_wait 50" POST_SCRIPT="check-docs.sh -v"
|
|
||||||
before_install:
|
|
||||||
- source ./scripts/env-set.sh
|
|
||||||
- ./scripts/before-install.sh
|
|
||||||
install:
|
|
||||||
- npm install --no-optional
|
|
||||||
- if [[ -n "$SCRIPT" ]]; then echo "EXTRA INSTALL $SCRIPT"; ./scripts/$SCRIPT; fi
|
|
||||||
before_script:
|
|
||||||
- sh -e /etc/init.d/xvfb start
|
|
||||||
script:
|
|
||||||
- $WAIT gulp $TASK $TASK_FLAGS
|
|
||||||
- if [[ -n "$POST_SCRIPT" ]]; then ./scripts/$POST_SCRIPT; fi
|
|
147392
.yarn/releases/yarn-1.22.10.cjs
vendored
147392
.yarn/releases/yarn-1.22.10.cjs
vendored
File diff suppressed because one or more lines are too long
10
BUILD.bazel
10
BUILD.bazel
@ -19,12 +19,12 @@ filegroup(
|
|||||||
name = "web_test_bootstrap_scripts",
|
name = "web_test_bootstrap_scripts",
|
||||||
# do not sort
|
# do not sort
|
||||||
srcs = [
|
srcs = [
|
||||||
"@npm//:node_modules/core-js-bundle/index.js",
|
"@npm//:node_modules/core-js/client/core.js",
|
||||||
"//packages/zone.js/bundles:zone.umd.js",
|
"//packages/zone.js/bundles:zone.umd.js",
|
||||||
"//packages/zone.js/bundles:zone-testing.umd.js",
|
"//packages/zone.js/bundles:zone-testing.umd.js",
|
||||||
"//packages/zone.js/bundles:task-tracking.umd.js",
|
"//packages/zone.js/bundles:task-tracking.umd.js",
|
||||||
"//:test-events.js",
|
"//:test-events.js",
|
||||||
"//:third_party/shims_for_internal_tests.js",
|
"//:third_party/shims_for_IE.js",
|
||||||
# Including systemjs because it defines `__eval`, which produces correct stack traces.
|
# Including systemjs because it defines `__eval`, which produces correct stack traces.
|
||||||
"@npm//:node_modules/systemjs/dist/system.src.js",
|
"@npm//:node_modules/systemjs/dist/system.src.js",
|
||||||
"@npm//:node_modules/reflect-metadata/Reflect.js",
|
"@npm//:node_modules/reflect-metadata/Reflect.js",
|
||||||
@ -36,18 +36,18 @@ filegroup(
|
|||||||
srcs = [
|
srcs = [
|
||||||
# We also declare the unminified AngularJS files since these can be used for
|
# We also declare the unminified AngularJS files since these can be used for
|
||||||
# local debugging (e.g. see: packages/upgrade/test/common/test_helpers.ts)
|
# local debugging (e.g. see: packages/upgrade/test/common/test_helpers.ts)
|
||||||
|
"@npm//:node_modules/angular/angular.js",
|
||||||
|
"@npm//:node_modules/angular/angular.min.js",
|
||||||
"@npm//:node_modules/angular-1.5/angular.js",
|
"@npm//:node_modules/angular-1.5/angular.js",
|
||||||
"@npm//:node_modules/angular-1.5/angular.min.js",
|
"@npm//:node_modules/angular-1.5/angular.min.js",
|
||||||
"@npm//:node_modules/angular-1.6/angular.js",
|
"@npm//:node_modules/angular-1.6/angular.js",
|
||||||
"@npm//:node_modules/angular-1.6/angular.min.js",
|
"@npm//:node_modules/angular-1.6/angular.min.js",
|
||||||
"@npm//:node_modules/angular-1.7/angular.js",
|
"@npm//:node_modules/angular-1.7/angular.js",
|
||||||
"@npm//:node_modules/angular-1.7/angular.min.js",
|
"@npm//:node_modules/angular-1.7/angular.min.js",
|
||||||
|
"@npm//:node_modules/angular-mocks/angular-mocks.js",
|
||||||
"@npm//:node_modules/angular-mocks-1.5/angular-mocks.js",
|
"@npm//:node_modules/angular-mocks-1.5/angular-mocks.js",
|
||||||
"@npm//:node_modules/angular-mocks-1.6/angular-mocks.js",
|
"@npm//:node_modules/angular-mocks-1.6/angular-mocks.js",
|
||||||
"@npm//:node_modules/angular-mocks-1.7/angular-mocks.js",
|
"@npm//:node_modules/angular-mocks-1.7/angular-mocks.js",
|
||||||
"@npm//:node_modules/angular-mocks-1.8/angular-mocks.js",
|
|
||||||
"@npm//:node_modules/angular-1.8/angular.js",
|
|
||||||
"@npm//:node_modules/angular-1.8/angular.min.js",
|
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
1147
CHANGELOG.md
1147
CHANGELOG.md
File diff suppressed because it is too large
Load Diff
124
README-en.md
124
README-en.md
@ -1,124 +0,0 @@
|
|||||||
# Angular.io
|
|
||||||
Angular.io is site for Angular 2 **documentation** .
|
|
||||||
|
|
||||||
This site also includes links to other helpful angular resources including
|
|
||||||
Angular 2, Angular 1, Angular Material, and AngularFire.
|
|
||||||
|
|
||||||
## Issues
|
|
||||||
|
|
||||||
Please file **Developer Guide, Cookbook, and code sample issues _only_** in this
|
|
||||||
[Angular.io](https://github.com/angular/angular.io/issues) github repo.
|
|
||||||
|
|
||||||
**Angular API issues, cheatsheet corrections, feature requests, defect reports, and technical questions** concerning Angular itself
|
|
||||||
belong in the [**angular source code**](https://github.com/angular/angular/issues) github repo.
|
|
||||||
We can't handle those topics here and will ask you to re-post them on the angular repo.
|
|
||||||
|
|
||||||
## How you can help
|
|
||||||
|
|
||||||
Filing issues is helpful but **pull requests** that improve the docs are even better!
|
|
||||||
|
|
||||||
Learn how to [contribute to Angular.io](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md).
|
|
||||||
|
|
||||||
## Development Setup
|
|
||||||
This site relies heavily on node and npm.
|
|
||||||
|
|
||||||
1. Make sure you are using the latest node and npm;
|
|
||||||
if not install [nvm](https://github.com/creationix/nvm) to get node going on your machine.
|
|
||||||
|
|
||||||
1. install these npm packages *globally*: `npm install -g harp gulp protractor`
|
|
||||||
|
|
||||||
1. clone this repo and the [angular source code repo](https://github.com/angular/angular) to the same parent directory.
|
|
||||||
The two cloned repo directories must be sibling.
|
|
||||||
|
|
||||||
1. cd into root directory `Angular.io/`
|
|
||||||
|
|
||||||
1. install the *all-docs* local packages by running `npm install`
|
|
||||||
> If running node v.5+, you probably must rebuild `node-sass` in a separate step: `npm rebuild node-sass`
|
|
||||||
|
|
||||||
1. See [below](#code-sample-development) for code sample development preparation.
|
|
||||||
|
|
||||||
## Content Development
|
|
||||||
All documentation content is written in Jade which has [its own syntax](http://jade-lang.com/reference/).
|
|
||||||
Be aware of the strict demands imposed by this significant-whitespace language.
|
|
||||||
We strongly recommend running one of the gulp `serve-and-sync` commands [described below](#serve-and-sync)
|
|
||||||
while editing content so you can see the effect of your changes *as you type*.
|
|
||||||
|
|
||||||
The documentation relies on specific styles and mixins.
|
|
||||||
Learn about those in the [documentation styleguide](https://angular.io/docs/ts/latest/styleguide.html).
|
|
||||||
|
|
||||||
The jade documentation files are language-specific directories under either `public/docs/`.
|
|
||||||
For example, all of the TypeScript docs are in `public/docs/ts/latest`, e.g.
|
|
||||||
- `public/docs/ts/latest/quickstart.jade`
|
|
||||||
- `public/docs/ts/latest/guide/architecture.jade`
|
|
||||||
- `public/docs/ts/latest/cookbook/component-communication.jade`
|
|
||||||
- `public/docs/ts/latest/tutorial/toh-pt5.jade`
|
|
||||||
|
|
||||||
### Local server with watches and browser reload
|
|
||||||
1. cd into root directory `Angular.io/`
|
|
||||||
1. run `gulp serve-and-sync`
|
|
||||||
1. browser will launch on localhost:3000 and stay refreshed automatically.
|
|
||||||
|
|
||||||
<a id="serve-and-sync"></a>
|
|
||||||
If you are only going to work on a specific part of the docs, such as the dev guide, then you can use one of the more specific gulp tasks to only watch those parts of the file system:
|
|
||||||
|
|
||||||
* `gulp serve-and-sync` : watch all the local Jade/Sass files, the API source and examples, and the dev guide files
|
|
||||||
* `gulp serve-and-sync-api` : watch only the API source and example files
|
|
||||||
* `gulp serve-and-sync-devguide` : watch only the dev guide files
|
|
||||||
* `gulp build-and-serve` : watch only the local Jade/Sass files
|
|
||||||
|
|
||||||
## Code Sample Development
|
|
||||||
|
|
||||||
All documentation is supported by sample code and plunkers.
|
|
||||||
Such code resides in the `public/docs/_examples` directory, under chapter-specific directories, further divided by language track.
|
|
||||||
|
|
||||||
For example, the TypeScript QuickStart sample is in `public/docs/_examples/quickstart/ts`.
|
|
||||||
|
|
||||||
All samples are in a consistent directory structure using the same styles and the same npm packages, including the latest release of Angular 2.
|
|
||||||
This consistency is possible in part thanks to gulp-driven tooling.
|
|
||||||
To run the samples locally and confirm that they work properly,
|
|
||||||
take the following extra steps to prepare the environment:
|
|
||||||
|
|
||||||
1. cd to `public/docs/_examples`
|
|
||||||
|
|
||||||
1. install the canonical node packages for all samples by running `npm install`
|
|
||||||
|
|
||||||
1. cd back up to `Angular.io` root: `cd ../../..`
|
|
||||||
|
|
||||||
1. run `gulp add-example-boilerplate` (elevate to admin on Windows)
|
|
||||||
to copy canonical files to the sample directories and create symlinks there for node_modules and typings.
|
|
||||||
|
|
||||||
Now cd into any particular sample's language directory (e.g., `public/docs/_examples/quickstart/ts`) and try:
|
|
||||||
- `npm start` to simultaneously compile-with-watch and serve-in-browser-with-watch
|
|
||||||
- `npm run tsc` to compile only
|
|
||||||
- `npm run lite` to serve-and-watch in browser
|
|
||||||
|
|
||||||
Look at the scripts in `package.json` for other options.
|
|
||||||
Also, open any `plunkr.no-link.html` to see the code execute in plunker
|
|
||||||
(you may have to run `gulp build-plunkers` first to create/update).
|
|
||||||
|
|
||||||
### Sample end-to-end tests
|
|
||||||
|
|
||||||
All samples should be covered to some degree by end-to-end tests:
|
|
||||||
- `gulp run-e2e-tests` to run all TypeScript and JavaScript tests
|
|
||||||
- `gulp run-e2e-tests --lang=dart` to run all Dart tests
|
|
||||||
- `gulp run-e2e-tests --lang=all` to run TypeScript, JavaScript, and Dart tests
|
|
||||||
- `gulp run-e2e-tests --filter=quickstart` to filter the examples to run, by name
|
|
||||||
- `gulp run-e2e-tests --fast` to ignore npm install, webdriver update and boilerplate copy
|
|
||||||
|
|
||||||
Any combination of options is possible.
|
|
||||||
|
|
||||||
|
|
||||||
## Technology Used
|
|
||||||
- Angular 1.x: The production ready version of Angular
|
|
||||||
- Angular Material: An implementation of Material Design in Angular.js
|
|
||||||
- Gulp: node-based tooling
|
|
||||||
- Harp: The static web server with built-in preprocessing.
|
|
||||||
- Sass: A professional grade CSS extension language
|
|
||||||
- Normalize: A modern, HTML5-ready alternative to CSS resets
|
|
||||||
- Grids: A highly customizable CSS Grid Framework built with Sass
|
|
||||||
- Prettify: A JS module and CSS for syntax highlighting of source code snippets.
|
|
||||||
- Icomoon: Custom built icon fonts
|
|
||||||
|
|
||||||
|
|
||||||
## License
|
|
||||||
Powered by Google ©2010-2016. Code licensed under an [MIT-style License](https://github.com/angular.io/blob/master/LICENSE). Documentation licensed under [CC BY 4.0](http://creativecommons.org/licenses/by/4.0/).
|
|
@ -1,4 +1,4 @@
|
|||||||
<h1 align="center">Angular - The modern web developer's platform.</h1>
|
<h1 align="center">Angular - One framework. Mobile & desktop.</h1>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<img src="aio/src/assets/images/logos/angular/angular.png" alt="angular-logo" width="120px" height="120px"/>
|
<img src="aio/src/assets/images/logos/angular/angular.png" alt="angular-logo" width="120px" height="120px"/>
|
||||||
|
56
WORKSPACE
56
WORKSPACE
@ -8,8 +8,8 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
|
|||||||
# Fetch rules_nodejs so we can install our npm dependencies
|
# Fetch rules_nodejs so we can install our npm dependencies
|
||||||
http_archive(
|
http_archive(
|
||||||
name = "build_bazel_rules_nodejs",
|
name = "build_bazel_rules_nodejs",
|
||||||
sha256 = "4681ca88d512d57196d064d1441549080d8d17d119174a1229d1717a16a4a489",
|
sha256 = "bfacf15161d96a6a39510e7b3d3b522cf61cb8b82a31e79400a84c5abcab5347",
|
||||||
urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/4.0.0-beta.1/rules_nodejs-4.0.0-beta.1.tar.gz"],
|
urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/3.2.1/rules_nodejs-3.2.1.tar.gz"],
|
||||||
)
|
)
|
||||||
|
|
||||||
# Check the rules_nodejs version and download npm dependencies
|
# Check the rules_nodejs version and download npm dependencies
|
||||||
@ -21,7 +21,7 @@ check_rules_nodejs_version(minimum_version_string = "2.2.0")
|
|||||||
|
|
||||||
# Setup the Node.js toolchain
|
# Setup the Node.js toolchain
|
||||||
node_repositories(
|
node_repositories(
|
||||||
node_version = "14.16.1",
|
node_version = "12.14.1",
|
||||||
package_json = ["//:package.json"],
|
package_json = ["//:package.json"],
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -34,6 +34,11 @@ yarn_install(
|
|||||||
yarn_lock = "//:yarn.lock",
|
yarn_lock = "//:yarn.lock",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Load angular dependencies
|
||||||
|
load("//packages/bazel:package.bzl", "rules_angular_dev_dependencies")
|
||||||
|
|
||||||
|
rules_angular_dev_dependencies()
|
||||||
|
|
||||||
# Load protractor dependencies
|
# Load protractor dependencies
|
||||||
load("@npm//@bazel/protractor:package.bzl", "npm_bazel_protractor_dependencies")
|
load("@npm//@bazel/protractor:package.bzl", "npm_bazel_protractor_dependencies")
|
||||||
|
|
||||||
@ -44,21 +49,40 @@ load("@io_bazel_rules_webtesting//web:repositories.bzl", "web_test_repositories"
|
|||||||
|
|
||||||
web_test_repositories()
|
web_test_repositories()
|
||||||
|
|
||||||
load("//dev-infra/bazel/browsers:browser_repositories.bzl", "browser_repositories")
|
load("//dev-infra/browsers:browser_repositories.bzl", "browser_repositories")
|
||||||
|
|
||||||
browser_repositories()
|
browser_repositories()
|
||||||
|
|
||||||
load("//packages/common/locales/generate-locales-tool:cldr-data.bzl", "cldr_data_repository")
|
# Setup the rules_sass toolchain
|
||||||
|
load("@io_bazel_rules_sass//:defs.bzl", "sass_repositories")
|
||||||
|
|
||||||
cldr_data_repository(
|
sass_repositories()
|
||||||
name = "cldr_data",
|
|
||||||
# Since we use the Github archives for CLDR 37, we need to specify a path
|
# Setup the skydoc toolchain
|
||||||
# to the available locales. This wouldn't be needed with CLDR 39 as that
|
load("@io_bazel_skydoc//skylark:skylark.bzl", "skydoc_repositories")
|
||||||
# comes with an official JSON archive not containing a version suffix.
|
|
||||||
available_locales_path = "cldr-core-37.0.0/availableLocales.json",
|
skydoc_repositories()
|
||||||
urls = {
|
|
||||||
"https://github.com/unicode-cldr/cldr-core/archive/37.0.0.zip": "32b5c49c3874aa342b90412c207b42e7aefb2435295891fb714c34ce58b3c706",
|
load("@bazel_toolchains//rules:environments.bzl", "clang_env")
|
||||||
"https://github.com/unicode-cldr/cldr-dates-full/archive/37.0.0.zip": "e1c410dd8ad7d75df4a5393efaf5d28f0d56c0fa126c5d66e171a3f21a988a1e",
|
load("@bazel_toolchains//rules:rbe_repo.bzl", "rbe_autoconfig")
|
||||||
"https://github.com/unicode-cldr/cldr-numbers-full/archive/37.0.0.zip": "a921b90cf7f436e63fbdd55880f96e39a203acd9e174b0ceafa20a02c242a12e",
|
|
||||||
},
|
rbe_autoconfig(
|
||||||
|
name = "rbe_ubuntu1604_angular",
|
||||||
|
# Need to specify a base container digest in order to ensure that we can use the checked-in
|
||||||
|
# platform configurations for the "ubuntu16_04" image. Otherwise the autoconfig rule would
|
||||||
|
# need to pull the image and run it in order determine the toolchain configuration. See:
|
||||||
|
# https://github.com/bazelbuild/bazel-toolchains/blob/4.0.0/configs/ubuntu16_04_clang/versions.bzl
|
||||||
|
base_container_digest = "sha256:f6568d8168b14aafd1b707019927a63c2d37113a03bcee188218f99bd0327ea1",
|
||||||
|
# Note that if you change the `digest`, you might also need to update the
|
||||||
|
# `base_container_digest` to make sure marketplace.gcr.io/google/rbe-ubuntu16-04-webtest:<digest>
|
||||||
|
# and marketplace.gcr.io/google/rbe-ubuntu16-04:<base_container_digest> have
|
||||||
|
# the same Clang and JDK installed. Clang is needed because of the dependency on
|
||||||
|
# @com_google_protobuf. Java is needed for the Bazel's test executor Java tool.
|
||||||
|
digest = "sha256:dddaaddbe07a61c2517f9b08c4977fc23c4968fcb6c0b8b5971e955d2de7a961",
|
||||||
|
env = clang_env(),
|
||||||
|
registry = "marketplace.gcr.io",
|
||||||
|
# We can't use the default "ubuntu16_04" RBE image provided by the autoconfig because we need
|
||||||
|
# a specific Linux kernel that comes with "libx11" in order to run headless browser tests.
|
||||||
|
repository = "google/rbe-ubuntu16-04-webtest",
|
||||||
|
use_checked_in_confs = "Force",
|
||||||
)
|
)
|
||||||
|
@ -1,91 +0,0 @@
|
|||||||
{
|
|
||||||
"root": true,
|
|
||||||
"overrides": [
|
|
||||||
{
|
|
||||||
"files": [
|
|
||||||
"*.ts"
|
|
||||||
],
|
|
||||||
"parserOptions": {
|
|
||||||
"project": [
|
|
||||||
"tsconfig.json",
|
|
||||||
"tests/e2e/tsconfig.json"
|
|
||||||
],
|
|
||||||
"createDefaultProgram": true
|
|
||||||
},
|
|
||||||
"extends": [
|
|
||||||
"plugin:@angular-eslint/ng-cli-compat",
|
|
||||||
"plugin:@angular-eslint/ng-cli-compat--formatting-add-on",
|
|
||||||
"plugin:@angular-eslint/template/process-inline-templates"
|
|
||||||
],
|
|
||||||
"rules": {
|
|
||||||
"@typescript-eslint/ban-types": "error",
|
|
||||||
"@angular-eslint/component-selector": [
|
|
||||||
"error",
|
|
||||||
{
|
|
||||||
"type": "element",
|
|
||||||
"prefix": "aio",
|
|
||||||
"style": "kebab-case"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"@angular-eslint/directive-selector": [
|
|
||||||
"error",
|
|
||||||
{
|
|
||||||
"type": "attribute",
|
|
||||||
"prefix": "aio",
|
|
||||||
"style": "camelCase"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"dot-notation": "error",
|
|
||||||
"indent": "off",
|
|
||||||
"@typescript-eslint/member-delimiter-style": ["error", {
|
|
||||||
"singleline": {
|
|
||||||
"delimiter": "comma",
|
|
||||||
"requireLast": false
|
|
||||||
}
|
|
||||||
}],
|
|
||||||
"@typescript-eslint/member-ordering": "off",
|
|
||||||
"@typescript-eslint/naming-convention": "off",
|
|
||||||
"no-console": ["error", {"allow": ["log", "warn", "error"]}],
|
|
||||||
"no-empty-function": "off",
|
|
||||||
"no-restricted-syntax": [
|
|
||||||
"error",
|
|
||||||
{
|
|
||||||
"selector": "CallExpression[callee.name=/^(fdescribe|fit)$/]",
|
|
||||||
"message": "Don't keep jasmine focus methods."
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"no-shadow": "off",
|
|
||||||
"@typescript-eslint/no-shadow": ["error"],
|
|
||||||
"no-tabs": "error",
|
|
||||||
"no-underscore-dangle": "off",
|
|
||||||
"no-unused-expressions": "error",
|
|
||||||
"no-use-before-define": "off",
|
|
||||||
"prefer-arrow/prefer-arrow-functions": "off",
|
|
||||||
"quotes": "off",
|
|
||||||
"@typescript-eslint/quotes": ["error", "single", {"avoidEscape": true}],
|
|
||||||
"semi": "error"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"files": [
|
|
||||||
"*.html"
|
|
||||||
],
|
|
||||||
"extends": [
|
|
||||||
"plugin:@angular-eslint/template/recommended"
|
|
||||||
],
|
|
||||||
"rules": {
|
|
||||||
"@angular-eslint/template/accessibility-alt-text": "error",
|
|
||||||
"@angular-eslint/template/accessibility-elements-content": "error",
|
|
||||||
"@angular-eslint/template/accessibility-label-has-associated-control": "error",
|
|
||||||
"@angular-eslint/template/accessibility-table-scope": "error",
|
|
||||||
"@angular-eslint/template/accessibility-valid-aria": "error",
|
|
||||||
"@angular-eslint/template/click-events-have-key-events": "error",
|
|
||||||
"@angular-eslint/template/eqeqeq": "off",
|
|
||||||
"@angular-eslint/template/mouse-events-have-key-events": "error",
|
|
||||||
"@angular-eslint/template/no-autofocus": "error",
|
|
||||||
"@angular-eslint/template/no-distracting-elements": "error",
|
|
||||||
"@angular-eslint/template/no-positive-tabindex": "error"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
@ -1 +0,0 @@
|
|||||||
engine-strict = true
|
|
@ -19,6 +19,9 @@ Here are the most important tasks you might need to use:
|
|||||||
|
|
||||||
* `yarn build` - create a production build of the application (after installing dependencies, boilerplate, etc).
|
* `yarn build` - create a production build of the application (after installing dependencies, boilerplate, etc).
|
||||||
* `yarn build-local` - same as `build`, but use `setup-local` instead of `setup`.
|
* `yarn build-local` - same as `build`, but use `setup-local` instead of `setup`.
|
||||||
|
* `yarn build-local-with-viewengine` - same as `build-local`, but in addition also turns on `ViewEngine` (pre-Ivy) mode in aio.
|
||||||
|
(Note: To turn on `ViewEngine` mode in docs examples, see `yarn boilerplate:add:viewengine` below.)
|
||||||
|
|
||||||
* `yarn start` - run a development web server that watches the files; then builds the doc-viewer and reloads the page, as necessary.
|
* `yarn start` - run a development web server that watches the files; then builds the doc-viewer and reloads the page, as necessary.
|
||||||
* `yarn serve-and-sync` - run both the `docs-watch` and `start` in the same console.
|
* `yarn serve-and-sync` - run both the `docs-watch` and `start` in the same console.
|
||||||
* `yarn lint` - check that the doc-viewer code follows our style rules.
|
* `yarn lint` - check that the doc-viewer code follows our style rules.
|
||||||
@ -32,6 +35,7 @@ Here are the most important tasks you might need to use:
|
|||||||
* `yarn docs-test` - run the unit tests for the doc generation code.
|
* `yarn docs-test` - run the unit tests for the doc generation code.
|
||||||
|
|
||||||
* `yarn boilerplate:add` - generate all the boilerplate code for the examples, so that they can be run locally.
|
* `yarn boilerplate:add` - generate all the boilerplate code for the examples, so that they can be run locally.
|
||||||
|
* `yarn boilerplate:add:viewengine` - same as `boilerplate:add` but also turns on `ViewEngine` (pre-Ivy) mode.
|
||||||
* `yarn boilerplate:remove` - remove all the boilerplate code that was added via `yarn boilerplate:add`.
|
* `yarn boilerplate:remove` - remove all the boilerplate code that was added via `yarn boilerplate:add`.
|
||||||
* `yarn create-example` - create a new example directory containing initial source files.
|
* `yarn create-example` - create a new example directory containing initial source files.
|
||||||
|
|
||||||
@ -42,6 +46,7 @@ Here are the most important tasks you might need to use:
|
|||||||
- `--setup`: generate boilerplate, force webdriver update & other setup, then run tests.
|
- `--setup`: generate boilerplate, force webdriver update & other setup, then run tests.
|
||||||
- `--local`: run e2e tests with the local version of Angular contained in the "dist" folder.
|
- `--local`: run e2e tests with the local version of Angular contained in the "dist" folder.
|
||||||
_Requires `--setup` in order to take effect._
|
_Requires `--setup` in order to take effect._
|
||||||
|
- `--viewengine`: run e2e tests in `ViewEngine` (pre-Ivy) mode.
|
||||||
- `--filter=foo`: limit e2e tests to those containing the word "foo".
|
- `--filter=foo`: limit e2e tests to those containing the word "foo".
|
||||||
|
|
||||||
> **Note for Windows users**
|
> **Note for Windows users**
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
"shelljs": "^0.8.4",
|
"shelljs": "^0.8.4",
|
||||||
"source-map-support": "^0.5.19",
|
"source-map-support": "^0.5.19",
|
||||||
"tar-stream": "^2.1.3",
|
"tar-stream": "^2.1.3",
|
||||||
"tslib": "^2.2.0"
|
"tslib": "^2.1.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/body-parser": "^1.19.0",
|
"@types/body-parser": "^1.19.0",
|
||||||
@ -49,6 +49,6 @@
|
|||||||
"supertest": "^4.0.2",
|
"supertest": "^4.0.2",
|
||||||
"tslint": "^6.1.3",
|
"tslint": "^6.1.3",
|
||||||
"tslint-jasmine-noSkipOrFocus": "^1.0.9",
|
"tslint-jasmine-noSkipOrFocus": "^1.0.9",
|
||||||
"typescript": "~4.3.4"
|
"typescript": "^4.2.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2505,10 +2505,10 @@ tslib@^1.8.1:
|
|||||||
version "1.9.3"
|
version "1.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
|
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
|
||||||
|
|
||||||
tslib@^2.2.0:
|
tslib@^2.1.0:
|
||||||
version "2.2.0"
|
version "2.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c"
|
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a"
|
||||||
integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==
|
integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==
|
||||||
|
|
||||||
tslint-jasmine-noSkipOrFocus@^1.0.9:
|
tslint-jasmine-noSkipOrFocus@^1.0.9:
|
||||||
version "1.0.9"
|
version "1.0.9"
|
||||||
@ -2563,10 +2563,10 @@ typedarray-to-buffer@^3.1.5:
|
|||||||
dependencies:
|
dependencies:
|
||||||
is-typedarray "^1.0.0"
|
is-typedarray "^1.0.0"
|
||||||
|
|
||||||
typescript@~4.3.4:
|
typescript@^4.2.3:
|
||||||
version "4.3.4"
|
version "4.2.3"
|
||||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.4.tgz#3f85b986945bcf31071decdd96cf8bfa65f9dcbc"
|
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.3.tgz#39062d8019912d43726298f09493d598048c1ce3"
|
||||||
integrity sha512-uauPG7XZn9F/mo+7MrsRjyvbxFpzemRjKEZXS4AK83oP2KKOJPvb+9cO/gmnv8arWZvhnjVOXz7B49m1l0e9Ew==
|
integrity sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw==
|
||||||
|
|
||||||
undefsafe@^2.0.2:
|
undefsafe@^2.0.2:
|
||||||
version "2.0.2"
|
version "2.0.2"
|
||||||
|
107
aio/angular.json
107
aio/angular.json
@ -11,19 +11,16 @@
|
|||||||
"newProjectRoot": "projects",
|
"newProjectRoot": "projects",
|
||||||
"projects": {
|
"projects": {
|
||||||
"site": {
|
"site": {
|
||||||
|
"root": "",
|
||||||
|
"sourceRoot": "src",
|
||||||
"projectType": "application",
|
"projectType": "application",
|
||||||
|
"prefix": "aio",
|
||||||
"schematics": {
|
"schematics": {
|
||||||
"@schematics/angular:application": {
|
|
||||||
"strict": true
|
|
||||||
},
|
|
||||||
"@schematics/angular:component": {
|
"@schematics/angular:component": {
|
||||||
"inlineStyle": true,
|
"inlineStyle": true,
|
||||||
"style": "scss"
|
"style": "scss"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": "",
|
|
||||||
"sourceRoot": "src",
|
|
||||||
"prefix": "aio",
|
|
||||||
"architect": {
|
"architect": {
|
||||||
"build": {
|
"build": {
|
||||||
"builder": "@angular-devkit/build-angular:browser",
|
"builder": "@angular-devkit/build-angular:browser",
|
||||||
@ -32,61 +29,38 @@
|
|||||||
"index": "src/index.html",
|
"index": "src/index.html",
|
||||||
"main": "src/main.ts",
|
"main": "src/main.ts",
|
||||||
"polyfills": "src/polyfills.ts",
|
"polyfills": "src/polyfills.ts",
|
||||||
"ngswConfigPath": "src/generated/ngsw-config.json",
|
|
||||||
"tsConfig": "tsconfig.app.json",
|
"tsConfig": "tsconfig.app.json",
|
||||||
"webWorkerTsConfig": "tsconfig.worker.json",
|
"webWorkerTsConfig": "tsconfig.worker.json",
|
||||||
"optimization": {
|
"aot": true,
|
||||||
"fonts": true,
|
"optimization": true,
|
||||||
"scripts": true,
|
"buildOptimizer": true,
|
||||||
"styles": {
|
|
||||||
"inlineCritical": false,
|
|
||||||
"minify": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"outputHashing": "all",
|
"outputHashing": "all",
|
||||||
"sourceMap": true,
|
"sourceMap": true,
|
||||||
|
"statsJson": true,
|
||||||
|
"extractLicenses": true,
|
||||||
"namedChunks": true,
|
"namedChunks": true,
|
||||||
|
"vendorChunk": false,
|
||||||
"assets": [
|
"assets": [
|
||||||
"src/assets",
|
"src/assets",
|
||||||
|
"src/generated",
|
||||||
"src/pwa-manifest.json",
|
"src/pwa-manifest.json",
|
||||||
"src/google385281288605d160.html",
|
"src/google385281288605d160.html"
|
||||||
{
|
|
||||||
"input": "src/generated",
|
|
||||||
"output": "generated",
|
|
||||||
"glob": "**",
|
|
||||||
"ignore": [
|
|
||||||
"ngsw-config.json"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
],
|
||||||
"styles": [
|
"styles": [
|
||||||
"src/styles/main.scss",
|
"src/styles/main.scss"
|
||||||
{
|
|
||||||
"inject": false,
|
|
||||||
"input": "src/styles/custom-themes/dark-theme.scss",
|
|
||||||
"bundleName": "dark-theme"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"inject": false,
|
|
||||||
"input": "src/styles/custom-themes/light-theme.scss",
|
|
||||||
"bundleName": "light-theme"
|
|
||||||
}
|
|
||||||
],
|
],
|
||||||
"scripts": [],
|
"scripts": [],
|
||||||
"budgets": [
|
"budgets": [
|
||||||
{
|
|
||||||
"type": "initial",
|
|
||||||
"maximumWarning": "850kb",
|
|
||||||
"maximumError": "1mb"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"type": "anyComponentStyle",
|
"type": "anyComponentStyle",
|
||||||
"maximumWarning": "2kb",
|
"maximumWarning": "6kb"
|
||||||
"maximumError": "4kb"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"configurations": {
|
"configurations": {
|
||||||
|
"fast": {
|
||||||
|
"optimization": false
|
||||||
|
},
|
||||||
"next": {
|
"next": {
|
||||||
"fileReplacements": [
|
"fileReplacements": [
|
||||||
{
|
{
|
||||||
@ -125,20 +99,18 @@
|
|||||||
},
|
},
|
||||||
"ci": {
|
"ci": {
|
||||||
"progress": false
|
"progress": false
|
||||||
},
|
|
||||||
"development": {
|
|
||||||
"buildOptimizer": false,
|
|
||||||
"optimization": false,
|
|
||||||
"outputHashing": "none",
|
|
||||||
"vendorChunk": true,
|
|
||||||
"extractLicenses": false
|
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
"defaultConfiguration": "stable"
|
|
||||||
},
|
},
|
||||||
"serve": {
|
"serve": {
|
||||||
"builder": "@angular-devkit/build-angular:dev-server",
|
"builder": "@angular-devkit/build-angular:dev-server",
|
||||||
|
"options": {
|
||||||
|
"browserTarget": "site:build"
|
||||||
|
},
|
||||||
"configurations": {
|
"configurations": {
|
||||||
|
"fast": {
|
||||||
|
"browserTarget": "site:build:fast"
|
||||||
|
},
|
||||||
"next": {
|
"next": {
|
||||||
"browserTarget": "site:build:next"
|
"browserTarget": "site:build:next"
|
||||||
},
|
},
|
||||||
@ -153,12 +125,8 @@
|
|||||||
},
|
},
|
||||||
"ci": {
|
"ci": {
|
||||||
"browserTarget": "site:build:ci"
|
"browserTarget": "site:build:ci"
|
||||||
},
|
|
||||||
"development": {
|
|
||||||
"browserTarget": "site:build:development"
|
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
"defaultConfiguration": "development"
|
|
||||||
},
|
},
|
||||||
"extract-i18n": {
|
"extract-i18n": {
|
||||||
"builder": "@angular-devkit/build-angular:extract-i18n",
|
"builder": "@angular-devkit/build-angular:extract-i18n",
|
||||||
@ -176,32 +144,27 @@
|
|||||||
"karmaConfig": "karma.conf.js",
|
"karmaConfig": "karma.conf.js",
|
||||||
"assets": [
|
"assets": [
|
||||||
"src/assets",
|
"src/assets",
|
||||||
|
"src/generated",
|
||||||
"src/pwa-manifest.json",
|
"src/pwa-manifest.json",
|
||||||
"src/google385281288605d160.html"
|
"src/google385281288605d160.html"
|
||||||
],
|
],
|
||||||
"styles": [
|
"styles": [
|
||||||
"src/styles/main.scss",
|
"src/styles/main.scss"
|
||||||
{
|
|
||||||
"inject": false,
|
|
||||||
"input": "src/styles/custom-themes/dark-theme.scss",
|
|
||||||
"bundleName": "dark-theme"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"inject": false,
|
|
||||||
"input": "src/styles/custom-themes/light-theme.scss",
|
|
||||||
"bundleName": "light-theme"
|
|
||||||
}
|
|
||||||
],
|
],
|
||||||
"scripts": []
|
"scripts": []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"lint": {
|
"lint": {
|
||||||
"builder": "@angular-eslint/builder:lint",
|
"builder": "@angular-devkit/build-angular:tslint",
|
||||||
"options": {
|
"options": {
|
||||||
"lintFilePatterns": [
|
"tsConfig": [
|
||||||
"src/!(generated)/**/*.ts",
|
"tsconfig.app.json",
|
||||||
"src/!(generated)/**/*.html",
|
"tsconfig.spec.json",
|
||||||
"tests/**/*.ts"
|
"tsconfig.worker.json",
|
||||||
|
"tests/e2e/tsconfig.json"
|
||||||
|
],
|
||||||
|
"exclude": [
|
||||||
|
"**/node_modules/**"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -1,5 +0,0 @@
|
|||||||
{
|
|
||||||
"dependencies": {
|
|
||||||
"@angular/cli": "https://github.com/angular/cli-builds#e240e5b7c"
|
|
||||||
}
|
|
||||||
}
|
|
@ -33,8 +33,8 @@ cd my-first-project
|
|||||||
ng serve
|
ng serve
|
||||||
</code-example>
|
</code-example>
|
||||||
|
|
||||||
In your browser, open http://localhost:4200/ to see the new application run.
|
In your browser, open http://localhost:4200/ to see the new app run.
|
||||||
When you use the [ng serve](cli/serve) command to build an application and serve it locally, the server automatically rebuilds the application and reloads the page when you change any of the source files.
|
When you use the [ng serve](cli/serve) command to build an app and serve it locally, the server automatically rebuilds the app and reloads the page when you change any of the source files.
|
||||||
|
|
||||||
<div class="alert is-helpful">
|
<div class="alert is-helpful">
|
||||||
|
|
||||||
@ -46,17 +46,17 @@ When you use the [ng serve](cli/serve) command to build an application and serve
|
|||||||
|
|
||||||
## Workspaces and project files
|
## Workspaces and project files
|
||||||
|
|
||||||
The [ng new](cli/new) command creates an *Angular workspace* folder and generates a new application skeleton.
|
The [ng new](cli/new) command creates an *Angular workspace* folder and generates a new app skeleton.
|
||||||
A workspace can contain multiple applications and libraries.
|
A workspace can contain multiple apps and libraries.
|
||||||
The initial application created by the [ng new](cli/new) command is at the top level of the workspace.
|
The initial app created by the [ng new](cli/new) command is at the top level of the workspace.
|
||||||
When you generate an additional application or library in a workspace, it goes into a `projects/` subfolder.
|
When you generate an additional app or library in a workspace, it goes into a `projects/` subfolder.
|
||||||
|
|
||||||
A newly generated application contains the source files for a root module, with a root component and template.
|
A newly generated app contains the source files for a root module, with a root component and template.
|
||||||
Each application has a `src` folder that contains the logic, data, and assets.
|
Each app has a `src` folder that contains the logic, data, and assets.
|
||||||
|
|
||||||
You can edit the generated files directly, or add to and modify them using CLI commands.
|
You can edit the generated files directly, or add to and modify them using CLI commands.
|
||||||
Use the [ng generate](cli/generate) command to add new files for additional components and services, and code for new pipes, directives, and so on.
|
Use the [ng generate](cli/generate) command to add new files for additional components and services, and code for new pipes, directives, and so on.
|
||||||
Commands such as [add](cli/add) and [generate](cli/generate), which create or operate on applications and libraries, must be executed from within a workspace or project folder.
|
Commands such as [add](cli/add) and [generate](cli/generate), which create or operate on apps and libraries, must be executed from within a workspace or project folder.
|
||||||
|
|
||||||
* See more about the [Workspace file structure](guide/file-structure).
|
* See more about the [Workspace file structure](guide/file-structure).
|
||||||
|
|
||||||
|
@ -20,27 +20,29 @@ This ID is a string that looks like `UA-123456-12`.
|
|||||||
You can choose to use a descriptive string as the key value, or be assigned a random key when you run the CLI command.
|
You can choose to use a descriptive string as the key value, or be assigned a random key when you run the CLI command.
|
||||||
For example, the following command adds a configuration key named "tracking".
|
For example, the following command adds a configuration key named "tracking".
|
||||||
|
|
||||||
<code-example language="sh">
|
<code-example language="sh" class="code-shell">
|
||||||
ng config --global cli.analyticsSharing.tracking UA-123456-12
|
ng config --global cli.analyticsSharing.tracking UA-123456-12
|
||||||
</code-example>
|
</code-example>
|
||||||
|
|
||||||
To turn off this feature, run the following command:
|
To turn off this feature, run the following command:
|
||||||
|
|
||||||
<code-example language="sh">
|
<code-example language="sh" class="code-shell">
|
||||||
ng config --global --remove cli.analyticsSharing
|
ng config --global --remove cli.analyticsSharing
|
||||||
</code-example>
|
</code-example>
|
||||||
|
|
||||||
|
|
||||||
## Per user tracking
|
## Per user tracking
|
||||||
|
|
||||||
You can add a custom user ID to the global configuration, in order to identify unique usage of commands and flags.
|
You can add a custom user ID to the global configuration, in order to identify unique usage of commands and flags.
|
||||||
If that user enables CLI analytics for their own project, your analytics display tracks and labels their individual usage.
|
If that user enables CLI analytics for their own project, your analytics display tracks and labels their individual usage.
|
||||||
|
|
||||||
<code-example language="sh">
|
|
||||||
|
<code-example language="sh" class="code-shell">
|
||||||
ng config --global cli.analyticsSharing.user SOME_USER_NAME
|
ng config --global cli.analyticsSharing.user SOME_USER_NAME
|
||||||
</code-example>
|
</code-example>
|
||||||
|
|
||||||
To generate a new random user ID, run the following command:
|
To generate a new random user ID, run the following command:
|
||||||
|
|
||||||
<code-example language="sh">
|
<code-example language="sh" class="code-shell">
|
||||||
ng config --global cli.analyticsSharing.user ""
|
ng config --global cli.analyticsSharing.user ""
|
||||||
</code-example>
|
</code-example>
|
||||||
|
@ -1,20 +0,0 @@
|
|||||||
@name Expression Changed After Checked
|
|
||||||
@category runtime
|
|
||||||
@videoUrl https://www.youtube.com/embed/O47uUnJjbJc
|
|
||||||
@shortDescription Expression has changed after it was checked
|
|
||||||
|
|
||||||
@description
|
|
||||||
Angular throws an `ExpressionChangedAfterItHasBeenCheckedError` when an expression value has been changed after change detection has completed. Angular only throws this error in development mode.
|
|
||||||
|
|
||||||
In development mode, Angular performs an additional check after each change detection run, to ensure the bindings haven’t changed. This catches errors where the view is left in an inconsistent state. This can occur, for example, if a method or getter returns a different value each time it is called, or if a child component changes values on its parent. If either of these occur, this is a sign that change detection is not stabilized. Angular throws the error to ensure data is always reflected correctly in the view, which prevents erratic UI behavior or a possible infinite loop.
|
|
||||||
|
|
||||||
This error commonly occurs when you’ve added template expressions or begun to implement lifecycle hooks like `ngAfterViewInit` or `ngOnChanges`. It is also common when dealing with loading status and asynchronous operations, or a child component changes its parent bindings.
|
|
||||||
|
|
||||||
@debugging
|
|
||||||
The [source maps](https://developer.mozilla.org/en-US/docs/Tools/Debugger/How_to/Use_a_source_map) generated by the CLI are very useful when debugging. Navigate up the call stack until you find a template expression where the value displayed in the error has changed.
|
|
||||||
|
|
||||||
Ensure that there are no changes to the bindings in the template after change detection is run. This often means refactoring to use the correct [component lifecycle hook](guide/lifecycle-hooks) for your use case. If the issue exists within `ngAfterViewInit`, the recommended solution is to use a constructor or `ngOnInit` to set initial values, or use `ngAfterContentInit` for other value bindings.
|
|
||||||
|
|
||||||
If you are binding to methods in the view, ensure that the invocation does not update any of the other bindings in the template.
|
|
||||||
|
|
||||||
Read more about which solution is right for you in ['Everything you need to know about the "ExpressionChangedAfterItHasBeenCheckedError" error'](https://indepth.dev/posts/1001/everything-you-need-to-know-about-the-expressionchangedafterithasbeencheckederror-error) and why this is useful at ['Angular Debugging "Expression has changed after it was checked": Simple Explanation (and Fix)'](https://blog.angular-university.io/angular-debugging/).
|
|
@ -1,12 +0,0 @@
|
|||||||
@name Circular Dependency in DI
|
|
||||||
@category runtime
|
|
||||||
@videoUrl https://www.youtube.com/embed/CpLOm4o_FzM
|
|
||||||
@shortDescription Circular dependency in DI detected while instantiating a provider
|
|
||||||
|
|
||||||
@description
|
|
||||||
A cyclic dependency exists when a [dependency of a service](guide/hierarchical-dependency-injection) directly or indirectly depends on the service itself. For example, if `UserService` depends on `EmployeeService`, which also depends on `UserService`. Angular will have to instantiate `EmployeeService` to create `UserService`, which depends on `UserService`, itself.
|
|
||||||
|
|
||||||
@debugging
|
|
||||||
Use the call stack to determine where the cyclical dependency exists. You will be able to see if any child dependencies rely on the original file by [mapping out](guide/dependency-injection-in-action) the component, module, or service’s dependencies and identify the loop causing the problem.
|
|
||||||
|
|
||||||
Break this loop (or circle) of dependency to resolve this error. This most commonly means removing or refactoring the dependencies to not be reliant on one another.
|
|
@ -1,20 +0,0 @@
|
|||||||
@name No Provider Found
|
|
||||||
@category runtime
|
|
||||||
@videoUrl https://www.youtube.com/embed/lAlOryf1-WU
|
|
||||||
@shortDescription No provider for {token} found!
|
|
||||||
|
|
||||||
@description
|
|
||||||
You see this error when you try to inject a service but have not declared a corresponding provider. A provider is a mapping that supplies a value that you can inject into the constructor of a class in your application.
|
|
||||||
|
|
||||||
Read more on providers in our [Dependency Injection guide](guide/dependency-injection).
|
|
||||||
|
|
||||||
@debugging
|
|
||||||
Work backwards from the object where the error states that a [provider](guide/architecture-services) is missing: `No provider for ${this}!`. This is commonly thrown in [services](tutorial/toh-pt4), which require non-existing providers.
|
|
||||||
|
|
||||||
To fix the error ensure that your service is registered in the list of providers of an `NgModule` or has the `@Injectable` decorator with a `providedIn` property at top.
|
|
||||||
|
|
||||||
The most common solution is to add a provider in `@Injectable` using `providedIn`:
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
@Injectable({ providedIn: 'app' })
|
|
||||||
```
|
|
@ -1,21 +0,0 @@
|
|||||||
@name Selector Collision
|
|
||||||
@category runtime
|
|
||||||
@videoUrl https://www.youtube.com/embed/z_3Z5mOm59I
|
|
||||||
@shortDescription Multiple components match with the same tagname
|
|
||||||
|
|
||||||
@description
|
|
||||||
Two or more components use the same [element selector](guide/component-overview#specifying-a-components-css-selector). Because there can only be a single component associated with an element, selectors must be unique strings to prevent ambiguity for Angular.
|
|
||||||
|
|
||||||
@debugging
|
|
||||||
Use the element name from the error message to search for places where you’re using the same [selector declaration](guide/architecture-components) in your codebase:
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
@Component({
|
|
||||||
selector: 'YOUR_STRING',
|
|
||||||
...
|
|
||||||
})
|
|
||||||
```
|
|
||||||
|
|
||||||
Ensure that each component has a unique CSS selector. This will guarantee that Angular renders the component you expect.
|
|
||||||
|
|
||||||
If you’re having trouble finding multiple components with this selector tag name, check for components from imported component libraries, such as Angular Material. Make sure you're following the [best practices](guide/styleguide#component-selectors) for your selectors to prevent collisions.
|
|
@ -1,32 +0,0 @@
|
|||||||
@name Export Not Found
|
|
||||||
@category runtime
|
|
||||||
@videoUrl https://www.youtube.com/embed/fUSAg4kp2WQ
|
|
||||||
@shortDescription Export not found!
|
|
||||||
|
|
||||||
@description
|
|
||||||
Angular can’t find a directive with `{{ PLACEHOLDER }}` export name. The export name is specified in the `exportAs` property of the directive decorator. This is common when using FormsModule or Material modules in templates, and you’ve forgotten to [import the corresponding modules](guide/sharing-ngmodules).
|
|
||||||
|
|
||||||
<div class="alert is-helpful">
|
|
||||||
|
|
||||||
This is the runtime equivalent of a common compiler error [NG8003: No directive found with export](errors/NG8003).
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
@debugging
|
|
||||||
Use the export name to trace the templates or modules using this export.
|
|
||||||
|
|
||||||
Ensure that all dependencies are [properly imported and declared in your NgModules](guide/sharing-ngmodules). For example, if the export not found is `ngForm`, we need to import `FormsModule` and declare it in the list of imports in `*.module.ts` to resolve the error.
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
import { FormsModule } from '@angular/forms';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
...
|
|
||||||
imports: [
|
|
||||||
FormsModule,
|
|
||||||
…
|
|
||||||
```
|
|
||||||
|
|
||||||
If you recently added an import, you may need to restart your server to see these changes.
|
|
||||||
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
|||||||
@name Pipe Not Found
|
|
||||||
@category runtime
|
|
||||||
@videoUrl https://www.youtube.com/embed/maI2u6Sxk9M
|
|
||||||
@shortDescription Pipe not found!
|
|
||||||
|
|
||||||
@description
|
|
||||||
Angular can't find a pipe with this name.
|
|
||||||
The pipe referenced in the template has not been named or declared properly.
|
|
||||||
A [pipe](guide/pipes) must be either declared or imported in the `NgModule` where it is used, and the name used in a template must match the name defined in the pipe decorator.
|
|
||||||
|
|
||||||
@debugging
|
|
||||||
Use the pipe name to trace the templates or modules where this pipe is declared and used.
|
|
||||||
|
|
||||||
To resolve this error, ensure that:
|
|
||||||
- A local custom pipe is uniquely named in the pipe's decorator, and declared in the `NgModule`, or
|
|
||||||
- A pipe from another `NgModule` is added to the imports of the `NgModule` where it is used.
|
|
||||||
|
|
||||||
If you recently added an import or declaration, you may need to restart your server to see these changes.
|
|
@ -1,29 +0,0 @@
|
|||||||
@name Argument Not Literal
|
|
||||||
@category compiler
|
|
||||||
@shortDescription Decorator argument is not an object literal
|
|
||||||
|
|
||||||
@description
|
|
||||||
To make the metadata extraction in the Angular compiler faster, the decorators `@NgModule`, `@Pipe`, `@Component`, `@Directive`, and `@Injectable` accept only object literals as arguments.
|
|
||||||
|
|
||||||
This is an [intentional change in Ivy](https://github.com/angular/angular/issues/30840#issuecomment-498869540), which enforces stricter argument requirements for decorators than View Engine. Ivy requires this approach because it compiles decorators by moving the expressions into other locations in the class output.
|
|
||||||
|
|
||||||
@debugging
|
|
||||||
Move all declarations:
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
const moduleDefinition = {...}
|
|
||||||
|
|
||||||
@NgModule(moduleDefinition)
|
|
||||||
export class AppModule {
|
|
||||||
constructor() {}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
into the decorator:
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
@NgModule({...})
|
|
||||||
export class AppModule {
|
|
||||||
constructor() {}
|
|
||||||
}
|
|
||||||
```
|
|
@ -1,11 +0,0 @@
|
|||||||
@name Missing Token
|
|
||||||
@category compiler
|
|
||||||
@shortDescription No suitable injection token for parameter
|
|
||||||
|
|
||||||
@description
|
|
||||||
There is no injection token for a constructor parameter at compile time. [InjectionTokens](api/core/InjectionToken) are tokens that can be used in a Dependency Injection Provider.
|
|
||||||
|
|
||||||
@debugging
|
|
||||||
Look at the parameter that throws the error and all uses of the class. This error is commonly thrown when a constructor defines parameters with primitive types like `string`, `number`, `boolean`, and `Object`.
|
|
||||||
|
|
||||||
Use the `@Injectable` method or `@Inject` decorator from `@angular/core` to ensure that the type you are injecting is reified (has a runtime representation). Make sure to add a provider to this decorator so that you do not throw [NG0201: No Provider Found](errors/NG0201).
|
|
@ -1,32 +0,0 @@
|
|||||||
@name Invalid Shadow DOM selector
|
|
||||||
@category compiler
|
|
||||||
@shortDescription Component selector does not match shadow DOM requirements
|
|
||||||
|
|
||||||
@description
|
|
||||||
The selector of a component using `ViewEncapsulation.ShadowDom` doesn't match the custom element tag name requirements.
|
|
||||||
|
|
||||||
In order for a tag name to be considered a valid custom element name, it has to:
|
|
||||||
* Be in lower case.
|
|
||||||
* Contain a hyphen.
|
|
||||||
* Start with a letter (a-z).
|
|
||||||
|
|
||||||
@debugging
|
|
||||||
Rename your component's selector so that it matches the requirements.
|
|
||||||
|
|
||||||
**Before:**
|
|
||||||
```typescript
|
|
||||||
@Component({
|
|
||||||
selector: 'comp',
|
|
||||||
encapsulation: ViewEncapsulation.ShadowDom
|
|
||||||
...
|
|
||||||
})
|
|
||||||
```
|
|
||||||
|
|
||||||
**After:**
|
|
||||||
```typescript
|
|
||||||
@Component({
|
|
||||||
selector: 'app-comp',
|
|
||||||
encapsulation: ViewEncapsulation.ShadowDom
|
|
||||||
...
|
|
||||||
})
|
|
||||||
```
|
|
@ -1,57 +0,0 @@
|
|||||||
@name Import Cycle Detected
|
|
||||||
@category compiler
|
|
||||||
@shortDescription Import cycles would need to be created to compile this component
|
|
||||||
|
|
||||||
@description
|
|
||||||
|
|
||||||
A component, directive or pipe that is referenced by this component would require the compiler
|
|
||||||
to add an import that would lead to a cycle of imports. For example, consider a scenario where
|
|
||||||
a `ParentComponent` references a `ChildComponent` in its template:
|
|
||||||
|
|
||||||
<code-example path="errors/cyclic-imports/parent.component.ts" header="parent.component.ts"></code-example>
|
|
||||||
|
|
||||||
<code-example path="errors/cyclic-imports/child.component.ts" header="child.component.ts"></code-example>
|
|
||||||
|
|
||||||
There is already an import from `child.component.ts` to `parent.component.ts` since the `ChildComponent`
|
|
||||||
references the `ParentComponent` in its constructor.
|
|
||||||
|
|
||||||
But note that the parent component's template contains `<child></child>`. The generated code for this
|
|
||||||
template must therefore contain a reference to the `ChildComponent` class. In order to make this reference
|
|
||||||
the compiler would have to add an import from `parent.component.ts` to `child.component.ts`, which would
|
|
||||||
cause an import cycle:
|
|
||||||
|
|
||||||
```
|
|
||||||
parent.component.ts -> child.component.ts -> parent.component.ts
|
|
||||||
```
|
|
||||||
|
|
||||||
### Remote Scoping
|
|
||||||
|
|
||||||
To avoid adding imports that create cycles, additional code is added to the `NgModule` class where
|
|
||||||
the component is declared that wires up the dependencies. This is known as "remote scoping".
|
|
||||||
|
|
||||||
|
|
||||||
### Libraries
|
|
||||||
|
|
||||||
Unfortunately, "remote scoping" code is side-effectful, which prevents tree shaking, and cannot
|
|
||||||
be used in libraries. So when building libraries using the `"compilationMode": "partial"` setting,
|
|
||||||
any component that would require a cyclic import will cause this `NG3003` compiler error to be raised.
|
|
||||||
|
|
||||||
|
|
||||||
@debugging
|
|
||||||
|
|
||||||
The cycle that would be generated is shown as part of the error message. For example:
|
|
||||||
|
|
||||||
<code-example hideCopy="true">
|
|
||||||
<span class="nocode">The component ChildComponent is used in the template but importing it would create a cycle:
|
|
||||||
/parent.component.ts -> /child.component.ts -> /parent.component.ts</span>
|
|
||||||
</code-example>
|
|
||||||
|
|
||||||
Use this to identify how the referenced component, pipe or directive has a dependency back to the
|
|
||||||
component being compiled. Here are some ideas for fixing the problem:
|
|
||||||
|
|
||||||
* Try to re-arrange your dependencies to avoid the cycle. For example using an intermediate interface
|
|
||||||
that is stored in an independent file that can be imported to both dependent files without
|
|
||||||
causing an import cycle.
|
|
||||||
* Move the classes that reference each other into the same file, to avoid any imports between them.
|
|
||||||
* Convert import statements to type-only imports (using `import type` syntax) if the imported declarations
|
|
||||||
are only used as types, as type-only imports do not contribute to cycles.
|
|
@ -1,14 +0,0 @@
|
|||||||
@name Invalid metadata
|
|
||||||
@category compiler
|
|
||||||
@shortDescription Invalid @NgModule() metadata
|
|
||||||
|
|
||||||
@description
|
|
||||||
This error represents the import or export of an `@NgModule()` that doesn't have valid metadata.
|
|
||||||
|
|
||||||
@debugging
|
|
||||||
The library might have been processed with `ngcc`.
|
|
||||||
If this is the case, try removing and reinstalling `node_modules`.
|
|
||||||
This error is likely due to the library being published for Angular Ivy, which cannot be used in this View Engine application.
|
|
||||||
If that is not the case then it might be a View Engine based library that was converted to Ivy by ngcc during a postinstall step.
|
|
||||||
|
|
||||||
Check the peer dependencies to ensure that you're using a compatible version of Angular.
|
|
@ -1,21 +0,0 @@
|
|||||||
@name Invalid Element
|
|
||||||
@category compiler
|
|
||||||
@shortDescription Unknown HTML element or component
|
|
||||||
|
|
||||||
@description
|
|
||||||
One or more elements cannot be resolved during compilation because the element is not defined by the HTML spec, or there is no component or directive with such element selector.
|
|
||||||
|
|
||||||
<div class="alert is-helpful">
|
|
||||||
|
|
||||||
This is the compiler equivalent of a common runtime error `NG0304: '${tagName}' is not a known element: …`.
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
@debugging
|
|
||||||
Use the element name in the error to find the file(s) where the element is being used.
|
|
||||||
|
|
||||||
Check that the name and selector are correct. If the component is from a different module or import, check that the component is exported from its origin module and imported into the correct `*.modules.ts` file, and declared in the imports list.
|
|
||||||
|
|
||||||
When using custom elements or web components, ensure that you add [`CUSTOM_ELEMENTS_SCHEMA`](api/core/CUSTOM_ELEMENTS_SCHEMA) to the application module.
|
|
||||||
|
|
||||||
If this does not resolve the error, check the imported libraries for any recent changes to the exports and properties you are using, and restart your server.
|
|
@ -1,16 +0,0 @@
|
|||||||
@name Invalid Attribute
|
|
||||||
@category compiler
|
|
||||||
@videoUrl https://www.youtube.com/embed/wfLkB3RsSJM
|
|
||||||
@shortDescription Unknown attribute or input
|
|
||||||
|
|
||||||
@description
|
|
||||||
An attribute or property cannot be resolved during compilation.
|
|
||||||
|
|
||||||
This error arises when attempting to bind to a property that does not exist. Any property binding must correspond to either:
|
|
||||||
* A native property on the HTML element, or
|
|
||||||
* An `@Input()` property of a component or directive applied to the element.
|
|
||||||
|
|
||||||
The runtime error for this is `NG0304: '${tagName}' is not a known element: …’`.
|
|
||||||
|
|
||||||
@debugging
|
|
||||||
Look at documentation for the specific [binding syntax](guide/binding-syntax) used. This is usually a typo or incorrect import. There may also be a missing direction with property selector ‘name’ or missing input.
|
|
@ -1,31 +0,0 @@
|
|||||||
@name Missing Reference Target
|
|
||||||
@category compiler
|
|
||||||
@videoUrl https://www.youtube.com/embed/fUSAg4kp2WQ
|
|
||||||
@shortDescription No directive found with export
|
|
||||||
|
|
||||||
@description
|
|
||||||
Angular can’t find a directive with `{{ PLACEHOLDER }}` export name. This is common with a missing import or a missing [`exportAs`](api/core/Directive#exportAs) on a directive.
|
|
||||||
|
|
||||||
|
|
||||||
<div class="alert is-helpful">
|
|
||||||
|
|
||||||
This is the compiler equivalent of a common runtime error [NG0301: Export Not Found](errors/NG0301).
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
@debugging
|
|
||||||
Use the string name of the export not found to trace the templates or modules using this export.
|
|
||||||
|
|
||||||
Ensure that all dependencies are properly imported and declared in our Modules. For example, if the export not found is `ngForm`, we will need to import `FormsModule` and declare it in our list of imports in `*.module.ts` to resolve the missing export error.
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
import { FormsModule } from '@angular/forms';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
...
|
|
||||||
imports: [
|
|
||||||
FormsModule,
|
|
||||||
…
|
|
||||||
```
|
|
||||||
|
|
||||||
If you recently added an import, you will need to restart your server to see these changes.
|
|
@ -1 +0,0 @@
|
|||||||
# Errors List
|
|
@ -1,17 +0,0 @@
|
|||||||
# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
|
|
||||||
# For additional information regarding the format and rule options, please see:
|
|
||||||
# https://github.com/browserslist/browserslist#queries
|
|
||||||
|
|
||||||
# For the full list of supported browsers by the Angular framework, please see:
|
|
||||||
# https://angular.io/guide/browser-support
|
|
||||||
|
|
||||||
# You can see what browsers were selected by your queries by running:
|
|
||||||
# npx browserslist
|
|
||||||
|
|
||||||
last 1 Chrome version
|
|
||||||
last 1 Firefox version
|
|
||||||
last 2 Edge major versions
|
|
||||||
last 2 Safari major versions
|
|
||||||
last 2 iOS major versions
|
|
||||||
Firefox ESR
|
|
||||||
not IE 11 # Angular supports IE 11 only as an opt-in. To opt-in, remove the 'not' prefix on this line.
|
|
@ -1,16 +0,0 @@
|
|||||||
# Editor configuration, see https://editorconfig.org
|
|
||||||
root = true
|
|
||||||
|
|
||||||
[*]
|
|
||||||
charset = utf-8
|
|
||||||
indent_style = space
|
|
||||||
indent_size = 2
|
|
||||||
insert_final_newline = true
|
|
||||||
trim_trailing_whitespace = true
|
|
||||||
|
|
||||||
[*.ts]
|
|
||||||
quote_type = single
|
|
||||||
|
|
||||||
[*.md]
|
|
||||||
max_line_length = off
|
|
||||||
trim_trailing_whitespace = false
|
|
@ -1,128 +0,0 @@
|
|||||||
{
|
|
||||||
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
|
|
||||||
"version": 1,
|
|
||||||
"newProjectRoot": "projects",
|
|
||||||
"projects": {
|
|
||||||
"angular.io-example": {
|
|
||||||
"projectType": "application",
|
|
||||||
"schematics": {
|
|
||||||
"@schematics/angular:application": {
|
|
||||||
"strict": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": "",
|
|
||||||
"sourceRoot": "src",
|
|
||||||
"prefix": "app",
|
|
||||||
"architect": {
|
|
||||||
"build": {
|
|
||||||
"builder": "@angular-devkit/build-angular:browser",
|
|
||||||
"options": {
|
|
||||||
"outputPath": "dist",
|
|
||||||
"index": "src/index.html",
|
|
||||||
"main": "src/main.ts",
|
|
||||||
"polyfills": "src/polyfills.ts",
|
|
||||||
"tsConfig": "tsconfig.app.json",
|
|
||||||
"aot": true,
|
|
||||||
"assets": [
|
|
||||||
"src/favicon.ico",
|
|
||||||
"src/assets"
|
|
||||||
],
|
|
||||||
"styles": [
|
|
||||||
"src/styles.css"
|
|
||||||
],
|
|
||||||
"scripts": []
|
|
||||||
},
|
|
||||||
"configurations": {
|
|
||||||
"production": {
|
|
||||||
"fileReplacements": [
|
|
||||||
{
|
|
||||||
"replace": "src/environments/environment.ts",
|
|
||||||
"with": "src/environments/environment.prod.ts"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"optimization": true,
|
|
||||||
"outputHashing": "all",
|
|
||||||
"sourceMap": false,
|
|
||||||
"namedChunks": false,
|
|
||||||
"extractLicenses": true,
|
|
||||||
"vendorChunk": false,
|
|
||||||
"buildOptimizer": true,
|
|
||||||
"budgets": [
|
|
||||||
{
|
|
||||||
"type": "initial",
|
|
||||||
"maximumWarning": "500kb",
|
|
||||||
"maximumError": "1mb"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "anyComponentStyle",
|
|
||||||
"maximumWarning": "2kb",
|
|
||||||
"maximumError": "4kb"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"serve": {
|
|
||||||
"builder": "@angular-devkit/build-angular:dev-server",
|
|
||||||
"options": {
|
|
||||||
"browserTarget": "angular.io-example:build"
|
|
||||||
},
|
|
||||||
"configurations": {
|
|
||||||
"production": {
|
|
||||||
"browserTarget": "angular.io-example:build:production"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"extract-i18n": {
|
|
||||||
"builder": "@angular-devkit/build-angular:extract-i18n",
|
|
||||||
"options": {
|
|
||||||
"browserTarget": "angular.io-example:build"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"test": {
|
|
||||||
"builder": "@angular-devkit/build-angular:karma",
|
|
||||||
"options": {
|
|
||||||
"main": "src/test.ts",
|
|
||||||
"polyfills": "src/polyfills.ts",
|
|
||||||
"tsConfig": "tsconfig.spec.json",
|
|
||||||
"karmaConfig": "karma.conf.js",
|
|
||||||
"assets": [
|
|
||||||
"src/favicon.ico",
|
|
||||||
"src/assets"
|
|
||||||
],
|
|
||||||
"styles": [
|
|
||||||
"src/styles.css"
|
|
||||||
],
|
|
||||||
"scripts": []
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"lint": {
|
|
||||||
"builder": "@angular-devkit/build-angular:tslint",
|
|
||||||
"options": {
|
|
||||||
"tsConfig": [
|
|
||||||
"tsconfig.app.json",
|
|
||||||
"tsconfig.spec.json",
|
|
||||||
"e2e/tsconfig.json"
|
|
||||||
],
|
|
||||||
"exclude": [
|
|
||||||
"**/node_modules/**"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"e2e": {
|
|
||||||
"builder": "@angular-devkit/build-angular:protractor",
|
|
||||||
"options": {
|
|
||||||
"protractorConfig": "e2e/protractor.conf.js",
|
|
||||||
"devServerTarget": "angular.io-example:serve"
|
|
||||||
},
|
|
||||||
"configurations": {
|
|
||||||
"production": {
|
|
||||||
"devServerTarget": "angular.io-example:serve:production"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"defaultProject": "angular.io-example"
|
|
||||||
}
|
|
@ -1,19 +0,0 @@
|
|||||||
// @ts-check
|
|
||||||
// A protractor config to use to run the tests using the Chrome version provided by `puppeteer`.
|
|
||||||
// This is useful to ensure deterministic runs on CI and locally. This file is ignored when creating
|
|
||||||
// StackBlitz examples and ZIP archives for each example.
|
|
||||||
|
|
||||||
const {config} = require('./protractor.conf.js');
|
|
||||||
|
|
||||||
exports.config = {
|
|
||||||
...config,
|
|
||||||
capabilities: {
|
|
||||||
...config.capabilities,
|
|
||||||
chromeOptions: {
|
|
||||||
...config.capabilities.chromeOptions,
|
|
||||||
binary: require('puppeteer').executablePath(),
|
|
||||||
// See /integration/README.md#browser-tests for more info on these args
|
|
||||||
args: ['--no-sandbox', '--headless', '--disable-gpu', '--disable-dev-shm-usage', '--hide-scrollbars', '--mute-audio'],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
@ -1,37 +0,0 @@
|
|||||||
// @ts-check
|
|
||||||
// Protractor configuration file, see link for more information
|
|
||||||
// https://github.com/angular/protractor/blob/master/lib/config.ts
|
|
||||||
|
|
||||||
const { SpecReporter, StacktraceOption } = require('jasmine-spec-reporter');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @type { import("protractor").Config }
|
|
||||||
*/
|
|
||||||
exports.config = {
|
|
||||||
allScriptsTimeout: 11000,
|
|
||||||
specs: [
|
|
||||||
'./src/**/*.e2e-spec.ts'
|
|
||||||
],
|
|
||||||
capabilities: {
|
|
||||||
browserName: 'chrome'
|
|
||||||
},
|
|
||||||
directConnect: true,
|
|
||||||
SELENIUM_PROMISE_MANAGER: false,
|
|
||||||
baseUrl: 'http://localhost:4200/',
|
|
||||||
framework: 'jasmine',
|
|
||||||
jasmineNodeOpts: {
|
|
||||||
showColors: true,
|
|
||||||
defaultTimeoutInterval: 30000,
|
|
||||||
print: function() {}
|
|
||||||
},
|
|
||||||
onPrepare() {
|
|
||||||
require('ts-node').register({
|
|
||||||
project: require('path').join(__dirname, './tsconfig.json')
|
|
||||||
});
|
|
||||||
jasmine.getEnv().addReporter(new SpecReporter({
|
|
||||||
spec: {
|
|
||||||
displayStacktrace: StacktraceOption.PRETTY
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
};
|
|
@ -1,11 +0,0 @@
|
|||||||
import { browser, by, element } from 'protractor';
|
|
||||||
|
|
||||||
export class AppPage {
|
|
||||||
async navigateTo(): Promise<unknown> {
|
|
||||||
return browser.get(browser.baseUrl);
|
|
||||||
}
|
|
||||||
|
|
||||||
async getTitleText(): Promise<string> {
|
|
||||||
return element(by.css('app-root h1')).getText();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,13 +0,0 @@
|
|||||||
/* To learn more about this file see: https://angular.io/config/tsconfig. */
|
|
||||||
{
|
|
||||||
"extends": "../tsconfig.json",
|
|
||||||
"compilerOptions": {
|
|
||||||
"outDir": "../out-tsc/e2e",
|
|
||||||
"module": "commonjs",
|
|
||||||
"target": "es2018",
|
|
||||||
"types": [
|
|
||||||
"jasmine",
|
|
||||||
"node"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,38 +0,0 @@
|
|||||||
// Karma configuration file, see link for more information
|
|
||||||
// https://karma-runner.github.io/1.0/config/configuration-file.html
|
|
||||||
|
|
||||||
module.exports = function (config) {
|
|
||||||
config.set({
|
|
||||||
basePath: '',
|
|
||||||
frameworks: ['jasmine', '@angular-devkit/build-angular'],
|
|
||||||
plugins: [
|
|
||||||
require('karma-jasmine'),
|
|
||||||
require('karma-chrome-launcher'),
|
|
||||||
require('karma-jasmine-html-reporter'),
|
|
||||||
require('karma-coverage'),
|
|
||||||
require('@angular-devkit/build-angular/plugins/karma')
|
|
||||||
],
|
|
||||||
client: {
|
|
||||||
clearContext: false // leave Jasmine Spec Runner output visible in browser
|
|
||||||
},
|
|
||||||
jasmineHtmlReporter: {
|
|
||||||
suppressAll: true // removes the duplicated traces
|
|
||||||
},
|
|
||||||
coverageReporter: {
|
|
||||||
dir: require('path').join(__dirname, './coverage/angular.io-example'),
|
|
||||||
subdir: '.',
|
|
||||||
reporters: [
|
|
||||||
{ type: 'html' },
|
|
||||||
{ type: 'text-summary' }
|
|
||||||
]
|
|
||||||
},
|
|
||||||
reporters: ['progress', 'kjhtml'],
|
|
||||||
port: 9876,
|
|
||||||
colors: true,
|
|
||||||
logLevel: config.LOG_INFO,
|
|
||||||
autoWatch: true,
|
|
||||||
browsers: ['Chrome'],
|
|
||||||
singleRun: false,
|
|
||||||
restartOnFileChange: true
|
|
||||||
});
|
|
||||||
};
|
|
@ -1,49 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "angular.io-example",
|
|
||||||
"version": "0.0.0",
|
|
||||||
"description": "Example project from an angular.io guide.",
|
|
||||||
"license": "MIT",
|
|
||||||
"scripts": {
|
|
||||||
"ng": "ng",
|
|
||||||
"start": "ng serve",
|
|
||||||
"build": "ng build",
|
|
||||||
"test": "ng test",
|
|
||||||
"lint": "ng lint",
|
|
||||||
"e2e": "ng e2e"
|
|
||||||
},
|
|
||||||
"private": true,
|
|
||||||
"dependencies": {
|
|
||||||
"@angular/animations": "~11.0.1",
|
|
||||||
"@angular/common": "~11.0.1",
|
|
||||||
"@angular/compiler": "~11.0.1",
|
|
||||||
"@angular/core": "~11.0.1",
|
|
||||||
"@angular/forms": "~11.0.1",
|
|
||||||
"@angular/platform-browser": "~11.0.1",
|
|
||||||
"@angular/platform-browser-dynamic": "~11.0.1",
|
|
||||||
"@angular/router": "~11.0.1",
|
|
||||||
"angular-in-memory-web-api": "~0.11.0",
|
|
||||||
"rxjs": "~6.6.0",
|
|
||||||
"tslib": "^2.0.0",
|
|
||||||
"zone.js": "~0.11.4"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@angular-devkit/build-angular": "~0.1100.2",
|
|
||||||
"@angular/cli": "~11.0.2",
|
|
||||||
"@angular/compiler-cli": "~11.0.1",
|
|
||||||
"@types/jasmine": "~3.6.0",
|
|
||||||
"@types/node": "^12.11.1",
|
|
||||||
"codelyzer": "^6.0.0",
|
|
||||||
"jasmine-core": "~3.6.0",
|
|
||||||
"jasmine-marbles": "~0.6.0",
|
|
||||||
"jasmine-spec-reporter": "~5.0.0",
|
|
||||||
"karma": "~5.1.0",
|
|
||||||
"karma-chrome-launcher": "~3.1.0",
|
|
||||||
"karma-coverage": "~2.0.3",
|
|
||||||
"karma-jasmine": "~4.0.0",
|
|
||||||
"karma-jasmine-html-reporter": "^1.5.0",
|
|
||||||
"protractor": "~7.0.0",
|
|
||||||
"ts-node": "~8.3.0",
|
|
||||||
"tslint": "~6.1.0",
|
|
||||||
"typescript": "~4.0.3"
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,64 +0,0 @@
|
|||||||
/**
|
|
||||||
* This file includes polyfills needed by Angular and is loaded before the app.
|
|
||||||
* You can add your own extra polyfills to this file.
|
|
||||||
*
|
|
||||||
* This file is divided into 2 sections:
|
|
||||||
* 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.
|
|
||||||
* 2. Application imports. Files imported after ZoneJS that should be loaded before your main
|
|
||||||
* file.
|
|
||||||
*
|
|
||||||
* The current setup is for so-called "evergreen" browsers; the last versions of browsers that
|
|
||||||
* automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),
|
|
||||||
* Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.
|
|
||||||
*
|
|
||||||
* Learn more in https://angular.io/guide/browser-support
|
|
||||||
*/
|
|
||||||
|
|
||||||
/***************************************************************************************************
|
|
||||||
* BROWSER POLYFILLS
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** IE11 requires the following for NgClass support on SVG elements */
|
|
||||||
// import 'classlist.js'; // Run `npm install --save classlist.js`.
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Web Animations `@angular/platform-browser/animations`
|
|
||||||
* Only required if AnimationBuilder is used within the application and using IE/Edge or Safari.
|
|
||||||
* Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0).
|
|
||||||
*/
|
|
||||||
// import 'web-animations-js'; // Run `npm install --save web-animations-js`.
|
|
||||||
|
|
||||||
/**
|
|
||||||
* By default, zone.js will patch all possible macroTask and DomEvents
|
|
||||||
* user can disable parts of macroTask/DomEvents patch by setting following flags
|
|
||||||
* because those flags need to be set before `zone.js` being loaded, and webpack
|
|
||||||
* will put import in the top of bundle, so user need to create a separate file
|
|
||||||
* in this directory (for example: zone-flags.ts), and put the following flags
|
|
||||||
* into that file, and then add the following code before importing zone.js.
|
|
||||||
* import './zone-flags';
|
|
||||||
*
|
|
||||||
* The flags allowed in zone-flags.ts are listed here.
|
|
||||||
*
|
|
||||||
* The following flags will work for all browsers.
|
|
||||||
*
|
|
||||||
* (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch
|
|
||||||
* requestAnimationFrame
|
|
||||||
* (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick
|
|
||||||
* (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch
|
|
||||||
* specified eventNames
|
|
||||||
*
|
|
||||||
* in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js
|
|
||||||
* with the following flag, it will bypass `zone.js` patch for IE/Edge
|
|
||||||
*
|
|
||||||
* (window as any).__Zone_enable_cross_context_check = true;
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
/***************************************************************************************************
|
|
||||||
* Zone JS is required by default for Angular itself.
|
|
||||||
*/
|
|
||||||
import 'zone.js'; // Included with Angular CLI.
|
|
||||||
|
|
||||||
/***************************************************************************************************
|
|
||||||
* APPLICATION IMPORTS
|
|
||||||
*/
|
|
@ -1,81 +0,0 @@
|
|||||||
/* Global Styles */
|
|
||||||
* {
|
|
||||||
font-family: Arial, Helvetica, sans-serif;
|
|
||||||
}
|
|
||||||
h1 {
|
|
||||||
color: #264D73;
|
|
||||||
font-size: 2.5rem;
|
|
||||||
}
|
|
||||||
h2, h3 {
|
|
||||||
color: #444;
|
|
||||||
font-weight: lighter;
|
|
||||||
}
|
|
||||||
h3 {
|
|
||||||
font-size: 1.3rem;
|
|
||||||
}
|
|
||||||
body {
|
|
||||||
padding: .5rem;
|
|
||||||
max-width: 1000px;
|
|
||||||
margin: auto;
|
|
||||||
}
|
|
||||||
@media (min-width: 600px) {
|
|
||||||
body {
|
|
||||||
padding: 2rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
body, input[text] {
|
|
||||||
color: #333;
|
|
||||||
font-family: Cambria, Georgia, serif;
|
|
||||||
}
|
|
||||||
a {
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
button {
|
|
||||||
background-color: #eee;
|
|
||||||
border: none;
|
|
||||||
border-radius: 4px;
|
|
||||||
cursor: pointer;
|
|
||||||
color: black;
|
|
||||||
font-size: 1.2rem;
|
|
||||||
padding: 1rem;
|
|
||||||
margin-right: 1rem;
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
}
|
|
||||||
button:hover {
|
|
||||||
background-color: black;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
button:disabled {
|
|
||||||
background-color: #eee;
|
|
||||||
color: #aaa;
|
|
||||||
cursor: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Navigation link styles */
|
|
||||||
nav a {
|
|
||||||
padding: 5px 10px;
|
|
||||||
text-decoration: none;
|
|
||||||
margin-right: 10px;
|
|
||||||
margin-top: 10px;
|
|
||||||
display: inline-block;
|
|
||||||
background-color: #e8e8e8;
|
|
||||||
color: #3d3d3d;
|
|
||||||
border-radius: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
nav a:hover {
|
|
||||||
color: white;
|
|
||||||
background-color: #42545C;
|
|
||||||
}
|
|
||||||
nav a.active {
|
|
||||||
background-color: black;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
hr {
|
|
||||||
margin: 1.5rem 0;
|
|
||||||
}
|
|
||||||
input[type="text"] {
|
|
||||||
box-sizing: border-box;
|
|
||||||
width: 100%;
|
|
||||||
padding: .5rem;
|
|
||||||
}
|
|
@ -1,25 +0,0 @@
|
|||||||
// This file is required by karma.conf.js and loads recursively all the .spec and framework files
|
|
||||||
|
|
||||||
import 'zone.js/testing';
|
|
||||||
import { getTestBed } from '@angular/core/testing';
|
|
||||||
import {
|
|
||||||
BrowserDynamicTestingModule,
|
|
||||||
platformBrowserDynamicTesting
|
|
||||||
} from '@angular/platform-browser-dynamic/testing';
|
|
||||||
|
|
||||||
declare const require: {
|
|
||||||
context(path: string, deep?: boolean, filter?: RegExp): {
|
|
||||||
keys(): string[];
|
|
||||||
<T>(id: string): T;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
// First, initialize the Angular testing environment.
|
|
||||||
getTestBed().initTestEnvironment(
|
|
||||||
BrowserDynamicTestingModule,
|
|
||||||
platformBrowserDynamicTesting()
|
|
||||||
);
|
|
||||||
// Then we find all the tests.
|
|
||||||
const context = require.context('./', true, /\.spec\.ts$/);
|
|
||||||
// And load the modules.
|
|
||||||
context.keys().map(context);
|
|
@ -1,506 +0,0 @@
|
|||||||
<html lang="en"><head></head><body>
|
|
||||||
<form id="mainForm" method="post" action="https://run.stackblitz.com/api/angular/v1?file=src/app/app.component.html" target="_self"><input type="hidden" name="files[src/app/app.component.ts]" value="import { Component } from '@angular/core';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'app-root',
|
|
||||||
templateUrl: './app.component.html',
|
|
||||||
styleUrls: [ './app.component.css' ]
|
|
||||||
})
|
|
||||||
export class AppComponent {
|
|
||||||
progress = 0;
|
|
||||||
|
|
||||||
setProgress($event: Event) {
|
|
||||||
this.progress = +($event.target as HTMLInputElement).value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Copyright Google LLC. All Rights Reserved.
|
|
||||||
Use of this source code is governed by an MIT-style license that
|
|
||||||
can be found in the LICENSE file at https://angular.io/license
|
|
||||||
*/"><input type="hidden" name="files[src/app/app.module.ts]" value="import { NgModule } from '@angular/core';
|
|
||||||
import { BrowserModule } from '@angular/platform-browser';
|
|
||||||
|
|
||||||
import { AppComponent } from './app.component';
|
|
||||||
import { ExampleProgressbarComponent } from './progress-bar.component';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [ BrowserModule ],
|
|
||||||
declarations: [ AppComponent, ExampleProgressbarComponent ],
|
|
||||||
bootstrap: [ AppComponent ]
|
|
||||||
})
|
|
||||||
export class AppModule { }
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Copyright Google LLC. All Rights Reserved.
|
|
||||||
Use of this source code is governed by an MIT-style license that
|
|
||||||
can be found in the LICENSE file at https://angular.io/license
|
|
||||||
*/"><input type="hidden" name="files[src/app/progress-bar.component.ts]" value="// tslint:disable: no-host-metadata-property
|
|
||||||
import { Component, Input } from '@angular/core';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Example progressbar component.
|
|
||||||
*/
|
|
||||||
@Component({
|
|
||||||
selector: 'app-example-progressbar',
|
|
||||||
template: `<div class="bar" [style.width.%]="value"></div>`,
|
|
||||||
styleUrls: ['./progress-bar.component.css'],
|
|
||||||
host: {
|
|
||||||
// Sets the role for this component to "progressbar"
|
|
||||||
role: 'progressbar',
|
|
||||||
|
|
||||||
// Sets the minimum and maximum values for the progressbar role.
|
|
||||||
'aria-valuemin': '0',
|
|
||||||
'aria-valuemax': '100',
|
|
||||||
|
|
||||||
// Binding that updates the current value of the progressbar.
|
|
||||||
'[attr.aria-valuenow]': 'value',
|
|
||||||
}
|
|
||||||
})
|
|
||||||
export class ExampleProgressbarComponent {
|
|
||||||
/** Current value of the progressbar. */
|
|
||||||
@Input() value = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Copyright Google LLC. All Rights Reserved.
|
|
||||||
Use of this source code is governed by an MIT-style license that
|
|
||||||
can be found in the LICENSE file at https://angular.io/license
|
|
||||||
*/"><input type="hidden" name="files[src/environments/environment.prod.ts]" value="export const environment = {
|
|
||||||
production: true
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Copyright Google LLC. All Rights Reserved.
|
|
||||||
Use of this source code is governed by an MIT-style license that
|
|
||||||
can be found in the LICENSE file at https://angular.io/license
|
|
||||||
*/"><input type="hidden" name="files[src/environments/environment.ts]" value="// This file can be replaced during build by using the `fileReplacements` array.
|
|
||||||
// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.
|
|
||||||
// The list of file replacements can be found in `angular.json`.
|
|
||||||
|
|
||||||
export const environment = {
|
|
||||||
production: false
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* For easier debugging in development mode, you can import the following file
|
|
||||||
* to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.
|
|
||||||
*
|
|
||||||
* This import should be commented out in production mode because it will have a negative impact
|
|
||||||
* on performance if an error is thrown.
|
|
||||||
*/
|
|
||||||
// import 'zone.js/plugins/zone-error'; // Included with Angular CLI.
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Copyright Google LLC. All Rights Reserved.
|
|
||||||
Use of this source code is governed by an MIT-style license that
|
|
||||||
can be found in the LICENSE file at https://angular.io/license
|
|
||||||
*/"><input type="hidden" name="files[src/main.ts]" value="import { enableProdMode } from '@angular/core';
|
|
||||||
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
|
|
||||||
|
|
||||||
import { AppModule } from './app/app.module';
|
|
||||||
import { environment } from './environments/environment';
|
|
||||||
|
|
||||||
if (environment.production) {
|
|
||||||
enableProdMode();
|
|
||||||
}
|
|
||||||
|
|
||||||
platformBrowserDynamic().bootstrapModule(AppModule);
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Copyright Google LLC. All Rights Reserved.
|
|
||||||
Use of this source code is governed by an MIT-style license that
|
|
||||||
can be found in the LICENSE file at https://angular.io/license
|
|
||||||
*/"><input type="hidden" name="files[src/polyfills.ts]" value="/**
|
|
||||||
* This file includes polyfills needed by Angular and is loaded before the app.
|
|
||||||
* You can add your own extra polyfills to this file.
|
|
||||||
*
|
|
||||||
* This file is divided into 2 sections:
|
|
||||||
* 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.
|
|
||||||
* 2. Application imports. Files imported after ZoneJS that should be loaded before your main
|
|
||||||
* file.
|
|
||||||
*
|
|
||||||
* The current setup is for so-called "evergreen" browsers; the last versions of browsers that
|
|
||||||
* automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),
|
|
||||||
* Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.
|
|
||||||
*
|
|
||||||
* Learn more in https://angular.io/guide/browser-support
|
|
||||||
*/
|
|
||||||
|
|
||||||
/***************************************************************************************************
|
|
||||||
* BROWSER POLYFILLS
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** IE11 requires the following for NgClass support on SVG elements */
|
|
||||||
// import 'classlist.js'; // Run `npm install --save classlist.js`.
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Web Animations `@angular/platform-browser/animations`
|
|
||||||
* Only required if AnimationBuilder is used within the application and using IE/Edge or Safari.
|
|
||||||
* Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0).
|
|
||||||
*/
|
|
||||||
// import 'web-animations-js'; // Run `npm install --save web-animations-js`.
|
|
||||||
|
|
||||||
/**
|
|
||||||
* By default, zone.js will patch all possible macroTask and DomEvents
|
|
||||||
* user can disable parts of macroTask/DomEvents patch by setting following flags
|
|
||||||
* because those flags need to be set before `zone.js` being loaded, and webpack
|
|
||||||
* will put import in the top of bundle, so user need to create a separate file
|
|
||||||
* in this directory (for example: zone-flags.ts), and put the following flags
|
|
||||||
* into that file, and then add the following code before importing zone.js.
|
|
||||||
* import './zone-flags';
|
|
||||||
*
|
|
||||||
* The flags allowed in zone-flags.ts are listed here.
|
|
||||||
*
|
|
||||||
* The following flags will work for all browsers.
|
|
||||||
*
|
|
||||||
* (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch
|
|
||||||
* requestAnimationFrame
|
|
||||||
* (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick
|
|
||||||
* (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch
|
|
||||||
* specified eventNames
|
|
||||||
*
|
|
||||||
* in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js
|
|
||||||
* with the following flag, it will bypass `zone.js` patch for IE/Edge
|
|
||||||
*
|
|
||||||
* (window as any).__Zone_enable_cross_context_check = true;
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
/***************************************************************************************************
|
|
||||||
* Zone JS is required by default for Angular itself.
|
|
||||||
*/
|
|
||||||
import 'zone.js'; // Included with Angular CLI.
|
|
||||||
|
|
||||||
/***************************************************************************************************
|
|
||||||
* APPLICATION IMPORTS
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Copyright Google LLC. All Rights Reserved.
|
|
||||||
Use of this source code is governed by an MIT-style license that
|
|
||||||
can be found in the LICENSE file at https://angular.io/license
|
|
||||||
*/"><input type="hidden" name="files[src/app/app.component.css]" value="
|
|
||||||
|
|
||||||
/*
|
|
||||||
Copyright Google LLC. All Rights Reserved.
|
|
||||||
Use of this source code is governed by an MIT-style license that
|
|
||||||
can be found in the LICENSE file at https://angular.io/license
|
|
||||||
*/"><input type="hidden" name="files[src/app/progress-bar.component.css]" value=" :host {
|
|
||||||
display: block;
|
|
||||||
width: 300px;
|
|
||||||
height: 25px;
|
|
||||||
border: 1px solid black;
|
|
||||||
margin-top: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bar {
|
|
||||||
background: blue;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
Copyright Google LLC. All Rights Reserved.
|
|
||||||
Use of this source code is governed by an MIT-style license that
|
|
||||||
can be found in the LICENSE file at https://angular.io/license
|
|
||||||
*/"><input type="hidden" name="files[src/styles.css]" value="/* Global Styles */
|
|
||||||
* {
|
|
||||||
font-family: Arial, Helvetica, sans-serif;
|
|
||||||
}
|
|
||||||
h1 {
|
|
||||||
color: #264D73;
|
|
||||||
font-size: 2.5rem;
|
|
||||||
}
|
|
||||||
h2, h3 {
|
|
||||||
color: #444;
|
|
||||||
font-weight: lighter;
|
|
||||||
}
|
|
||||||
h3 {
|
|
||||||
font-size: 1.3rem;
|
|
||||||
}
|
|
||||||
body {
|
|
||||||
padding: .5rem;
|
|
||||||
max-width: 1000px;
|
|
||||||
margin: auto;
|
|
||||||
}
|
|
||||||
@media (min-width: 600px) {
|
|
||||||
body {
|
|
||||||
padding: 2rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
body, input[text] {
|
|
||||||
color: #333;
|
|
||||||
font-family: Cambria, Georgia, serif;
|
|
||||||
}
|
|
||||||
a {
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
button {
|
|
||||||
background-color: #eee;
|
|
||||||
border: none;
|
|
||||||
border-radius: 4px;
|
|
||||||
cursor: pointer;
|
|
||||||
color: black;
|
|
||||||
font-size: 1.2rem;
|
|
||||||
padding: 1rem;
|
|
||||||
margin-right: 1rem;
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
}
|
|
||||||
button:hover {
|
|
||||||
background-color: black;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
button:disabled {
|
|
||||||
background-color: #eee;
|
|
||||||
color: #aaa;
|
|
||||||
cursor: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Navigation link styles */
|
|
||||||
nav a {
|
|
||||||
padding: 5px 10px;
|
|
||||||
text-decoration: none;
|
|
||||||
margin-right: 10px;
|
|
||||||
margin-top: 10px;
|
|
||||||
display: inline-block;
|
|
||||||
background-color: #e8e8e8;
|
|
||||||
color: #3d3d3d;
|
|
||||||
border-radius: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
nav a:hover {
|
|
||||||
color: white;
|
|
||||||
background-color: #42545C;
|
|
||||||
}
|
|
||||||
nav a.active {
|
|
||||||
background-color: black;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
hr {
|
|
||||||
margin: 1.5rem 0;
|
|
||||||
}
|
|
||||||
input[type="text"] {
|
|
||||||
box-sizing: border-box;
|
|
||||||
width: 100%;
|
|
||||||
padding: .5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Copyright Google LLC. All Rights Reserved.
|
|
||||||
Use of this source code is governed by an MIT-style license that
|
|
||||||
can be found in the LICENSE file at https://angular.io/license
|
|
||||||
*/"><input type="hidden" name="files[src/app/app.component.html]" value="<h1>Accessibility Example</h1>
|
|
||||||
<label>
|
|
||||||
Enter an example progress value
|
|
||||||
<input type="number" min="0" max="100"
|
|
||||||
[value]="progress" (input)="setProgress($event)">
|
|
||||||
</label>
|
|
||||||
|
|
||||||
<!-- The user of the progressbar sets an aria-label to communicate what the progress means. -->
|
|
||||||
<app-example-progressbar [value]="progress" aria-label="Example of a progress bar">
|
|
||||||
</app-example-progressbar>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Copyright Google LLC. All Rights Reserved.
|
|
||||||
Use of this source code is governed by an MIT-style license that
|
|
||||||
can be found in the LICENSE file at https://angular.io/license
|
|
||||||
-->"><input type="hidden" name="files[src/index.html]" value="<!doctype html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Accessibility Example</title>
|
|
||||||
<base href="/">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<link rel="icon" type="image/x-icon" href="favicon.ico">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<app-root>Loading...</app-root>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Copyright Google LLC. All Rights Reserved.
|
|
||||||
Use of this source code is governed by an MIT-style license that
|
|
||||||
can be found in the LICENSE file at https://angular.io/license
|
|
||||||
-->"><input type="hidden" name="files[angular.json]" value="{
|
|
||||||
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
|
|
||||||
"version": 1,
|
|
||||||
"newProjectRoot": "projects",
|
|
||||||
"projects": {
|
|
||||||
"angular.io-example": {
|
|
||||||
"projectType": "application",
|
|
||||||
"schematics": {
|
|
||||||
"@schematics/angular:application": {
|
|
||||||
"strict": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": "",
|
|
||||||
"sourceRoot": "src",
|
|
||||||
"prefix": "app",
|
|
||||||
"architect": {
|
|
||||||
"build": {
|
|
||||||
"builder": "@angular-devkit/build-angular:browser",
|
|
||||||
"options": {
|
|
||||||
"outputPath": "dist",
|
|
||||||
"index": "src/index.html",
|
|
||||||
"main": "src/main.ts",
|
|
||||||
"polyfills": "src/polyfills.ts",
|
|
||||||
"tsConfig": "tsconfig.app.json",
|
|
||||||
"aot": true,
|
|
||||||
"assets": [
|
|
||||||
"src/favicon.ico",
|
|
||||||
"src/assets"
|
|
||||||
],
|
|
||||||
"styles": [
|
|
||||||
"src/styles.css"
|
|
||||||
],
|
|
||||||
"scripts": []
|
|
||||||
},
|
|
||||||
"configurations": {
|
|
||||||
"production": {
|
|
||||||
"fileReplacements": [
|
|
||||||
{
|
|
||||||
"replace": "src/environments/environment.ts",
|
|
||||||
"with": "src/environments/environment.prod.ts"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"optimization": true,
|
|
||||||
"outputHashing": "all",
|
|
||||||
"sourceMap": false,
|
|
||||||
"namedChunks": false,
|
|
||||||
"extractLicenses": true,
|
|
||||||
"vendorChunk": false,
|
|
||||||
"buildOptimizer": true,
|
|
||||||
"budgets": [
|
|
||||||
{
|
|
||||||
"type": "initial",
|
|
||||||
"maximumWarning": "500kb",
|
|
||||||
"maximumError": "1mb"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "anyComponentStyle",
|
|
||||||
"maximumWarning": "2kb",
|
|
||||||
"maximumError": "4kb"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"serve": {
|
|
||||||
"builder": "@angular-devkit/build-angular:dev-server",
|
|
||||||
"options": {
|
|
||||||
"browserTarget": "angular.io-example:build"
|
|
||||||
},
|
|
||||||
"configurations": {
|
|
||||||
"production": {
|
|
||||||
"browserTarget": "angular.io-example:build:production"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"extract-i18n": {
|
|
||||||
"builder": "@angular-devkit/build-angular:extract-i18n",
|
|
||||||
"options": {
|
|
||||||
"browserTarget": "angular.io-example:build"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"test": {
|
|
||||||
"builder": "@angular-devkit/build-angular:karma",
|
|
||||||
"options": {
|
|
||||||
"main": "src/test.ts",
|
|
||||||
"polyfills": "src/polyfills.ts",
|
|
||||||
"tsConfig": "tsconfig.spec.json",
|
|
||||||
"karmaConfig": "karma.conf.js",
|
|
||||||
"assets": [
|
|
||||||
"src/favicon.ico",
|
|
||||||
"src/assets"
|
|
||||||
],
|
|
||||||
"styles": [
|
|
||||||
"src/styles.css"
|
|
||||||
],
|
|
||||||
"scripts": []
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"lint": {
|
|
||||||
"builder": "@angular-devkit/build-angular:tslint",
|
|
||||||
"options": {
|
|
||||||
"tsConfig": [
|
|
||||||
"tsconfig.app.json",
|
|
||||||
"tsconfig.spec.json",
|
|
||||||
"e2e/tsconfig.json"
|
|
||||||
],
|
|
||||||
"exclude": [
|
|
||||||
"**/node_modules/**"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"e2e": {
|
|
||||||
"builder": "@angular-devkit/build-angular:protractor",
|
|
||||||
"options": {
|
|
||||||
"protractorConfig": "e2e/protractor.conf.js",
|
|
||||||
"devServerTarget": "angular.io-example:serve"
|
|
||||||
},
|
|
||||||
"configurations": {
|
|
||||||
"production": {
|
|
||||||
"devServerTarget": "angular.io-example:serve:production"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"defaultProject": "angular.io-example"
|
|
||||||
}
|
|
||||||
"><input type="hidden" name="files[tsconfig.json]" value="{
|
|
||||||
"compileOnSave": false,
|
|
||||||
"compilerOptions": {
|
|
||||||
"baseUrl": "./",
|
|
||||||
"outDir": "./dist/out-tsc",
|
|
||||||
"forceConsistentCasingInFileNames": true,
|
|
||||||
"noImplicitReturns": true,
|
|
||||||
"noFallthroughCasesInSwitch": true,
|
|
||||||
"sourceMap": true,
|
|
||||||
"declaration": false,
|
|
||||||
"downlevelIteration": true,
|
|
||||||
"experimentalDecorators": true,
|
|
||||||
"moduleResolution": "node",
|
|
||||||
"importHelpers": true,
|
|
||||||
"target": "es2015",
|
|
||||||
"module": "es2020",
|
|
||||||
"lib": [
|
|
||||||
"es2018",
|
|
||||||
"dom"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"angularCompilerOptions": {
|
|
||||||
"strictInjectionParameters": true,
|
|
||||||
"strictInputAccessModifiers": true,
|
|
||||||
"strictTemplates": true,
|
|
||||||
"enableIvy": true
|
|
||||||
}
|
|
||||||
}"><input type="hidden" name="tags[0]" value="angular"><input type="hidden" name="tags[1]" value="example"><input type="hidden" name="tags[2]" value="Accessibility"><input type="hidden" name="description" value="Angular Example - Accessibility"><input type="hidden" name="dependencies" value="{"@angular/animations":"~11.0.1","@angular/common":"~11.0.1","@angular/compiler":"~11.0.1","@angular/core":"~11.0.1","@angular/forms":"~11.0.1","@angular/platform-browser":"~11.0.1","@angular/platform-browser-dynamic":"~11.0.1","@angular/router":"~11.0.1","angular-in-memory-web-api":"~0.11.0","rxjs":"~6.6.0","tslib":"^2.0.0","zone.js":"~0.11.4","jasmine-core":"~3.6.0","jasmine-marbles":"~0.6.0"}"></form>
|
|
||||||
<script>
|
|
||||||
var embedded = 'ctl=1';
|
|
||||||
var isEmbedded = window.location.search.indexOf(embedded) > -1;
|
|
||||||
|
|
||||||
if (isEmbedded) {
|
|
||||||
var form = document.getElementById('mainForm');
|
|
||||||
var action = form.action;
|
|
||||||
var actionHasParams = action.indexOf('?') > -1;
|
|
||||||
var symbol = actionHasParams ? '&' : '?'
|
|
||||||
form.action = form.action + symbol + embedded;
|
|
||||||
}
|
|
||||||
document.getElementById("mainForm").submit();
|
|
||||||
</script>
|
|
||||||
</body></html>
|
|
@ -1,31 +0,0 @@
|
|||||||
/* To learn more about this file see: https://angular.io/config/tsconfig. */
|
|
||||||
{
|
|
||||||
"extends": "./tsconfig.json",
|
|
||||||
"compilerOptions": {
|
|
||||||
"outDir": "./out-tsc/app",
|
|
||||||
"types": []
|
|
||||||
},
|
|
||||||
"files": [
|
|
||||||
"src/main.ts",
|
|
||||||
"src/polyfills.ts"
|
|
||||||
],
|
|
||||||
"include": [
|
|
||||||
"src/**/*.d.ts"
|
|
||||||
],
|
|
||||||
"exclude": [
|
|
||||||
"src/test.ts",
|
|
||||||
"src/**/*.spec.ts",
|
|
||||||
"src/**/*-specs.ts",
|
|
||||||
"src/**/*.avoid.ts",
|
|
||||||
"src/**/*.0.ts",
|
|
||||||
"src/**/*.1.ts",
|
|
||||||
"src/**/*.1b.ts",
|
|
||||||
"src/**/*.2.ts",
|
|
||||||
"src/**/*.3.ts",
|
|
||||||
"src/**/*.4.ts",
|
|
||||||
"src/**/*.5.ts",
|
|
||||||
"src/**/*.6.ts",
|
|
||||||
"src/**/*.7.ts",
|
|
||||||
"src/**/testing"
|
|
||||||
]
|
|
||||||
}
|
|
@ -1,30 +0,0 @@
|
|||||||
/* To learn more about this file see: https://angular.io/config/tsconfig. */
|
|
||||||
{
|
|
||||||
"compileOnSave": false,
|
|
||||||
"compilerOptions": {
|
|
||||||
"baseUrl": "./",
|
|
||||||
"outDir": "./dist/out-tsc",
|
|
||||||
"forceConsistentCasingInFileNames": true,
|
|
||||||
// TODO(gkalpak): Fix the code and enable this.
|
|
||||||
// "strict": true,
|
|
||||||
"noImplicitReturns": true,
|
|
||||||
"noFallthroughCasesInSwitch": true,
|
|
||||||
"sourceMap": true,
|
|
||||||
"declaration": false,
|
|
||||||
"downlevelIteration": true,
|
|
||||||
"experimentalDecorators": true,
|
|
||||||
"moduleResolution": "node",
|
|
||||||
"importHelpers": true,
|
|
||||||
"target": "es2015",
|
|
||||||
"module": "es2020",
|
|
||||||
"lib": [
|
|
||||||
"es2018",
|
|
||||||
"dom"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"angularCompilerOptions": {
|
|
||||||
"strictInjectionParameters": true,
|
|
||||||
"strictInputAccessModifiers": true,
|
|
||||||
"strictTemplates": true
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,18 +0,0 @@
|
|||||||
/* To learn more about this file see: https://angular.io/config/tsconfig. */
|
|
||||||
{
|
|
||||||
"extends": "./tsconfig.json",
|
|
||||||
"compilerOptions": {
|
|
||||||
"outDir": "./out-tsc/spec",
|
|
||||||
"types": [
|
|
||||||
"jasmine"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"files": [
|
|
||||||
"src/test.ts",
|
|
||||||
"src/polyfills.ts"
|
|
||||||
],
|
|
||||||
"include": [
|
|
||||||
"src/**/*.spec.ts",
|
|
||||||
"src/**/*.d.ts"
|
|
||||||
]
|
|
||||||
}
|
|
@ -1,154 +0,0 @@
|
|||||||
{
|
|
||||||
"extends": "tslint:recommended",
|
|
||||||
"rulesDirectory": [
|
|
||||||
"codelyzer"
|
|
||||||
],
|
|
||||||
"rules": {
|
|
||||||
"align": {
|
|
||||||
"options": [
|
|
||||||
"parameters",
|
|
||||||
"statements"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"array-type": false,
|
|
||||||
"arrow-return-shorthand": true,
|
|
||||||
"curly": true,
|
|
||||||
"deprecation": {
|
|
||||||
"severity": "warning"
|
|
||||||
},
|
|
||||||
"eofline": true,
|
|
||||||
"import-blacklist": [
|
|
||||||
true,
|
|
||||||
"rxjs/Rx"
|
|
||||||
],
|
|
||||||
"import-spacing": true,
|
|
||||||
"indent": {
|
|
||||||
"options": [
|
|
||||||
"spaces"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"max-classes-per-file": false,
|
|
||||||
"max-line-length": [
|
|
||||||
true,
|
|
||||||
140
|
|
||||||
],
|
|
||||||
"member-ordering": [
|
|
||||||
true,
|
|
||||||
{
|
|
||||||
"order": [
|
|
||||||
"static-field",
|
|
||||||
"instance-field",
|
|
||||||
"static-method",
|
|
||||||
"instance-method"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"no-console": [
|
|
||||||
true,
|
|
||||||
"debug",
|
|
||||||
"info",
|
|
||||||
"time",
|
|
||||||
"timeEnd",
|
|
||||||
"trace"
|
|
||||||
],
|
|
||||||
"no-empty": false,
|
|
||||||
"no-inferrable-types": [
|
|
||||||
true,
|
|
||||||
"ignore-params"
|
|
||||||
],
|
|
||||||
"no-non-null-assertion": true,
|
|
||||||
"no-redundant-jsdoc": true,
|
|
||||||
"no-switch-case-fall-through": true,
|
|
||||||
"no-var-requires": false,
|
|
||||||
"object-literal-key-quotes": [
|
|
||||||
true,
|
|
||||||
"as-needed"
|
|
||||||
],
|
|
||||||
"quotemark": [
|
|
||||||
true,
|
|
||||||
"single"
|
|
||||||
],
|
|
||||||
"semicolon": {
|
|
||||||
"options": [
|
|
||||||
"always"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"space-before-function-paren": {
|
|
||||||
"options": {
|
|
||||||
"anonymous": "never",
|
|
||||||
"asyncArrow": "always",
|
|
||||||
"constructor": "never",
|
|
||||||
"method": "never",
|
|
||||||
"named": "never"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// TODO(gkalpak): Fix the code and enable this.
|
|
||||||
// "typedef": [
|
|
||||||
// true,
|
|
||||||
// "call-signature"
|
|
||||||
// ],
|
|
||||||
"typedef-whitespace": {
|
|
||||||
"options": [
|
|
||||||
{
|
|
||||||
"call-signature": "nospace",
|
|
||||||
"index-signature": "nospace",
|
|
||||||
"parameter": "nospace",
|
|
||||||
"property-declaration": "nospace",
|
|
||||||
"variable-declaration": "nospace"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"call-signature": "onespace",
|
|
||||||
"index-signature": "onespace",
|
|
||||||
"parameter": "onespace",
|
|
||||||
"property-declaration": "onespace",
|
|
||||||
"variable-declaration": "onespace"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"variable-name": {
|
|
||||||
"options": [
|
|
||||||
"ban-keywords",
|
|
||||||
"check-format",
|
|
||||||
"allow-pascal-case"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"whitespace": {
|
|
||||||
"options": [
|
|
||||||
"check-branch",
|
|
||||||
"check-decl",
|
|
||||||
"check-operator",
|
|
||||||
"check-separator",
|
|
||||||
"check-type",
|
|
||||||
"check-typecast"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"component-class-suffix": true,
|
|
||||||
"contextual-lifecycle": true,
|
|
||||||
"directive-class-suffix": true,
|
|
||||||
"no-conflicting-lifecycle": true,
|
|
||||||
"no-host-metadata-property": true,
|
|
||||||
"no-input-rename": true,
|
|
||||||
"no-inputs-metadata-property": true,
|
|
||||||
"no-output-native": true,
|
|
||||||
"no-output-on-prefix": true,
|
|
||||||
"no-output-rename": true,
|
|
||||||
"no-outputs-metadata-property": true,
|
|
||||||
"template-banana-in-box": true,
|
|
||||||
"template-no-negated-async": true,
|
|
||||||
"use-lifecycle-interface": true,
|
|
||||||
"use-pipe-transform-interface": true,
|
|
||||||
"directive-selector": [
|
|
||||||
true,
|
|
||||||
"attribute",
|
|
||||||
["app", "toh"],
|
|
||||||
"camelCase"
|
|
||||||
],
|
|
||||||
"component-selector": [
|
|
||||||
true,
|
|
||||||
"element",
|
|
||||||
// TODO: Fix the code and change the prefix to `"app"` (or whatever makes sense).
|
|
||||||
"",
|
|
||||||
"kebab-case"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,17 +0,0 @@
|
|||||||
# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
|
|
||||||
# For additional information regarding the format and rule options, please see:
|
|
||||||
# https://github.com/browserslist/browserslist#queries
|
|
||||||
|
|
||||||
# For the full list of supported browsers by the Angular framework, please see:
|
|
||||||
# https://angular.io/guide/browser-support
|
|
||||||
|
|
||||||
# You can see what browsers were selected by your queries by running:
|
|
||||||
# npx browserslist
|
|
||||||
|
|
||||||
last 1 Chrome version
|
|
||||||
last 1 Firefox version
|
|
||||||
last 2 Edge major versions
|
|
||||||
last 2 Safari major versions
|
|
||||||
last 2 iOS major versions
|
|
||||||
Firefox ESR
|
|
||||||
not IE 11 # Angular supports IE 11 only as an opt-in. To opt-in, remove the 'not' prefix on this line.
|
|
@ -1,16 +0,0 @@
|
|||||||
# Editor configuration, see https://editorconfig.org
|
|
||||||
root = true
|
|
||||||
|
|
||||||
[*]
|
|
||||||
charset = utf-8
|
|
||||||
indent_style = space
|
|
||||||
indent_size = 2
|
|
||||||
insert_final_newline = true
|
|
||||||
trim_trailing_whitespace = true
|
|
||||||
|
|
||||||
[*.ts]
|
|
||||||
quote_type = single
|
|
||||||
|
|
||||||
[*.md]
|
|
||||||
max_line_length = off
|
|
||||||
trim_trailing_whitespace = false
|
|
@ -1,46 +0,0 @@
|
|||||||
# See https://help.github.com/ignore-files/ for more about ignoring files.
|
|
||||||
|
|
||||||
# compiled output
|
|
||||||
/dist
|
|
||||||
/tmp
|
|
||||||
/out-tsc
|
|
||||||
# Only exists if Bazel was run
|
|
||||||
/bazel-out
|
|
||||||
|
|
||||||
# dependencies
|
|
||||||
/node_modules
|
|
||||||
|
|
||||||
# profiling files
|
|
||||||
chrome-profiler-events*.json
|
|
||||||
speed-measure-plugin*.json
|
|
||||||
|
|
||||||
# IDEs and editors
|
|
||||||
/.idea
|
|
||||||
.project
|
|
||||||
.classpath
|
|
||||||
.c9/
|
|
||||||
*.launch
|
|
||||||
.settings/
|
|
||||||
*.sublime-workspace
|
|
||||||
|
|
||||||
# IDE - VSCode
|
|
||||||
.vscode/*
|
|
||||||
!.vscode/settings.json
|
|
||||||
!.vscode/tasks.json
|
|
||||||
!.vscode/launch.json
|
|
||||||
!.vscode/extensions.json
|
|
||||||
.history/*
|
|
||||||
|
|
||||||
# misc
|
|
||||||
/.sass-cache
|
|
||||||
/connect.lock
|
|
||||||
/coverage
|
|
||||||
/libpeerconnection.log
|
|
||||||
npm-debug.log
|
|
||||||
yarn-error.log
|
|
||||||
testem.log
|
|
||||||
/typings
|
|
||||||
|
|
||||||
# System Files
|
|
||||||
.DS_Store
|
|
||||||
Thumbs.db
|
|
@ -1,128 +0,0 @@
|
|||||||
{
|
|
||||||
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
|
|
||||||
"version": 1,
|
|
||||||
"newProjectRoot": "projects",
|
|
||||||
"projects": {
|
|
||||||
"angular.io-example": {
|
|
||||||
"projectType": "application",
|
|
||||||
"schematics": {
|
|
||||||
"@schematics/angular:application": {
|
|
||||||
"strict": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": "",
|
|
||||||
"sourceRoot": "src",
|
|
||||||
"prefix": "app",
|
|
||||||
"architect": {
|
|
||||||
"build": {
|
|
||||||
"builder": "@angular-devkit/build-angular:browser",
|
|
||||||
"options": {
|
|
||||||
"outputPath": "dist",
|
|
||||||
"index": "src/index.html",
|
|
||||||
"main": "src/main.ts",
|
|
||||||
"polyfills": "src/polyfills.ts",
|
|
||||||
"tsConfig": "tsconfig.app.json",
|
|
||||||
"aot": true,
|
|
||||||
"assets": [
|
|
||||||
"src/favicon.ico",
|
|
||||||
"src/assets"
|
|
||||||
],
|
|
||||||
"styles": [
|
|
||||||
"src/styles.css"
|
|
||||||
],
|
|
||||||
"scripts": []
|
|
||||||
},
|
|
||||||
"configurations": {
|
|
||||||
"production": {
|
|
||||||
"fileReplacements": [
|
|
||||||
{
|
|
||||||
"replace": "src/environments/environment.ts",
|
|
||||||
"with": "src/environments/environment.prod.ts"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"optimization": true,
|
|
||||||
"outputHashing": "all",
|
|
||||||
"sourceMap": false,
|
|
||||||
"namedChunks": false,
|
|
||||||
"extractLicenses": true,
|
|
||||||
"vendorChunk": false,
|
|
||||||
"buildOptimizer": true,
|
|
||||||
"budgets": [
|
|
||||||
{
|
|
||||||
"type": "initial",
|
|
||||||
"maximumWarning": "500kb",
|
|
||||||
"maximumError": "1mb"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "anyComponentStyle",
|
|
||||||
"maximumWarning": "2kb",
|
|
||||||
"maximumError": "4kb"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"serve": {
|
|
||||||
"builder": "@angular-devkit/build-angular:dev-server",
|
|
||||||
"options": {
|
|
||||||
"browserTarget": "angular.io-example:build"
|
|
||||||
},
|
|
||||||
"configurations": {
|
|
||||||
"production": {
|
|
||||||
"browserTarget": "angular.io-example:build:production"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"extract-i18n": {
|
|
||||||
"builder": "@angular-devkit/build-angular:extract-i18n",
|
|
||||||
"options": {
|
|
||||||
"browserTarget": "angular.io-example:build"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"test": {
|
|
||||||
"builder": "@angular-devkit/build-angular:karma",
|
|
||||||
"options": {
|
|
||||||
"main": "src/test.ts",
|
|
||||||
"polyfills": "src/polyfills.ts",
|
|
||||||
"tsConfig": "tsconfig.spec.json",
|
|
||||||
"karmaConfig": "karma.conf.js",
|
|
||||||
"assets": [
|
|
||||||
"src/favicon.ico",
|
|
||||||
"src/assets"
|
|
||||||
],
|
|
||||||
"styles": [
|
|
||||||
"src/styles.css"
|
|
||||||
],
|
|
||||||
"scripts": []
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"lint": {
|
|
||||||
"builder": "@angular-devkit/build-angular:tslint",
|
|
||||||
"options": {
|
|
||||||
"tsConfig": [
|
|
||||||
"tsconfig.app.json",
|
|
||||||
"tsconfig.spec.json",
|
|
||||||
"e2e/tsconfig.json"
|
|
||||||
],
|
|
||||||
"exclude": [
|
|
||||||
"**/node_modules/**"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"e2e": {
|
|
||||||
"builder": "@angular-devkit/build-angular:protractor",
|
|
||||||
"options": {
|
|
||||||
"protractorConfig": "e2e/protractor.conf.js",
|
|
||||||
"devServerTarget": "angular.io-example:serve"
|
|
||||||
},
|
|
||||||
"configurations": {
|
|
||||||
"production": {
|
|
||||||
"devServerTarget": "angular.io-example:serve:production"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"defaultProject": "angular.io-example"
|
|
||||||
}
|
|
@ -1,19 +0,0 @@
|
|||||||
// @ts-check
|
|
||||||
// A protractor config to use to run the tests using the Chrome version provided by `puppeteer`.
|
|
||||||
// This is useful to ensure deterministic runs on CI and locally. This file is ignored when creating
|
|
||||||
// StackBlitz examples and ZIP archives for each example.
|
|
||||||
|
|
||||||
const {config} = require('./protractor.conf.js');
|
|
||||||
|
|
||||||
exports.config = {
|
|
||||||
...config,
|
|
||||||
capabilities: {
|
|
||||||
...config.capabilities,
|
|
||||||
chromeOptions: {
|
|
||||||
...config.capabilities.chromeOptions,
|
|
||||||
binary: require('puppeteer').executablePath(),
|
|
||||||
// See /integration/README.md#browser-tests for more info on these args
|
|
||||||
args: ['--no-sandbox', '--headless', '--disable-gpu', '--disable-dev-shm-usage', '--hide-scrollbars', '--mute-audio'],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
@ -1,37 +0,0 @@
|
|||||||
// @ts-check
|
|
||||||
// Protractor configuration file, see link for more information
|
|
||||||
// https://github.com/angular/protractor/blob/master/lib/config.ts
|
|
||||||
|
|
||||||
const { SpecReporter, StacktraceOption } = require('jasmine-spec-reporter');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @type { import("protractor").Config }
|
|
||||||
*/
|
|
||||||
exports.config = {
|
|
||||||
allScriptsTimeout: 11000,
|
|
||||||
specs: [
|
|
||||||
'./src/**/*.e2e-spec.ts'
|
|
||||||
],
|
|
||||||
capabilities: {
|
|
||||||
browserName: 'chrome'
|
|
||||||
},
|
|
||||||
directConnect: true,
|
|
||||||
SELENIUM_PROMISE_MANAGER: false,
|
|
||||||
baseUrl: 'http://localhost:4200/',
|
|
||||||
framework: 'jasmine',
|
|
||||||
jasmineNodeOpts: {
|
|
||||||
showColors: true,
|
|
||||||
defaultTimeoutInterval: 30000,
|
|
||||||
print: function() {}
|
|
||||||
},
|
|
||||||
onPrepare() {
|
|
||||||
require('ts-node').register({
|
|
||||||
project: require('path').join(__dirname, './tsconfig.json')
|
|
||||||
});
|
|
||||||
jasmine.getEnv().addReporter(new SpecReporter({
|
|
||||||
spec: {
|
|
||||||
displayStacktrace: StacktraceOption.PRETTY
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
};
|
|
@ -89,7 +89,7 @@ describe('AngularJS to Angular Quick Reference Tests', () => {
|
|||||||
return element.all(by.css('app-movie-list tbody > tr'));
|
return element.all(by.css('app-movie-list tbody > tr'));
|
||||||
}
|
}
|
||||||
|
|
||||||
async function testFavoriteHero(heroName: string | null, expectedLabel: string) {
|
async function testFavoriteHero(heroName: string, expectedLabel: string) {
|
||||||
const movieListComp = element(by.tagName('app-movie-list'));
|
const movieListComp = element(by.tagName('app-movie-list'));
|
||||||
const heroInput = movieListComp.element(by.tagName('input'));
|
const heroInput = movieListComp.element(by.tagName('input'));
|
||||||
const favoriteHeroLabel = movieListComp.element(by.tagName('h3'));
|
const favoriteHeroLabel = movieListComp.element(by.tagName('h3'));
|
||||||
|
@ -1,11 +0,0 @@
|
|||||||
import { browser, by, element } from 'protractor';
|
|
||||||
|
|
||||||
export class AppPage {
|
|
||||||
async navigateTo(): Promise<unknown> {
|
|
||||||
return browser.get(browser.baseUrl);
|
|
||||||
}
|
|
||||||
|
|
||||||
async getTitleText(): Promise<string> {
|
|
||||||
return element(by.css('app-root h1')).getText();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,13 +0,0 @@
|
|||||||
/* To learn more about this file see: https://angular.io/config/tsconfig. */
|
|
||||||
{
|
|
||||||
"extends": "../tsconfig.json",
|
|
||||||
"compilerOptions": {
|
|
||||||
"outDir": "../out-tsc/e2e",
|
|
||||||
"module": "commonjs",
|
|
||||||
"target": "es2018",
|
|
||||||
"types": [
|
|
||||||
"jasmine",
|
|
||||||
"node"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,38 +0,0 @@
|
|||||||
// Karma configuration file, see link for more information
|
|
||||||
// https://karma-runner.github.io/1.0/config/configuration-file.html
|
|
||||||
|
|
||||||
module.exports = function (config) {
|
|
||||||
config.set({
|
|
||||||
basePath: '',
|
|
||||||
frameworks: ['jasmine', '@angular-devkit/build-angular'],
|
|
||||||
plugins: [
|
|
||||||
require('karma-jasmine'),
|
|
||||||
require('karma-chrome-launcher'),
|
|
||||||
require('karma-jasmine-html-reporter'),
|
|
||||||
require('karma-coverage'),
|
|
||||||
require('@angular-devkit/build-angular/plugins/karma')
|
|
||||||
],
|
|
||||||
client: {
|
|
||||||
clearContext: false // leave Jasmine Spec Runner output visible in browser
|
|
||||||
},
|
|
||||||
jasmineHtmlReporter: {
|
|
||||||
suppressAll: true // removes the duplicated traces
|
|
||||||
},
|
|
||||||
coverageReporter: {
|
|
||||||
dir: require('path').join(__dirname, './coverage/angular.io-example'),
|
|
||||||
subdir: '.',
|
|
||||||
reporters: [
|
|
||||||
{ type: 'html' },
|
|
||||||
{ type: 'text-summary' }
|
|
||||||
]
|
|
||||||
},
|
|
||||||
reporters: ['progress', 'kjhtml'],
|
|
||||||
port: 9876,
|
|
||||||
colors: true,
|
|
||||||
logLevel: config.LOG_INFO,
|
|
||||||
autoWatch: true,
|
|
||||||
browsers: ['Chrome'],
|
|
||||||
singleRun: false,
|
|
||||||
restartOnFileChange: true
|
|
||||||
});
|
|
||||||
};
|
|
@ -1,49 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "angular.io-example",
|
|
||||||
"version": "0.0.0",
|
|
||||||
"description": "Example project from an angular.io guide.",
|
|
||||||
"license": "MIT",
|
|
||||||
"scripts": {
|
|
||||||
"ng": "ng",
|
|
||||||
"start": "ng serve",
|
|
||||||
"build": "ng build",
|
|
||||||
"test": "ng test",
|
|
||||||
"lint": "ng lint",
|
|
||||||
"e2e": "ng e2e"
|
|
||||||
},
|
|
||||||
"private": true,
|
|
||||||
"dependencies": {
|
|
||||||
"@angular/animations": "~11.0.1",
|
|
||||||
"@angular/common": "~11.0.1",
|
|
||||||
"@angular/compiler": "~11.0.1",
|
|
||||||
"@angular/core": "~11.0.1",
|
|
||||||
"@angular/forms": "~11.0.1",
|
|
||||||
"@angular/platform-browser": "~11.0.1",
|
|
||||||
"@angular/platform-browser-dynamic": "~11.0.1",
|
|
||||||
"@angular/router": "~11.0.1",
|
|
||||||
"angular-in-memory-web-api": "~0.11.0",
|
|
||||||
"rxjs": "~6.6.0",
|
|
||||||
"tslib": "^2.0.0",
|
|
||||||
"zone.js": "~0.11.4"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@angular-devkit/build-angular": "~0.1100.2",
|
|
||||||
"@angular/cli": "~11.0.2",
|
|
||||||
"@angular/compiler-cli": "~11.0.1",
|
|
||||||
"@types/jasmine": "~3.6.0",
|
|
||||||
"@types/node": "^12.11.1",
|
|
||||||
"codelyzer": "^6.0.0",
|
|
||||||
"jasmine-core": "~3.6.0",
|
|
||||||
"jasmine-marbles": "~0.6.0",
|
|
||||||
"jasmine-spec-reporter": "~5.0.0",
|
|
||||||
"karma": "~5.1.0",
|
|
||||||
"karma-chrome-launcher": "~3.1.0",
|
|
||||||
"karma-coverage": "~2.0.3",
|
|
||||||
"karma-jasmine": "~4.0.0",
|
|
||||||
"karma-jasmine-html-reporter": "^1.5.0",
|
|
||||||
"protractor": "~7.0.0",
|
|
||||||
"ts-node": "~8.3.0",
|
|
||||||
"tslint": "~6.1.0",
|
|
||||||
"typescript": "~4.0.3"
|
|
||||||
}
|
|
||||||
}
|
|
@ -16,7 +16,7 @@ export class AppComponent {
|
|||||||
eventType = '<not clicked yet>';
|
eventType = '<not clicked yet>';
|
||||||
isActive = true;
|
isActive = true;
|
||||||
isImportant = true;
|
isImportant = true;
|
||||||
movie: IMovie;
|
movie: IMovie = null;
|
||||||
movies: IMovie[] = [];
|
movies: IMovie[] = [];
|
||||||
showImage = true;
|
showImage = true;
|
||||||
title = 'AngularJS to Angular Quick Ref Cookbook';
|
title = 'AngularJS to Angular Quick Ref Cookbook';
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user